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

Будьте осторожны, есть причина, по которой эти кнопки не работают, когда экран выключен, это для экономии заряда батареи. Вы должны быть очень осторожны, ваше приложение не разряжает батарею телефона.

Другие вопросы по тегам