我想在通知中使用三个操作按钮来控制媒体服务,并且很难找到代码的工作示例:Vogella 有一个教程,但他使用一个按钮并打开一个活动而不是服务。我发现了其他几个此类教程和示例,但没有一个具有三个工作操作按钮的类似教程,这些教程演示了服务和多个操作的意图的构造,以及 stackoverflow 上操作按钮使用的大多数当前示例都适用于较低android 版本,使用单一意图按钮,...
这是我想用来设置通知的代码:
//individual intents for each action???
Intent Back = new Intent(this, MusicService.class );
Back.putExtras("back", 1);
Back.putExtras("play", 0);
Back.putExtras("next", 0);
Intent Play = new Intent (this, MusicService.class);
Back.putExtras("back", 0);
Back.putExtras("play", 1);
Back.putExtras("next", 0);
Intent Next = new Intent (this, MusicService.class);
Next.putExtras("back", 0);
Next.putExtras("play", 0);
Next.putExtras("next", 1);
//do I need to make three pending intents????
PendingIntent pIntentback = PendingIntent.getService(this, 0, Back, 0);
PendingIntent pIntentplay = PendingIntent.getService(this, 0, Play, 0)
PendingIntent pIntentnext = PendingIntent.getService(this, 0, Next, 0)
Notification noti = new Notification.Builder(this)
.setContentTitle("Juke Box Hero")
.setContentText("Playing ")
.setSmallIcon(R.drawable.ic_launcher)
.addAction(R.drawable.back, "", pIntentback)
.addAction(R.drawable.play, "", pIntentplay)
.addAction(R.drawable.next, "", pIntentnext)
.build();
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
noti.flags = Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(0, noti);
我这里有几个问题...
1) 上面的代码是我应该如何设置操作按钮、意图和待处理的意图?
2)因为我想接收服务中未决意图包装的意图,所以我在调用getService而不是getActivity时是否正确?
3)如果我能够直接在 MusicService 类中接收意图,我如何在不重新启动服务的情况下接收服务中的意图(从而丢失存储在内存中的数据)?
4)还是我需要构建一个接收器类来扩展 BroadcastReceiver 类并将其注册到清单中,然后将相应的意图发送到 MusicService 类?
请理解,我非常愿意研究和编写代码——并且在询问之前已经这样做了好几天,但我需要这些问题的直接答案......
非常感谢帮助和指导