问题 Android:检查是否已插入耳机


如何检查耳机当前是否已插入。我不希望广播接收器在连接到设备时通知我。我需要这样的东西:

if(/*headphone is connected*/)
 ...

896
2018-05-04 11:14


起源



答案:


看起来你会对它感兴趣 isWiredHeadsetOn() 方法 和 isBluetoothA2dpOn() 方法 的 AudioManager 类

但是,那 isWiredHeadsetOn() 方法仅适用于Android 2.0或更高版本。 (该 isBluetoothA2dpOn() 方法自Android 1.5开始提供。)


14
2018-05-04 11:31



请注意,现在不推荐使用此选项,您需要检查其类型 audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS) 代替 - yonix


答案:


看起来你会对它感兴趣 isWiredHeadsetOn() 方法 和 isBluetoothA2dpOn() 方法 的 AudioManager 类

但是,那 isWiredHeadsetOn() 方法仅适用于Android 2.0或更高版本。 (该 isBluetoothA2dpOn() 方法自Android 1.5开始提供。)


14
2018-05-04 11:31



请注意,现在不推荐使用此选项,您需要检查其类型 audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS) 代替 - yonix


使用此代码段

AudioManager am1 = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
Log.i("am1.isWiredHeadsetOn()", am1.isWiredHeadsetOn()+"");
Log.i("am1.isMusicActive()", am1.isMusicActive()+"");
Log.i("am1.isSpeakerphoneOn()", am1.isSpeakerphoneOn()+"");

2
2018-03-05 10:53





这似乎至少在1.6上完成了这项工作;不确定它是否在以后的版本中得到支持(a是AudioManager的一个实例)

boolean headphones = (a.getRouting(a.getMode()) & AudioManager.ROUTE_HEADSET) == AudioManager.ROUTE_HEADSET;

0
2018-02-13 14:34



@movillnescom用这句话,你检查耳机是插头还是拔掉? - Sergio Antonio Snchez Camarero