我正在尝试检测绑定的蓝牙设备是否支持GATT。
扫描时,调用BluetoothDevice.getType()
会将我的设备识别为类型3(双模式 - BR / EDR / LE )。但是,在绑定设备并调用BluetoothAdapter.getBondedDevices()
之后,同样的方法会将我的设备作为类型1( Classic )返回。
@Override
public void onScanResult(int callbackType, android.bluetooth.le.ScanResult result) {
result.getDevice().getType();// value is 3
}
...
// this will show pairing request to user
device.connectGatt(context, false, callback);
...
// once the device is paired, I query for the new set of bonded devices.
Set<BluetoothDevice> set = BluetoothAdapter.getDefaultAdapter().getBondedDevices();
for (BluetoothDevice device : set)
{
device.getType();// value is 1
}
如何可靠地检测绑定设备是否支持GATT(类型3或2)?
我还尝试用以下方式交叉检查绑定设备:
int[] ALL_STATES = { BluetoohtProfile.STATE_DISCONNECTED, BluetoohtProfile.STATE_CONNECTING, BluetoohtProfile.STATE_CONNECTED, BluetoohtProfile.STATE_DISCONNECTING };
List<BluetoothDevice> list = BluetoothManager.getDevicesMatchingConnectionState(BluetoothProfile.GATT, ALL_STATES);
但结果总是一个空列表。
感谢任何帮助!