Моему приложению необходимо постоянно получать значение RSSI устройства bluetooth для приближения к расстоянию rssi,  без подключения. Однако метод обратного вызова BluetoothAdapter получает RSSI только один раз, когда устройство сканируется.
// 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() {
                ...
            }
        });     
    }   
};
В качестве решения я создал два объекта Runnable. Один для запуска, другой - для остановки процесса сканирования. Эти два объекта постоянно нажимают друг на друга, пока я не получу желаемое значение RSSI. После этого мой Handler удаляет их из очереди сообщений.
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);          
    }
};
Кажется, что это работает, но я хочу знать, есть ли более эффективный вариант для этого, не подключаясь.
