HTML5+判断ios、android耳机状态
废话不多说直接上代码
// #ifdef APP-PLUS
let that = this;
//true 检测到耳机、false 未检测到耳机
let headsetStatus = false;
if(plus.os.name == 'iOS') {
headsetStatus = that.getIosHeadsetStatus();
} else {
headsetStatus = that.getAndroidHeadsetStatus();
}
// #endif
//获取ios耳机状态
getIosHeadsetStatus(){
let b = false;
console.log("ios 获取是否插入耳机")
let AVAudioSession = plus.ios.importClass("AVAudioSession");
let sharedInstance = AVAudioSession.sharedInstance();
let currentRoute = sharedInstance.currentRoute();
let desc = currentRoute.plusGetAttribute("outputs")
let firstObject = desc.plusGetAttribute("firstObject")
let portType = firstObject.plusGetAttribute("portType")
console.log(portType)
//插入 Headphones
//未插入 Speaker
//蓝牙耳机 BluetoothA2DPOutput
if(portType === 'Headphones' || portType === 'BluetoothA2DPOutput'){
b = true;
}
return b;
},
// 获取安卓耳机状态
getAndroidHeadsetStatus(){
console.log("获取是否插入耳机")
let b = false;
try{
let intent = plus.android.newObject("android.content.Intent");
let context = plus.android.importClass("android.content.Context");
let main = plus.android.runtimeMainActivity();
let systemService = main.getSystemService(context.AUDIO_SERVICE);
b = plus.android.invoke(systemService,"isWiredHeadsetOn")
} catch (e) {
console.log(e);
}
if(!b){
console.log("未获取到插孔耳机开始获取蓝牙耳机状态")
try{
let BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");
let BAdapter = BluetoothAdapter.getDefaultAdapter();
let BluetoothProfile = plus.android.importClass("android.bluetooth.BluetoothProfile");
let connectionState = BAdapter.getProfileConnectionState(BluetoothProfile.HEADSET);
if(connectionState === 2){
b = true;
}
} catch (e) {
console.log(e);
}
}
return b;
},
附:HTML5+ API
http://www.html5plus.org/doc/zh_cn/android.html