¿Cómo obtener RSSI sin conexión al dispositivo BLE?

Mi aplicación necesita obtener constantemente el valor de RSSI de un dispositivo bluetooth para hacer una aproximación de distancia-rssi, sin conectar . Sin embargo, el método de devolución de llamada del BluetoothAdapter obtiene el RSSI sólo una vez cuando el dispositivo se escanea.

 // Device scan callback private BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) { runOnUiThread(new Runnable() { public void run() { ... } }); } }; 

Como una solución, he creado dos objetos Runnable . Uno es para iniciar, otro es para detener el proceso de escaneo. Estos dos objetos se llaman continuamente hasta que obtengo el valor deseado de RSSI. Después de que mi Handler elimina de la cola de mensajes.

 private Runnable startScan = new Runnable() { @Override public void run() { bluetoothAdapter.startLeScan(leScanCallback); scanHandler.postDelayed(stopScan, SCAN_INTERVAL); } }; private Runnable stopScan = new Runnable() { @Override public void run() { bluetoothAdapter.stopLeScan(leScanCallback); scanHandler.postDelayed(startScan, STOP_INTERVAL); } }; 

Esto parece estar funcionando, pero quiero saber si hay una opción más viable para hacer esto sin conexión.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.