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扩展广播接收器{ 私有静态最后弦乐TAG = LogHelper.makeLogTag(MusicIntentReceiver.class);android.intent.action.MEDIA_BUTTON不能工作
@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;
}
}
}
}
}
}
我想不能工作
如果你想你的应用程序继续工作,当屏幕关闭时,你就需要获得一个PARTIAL_WAKE_LOCK
要小心,这是有原因的当屏幕关闭时按钮不起作用,这是为了节省电池。你必须非常小心你的应用程序不会耗尽手机电池。
我相信在播放音乐时CPU已经启动并正在运行。但是,您可能想在〜5-10分钟的静音后释放唤醒锁。 –
我使用 mMediaButtonReceiverComponent = new ComponentName(this,MusicIntentReceiver.class); mAudioManager.registerMediaButtonEventReceiver(mMediaButtonReceiverComponent);
意图mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); mediaButtonIntent .setComponent(mMediaButtonReceiverComponent); mRemoteControlClientCompat =新RemoteControlClient(PendingIntent.getBroadcast(getApplicationContext()/ 上下文/0/requestCode,忽略 /,mediaButtonIntent/意图/0/标志 /)); mAudioManager.registerRemoteControlClient(mRemoteControlClientCompat);
无法控制Android 4.4.2的遥控器
哪部分不工作?你可以插入日志语句或插入一些敬酒,并告诉我们哪些没有被激活?你的logcat出错了吗?你在测试什么手机?它是Android 5.0还是更大? –
当屏幕关闭不起作用 – NPBA
[捕获媒体按钮上的Android> = 4.0(工程2.3)]可能重复](http://*.com/questions/10537184/capture-media-button-on-android-4- 0-works-on-2-3) –