BroadcastReceiver dla ACTION_MEDIA_BUTTON nie działa
Piszę aplikację na Androida dla wersji 4.0.3 (ICS) systemu operacyjnego Android. Problem polega na tym, że nie otrzymuję danych wyjściowych z mojego Log.d () w metodzie onReceive () BroadcastReceiver, co oznacza, że moja aplikacja nie obsługuje poprawnie transmisji.
Przeczytałem niezliczone pytania dotyczące sposobu uruchamiania kodu po kliknięciu ACTION_MEDIA_BUTTON. Mam nawet kopię + wklejony kod, gdy mój nie działał, tylko aby sprawdzić, czy zadziała.
ACTION_MEDIA_BUTTON, który chcę obsługiwać, topojedynczy przycisk na słuchawkach, który pozwala użytkownikowi odbierać / kończyć połączenia, odtwarzać / wstrzymywać muzykę.Zamiast mojej aplikacji obsługującej ten przycisk, gdy go klikam, zapasowy odtwarzacz muzyki na moim Nexusie S Android rozpoczyna odtwarzanie utworu.
Nie umieściłem mojego kodu w innej klasie, może dlatego nie działa?
Oto kod znaleziony w metodzie onCreate () (ten konkretny kod skopiowałem ze strony internetowej po tym, jak kod, który napisałem, nie działał):
<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>
Wszystko, czego naprawdę potrzebuję do przetestowania, to KEYCODE_HEADSETHOOK, ale nie zaszkodzi mieć tam inny kod do testowania, naprawię go, gdy wszystko będzie działać poprawnie.
W moim manifeście:
<code><intent-filter android:priority="2147483647" > <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </code>
Początkowo uważałem, że może to być problem z uprawnieniami, ponieważ nie określiłem żadnych uprawnień do tego, jednak nie otrzymałem żadnego komunikatu o błędzie.
Jak powiedziałem wcześniej, próbowałem wielu odmian tego. Jednym z przykładów było użycie kodu pod tym linkiemnadawca transmisji onReceive problem ACTION_MEDIA_BUTTON Android z poprawkami CommonsWare. Ponownie jednak zmodyfikowałem go, aby nie był w osobnej klasie.
Z góry dziękuję za pomoc.