媒体播放器应该在我的 android 应用程序中以编程方式断开耳机连接时停止

media player should stop on disconnecting headphone in my android app programatically

我在开发媒体播放器应用程序时遇到问题。
我想要它,这样当我从设备上取下耳机时,应用程序中的 MediaPlayer 就会暂停。

当有人插入或拔出耳机时,您可以通过广播获得 ACTION_HEADSET_PLUG 意图。

在您的应用程序启动时,您可以使用 AudioManager.isWiredHeadsetOn() 检查此时是否插入了耳机。 (不要忘记添加 MODIFY_AUDIO_SETTINGS 权限。)

Android 文档建议使用 AUDIO_BECOMING_NOISY 意图过滤器

在您的 manafest 中设置 intent 过滤器,然后:

public class MusicIntentReceiver extends android.content.BroadcastReceiver {
   @Override 
   public void onReceive(Context ctx, Intent intent) {
      if (intent.getAction().equals(
                    android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY)) {
          // signal your service to stop playback 
          // (via an Intent, for instance) 
      } 
   } 
} 

信息:http://developer.android.com/guide/topics/media/mediaplayer.html#noisyintent

在同一 Activity 中注册广播。

private BroadcastReceiver mNoisyReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if( mMediaPlayer != null && mMediaPlayer.isPlaying() ) {
            mMediaPlayer.pause();
        }
    }
};

处理耳机拔下插头。无法通过清单接收器完成

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
       IntentFilter filter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
       registerReceiver(mNoisyReceiver, filter);
    }

注销接收器

@Override
public void onDestroy() {
    super.onDestroy();
    unregisterReceiver(mNoisyReceiver);
}