как получить значение rssi для устройства Bluetooth с низким энергопотреблением?

Я новичок в программировании для Android и пытаюсь получить значение rssi из устройства BLE для измерения расстояния. Я могу сканировать и получать имя и MAC-адрес устройства, но я пробовал коды для получения rssi, но не могу получить полезный результат , также я использую образец на сайте разработчика Android. может кто-нибудь дать мне правильный код, чтобы сделать это??


person alaa    schedule 31.03.2015    source источник
comment
не могли бы вы поделиться рабочим кодом. Пожалуйста. благодарю вас.   -  person imsrgadich    schedule 17.08.2017


Ответы (1)


Для этого есть два решения. Для устройств 4.0 и 5.0 существует другой подход к поиску/сканированию устройств BLE. Вы не упомянули, какой из них вы используете, поэтому добавили оба решения ниже.

1) для Android 4.4 + до 5.0 вы должны запустить сканирование LE с помощью метода BluetoothAdapter's startLEScan, который дает вам обратный вызов со значением RSSI. см. сигнатуру метода.

onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord)

// второй параметр выше — это значение RSSI.

2) Для устройств Android 5.0+ вы должны начать сканирование с помощью метода startScan класса BluetoothLeScanner, как показано ниже.

getBluetoothLeScanner().startScan

который имеет обратный вызов onScanResult для уведомления о новом отсканированном устройстве, вы можете использовать приведенный ниже код для получения rssi.

public void onScanResult(int callbackType, ScanResult result) {
final int rssi = result.getRssi(); //RSSI value
person AAnkit    schedule 31.03.2015
comment
Я использую Android 4.3, я использовал первое решение, и оно, вероятно, работает. спасибо ! - person alaa; 01.04.2015
comment
@alaa, приходит RSSI - значение от -100 до 0. если это работает для вас, вы можете принять ответ. - person AAnkit; 01.04.2015
comment
@AAnkit, не могли бы вы поделиться рабочим кодом? Спасибо. - person imsrgadich; 17.08.2017