Android: получить значение Bluetooth RSSI от определенного BluetoothDevice

Я делаю приложение для Android, в котором мне нужно постоянно знать значение RSSI для конкретного устройства. У меня нет проблем с получением RSSI при сканировании устройств, однако это слишком медленно для того, что мне нужно.

Я думал, что возможно получить RSSI конкретного экземпляра BluetoothDevice, но я действительно понятия не имею, с чего начать, поэтому я спрашиваю здесь.

Это возможно? И если да, то знаете ли вы, как это сделать?

Или, если вы знаете другой способ получить значение близости от других конкретных устройств, пожалуйста, сообщите мне! :)

Спасибо!!


person tupini07    schedule 12.11.2014    source источник
comment
Вы можете получить значение RSSI только тогда, когда получаете что-то от устройства. Какие операции с ним происходят? Подключены ли вы? Это просто отправка ненаправленной рекламы? Это обычный блютуз или блютуз с низким энергопотреблением?   -  person Chris Stratton    schedule 13.11.2014
comment
@ChrisStratton На данный момент я получаю RSSI при поиске устройств Bluetooth. Я мог подключиться к устройству, если это необходимо, на самом деле я пытался, но я не мог понять, как получить RSSI при подключении. Я использую обычный блютуз :)   -  person tupini07    schedule 13.11.2014
comment
@ tupini07 ты понял это? Я сталкиваюсь с тем же самым точно   -  person Snake    schedule 23.12.2014
comment
Нет @Snake .. Извините, но я не нашел решения этой проблемы, насколько мне известно, единственный способ получить значение RSSI - это обнаружение устройства: / .. Я надеюсь, что этот вопрос скоро получит ответ. Если я найду какое-либо решение, я дам вам знать :)   -  person tupini07    schedule 25.12.2014
comment
Спасибо чувак. к сожалению, это единственный способ, который я тоже нашел   -  person Snake    schedule 25.12.2014


Ответы (1)


Если ваш вариант использования позволяет вам подключиться к устройству, тогда должна быть возможность получить RSSI на более высокой частоте, чем при сканировании. Как только вы подключитесь к устройству и получите объект BluetoothGatt, вы можете вызвать BluetoothGatt#readRemoteRssi(). Это приводит к обратному вызову BluetoothGattCallback#onReadRemoteRssi().

person Doug Koellmer    schedule 14.11.2014
comment
простите мое невежество, но как именно я получаю объект BluetoothGatt? - person tupini07; 15.11.2014
comment
BluetoothGattCallback#onConnectionStateChange() предоставляет экземпляр. - person Doug Koellmer; 16.11.2014
comment
Я попробовал то, что вы говорите, но обнаружил, что мне нужен обычный Bluetooth и не с низким энергопотреблением ... но все равно спасибо :) - person tupini07; 18.11.2014