耳机插孔听众Android

问题描述:

有谁知道我可以检测到设备上的耳机插孔是否在Android上拔掉?我有一个音乐播放器,当耳机拔下时我需要暂停音乐。我发现的最接近的东西是使用AudioManager。这是正确的方向吗?耳机插孔听众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); 
} 

,我发现这个链接的回答:http://developer.android.com/training/managing-audio/audio-output.html

+0

虽然我没有关于如何做到这一点的全部细节,我相信你能在以下行中使用“ACTION_HEADSET_PLUG”:IntentFilter receiverFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG); HeadsetStateReceiver receiver = new headsetStateReceiver(); registerReceiver(this.toggleDeviceConnectionState(),receiverFilter); – shim 2012-11-09 21:18:43

+0

@shim只需检查意向(https://developer.android.com/reference/android/content/Intent.html#ACTION_HEADSET_PLUG)的文档,你就是对的:是的,该意图过滤器存在,但从API21 +他们建议您改用AudioManager。我认为之所以是因为BECOMING_NOISY也考虑了其他类型的音频输出设备(例如蓝牙耳机),例如,如果蓝牙耳机断开连接,它也应该进行广播。我现在正在尝试它,但为了向后兼容,我想这两种方法都需要实施... – 2017-12-28 16:23:51