From fc9aed1ef3485d259722c9b89e19969e0afe257c Mon Sep 17 00:00:00 2001 From: Mike Beattie Date: Sun, 26 Feb 2012 22:30:09 +1300 Subject: [PATCH] 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 --- altosdroid/res/drawable-hdpi/am_status_c.png | Bin 0 -> 994 bytes .../{am_status.png => am_status_g.png} | Bin altosdroid/res/drawable-mdpi/am_status_c.png | Bin 0 -> 703 bytes .../{am_status.png => am_status_g.png} | Bin altosdroid/res/values/strings.xml | 15 +++--- .../AltosDroid/TelemetryService.java | 51 ++++++++---------- 6 files changed, 32 insertions(+), 34 deletions(-) create mode 100644 altosdroid/res/drawable-hdpi/am_status_c.png rename altosdroid/res/drawable-hdpi/{am_status.png => am_status_g.png} (100%) create mode 100644 altosdroid/res/drawable-mdpi/am_status_c.png rename altosdroid/res/drawable-mdpi/{am_status.png => am_status_g.png} (100%) 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 0000000000000000000000000000000000000000..d4393217fd96410e3d7fdd55a65f013bac2b8c6f GIT binary patch literal 994 zcmV<810DQ{P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01gxY01gxZ1})bs00007bV*G`2iyV| z6FD=n61z7500Ux4L_t(Y$L*7CXq9Cc$A8yz-_OfA=h@lLOK#1HesHBwDp*Knf;9Xj zEuw)0#cH#pz9bUT%e3VZY6uk-D7cg$qy#CVzDPzZEP|paaJF`)+Zit1+&rG0o!7e$ zwj)8X&7D3J`+vH*?(4dK{IBc2VNr|vf2oV)x-OE9^Qp1s$!If}wtofCL7xR?qaaPs z^1W0P@EqUa5L^bb6sV6;*YF5ODhKFh0|v7iaDbq}to(qs$^iE8BLIRtS)%Yti9)wP zJ3t#B&I*{*EH|@Dwz4~4qOcq+OR)MoXmBg~L_0~mGjo2KfkPE-zK`Eu|A$z2MRw3h zB4*=l-_M2jXJY%gaNNdg*-L+Pwt78Vf`O$#L{JZPGT37rB}}I65q*=rTP$ zDca7&^i=rn*2MOqIXU=v?YjU3{qfeSnxqNWB&}d*94~OSoa1>Zyubv0)u>cQlKB4E zV*sb_IXJt6=AWJh48H&N)~fKuoad#)cBT-OFXuRc6cja*D}WeNEb3-}rZc?srU$M|f+fv0BO!Lb!5@#9J5nDnDw zU@~Xh8Ehvbj&lvM@@HrAY$turm>h_~l#~=pI`4X^_AfU*bNKSaI`i-^JO1vVixB`u zht~u$SK^=AZhEcKSUmYp*9JnDzg9ZeWIIy@W#v&SCze&%w(95?pY%Pxh1-vw zW@S$={q6VCc;uTC%E~uuol{z6(K?$~I=jsajP<_Z|FC3FzL7;O>OZ1C0me%gGne<{ QIsgCw07*qoM6N<$f>eysK>z>% literal 0 HcmV?d00001 diff --git a/altosdroid/res/drawable-hdpi/am_status.png b/altosdroid/res/drawable-hdpi/am_status_g.png similarity index 100% rename from altosdroid/res/drawable-hdpi/am_status.png rename to 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 new file mode 100644 index 0000000000000000000000000000000000000000..30a8d29ac22811fcf9367b15ba94fe0cd340ded7 GIT binary patch literal 703 zcmV;w0zmzVP)X1^@s6IQ*`u00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01gxY01gxZ1})bs00007bV*G`2iyV| z6FNJT!_g!BYKJ2$8BSNROwnzpb3>LTt0qRG>X!&L2ByO$-pmPr!McInTevve3P2#3hni^(=g7EE)_=3C*?qL{Zke>Yu+e0TS2G7`dD~p55@>PA^vTCDrsI lldimVbLs5z|4;89Control Service (Un)Bind Service + + - AltOS Telemetry Service + AltosDroid Telemetry Service Telemetry Service Started Telemetry Service Stopped - - App/Service/Local Service Controller - This demonstrates how you can implement persistent services that - may be started and stopped as desired. + + Telemetry Service Controller + Use the following buttons to start and stop the Telemetry + service. Start Service Stop Service - App/Service/Local Service Binding + 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. Bind Service Unbind Service + Connected to local service Disconnected from local service 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); - } } -- 2.30.2