簡體   English   中英

如何在Lollipop中添加暫停/播放按鈕進行通知?

[英]how to add pause/play button to notification in Lollipop?

我有服務播放收音機並創建通知。 通知必須包含標題,文字,時間和按鈕(暫停/播放)。 我添加了剩余的東西,並顯示通知。 但我不確定如何在通知中添加按鈕。 在搜索時,我發現我可以使用RemoteView,RemoteControlClient和MediaStyles。 但是當媒體文件播放所有按鈕(前一個,暫停,播放,后退)時,將使用RemoteControlClient和MediaStyles。 所以我真的很困惑。 任何人都可以建議我,哪一個用於在Lollypop的通知中添加按鈕。

首先,您需要知道在23 API中不推薦使用addAction ,請閱讀此內容以進行關聯

調用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類以重新獲得點擊次數

    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;
                }
            }
        }



    }

最后,在您的manifests添加receiver

<receiver android:name=".MyNotificationReceiver">
            <intent-filter>
                <action android:name="RESUME_ACTION"/>
                <action android:name="STOP_ACTION"/>
                <action android:name="CANCEL_ACTION"/>

            </intent-filter>
        </receiver>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM