Je vais essayer de fournir une solution que j'ai utilisée et la plupart des lecteurs de musique utilisent également la même technique pour afficher les contrôles du lecteur dans la barre de notification.
J'exécute un service qui est utilisé pour gérer Media Player et tous ses contrôles. Le contrôle de l'utilisateur de l'activité interagit avec le service en envoyant des intentions au service, par exemple
Intent i = new Intent(MainActivity.this, MyRadioService.class);
i.setAction(Constants.Player.ACTION_PAUSE);
startService(i);
Pour recevoir des intentions et exécuter des actions dans la classe Service, j'utilise le code suivant dans la méthode onStartCommand du Service.
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(Constants.Player.ACTION_PAUSE)) {
if(mediaPlayer.isPlaying()) {
pauseAudio();
}
}
Maintenant, la réponse exacte à votre question est d'afficher la notification avec les commandes de lecture. Vous pouvez appeler les méthodes suivantes pour afficher la notification avec les contrôles.
// 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);
} J'espère que cela vous aidera vraiment. Et que vous serez en mesure de réaliser ce que vous voulez. Bon codage :)