Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Manejo de botones de medios en Android 5.0 Lollipop

Pre API 21 Estaba usando una llamada como audioManager.registerMediaButtonEventReceiver(receiver); Para manejar eventos de botón multimedia cuando un usuario presiona un botón en su auricular. A partir de la API 21, parece que MediaSession debe ser utilizado. Sin embargo, no estoy recibiendo ninguna respuesta.

 final MediaSession session = new MediaSession(context, "TAG"); session.setCallback(new Callback() { @Override public boolean onMediaButtonEvent(final Intent mediaButtonIntent) { Log.i("TAG", "GOT EVENT"); return super.onMediaButtonEvent(mediaButtonIntent); } }); session.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS); session.setActive(true); 

Arriba es lo que creo que debería funcionar, pero no lo hace. ¿Alguien sabe por qué esto no funciona o cómo debo registrarme?

  • Manera correcta de manejar la barra de acción hasta el botón?
  • Prueba de componente en Android App SDLC?
  • SharedPrefs se restablece después de configurar la configuración regional de la aplicación de Android
  • Botón de salida de la aplicación para Android
  • No se puede encontrar android sdk 2.3.4 en el gestor de SDK
  • Fragmento inflado en Fragmento El cuadro de diálogo arroja el error "Fragmento no creó una vista"
  • ¿Puede Wi-Fi o la CPU ir a dormir cuando la pantalla está encendida?
  • No se puede generar clave en el almacén de claves de Android
  • ¿Cómo obtener la vista de un elemento en listview en android?
  • AsyncTaskLoader onLoadFinished con un cambio de tarea y configuración pendiente
  • Android Studio: No se puede eliminar el archivo original
  • Android TextField: set focus + soft input programmatically
  • One Solution collect form web for “Manejo de botones de medios en Android 5.0 Lollipop”

    Para recibir eventos de botón multimedia, debe:

    1. Establecer una MediaSession.Callback y manejar los eventos adecuados (*)

    2. MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS banderas MediaSession.FLAG_HANDLES_MEDIA_BUTTONS y MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS

    3. Establece la mediaSession como activa

    4. Establezca un estado de reproducción correctamente, en especial las acciones (eventos de reproducción) que maneja su sesión. Por ejemplo:

       PlaybackState state = new PlaybackState.Builder() .setActions( PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PLAY_PAUSE | PlaybackState.ACTION_PLAY_FROM_MEDIA_ID | PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_SKIP_TO_NEXT | PlaybackState.ACTION_SKIP_TO_PREVIOUS) .setState(PlaybackState.STATE_PLAYING, position, speed, SystemClock.elapsedRealtime()) .build(); mSession.setPlaybackState(state); 

    Mi conjetura es que usted falta # 4, porque usted está haciendo todo lo demás correctamente.

    (*) La implementación por defecto de Callback.onMediaButtonEvent maneja todos los botones de medios comunes y llama a los métodos onXXXX () apropiados (onPlay, onPause, onSkipToNext, etc.). A menos que necesite manejar botones de medios infrecuentes – o para propósitos de depuración -, no necesita sobrescribir onMediaButtonEvent.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.