首页 文章

Android中的蓝牙音频控件

提问于
浏览
8

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

3 回答

  • 5

    您是否在应用中注册了 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也有一些关于这个主题的好消息 .

  • 17

    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

  • 0

    请注意,自收到的答案被写入后,此API已更改 . 请参阅MediaSession callbacks documentation .

相关问题