Adjust service to be persistent.
authorMike Beattie <mike@ethernal.org>
Sun, 26 Feb 2012 09:30:09 +0000 (22:30 +1300)
committerMike Beattie <mike@ethernal.org>
Sun, 5 Aug 2012 21:26:39 +0000 (09:26 +1200)
* Run as a foreground service -> high priority
* Notification set to display as "Ongoing".

Changed logo to be in colour at keithp's request. Greyscale logos still present as *_g.png

Signed-off-by: Mike Beattie <mike@ethernal.org>
altosdroid/res/drawable-hdpi/am_status.png [deleted file]
altosdroid/res/drawable-hdpi/am_status_c.png [new file with mode: 0644]
altosdroid/res/drawable-hdpi/am_status_g.png [new file with mode: 0644]
altosdroid/res/drawable-mdpi/am_status.png [deleted file]
altosdroid/res/drawable-mdpi/am_status_c.png [new file with mode: 0644]
altosdroid/res/drawable-mdpi/am_status_g.png [new file with mode: 0644]
altosdroid/res/values/strings.xml
altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java

diff --git a/altosdroid/res/drawable-hdpi/am_status.png b/altosdroid/res/drawable-hdpi/am_status.png
deleted file mode 100644 (file)
index 03f9dd7..0000000
Binary files a/altosdroid/res/drawable-hdpi/am_status.png and /dev/null differ
diff --git a/altosdroid/res/drawable-hdpi/am_status_c.png b/altosdroid/res/drawable-hdpi/am_status_c.png
new file mode 100644 (file)
index 0000000..d439321
Binary files /dev/null and b/altosdroid/res/drawable-hdpi/am_status_c.png differ
diff --git a/altosdroid/res/drawable-hdpi/am_status_g.png b/altosdroid/res/drawable-hdpi/am_status_g.png
new file mode 100644 (file)
index 0000000..03f9dd7
Binary files /dev/null and b/altosdroid/res/drawable-hdpi/am_status_g.png differ
diff --git a/altosdroid/res/drawable-mdpi/am_status.png b/altosdroid/res/drawable-mdpi/am_status.png
deleted file mode 100644 (file)
index 07f7f07..0000000
Binary files a/altosdroid/res/drawable-mdpi/am_status.png and /dev/null differ
diff --git a/altosdroid/res/drawable-mdpi/am_status_c.png b/altosdroid/res/drawable-mdpi/am_status_c.png
new file mode 100644 (file)
index 0000000..30a8d29
Binary files /dev/null and b/altosdroid/res/drawable-mdpi/am_status_c.png differ
diff --git a/altosdroid/res/drawable-mdpi/am_status_g.png b/altosdroid/res/drawable-mdpi/am_status_g.png
new file mode 100644 (file)
index 0000000..07f7f07
Binary files /dev/null and b/altosdroid/res/drawable-mdpi/am_status_g.png differ
index 249550fb7cfb32bbaa163dacafdc3f61742e6d3c..72a4ddec2b03c0932535d9f58ad41bd645217648 100644 (file)
     <string name="telemetry_service_control">Control Service</string>
     <string name="telemetry_service_bind">(Un)Bind Service</string>
 
+
+
     <!-- Service -->
-    <string name="telemetry_service_label">AltOS Telemetry Service</string>
+    <string name="telemetry_service_label">AltosDroid Telemetry Service</string>
     <string name="telemetry_service_started">Telemetry Service Started</string>
     <string name="telemetry_service_stopped">Telemetry Service Stopped</string>
 
-
-    <string name="activity_telemetry_service_controller">App/Service/Local Service Controller</string>
-    <string name="telemetry_service_controller">This demonstrates how you can implement persistent services that
-        may be started and stopped as desired.</string>
+    <!-- Service control activity - temporary! -->
+    <string name="activity_telemetry_service_controller">Telemetry Service Controller</string>
+    <string name="telemetry_service_controller">Use the following buttons to start and stop the Telemetry
+        service.</string>
     <string name="start_service">Start Service</string>
     <string name="stop_service">Stop Service</string>
 
