@Override
public void onReceive(Context context, Intent intent) {
final KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event.getAction() != KeyEvent.ACTION_DOWN) return;
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_MEDIA_STOP:
// stop music
break;
case KeyEvent.KEYCODE_HEADSETHOOK:
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
// pause music
break;
case KeyEvent.KEYCODE_MEDIA_NEXT:
// next track
break;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
// previous track
break;
}
}
3 回答
您是否在应用中注册了
BroadcastReceiver
以使用AudioManager.registerMediaButtonEventReceiver()收听MEDIA_BUTTON
事件?注册后,可以通过将附加项中附加的
KeyEvent
对象处理为EXTRA_KEY_EVENT
来处理按钮事件 . 例如:这个Android Developer blog post也有一些关于这个主题的好消息 .
继accepted answer之后,请注意冰淇淋三明治中的一个密码已经改变:
它正在发送KEYCODE_MEDIA_PLAY(126)和KEYCODE_MEDIA_PAUSE(127) .
https://code.google.com/p/android/issues/detail?id=23172
请注意,自收到的答案被写入后,此API已更改 . 请参阅MediaSession callbacks documentation .