Android中的蓝牙音频控件

时间:2011-11-09 22:28:27

标签: android bluetooth

我的应用程序会播放音乐,我希望能够暂停/播放/跳过任何可能支持这些按钮(汽车,耳机等)的蓝牙设备。当通过汽车的蓝牙连接时,音频会自动进入,但控制按钮不会影响我应用的音频流。它改为打开默认的媒体播放器。如何路由这些按钮以影响我的应用程序?

3 个答案:

答案 0 :(得分:17)

您是否在应用中注册BroadcastReceiver以使用AudioManager.registerMediaButtonEventReceiver()收听MEDIA_BUTTON个活动?

注册后,可以通过将附加项中附加的KeyEvent对象处理为EXTRA_KEY_EVENT来处理按钮事件。例如:

@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;
    }
}

这个Android Developer blog post也有一些很好的信息。

答案 1 :(得分:5)

accepted answer之后,请注意冰淇淋三明治中的一个密码已发生变化:

  

播放/暂停意图传递的键码已更改   ICS。看到这个   http://code.google.com/p/media-button-router/issues/detail?id=10#c5

     

在ICS之前发送的密码是   KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE。现在有两个单独的密钥代码   用于播放和暂停(126和127)。

发送KEYCODE_MEDIA_PLAY(126)和KEYCODE_MEDIA_PAUSE(127)。

https://code.google.com/p/android/issues/detail?id=23172

答案 2 :(得分:0)

请注意,自编写接受的答案以来,此API已更改。请参阅MediaSession callbacks documentation