Ich werde versuchen, eine Lösung bereitzustellen, die ich verwendet habe, und die meisten Musik-Player verwenden dieselbe Technik, um die Player-Steuerelemente in der Benachrichtigungsleiste anzuzeigen.
Ich verwende einen Dienst, mit dem Media Player und alle seine Steuerelemente verwaltet werden. Aktivität Die Benutzersteuerung interagiert mit dem Dienst, indem sie beispielsweise Absichten an den Dienst sendet
Intent i = new Intent(MainActivity.this, MyRadioService.class);
i.setAction(Constants.Player.ACTION_PAUSE);
startService(i);
Um Absichten zu empfangen und Aktionen in der Serviceklasse auszuführen, verwende ich den folgenden Code in der onStartCommand-Servicemethode
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(Constants.Player.ACTION_PAUSE)) {
if(mediaPlayer.isPlaying()) {
pauseAudio();
}
}
Nun zur genauen Beantwortung Ihrer Frage, um eine Benachrichtigung mit den Spielsteuerelementen anzuzeigen. Sie können die folgenden Methoden aufrufen, um Benachrichtigungen mit Steuerelementen anzuzeigen.
// showNotification
private void startAppInForeground() {
// Start Service in Foreground
// Using RemoteViews to bind custom layouts into Notification
RemoteViews views = new RemoteViews(getPackageName(),
R.layout.notification_status_bar);
// Define play control intent
Intent playIntent = new Intent(this, MyRadioService.class);
playIntent.setAction(Constants.Player.ACTION_PLAY);
// Use the above play intent to set into PendingIntent
PendingIntent pplayIntent = PendingIntent.getService(this, 0,
playIntent, 0);
// binding play button from layout to pending play intent defined above
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);
} Hoffe das hilft dir wirklich. Und Sie werden in der Lage sein, das zu erreichen, was Sie wollen. Viel Spaß beim Codieren :)