У меня есть Bluetooth-аксессуар смешанного режима, который предлагает различные функции как классического устройства Bluetooth, так и периферийного устройства Bluetooth LE.
У Android возникла проблема. обнаружение служб Bluetooth LE GATT аксессуара, если вы не используете скрытый API-интерфейс peerBluetoothDevice.connectGatt(context, autoConnect, gattCallback, BluetoothDevice.TRANSPORT_LE), который позволяет принудительно использовать либо TRANSPORT_LE, либо TRANSPORT_BREDR .
Когда я подключил устройство через PeerBluetoothDevice.connectGatt(context, autoConnect, gattCallback), а затем вызвал DiscoverServices(), я бы только обнаружить общие UUID службы (и только после многих неудачных попыток подключения с загадочным статусом 133, доставленных в onConnectionStateChange).
- “00001800 -0000-1000-8000-00805f9b34fb» (общий доступ)
- «00001801-0000-1000-8000-00805f9b34fb» (общий атрибут).
Однако, когда я вызываю скрытый одноранговый узел BluetoothDevice.connectGatt(context, autoConnect, gattCallback, BluetoothDevice.TRANSPORT_LE), а затем вызываю DiscoverServices(), я получаю полный ожидаемый ответ обнаружения службы: - "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" (Моя специальная служба)
- “00001800-0000-1000-8000-00805f9b34fb” (общий доступ)
“00001801-0000-1000-8000-00805f9b34fb” (общий атрибут).
Подробнее здесь: https://stackoverflow.com/questions/306 ... -low-energ