Я спробую надати рішення, яке я використовував, і більшість музичного програвача також використовують ту саму техніку, щоб показати елементи керування програвачем на панелі сповіщень.
Я використовую службу, яка використовується для управління медіапрогравачем та всіма його елементами управління. Діяльність Користувацький контроль взаємодіє зі Службою, наприклад, надсилаючи Інтенції службі
Intent i = new Intent(MainActivity.this, MyRadioService.class);
i.setAction(Constants.Player.ACTION_PAUSE);
startService(i);
Щоб отримувати наміри та виконувати дії в класі Service, я використовую наступний код у методі onStartCommand Service
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(Constants.Player.ACTION_PAUSE)) {
if(mediaPlayer.isPlaying()) {
pauseAudio();
}
}
Тепер, щоб точно відповісти на ваше запитання, щоб показати сповіщення з елементами управління відтворенням. Ви можете викликати наступні методи, щоб показати сповіщення за допомогою елементів керування.
private void startAppInForeground() {
RemoteViews views = new RemoteViews(getPackageName(),
R.layout.notification_status_bar);
Intent playIntent = new Intent(this, MyRadioService.class);
playIntent.setAction(Constants.Player.ACTION_PLAY);
PendingIntent pplayIntent = PendingIntent.getService(this, 0,
playIntent, 0);
views.setOnClickPendingIntent(R.id.status_bar_play, pplayIntent);
views.setImageViewResource(R.id.status_bar_play,
R.drawable.status_bg);
Notification status = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
status = new Notification.Builder(this).build();
}
status.flags = Notification.FLAG_ONGOING_EVENT;
status.icon = R.mipmap.ic_launcher;
status.contentIntent = pendingIntent;
startForeground(Constants.FOREGROUND_SERVICE, status);
} Сподіваюся, це дійсно допоможе вам. І ви зможете досягти бажаного. Приємного кодування :)