Ziel ist es, Broadcasts vom Headset abzufangen, sowie Bluetooth, um auf verschiedene Arten von Klicks vom Headset zu reagieren, um den Mediaplayer zu ändern. Diese Lösung eignet sich für alle Versionen vor ICS. Hier ist ein Teil des Codes und Dinge, die ich versucht habe:MediaButtonIntentReceiver funktioniert nicht in Android 4.0+
....
private BroadcastReceiver mediaButtonReceiver = new MediaButtonIntentReceiver();
....
public void onCreate() {
...
IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
mediaFilter.setPriority(2147483647); // this is bad...I know
this.registerReceiver(mediaButtonReceiver, mediaFilter);
...
}
public class MediaButtonIntentReceiver extends BroadcastReceiver {
private KeyEvent event;
public MediaButtonIntentReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
try {
int action = event.getAction();
switch(action) {
case KeyEvent.ACTION_UP :
Log.d("TEST", "BUTTON UP");
break;
case KeyEvent.ACTION_DOWN :
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE :
Log.d("TEST", "BUTTON DOWN");
break;
}
} catch (Exception e) {
Log.d("TEST", "THIS IS NOT GOOD");
}
abortBroadcast();
}
}
Um zu versuchen, diese Arbeit zu machen, es klingt wie 4.0+ erfordert dies so etwas wie die Arbeit des Ball hielt:
((AudioManager)getSystemService(AUDIO_SERVICE)).registerMediaButtonEventReceiver(new ComponentName(this, MediaButtonIntentReceiver.class));
Ich habe sogar versucht zu fügen sie es das Manifest, zusätzlich zu dem oben:
<receiver android:name=".MediaButtonIntentReceiver" android:enabled="true">
<intent-filter android:priority="2147483647" >
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
Noch kein Glück. Was fehlt mir hier? Es ist sicherlich ein 4.0 +/ICS/JellyBean-Problem ... Dies wird in einem Service gemacht, keine Aktivität.
Ich fand auch, dass dies der Grund in Android Core ist, aber keine Lösung zu umgehen: http://code.google.com/p/media-button-router/issues/detail?id=10#c4 – Du3