BLE-与应用程序的首次连接不起作用

时间:2019-03-04 08:15:56

标签: android bluetooth-lowenergy texas-instruments

我正在使用自定义的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时,应用发现了设备,但它已连接但无法正常工作。为此,我应该退出并重新连接设备。为什么?

1 个答案:

答案 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()); }
}