Обнаружение службы BLE в Android (BluetoothGatt#discoverServices()) и низкое энергопотребление по сравнению с BR/EDRAndroid

Форум для тех, кто программирует под Android
Anonymous
Обнаружение службы BLE в Android (BluetoothGatt#discoverServices()) и низкое энергопотребление по сравнению с BR/EDR

Сообщение Anonymous »

TLDR: Ожидается ли, что результаты обнаружения сервисов с помощью DiscoverServices() будут различаться в зависимости от базового транспорта (LE или BR/EDR)?

У меня есть 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” (общий атрибут).
Это ожидаемое поведение платформы Android (сомневаюсь, отсюда и скрытый API)? Разве это плохой тон — проектировать периферийное устройство с таким «смешанным режимом»?

Подробнее здесь: https://stackoverflow.com/questions/306 ... -low-energ

Вернуться в «Android»