diff options
| author | Mike Beattie <mike@ethernal.org> | 2012-02-26 22:30:09 +1300 | 
|---|---|---|
| committer | Mike Beattie <mike@ethernal.org> | 2012-08-06 09:26:39 +1200 | 
| commit | fc9aed1ef3485d259722c9b89e19969e0afe257c (patch) | |
| tree | b303ed4aa9413dddb1e374fd18912d08b6cceb02 /altosdroid | |
| parent | af34baf5dc587bee4cffa699ef383f85dde8c7cd (diff) | |
Adjust service to be persistent.
* 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>
Diffstat (limited to 'altosdroid')
| -rw-r--r-- | altosdroid/res/drawable-hdpi/am_status_c.png | bin | 0 -> 994 bytes | |||
| -rw-r--r-- | altosdroid/res/drawable-hdpi/am_status_g.png (renamed from altosdroid/res/drawable-hdpi/am_status.png) | bin | 804 -> 804 bytes | |||
| -rw-r--r-- | altosdroid/res/drawable-mdpi/am_status_c.png | bin | 0 -> 703 bytes | |||
| -rw-r--r-- | altosdroid/res/drawable-mdpi/am_status_g.png (renamed from altosdroid/res/drawable-mdpi/am_status.png) | bin | 595 -> 595 bytes | |||
| -rw-r--r-- | altosdroid/res/values/strings.xml | 15 | ||||
| -rw-r--r-- | altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java | 51 | 
6 files changed, 32 insertions, 34 deletions
diff --git a/altosdroid/res/drawable-hdpi/am_status_c.png b/altosdroid/res/drawable-hdpi/am_status_c.png Binary files differnew file mode 100644 index 00000000..d4393217 --- /dev/null +++ b/altosdroid/res/drawable-hdpi/am_status_c.png diff --git a/altosdroid/res/drawable-hdpi/am_status.png b/altosdroid/res/drawable-hdpi/am_status_g.png Binary files differindex 03f9dd7d..03f9dd7d 100644 --- a/altosdroid/res/drawable-hdpi/am_status.png +++ b/altosdroid/res/drawable-hdpi/am_status_g.png diff --git a/altosdroid/res/drawable-mdpi/am_status_c.png b/altosdroid/res/drawable-mdpi/am_status_c.png Binary files differnew file mode 100644 index 00000000..30a8d29a --- /dev/null +++ b/altosdroid/res/drawable-mdpi/am_status_c.png diff --git a/altosdroid/res/drawable-mdpi/am_status.png b/altosdroid/res/drawable-mdpi/am_status_g.png Binary files differindex 07f7f073..07f7f073 100644 --- a/altosdroid/res/drawable-mdpi/am_status.png +++ b/altosdroid/res/drawable-mdpi/am_status_g.png diff --git a/altosdroid/res/values/strings.xml b/altosdroid/res/values/strings.xml index 249550fb..72a4ddec 100644 --- a/altosdroid/res/values/strings.xml +++ b/altosdroid/res/values/strings.xml @@ -39,24 +39,27 @@      <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> diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java index 40dff354..c0a32c92 100644 --- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java +++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java @@ -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); -    }  }  | 
