方法AudioManager.isWiredHeadsetOn()已从api级别14弃用,我们现在如何检测是否连接了有线耳机?
答案 0 :(得分:18)
文档的弃用消息指出:
仅用于检查耳机是否已连接。
所以我想可以继续使用它来检查有线耳机是否已连接,但不能检查音频是否被路由到它或通过它播放。
答案 1 :(得分:13)
这是我的解决方案:
private boolean isHeadsetOn(Context context) {
AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (am == null)
return false;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return am.isWiredHeadsetOn() || am.isBluetoothScoOn() || am.isBluetoothA2dpOn();
} else {
AudioDeviceInfo[] devices = am.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
for (int i = 0; i < devices.length; i++) {
AudioDeviceInfo device = devices[i];
if (device.getType() == AudioDeviceInfo.TYPE_WIRED_HEADSET
|| device.getType() == AudioDeviceInfo.TYPE_WIRED_HEADPHONES
|| device.getType() == AudioDeviceInfo.TYPE_BLUETOOTH_A2DP
|| device.getType() == AudioDeviceInfo.TYPE_BLUETOOTH_SCO) {
return true;
}
}
}
return false;
}
答案 2 :(得分:7)
试试这个解决方案。它在我的案子里工作。可能这对你有帮助!
IntentFilter iFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
Intent iStatus = context.registerReceiver(null, iFilter);
boolean isConnected = iStatus.getIntExtra("state", 0) == 1;
答案 3 :(得分:0)
它对我正确:
geom_boxplot(stat='identity', ...)
答案 4 :(得分:0)
IntentFilter iFilter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
Intent iStatus = context.registerReceiver(null, iFilter);
boolean isConnected = iStatus.getIntExtra("state", 0) == 1;
我确实知道此代码可在哪个andorid平台版本上使用。 它不适用于Android 8。 结果iStatus为空。
答案 5 :(得分:-1)
我们必须使用广播接收器来查找蓝牙连接的状态。
这是一个很好的example