如何添加暂停/播放按钮来通知棒棒糖?
问题描述:
我有播放收音机的服务&创建通知。通知必须包含标题,文字,时间& a按钮(暂停/播放)。我已经添加了其他的东西&通知正在显示。但我不确定如何将按钮添加到通知。在搜索时,我发现我可以使用RemoteView,RemoteControlClient & MediaStyles。但RemoteControlClient & MediaStyles用于有媒体文件使用所有按钮播放(上一个,暂停,播放,返回)。所以我很困惑。任何人都可以建议我,哪一个用于在Lollypop的通知中添加按钮。如何添加暂停/播放按钮来通知棒棒糖?
答
首先,你需要知道addAction
在23 API已被弃用,读this到涉及
呼叫showNotification()
方法来显示通知
private void showActionButtonsNotification() {
Notification.Builder notif;
NotificationManager nm;
notif = new Notification.Builder(getApplicationContext());
notif.setSmallIcon(R.mipmap.ic_launcher);
notif.setContentTitle("Hi there!");
notif.setContentText("This is even more text.");
Uri path = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
notif.setSound(path);
nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent yesReceive = new Intent();
yesReceive.setAction(MyNotificationReceiver.RESUME_ACTION);
PendingIntent pendingIntentYes = PendingIntent.getBroadcast(this, MyNotificationReceiver.REQUEST_CODE_NOTIFICATION, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT);
notif.addAction(R.drawable.resume, "resume", pendingIntentYes);
Intent yesReceive2 = new Intent();
yesReceive2.setAction(MyNotificationReceiver.STOP_ACTION);
PendingIntent pendingIntentYes2 = PendingIntent.getBroadcast(this, MyNotificationReceiver.REQUEST_CODE_NOTIFICATION, yesReceive2, PendingIntent.FLAG_UPDATE_CURRENT);
notif.addAction(R.drawable.stop, "stop", pendingIntentYes2);
Intent maybeReceive2 = new Intent();
maybeReceive2.setAction(MyNotificationReceiver.CANCEL_ACTION);
PendingIntent pendingIntentMaybe2 = PendingIntent.getBroadcast(this, MyNotificationReceiver.REQUEST_CODE_NOTIFICATION, maybeReceive2, PendingIntent.FLAG_UPDATE_CURRENT);
notif.addAction(R.drawable.cancel, "cancel", pendingIntentMaybe2);
assert nm != null;
nm.notify(MyNotificationReceiver.REQUEST_CODE, notif.getNotification());
}
创建MyNotificationReceiver
类recive的点击
public class MyNotificationReceiver extends BroadcastReceiver {
public static int REQUEST_CODE_NOTIFICATION = 1212;
public static int REQUEST_CODE = 10;
public static final String RESUME_ACTION = "RESUME_ACTION";
public static final String STOP_ACTION = "STOP_ACTION";
public static final String CANCEL_ACTION = "CANCEL_ACTION";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e("action", action);
if (intent.getAction() != null) {
switch (intent.getAction()) {
case RESUME_ACTION :
Toast.makeText(context, "resume", Toast.LENGTH_SHORT).show();
// you resume action
break;
case STOP_ACTION :
Toast.makeText(context, "stop", Toast.LENGTH_SHORT).show();
// you stop action
break;
case CANCEL_ACTION:
Toast.makeText(context, "cancel", Toast.LENGTH_SHORT).show();
// you cancel action
break;
}
}
}
}
最后,将receiver
加入您的manifests
<receiver android:name=".MyNotificationReceiver">
<intent-filter>
<action android:name="RESUME_ACTION"/>
<action android:name="STOP_ACTION"/>
<action android:name="CANCEL_ACTION"/>
</intent-filter>
</receiver>
使用远程视图,并按照链接http://www.androidbegin.com/tutorial/android-custom-notification-tutorial/ – Ramesh 2015-02-06 05:03:43
它将为棒糖工作? – 2015-02-06 05:13:11
最近我们在一个具有远程视图的应用程序中实现了通知。它在棒棒糖中工作也很好 – Ramesh 2015-02-06 05:17:44