Android中的蓝牙音频控件

Jas*_*son 8 android bluetooth

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

Joe*_*Joe 17

您是否BroadcastReceiver在应用中注册了一个用于收听MEDIA_BUTTON事件的人AudioManager.registerMediaButtonEventReceiver()

注册后,可以通过处理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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这个Android开发者博客文章也有关于这个主题的一些很好的信息.


小智 5

除了接受的答案之外,请注意冰淇淋三明治中的一个密码已经改变:

在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