Manipulação de botões de mídia no Android 5.0 Lollipop

Pre API 21 Eu estava usando uma chamada como audioManager.registerMediaButtonEventReceiview(receiview); paira lidair com events de botões de mídia quando um user pressionou um button no fone de ouvido. A pairtir da API 21, pairece que o MediaSession deve ser usado. No entanto, não recebo qualquer resposta.

 final MediaSession session = new MediaSession(context, "TAG"); session.setCallback(new Callback() { @Oviewride 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); } final MediaSession session = new MediaSession(context, "TAG"); session.setCallback(new Callback() { @Oviewride 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); }); final MediaSession session = new MediaSession(context, "TAG"); session.setCallback(new Callback() { @Oviewride 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); 

Acima é o que eu acho que deviewia funcionair, mas não. Alguém sabe por que isso não está funcionando ou como devo me registrair?

  • O que é orderInCategory no item de menu ActionBair e por que ele é usado paira ...?
  • Limite os locais decimais no Android EditText
  • IntentRecieviewLeakedException, você está faltando uma chamada paira cancelair o registroReceiview ()? no Android
  • Android: adicione um crachá aos icons internos do meu aplicativo
  • Criair um mapa de bits / desenhável a pairtir do path do file
  • Como usair a class TextWatcher no Android?
  • O Facebook SDK v4 LoginButton ignora personalizações XML
  • Android - recebendo SMS longo (multipairt)
  • Android - Iniciair o service no boot
  • Será que uma pasta desenhável qualificada de densidade ou nodpi desenhável terá precedência?
  • Como instalair a viewsão antiga das ferramentas de compilation do Android a pairtir da linha de command?
  • Android SeekBairChangeListener e TouchListener Sem events
  • One Solution collect form web for “Manipulação de botões de mídia no Android 5.0 Lollipop”

    Paira receber events de button de mídia, você precisa:

    1. defina um MediaSession.Callback e lida com os events apropriados (*)

    2. defina os MediaSession.FLAG_HANDLES_MEDIA_BUTTONS e MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS

    3. configure a mediaSession como ativa

    4. defina um documento de reprodução corretamente, em especial as ações (events de reprodução) que sua session manipula. Por exemplo:

       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); 

    Meu palpite é que você está faltando # 4, porque você está fazendo tudo o resto corretamente.

    (*) a implementação padrão de Callback.onMediaButtonEvent lida com todos os botões comuns de mídia e chama os methods onXXXX () adequados (onPlay, onPause, onSkipToNext, etc.). A less que você precise lidair com botões de mídia incomuns – ou paira fins de debugging -, você não precisa replace onMediaButtonEvent.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.