Я постараюсь предоставить решение, которое я использовал, и большинство музыкальных плееров также используют ту же технику для отображения элементов управления плеером на панели уведомлений.
Я запускаю службу, которая используется для управления проигрывателем Media Player и всеми его элементами управления. Действие Пользовательский контроль взаимодействует со службой, например, отправляя намерения службе.
Intent i = new Intent(MainActivity.this, MyRadioService.class);
i.setAction(Constants.Player.ACTION_PAUSE);
startService(i);
Чтобы получить намерения и выполнить действие в классе обслуживания, я использую следующий код в методе onStartCommand службы
@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);
} Надеюсь, это действительно вам поможет. И вы сможете добиться желаемого. Удачного кодирования :)