Как изменить RSSI BLE в Android

Я использую устройство-маяк Kontakt и тестирую его на Nexus 5. Когда я тестировал iPad в качестве устройства-маяка, я смог узнать об услугах и характеристиках с помощью кода, приведенного на сайте разработчика Android. Но теперь я хочу выполнить некоторые действия в зависимости от расстояния мобильного телефона от устройства маяка. Поэтому я попытался определить, как далеко находится мобильный телефон от устройства-маяка, такого как iOS CLBeacon.Proximity (CLProximityFar, CLProximityNear, CLProximityImmideate и CLProximityUnknown). Я искал, но не смог найти подобное в Android. Вот и решил сделать какие-то действия в зависимости от rssi. Но проблема заключается в том, что rssi я получаю в первый раз, т.е. во время мобильного обнаружения устройства маяка не меняется, даже если я приближаюсь к устройству маяка или ухожу далеко от него.

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


person Abhijit Shelke    schedule 21.08.2014    source источник


Ответы (1)


Я не уверен, как вы проверили никогда не менявшийся rssi, как вы описали, через существующее приложение или самостоятельно написав коды?

но из кода все довольно просто, я поместил основной код в Android 5.0,

//get your device's BT adapter
mBluetoothAdapter = ((BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter();
mLescanner = mBluetoothAdapter.getBluetoothLeScanner();
settings = new ScanSettings.Builder().setScanMode(scanSettings.SCAN_MODE_LOW_LATENCY).build();
mLescanner.startScan(this.mLeScanCallback);

И обратный вызов такой, и вы можете получить rssi в реальном времени в функции:

this.mLeScanCallback = new ScanCallback() {
    @Override
    public void onScanResult(int callbackType, ScanResult result) {
        int realTimeRssiYouWant = result.getRssi(); 
    }
} 
person Shawn    schedule 07.02.2015