Java 耳机插孔监听器

Java 耳机插孔监听器,java,android,audio,media-player,android-audiomanager,Java,Android,Audio,Media Player,Android Audiomanager,有人知道我如何检测设备上的耳机插孔是否在Android上拔下了吗?我有一个音乐播放器,当耳机拔下时,我需要暂停音乐。我找到的最接近的方法是使用音频管理器。这是正确的方向吗?这就是我最后要做的: private class NoisyAudioStreamReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (

有人知道我如何检测设备上的耳机插孔是否在Android上拔下了吗?我有一个音乐播放器,当耳机拔下时,我需要暂停音乐。我找到的最接近的方法是使用
音频管理器
。这是正确的方向吗?

这就是我最后要做的:

private class NoisyAudioStreamReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {
            pause();
        }
    }
}

private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);

private void startPlayback() {
    registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);
}

private void stopPlayback() {
    unregisterReceiver(myNoisyAudioStreamReceiver);
}

我在这个链接上找到了答案:

虽然我没有关于如何做的全部细节,但我相信你可以使用“ACTION\u HEADSET\u PLUG”这样的东西:IntentFilter receiverFilter=new IntentFilter(Intent.ACTION\u HEADSET\u PLUG);HeadsetStateReceiver=新的HeadsetStateReceiver();registerReceiver(this.toggleDeviceConnectionState(),receiverFilter)@shim只需查看Intent()的文档,您是对的:是的,Intent过滤器存在,但从API21+来看,他们建议您改用AudioManager。我想原因是因为变得嘈杂还需要考虑其他类型的音频输出设备(例如蓝牙耳机),例如,如果蓝牙耳机断开连接,也应该进行广播。我现在正在尝试,但为了向后兼容,我想这两种方法都需要实现……这里是Android MediaPlayer的一个很好的实现@。它与
MediaSessionCompat
HeadstListener
集成,后者是
BroadcastReceiver
的一种实现,当耳机断开时暂停播放。此外,它还通过
AudioManager
处理音频焦点。