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?

  • Android 4.0 / ICS - Icono de la aplicación en la barra de acciones no se puede hacer clic
  • ActionBarSherlock menú de texto del panel de menú duro
  • Soporte unicode en android ndk
  • Android Fragments ¿Debo reutilizar 1 fragmento o crear nuevas instancias?
  • Asignación externa demasiado grande para este proceso en Android
  • Efecto borroso como en la aplicación Etsy?
  • No se encontró ningún recurso que coincida con el nombre dado 'android: Theme.Material.Light.DarkActionBar'
  • Descargar y extraer archivos Zip en Android
  • Mejores Prácticas para el Manejo de la Búsqueda
  • Cómo forzar el uso del menú de desbordamiento en los dispositivos con el botón de menú
  • MediaButtonIntentReceiver no funciona en Android 4.0+
  • Cómo terminar la actividad destruida
  • 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.