Intentaré proporcionar una solución que he usado y la mayoría de los reproductores de música también usan la misma técnica para mostrar los controles del reproductor en la barra de notificaciones.
Estoy ejecutando un servicio que se usa para administrar Media Player y todos sus controles. Actividad El control del usuario interactúa con el Servicio enviando Intents al servicio, por ejemplo
Intent i = new Intent(MainActivity.this, MyRadioService.class);
i.setAction(Constants.Player.ACTION_PAUSE);
startService(i);
PARA recibir intenciones y realizar acciones en la clase de servicio, estoy usando el siguiente código en el método de servicio onStartCommand
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(Constants.Player.ACTION_PAUSE)) {
if(mediaPlayer.isPlaying()) {
pauseAudio();
}
}
Ahora para responder exactamente a su pregunta para mostrar la notificación con los controles de reproducción. Puede llamar a los siguientes métodos para mostrar notificaciones con controles.
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);
} Espero que esto realmente te ayude. Y podrás lograr lo que deseas. Que tengas una codificación feliz :)