耳机插孔听众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
虽然我没有关于如何做到这一点的全部细节,我相信你能在以下行中使用“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
@shim只需检查意向(https://developer.android.com/reference/android/content/Intent.html#ACTION_HEADSET_PLUG)的文档,你就是对的:是的,该意图过滤器存在,但从API21 +他们建议您改用AudioManager。我认为之所以是因为BECOMING_NOISY也考虑了其他类型的音频输出设备(例如蓝牙耳机),例如,如果蓝牙耳机断开连接,它也应该进行广播。我现在正在尝试它,但为了向后兼容,我想这两种方法都需要实施... – 2017-12-28 16:23:51