summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Beattie <mike@ethernal.org>2012-02-26 22:30:09 +1300
committerMike Beattie <mike@ethernal.org>2012-08-06 09:26:39 +1200
commitfc9aed1ef3485d259722c9b89e19969e0afe257c (patch)
treeb303ed4aa9413dddb1e374fd18912d08b6cceb02
parentaf34baf5dc587bee4cffa699ef383f85dde8c7cd (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>
-rw-r--r--altosdroid/res/drawable-hdpi/am_status_c.pngbin0 -> 994 bytes
-rw-r--r--altosdroid/res/drawable-hdpi/am_status_g.png (renamed from altosdroid/res/drawable-hdpi/am_status.png)bin804 -> 804 bytes
-rw-r--r--altosdroid/res/drawable-mdpi/am_status_c.pngbin0 -> 703 bytes
-rw-r--r--altosdroid/res/drawable-mdpi/am_status_g.png (renamed from altosdroid/res/drawable-mdpi/am_status.png)bin595 -> 595 bytes
-rw-r--r--altosdroid/res/values/strings.xml15
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java51
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
new file mode 100644
index 00000000..d4393217
--- /dev/null
+++ b/altosdroid/res/drawable-hdpi/am_status_c.png
Binary files differ
diff --git a/altosdroid/res/drawable-hdpi/am_status.png b/altosdroid/res/drawable-hdpi/am_status_g.png
index 03f9dd7d..03f9dd7d 100644
--- a/altosdroid/res/drawable-hdpi/am_status.png
+++ b/altosdroid/res/drawable-hdpi/am_status_g.png
Binary files 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
index 00000000..30a8d29a
--- /dev/null
+++ b/altosdroid/res/drawable-mdpi/am_status_c.png
Binary files differ
diff --git a/altosdroid/res/drawable-mdpi/am_status.png b/altosdroid/res/drawable-mdpi/am_status_g.png
index 07f7f073..07f7f073 100644
--- a/altosdroid/res/drawable-mdpi/am_status.png
+++ b/altosdroid/res/drawable-mdpi/am_status_g.png
Binary files differ
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);
- }
}