java - Android:如何从蓝牙设备控制音乐服务播放/暂停?

标签 java android android-intent android-bluetooth android-music-player

开发音乐应用。在我的音乐服务中,我编写了一个自定义广播接收器。它适用于 Intent.ACTION_HEADSET_PLUG 但不适用于 Intent.ACTION_MEDIA_BUTTON

请指导如何从蓝牙设备控制音乐控件(播放/暂停/下一首/上一首)。

Intent.ACTION_HEADSET_PLUG 的代码是:

@Override
    public void onReceive(Context context, Intent intent) {

        // aux
        if(intent.getAction().equals(Intent.ACTION_HEADSET_PLUG))
        {
            int state = intent.getIntExtra("state", -1);

            if(state == 0)
            {
                // Headset is unplugged. PAUSE
                pauseSong();
                sendBroadcast();
            }
            else if(state == 1)
            {
                // headset is plugged
                resumeSong();
                sendBroadcast();
            }

        }
    }

最佳答案

Media playback the right way talk 中所述,您必须注册为“首选媒体应用程序”。当您使用 MediaSessionCompat 时,这会容易得多如 MediaSessionCompat video 中所述:

ComponentName mediaButtonReceiver =
  new ComponentName(context, YourBroadcastReceiver.class);
MediaSessionCompat mediaSession = 
  new MediaSessionCompat(context,
  tag, // Debugging tag, any string
  mediaButtonReceiver,
  null);
mediaSession.setFlags(
  MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | 
  MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
mediaSession.setCallback(this); // a MediaSessionCompat.Callback

// This is what enables media buttons and should be called
// Immediately after getting audio focus
mediaSession.setActive(true);

关于java - Android:如何从蓝牙设备控制音乐服务播放/暂停?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779209/

相关文章:

java - 尝试创建字符串

java - 将 HTML ASCII 代码转换为对应的字符

java - 设置要创建的文件的路径

android - 使用主页按钮退出时如何恢复操作?

android - 模块如何使用gradle multi-module使用另一个模块的资源

android - 无法过滤 URL NDEF Android Intent

android - android wear 2.0 是否支持 Intents 唤醒其他独立应用程序和共享数据?

android - 我总是在 android 7 中看到 "E ActivityManager: Sending non-protected broadcast from system"。这是什么意思?

java - 使用Java从FTP服务器删除文件

java - 如何更改单个条形javafx的颜色