-    <string name="activity_telemetry_service_binding">App/Service/Local Service Binding</string>
+    <string name="activity_telemetry_service_binding">Telemetry Service Binding</string>
     <string name="telemetry_service_binding">This demonstrates how you can connect with a persistent
         service.  Notice how it automatically starts for you, and play around with the
         interaction between this and Local Service Controller.</string>
     <string name="bind_service">Bind Service</string>
     <string name="unbind_service">Unbind Service</string>
+
     <string name="telemetry_service_connected">Connected to local service</string>
     <string name="telemetry_service_disconnected">Disconnected from local service</string>
 
index 40dff3549dc74e19eee79a31ddbc0b99c4e9b373..c0a32c9208ae6566dabed2dd7d9caaeefeddc6ae 100644 (file)
@@ -37,7 +37,7 @@ public class TelemetryService extends Service {
 
     // Unique Identification Number for the Notification.
     // We use it on Notification start, and to cancel it.
-    private int NOTIFICATION = R.string.telemetry_service_started;
+    private int NOTIFICATION = R.string.telemetry_service_label;
 
     /**
      * Class for clients to access.  Because we know this service always
@@ -52,15 +52,32 @@ public class TelemetryService extends Service {
 
     @Override
     public void onCreate() {
+        // Create a reference to the NotificationManager so that we can update our notifcation text later
         mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
-
-        // Display a notification about us starting.  We put an icon in the status bar.
-        showNotification();
     }
 
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
         Log.i("TelemetryService", "Received start id " + startId + ": " + intent);
+
+        CharSequence text = getText(R.string.telemetry_service_started);
+
+        // Create notification to be displayed while the service runs
+        Notification notification = new Notification(R.drawable.am_status_c, text, 0);
+
+        // The PendingIntent to launch our activity if the user selects this notification
+        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
+                new Intent(this, TelemetryServiceActivities.Controller.class), 0);
+
+        // Set the info for the views that show in the notification panel.
+        notification.setLatestEventInfo(this, getText(R.string.telemetry_service_label), text, contentIntent);
+
+        // Set the notification to be in the "Ongoing" section.
+        notification.flags |= Notification.FLAG_ONGOING_EVENT;
+
+        // Move us into the foreground.
+        startForeground(NOTIFICATION, notification);
+
         // We want this service to continue running until it is explicitly
         // stopped, so return sticky.
         return START_STICKY;
@@ -68,8 +85,8 @@ public class TelemetryService extends Service {
 
     @Override
     public void onDestroy() {
-        // Cancel the persistent notification.
-        mNM.cancel(NOTIFICATION);
+        // Demote us from the foreground, and cancel the persistent notification.
+        stopForeground(true);
 
         // Tell the user we stopped.
         Toast.makeText(this, R.string.telemetry_service_stopped, Toast.LENGTH_SHORT).show();
@@ -84,26 +101,4 @@ public class TelemetryService extends Service {
     // RemoteService for a more complete example.
     private final IBinder mBinder = new TelemetryBinder();
 
-    /**
-     * Show a notification while this service is running.
-     */
-    private void showNotification() {
-        // In this sample, we'll use the same text for the ticker and the expanded notification
-        CharSequence text = getText(R.string.telemetry_service_started);
-
-        // Set the icon, scrolling text and timestamp
-        Notification notification = new Notification(R.drawable.am_status, text,
-                System.currentTimeMillis());
-
-        // The PendingIntent to launch our activity if the user selects this notification
-        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
-                new Intent(this, TelemetryServiceActivities.Controller.class), 0);
-
-        // Set the info for the views that show in the notification panel.
-        notification.setLatestEventInfo(this, getText(R.string.telemetry_service_label),
-                       text, contentIntent);
-
-        // Send the notification.
-        mNM.notify(NOTIFICATION, notification);
-    }
 }