我正在使用自定义的Android应用程序与德克萨斯州设备一起管理LED。设备已使用默认密码000000
启用了配对。在我的应用程序代码中,我具有这部分代码,用于读取配对的设备。
private void getpaireddevices(){
Set<BluetoothDevice> devicesArray = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
if(devicesArray.size() > 0) {
for(BluetoothDevice device : devicesArray) {
device.getName();
device.getAddress();
}
}
}
此刻,当我启用BLE时,应用发现了设备,但它已连接但无法正常工作。为此,我应该退出并重新连接设备。为什么?
答案 0 :(得分:1)
如果设备已经绑定,则可以这样做。调用removeBond()
方法以清除先前的绑定状态。
device.removeBond();
要检查BluetoothDevice的绑定状态,请使用getBondState()
。
Ble gatt连接成功率因设备而异。如果连接持续失败,则可能需要通过隐藏方法断开连接。
请阅读以下内容: BLE Device Bonding Remove Automatically in Android
方法unpairDevice()
将取消配对蓝牙连接。
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
for (BluetoothDevice bt : pairedDevices) {
if (bt.getName().contains("String you know has to be in device name")) {
unpairDevice(bt);
}
}
// Function to unpair from passed in device
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()); }
}