Android:处理KEYCODE_MEDIA_NEXT中断音乐播放

时间:2018-01-23 05:41:26

标签: android audio bluetooth

标题:处理KEYCODE_MEDIA_NEXT中断音乐播放

在我的Android应用程序中,我想以自己的方式处理我的蓝牙音箱中的下一个键。按键时我想提高/降低音量。但每次按下硬件键我都会中断。中断大概是半秒钟。该 应用程序在中断后(不是之前)接收广播。扬声器是“EasyAcc Mini 2 Portabler 4.1蓝牙”扬声器。

以下代码段显示了实现:

的AndroidManifest.xml:

    <receiver android:name=".services.player.BluetoothMediaReceiver">
        <intent-filter android:priority="999999999">
            <action android:name="android.intent.action.MEDIA_BUTTON" />
        </intent-filter>
    </receiver>

注册蓝牙接收器:

  AudioManager audioManager = (AudioManager)activity.getSystemService(Context.AUDIO_SERVICE);
  Intent i = new Intent(activity, BluetoothMediaReceiver.class);
  PendingIntent pi = PendingIntent.getBroadcast(activity, 1, i, 0);
  audioManager.registerMediaButtonEventReceiver(pi);

BluetoothMediaReceiver是广播接收器

最后是接收方法:

  protected void processReceive(Context context, Intent intent) {
    KeyEvent key = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
    if (key.getAction() == KeyEvent.ACTION_DOWN) {
      if (key.getKeyCode() == KeyEvent.KEYCODE_MEDIA_NEXT) {
        volumeChanger.volumeUp();
      }
      else if (key.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PREVIOUS) {
        volumeChanger.volumeDown();
      }
    }
    abortBroadcast();
  }

在processReceive方法中创建断点时,音乐中断后会触发断点。

我使用MediaPlayer播放mp3文件中的音乐。虽然我听不到音乐,但播放器继续播放(不停顿)。

任何人都可以给我一个提示,以避免中断。

1 个答案:

答案 0 :(得分:0)

知道了,问题是蓝牙扬声器。

我用另一个蓝牙耳机测试了它并且没有中断。