example - mediaplayer android ejemplo
Agregar un botón de reproducción de terminación con Android L Notification.MediaStyle (3)
Añadiendo a la respuesta de @ matiash:
Para Pre-Lollipop su respuesta es según sea necesario.
notificationBuilder.setStyle(new NotificationCompat.MediaStyle().setShowCancelButton(true).setCancelButtonIntent(createPlayIntent());
Para post-Lollipop: para iniciar una notificación de reproductor de medios, debe haber usado
startForeground()
para iniciar el Servicio de Medios como unForeground Service
. El problema ahora es que esteService
no es descartable. AÚN SI establecemos elsetOngoing(false)
.
La mejor práctica seguida es hacer que el Servicio pueda ser desestimado en el estado de pausa. Para hacerlo, cuando su servicio de medios reciba una devolución de llamada del estado de pausa, llame a stopForeground(false)
. Esto detiene el servicio, pero mantiene viva la notificación. Y ahora se puede descartar.
Feliz codificacion
Quiero crear una notificación de reproducción de medios utilizando la nueva plantilla de Android L MediaStyle. Ahora, logré hacerlo perfectamente bien para acciones como anterior, reproducir, pausar, siguiente (utilizando addAction()
, pero no pude encontrar una manera de agregar un botón "cerrar" como en la captura de pantalla de la Documentación de Notificaciones de Android :
¿Hay una manera clara de lograr esto? Quiero que el botón "cerrar" termine la reproducción que se está reproduciendo, borre la notificación de reproducción y se ubique como en la captura de pantalla adjunta.
Ese es el botón de cancelar que estás buscando:
.setShowCancelButton(true)
.setCancelButtonIntent(stopPendingIntent)
En su instancia de MediaStyle.
ACTUALIZAR
Cuando se utiliza la versión de la biblioteca de soporte de este estilo de notificación, es decir, NotificationCompat.MediaStyle
, está el botón setShowCancelButton()
.
Esto agregará el botón de cierre, pero solo en las versiones anteriores a Lollipop , para solucionar un error con notificaciones que no se pueden descartar después de mostrarse como parte de un servicio en primer plano.
En Lollipop, la opción preferida es simplemente poder descartar la notificación (cuando el audio está en pausa) en lugar de tener un botón personalizado para hacerlo.
ANTIGUA RESPUESTA
Al observar el código fuente de la clase Notification.MediaStyle
, parece que actualmente no hay soporte para este botón en el estilo de notificación de MediaStyle:
private RemoteViews makeMediaBigContentView() {
final int actionCount = Math.min(mBuilder.mActions.size(), MAX_MEDIA_BUTTONS);
RemoteViews big = mBuilder.applyStandardTemplate(getBigLayoutResource(actionCount),
false /* hasProgress */);
if (actionCount > 0) {
big.removeAllViews(com.android.internal.R.id.media_actions);
for (int i = 0; i < actionCount; i++) {
final RemoteViews button = generateMediaActionButton(mBuilder.mActions.get(i));
big.addView(com.android.internal.R.id.media_actions, button);
}
}
styleText(big);
hideRightIcon(big);
applyTopPadding(big);
big.setViewVisibility(android.R.id.progress, View.GONE);
return big;
}
Esto coincide con el diseño que infla ( notification_template_material_big_media
), que contiene:
- Un diseño para la imagen multimedia.
- Un LinearLayout para tres líneas de texto.
- Un LinearLayout donde se agregan las acciones de los medios.
- Un ImageView para mostrar la línea divisoria entre estos dos.
pero nada más.
Parece que el botón de cierre en la página de documentación es solo una interpretación de un artista (Google Play Music tampoco la incluye).