#android #bluetooth #bluetooth-lowenergy #android-bluetooth
#Android #bluetooth #bluetooth-низкое энергопотребление #android-bluetooth
Вопрос:
Я работаю с пользовательскими устройствами и пытаюсь правильно управлять файлом Bluetooth.
Моя единственная проблема — не получать 0 ( BluetoothGatt.GATT_SUCCESS
), когда я считываю status
значение вместе со значением 2 для newState
переменной (что означает BluetoothProfile.STATE_DISCONNECTED
) в методе onConnectionStateChange
. Вместо этого я получаю 8, что невозможно отследить в BluetoothGatt
BluetoothProfile
классах nor.
Все соединения работают нормально, я отлично считываю и записываю значения.
(1) Это должно быть так? Почему я читаю восьмерку?
Я видел много status
значений в моем onConnectionStateChange
методе: 8, 19, 133 и т.д.
(2) Где я могу проверить эти значения?
Заранее спасибо
РЕДАКТИРОВАТЬ: в файле api.h много значений, мы искали не в том месте.
8: 0x08 = GATT CONN TIMEOUT
19: 0x13 = GATT CONN TERMINATE PEER USER
133: 0x85 = GATT_ERROR
Ответ №1:
Коды ошибок int необходимо преобразовать в HEX и сопоставить со значениями в следующем файле:
В упомянутых вами случаях:
8 = GATT_INSUF_AUTHORIZATION
19 = GATT_RSP_WRITE
133 = GATT_ERROR
Комментарии:
1. К сожалению, названия не имеют смысла, однако источник выглядит красиво. Есть какие-нибудь идеи по вопросу (1) : должно ли это быть так? Почему я читаю восьмерку?
2. Похоже, какая-то проблема с аутентификацией. Возможно, перед подключением к устройству BLE вам необходимо выполнить сопряжение с ним … это зависит от требований устройства.
3. Когда я вынимаю аккумулятор из устройства при подключении, он по-прежнему считывается
status
как 8, так что я предполагаю, что это не связано с какой-либо аутентификацией. Есть еще идеи?
Ответ №2:
Ответ — нет.
Я не получал BluetoothGatt.GATT_SUCCESS
, потому что соединение было закрыто другим концом. Если gatt.disconnect()
выполняется, я читаю status = BluetoothGatt.GATT_SUCCESS
.