Мониторинг устройств BLE без маяков (Android Beacon Library)

Можно ли с помощью Android Beacon Library отслеживать устройства BLE без маяка? если да, как я могу оценить их расстояние, используя rssi без txPower?


person Droider    schedule 26.11.2015    source источник


Ответы (1)


Да, с помощью библиотеки можно обнаружить устройства BLE, не являющиеся маяками. Вы также можете рассчитать предполагаемое расстояние до устройств, если сначала измерите известный rssi на расстоянии одного метра для устройства.

Код ниже показывает, как это сделать:

    final DistanceCalculator distanceCalculator = new ModelSpecificDistanceCalculator(this, null);
    final int rssiAtOneMeter = -59;

    mBeaconManager.setNonBeaconLeScanCallback(new NonBeaconLeScanCallback() {
        @Override
        public void onNonBeaconLeScan(BluetoothDevice bluetoothDevice, int rssi, byte[] bytes) {
            Double estimatedDistnaceInMeters = distanceCalculator.calculateDistance(rssiAtOneMeter, rssi);
            // TODO: do something with estimatedDistanceInMeters
        }
    });
person davidgyoung    schedule 26.11.2015
comment
Спасибо, я вижу, что setNonBeaconLeScanCallback был добавлен в последнюю версию. - person Droider; 26.11.2015
comment
Очень хорошая функция. Однако обратный вызов запускается только один раз, хотя устройство BLE, не являющееся маяком, все еще рекламирует, а beaconManager по-прежнему получает обратные вызовы от устройств-маяков. Есть ли какая-нибудь хитрость в настройке beaconManager? (например, в iOS мы можем сказать, хотим ли мы обнаруживать каждое устройство только один раз или получать уведомления о каждом раунде сканирования… возможно ли такое правило в этом случае?) - person JBA; 23.07.2017
comment
Дополнительная информация: проблема, которую я только что описал выше, возникает на Samsung S4 mini с Android 4.4.2. На Nexus 5x с Android 7.1.2 обратный вызов работает должным образом (многократно уведомляя о присутствии). Любая подсказка о том, что есть в Android 7, чего нет в 4.4...? - person JBA; 23.07.2017
comment
Пожалуйста, откройте новый вопрос, так как трудно дать подробный ответ в комментариях. Также попробуйте библиотеку версии 2.9. Посмотрите, отличается ли его поведение от последней версии библиотеки, так как в версии 2.10 было изменение, которое может повлиять на это. - person davidgyoung; 23.07.2017
comment
+ JBA, не могли бы вы связать новый вопрос здесь. Спасибо. - person imsrgadich; 21.08.2017