android.intent.action.MEDIA_BUTTON не может работать
<receiver android:name=".MusicIntentReceiver" android:exported="false">
<intent-filter>
<action android:name="android.media.AUDIO_BECOMING_NOISY" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
Это подробно MusicIntentReceiver ... открытый класс MusicIntentReceiver extends BroadcastReceiver {частная статическая конечная строка String TAG = LogHelper.makeLogTag(MusicIntentReceiver.class);
@Override
public void onReceive(Context context, Intent intent) {
//LogHelper.i(TAG, "-------------------------------- MusicIntentReceiver.");
if (intent.getAction().equals(android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
LogHelper.d(TAG, "Headphones disconnected.");
// send an intent to our MusicService to telling it to pause the audio
try {
//TODO Something
}
catch (Exception e) {
//LogHelper.i(TAG, "MusicIntentReceiver onReceive ", e.getMessage());
}
}
else {
if (!MainActivity.getInstance().isSDK50orGreater()) {
if (intent.getAction().equals(Intent.ACTION_MEDIA_BUTTON)) {
KeyEvent keyEvent = (KeyEvent) intent.getExtras().get(Intent.EXTRA_KEY_EVENT);
if (keyEvent.getAction() != KeyEvent.ACTION_DOWN)
return;
//LogHelper.i(TAG, "---------------------------- onReceive ", keyEvent.getKeyCode());
switch (keyEvent.getKeyCode()) {
case KeyEvent.KEYCODE_HEADSETHOOK:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
context.startService(new Intent(MediaContant.ACTION_TOGGLE_PLAYBACK));
break;
case KeyEvent.KEYCODE_MEDIA_PLAY:
context.startService(new Intent(MediaContant.ACTION_PLAY));
break;
case KeyEvent.KEYCODE_MEDIA_PAUSE:
context.startService(new Intent(MediaContant.ACTION_PAUSE));
break;
case KeyEvent.KEYCODE_MEDIA_STOP:
context.startService(new Intent(MediaContant.ACTION_STOP));
break;
case KeyEvent.KEYCODE_MEDIA_NEXT:
context.startService(new Intent(MediaContant.ACTION_NEXT));
break;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
// previous song
context.startService(new Intent(MediaContant.ACTION_PREVIOUS));
break;
}
}
}
}
}
}
Я пытаюсь не могу работать
2 ответа
Я использую mMediaButtonReceiverComponent = new ComponentName (this, MusicIntentReceiver.class); mAudioManager.registerMediaButtonEventReceiver (mMediaButtonReceiverComponent);
Intent mediaButtonIntent = new Intent (Intent.ACTION_MEDIA_BUTTON); mediaButtonIntent.setComponent (mMediaButtonReceiverComponent); mRemoteControlClientCompat = new RemoteControlClient (PendingIntent.getBroadcast (getApplicationContext () / context /, 0 / requestCode, ignored /, mediaButtonIntent / intent /, 0 / flags /)); mAudioManager.registerRemoteControlClient (mRemoteControlClientCompat);
Не удается управлять пультом дистанционного управления для Android 4.4.2
Если вы хотите, чтобы ваше приложение продолжало работать, когда экран выключен, вам нужно приобрести PARTIAL_WAKE_LOCK
Будьте осторожны, есть причина, по которой эти кнопки не работают, когда экран выключен, это для экономии заряда батареи. Вы должны быть очень осторожны, ваше приложение не разряжает батарею телефона.