Notificación RemoteView en el oyente de clics

Así que, después de un montón de rascarse la cabeza, estoy en el final de mi ingenio. Tengo un reproductor multimedia RemoteViews en mi notificación y me gustaría poder acceder a los botones de reproducción, pausa, anterior y siguiente.

Sé que setOnClickPendingIntent() se utilizará para comunicarse desde la notificación. Sin embargo, me quedo preguntándome cómo funcionará.

¿Es posible permitir que el servicio maneje los clics?

He intentado esto, pero en vano. Yo estaba tratando de dejar que el servicio de manejar la pausa y el reanudación del jugador:

 rm = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notif_media_player); Intent intent = new Intent(getApplicationContext(), MusicService.class); intent.putExtra(REQUEST_CODE, PAUSE); PendingIntent pending = PendingIntent.getService(getApplicationContext(), PAUSE, intent, 0); rm.setPendingIntentTemplate(R.id.pause, pending); Notification notif = new NotificationCompat.Builder(getApplicationContext()) .setOngoing(true) .setSmallIcon(R.drawable.ic_launcher) .setContent(rm) .build(); NotificationManager mgr = (NotificationManager) getApplicationContext() .getSystemService(Context.NOTIFICATION_SERVICE); mgr.notify(NOTIFICATION_ID, notif); 

y mi IBinder es nulo. Si eso hace una diferencia.

¿Cómo puedo pausar y reproducir música desde la notificación?

Basado en la recomendación de CommonsWare :

  rm = new RemoteViews(getApplicationContext().getPackageName(), R.layout.notif_media_player); Intent pauseIntent = new Intent(getApplicationContext(), MusicService.class); Intent dismissIntent = new Intent(getApplicationContext(), MusicService.class); pauseIntent.putExtra(REQUEST_CODE, PAUSE); dismissIntent.putExtra(REQUEST_CODE, DISMISS); PendingIntent pause = PendingIntent.getService(getApplicationContext(), PAUSE, pauseIntent, 0); PendingIntent dismiss = PendingIntent.getService(getApplicationContext(), DISMISS, dismissIntent, 0); rm.setOnClickPendingIntent(R.id.pause, pause); rm.setOnClickPendingIntent(R.id.dismiss, dismiss); Notification notif = new NotificationCompat.Builder(getApplicationContext()) .setOngoing(true) .setSmallIcon(R.drawable.ic_launcher) .setContent(rm) .build(); NotificationManager mgr = (NotificationManager) getApplicationContext() .getSystemService(Context.NOTIFICATION_SERVICE); mgr.notify(NOTIFICATION_ID, notif); 
  • Utilizando IntentService para la reproducción de MediaPlayer
  • Establecer un Listener en una clase basada en servicio
  • Android: tener un servicio que se ejecuta todos los días a las 4 de la mañana
  • ¿Por qué se reinicia mi servicio de Android cuando se cancela el proceso, aunque utilicé START_NOT_STICKY?
  • ¿Cómo realizar llamadas JNI desde un servicio incluso si la aplicación está cerrada?
  • ¿Cómo detener / cancelar el administrador de alarmas en otra actividad?
  • Android: Variables de acceso pasadas al servicio
  • Notificación de primer plano en Android inicia nueva Actividad (vía pendingIntent) en lugar de una existente
  • Antecedentes El servicio se mata en android
  • Devolver un resultado de error en inKeyguardRestrictedInputMode ()
  • Transmisión de audio mediante el servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.