代码中解除手机已配对的蓝牙设备

这几天被一个问题困扰了很久,就是app里面连接蓝牙设备之后解绑断开,蓝牙回调也显示了断开,但是自己再去搜就搜不到了。找了很久原因发现在手机设置的蓝牙配对列表中发现该设备已被配对,导致手机搜不到。然后就找到一个方法得到手机配对的蓝牙列表然后再通过反射的机制取消蓝牙的配对,到这里之后手机就能搜到了蓝牙。但是之后的每一次连接都需要再重新配对。接下来贴下代码:

//得到配对的设备列表,清除已配对的设备
	public void removePairDevice(){
		if(mBluetoothAdapter!=null){
			Set<BluetoothDevice> bondedDevices = mBluetoothAdapter.getBondedDevices();
			for(BluetoothDevice device : bondedDevices ){
					unpairDevice(device);
			}
		}

	}

	//反射来调用BluetoothDevice.removeBond取消设备的配对
	private void unpairDevice(BluetoothDevice device) {
		try {
			Method m = device.getClass()
					.getMethod("removeBond", (Class[]) null);
			m.invoke(device, (Object[]) null);
		} catch (Exception e) {
			Log.e(TAG, e.getMessage());
		}
	}

就是这样就解决了断开因为配对而搜不到的问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值