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

时间:2016-03-03 17:40:14

标签: 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();
            }

        }
    }

1 个答案:

答案 0 :(得分:1)

正如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);