BroadcastReceiver para ACTION_MEDIA_BUTTON não funciona

Eu estou escrevendo um aplicativo Android para a versão 4.0.3 (ICS) do sistema operacional Android. O problema é que eu não estou recebendo a saída do meu Log.d () no método onReceive () do BroadcastReceiver, o que significa que meu aplicativo não está manipulando adequadamente a transmissão.

Eu li inúmeras perguntas sobre como executar o código em um ACTION_MEDIA_BUTTON sendo clicado. Eu tenho até copiar + código colado quando o meu não funcionou, só para ver se funcionaria.

O ACTION_MEDIA_BUTTON que eu quero tratar é osolteiro botão nos fones de ouvido que permitem ao usuário atender / encerrar chamadas, reproduzir / pausar músicas.Em vez de meu aplicativo manipular esse botão, quando eu clico nele, o reprodutor de músicas no meu Nexus S Android começa a reproduzir uma música.

Eu não coloquei meu código em outra classe, talvez seja por isso que não está funcionando?

Aqui está o código encontrado no método onCreate () (esse código específico que eu copiei de um site depois que o código que escrevi não funcionou):

<code>IntentFilter mediaButtonFilter = new IntentFilter(
            Intent.ACTION_MEDIA_BUTTON);
    mediaButtonFilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
    BroadcastReceiver brMediaButton = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            Log.d("Event", "Media button!");
            this.abortBroadcast();

            KeyEvent key = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            if(key.getAction() == KeyEvent.ACTION_UP) {
                int keycode = key.getKeyCode();
                if(keycode == KeyEvent.KEYCODE_MEDIA_NEXT) {
                    Log.d("TestApp", "Next Pressed");
                } else if(keycode == KeyEvent.KEYCODE_MEDIA_PREVIOUS) {
                    Log.d("TestApp", "Previous pressed");
                } else if(keycode == KeyEvent.KEYCODE_HEADSETHOOK) {
                    Log.d("TestApp", "Head Set Hook pressed");
                }
            }

        }
    };
    registerReceiver(brMediaButton, mediaButtonFilter);
</code>

Tudo que eu realmente preciso testar é o KEYCODE_HEADSETHOOK, mas não faz mal ter o outro código lá para teste, eu vou consertar tudo assim que eu conseguir que tudo funcione corretamente.

No meu manifesto:

<code><intent-filter android:priority="2147483647" >
            <action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</code>

Originalmente, pensei que isso poderia ser um problema de permissão, pois não especifiquei nenhuma permissão para isso, mas não recebi nenhuma mensagem de erro.

Como eu disse anteriormente, tentei muitas variações disso. Um exemplo foi o uso do código neste linkbroadcastreceiver onReceive problem ACTION_MEDIA_BUTTON Android com as correções do CommonsWare. Mais uma vez, no entanto, eu modifiquei para que não estivesse em uma aula separada.

Agradeço antecipadamente por sua ajuda.

questionAnswers(3)

yourAnswerToTheQuestion