Show/hide notification area icon when starting/stopping playback.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27694 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
04dc00b7ca
commit
546cd48504
2 changed files with 43 additions and 16 deletions
|
@ -58,8 +58,6 @@ public class RockboxPCM extends AudioTrack
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int bytes2frames(int bytes) {
|
int bytes2frames(int bytes) {
|
||||||
/* 1 sample is 2 bytes, 2 samples are 1 frame */
|
/* 1 sample is 2 bytes, 2 samples are 1 frame */
|
||||||
return (bytes/4);
|
return (bytes/4);
|
||||||
|
@ -83,12 +81,20 @@ public class RockboxPCM extends AudioTrack
|
||||||
LOG("Writing silence");
|
LOG("Writing silence");
|
||||||
/* fill with silence */
|
/* fill with silence */
|
||||||
write(raw_data, 0, raw_data.length);
|
write(raw_data, 0, raw_data.length);
|
||||||
|
RockboxService.startForeground();
|
||||||
}
|
}
|
||||||
play();
|
play();
|
||||||
}
|
}
|
||||||
LOG("play_pause() return");
|
LOG("play_pause() return");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() throws IllegalStateException
|
||||||
|
{
|
||||||
|
super.stop();
|
||||||
|
RockboxService.stopForeground();
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
private void set_volume(int volume)
|
private void set_volume(int volume)
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,12 +19,16 @@ import android.util.Log;
|
||||||
|
|
||||||
public class RockboxService extends Service
|
public class RockboxService extends Service
|
||||||
{
|
{
|
||||||
|
/* this Service is really a singleton class */
|
||||||
public static RockboxFramebuffer fb = null;
|
public static RockboxFramebuffer fb = null;
|
||||||
|
private static RockboxService instance;
|
||||||
|
private Notification notification;
|
||||||
@Override
|
@Override
|
||||||
public void onCreate()
|
public void onCreate()
|
||||||
{
|
{
|
||||||
mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
|
mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
|
||||||
startservice();
|
startservice();
|
||||||
|
instance = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void do_start(Intent intent)
|
private void do_start(Intent intent)
|
||||||
|
@ -47,7 +51,7 @@ public class RockboxService extends Service
|
||||||
{
|
{
|
||||||
do_start(intent);
|
do_start(intent);
|
||||||
/* Display a notification about us starting. We put an icon in the status bar. */
|
/* Display a notification about us starting. We put an icon in the status bar. */
|
||||||
showNotification();
|
create_notification();
|
||||||
return START_STICKY;
|
return START_STICKY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,12 +147,14 @@ public class RockboxService extends Service
|
||||||
/* heavily based on the example found on
|
/* heavily based on the example found on
|
||||||
* http://developer.android.com/reference/android/app/Service.html
|
* http://developer.android.com/reference/android/app/Service.html
|
||||||
*/
|
*/
|
||||||
public void showNotification() {
|
|
||||||
|
private void create_notification()
|
||||||
|
{
|
||||||
// In this sample, we'll use the same text for the ticker and the expanded notification
|
// In this sample, we'll use the same text for the ticker and the expanded notification
|
||||||
CharSequence text = getText(R.string.notification);
|
CharSequence text = getText(R.string.notification);
|
||||||
|
|
||||||
// Set the icon, scrolling text and timestamp
|
// Set the icon, scrolling text and timestamp
|
||||||
Notification notification = new Notification(R.drawable.rb, text,
|
notification = new Notification(R.drawable.rb, text,
|
||||||
System.currentTimeMillis());
|
System.currentTimeMillis());
|
||||||
|
|
||||||
// The PendingIntent to launch our activity if the user selects this notification
|
// The PendingIntent to launch our activity if the user selects this notification
|
||||||
|
@ -158,16 +164,31 @@ public class RockboxService extends Service
|
||||||
|
|
||||||
// Set the info for the views that show in the notification panel.
|
// Set the info for the views that show in the notification panel.
|
||||||
notification.setLatestEventInfo(this, getText(R.string.notification), text, contentIntent);
|
notification.setLatestEventInfo(this, getText(R.string.notification), text, contentIntent);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void startForeground()
|
||||||
|
{
|
||||||
|
if (instance != null)
|
||||||
|
{
|
||||||
// Send the notification.
|
// Send the notification.
|
||||||
// We use a layout id because it is a unique number. We use it later to cancel.
|
// We use a layout id because it is a unique number. We use it later to cancel.
|
||||||
mNM.notify(R.string.notification, notification);
|
instance.mNM.notify(R.string.notification, instance.notification);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* this call makes the service run as foreground, which
|
* this call makes the service run as foreground, which
|
||||||
* provides enough cpu time to do music decoding in the
|
* provides enough cpu time to do music decoding in the
|
||||||
* background
|
* background
|
||||||
*/
|
*/
|
||||||
startForeground(R.string.notification, notification);
|
instance.startForeground(R.string.notification, instance.notification);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void stopForeground()
|
||||||
|
{
|
||||||
|
if (instance.notification != null)
|
||||||
|
{
|
||||||
|
instance.stopForeground(true);
|
||||||
|
instance.mNM.cancel(R.string.notification);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue