2016-10-05 7 views
0

Я пытаюсь использовать RxAndroidBle lib (https://github.com/Polidea/RxAndroidBle). Я хочу, чтобы приложение запускало и сканировало устройства BLE. Я хочу напечатать найденные устройства в LogCat. Как я могу это сделать?RxAndroidBle Scanning

RxBleClient rxBleClient; 
RxBleScanResult rxBleScanResult; 
private Subscription scanSubscription; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    rxBleClient = RxBleClient.create(this); 
    Subscription scanSubscription = rxBleClient.scanBleDevices().subscribe(
     rxBleScanResult.getBleDevice().getMacAddress()); 
} 

ответ

0

от http://polidea.github.io/RxAndroidBle/.

Subscription scanSubscription = rxBleClient.scanBleDevices().subscribe(
     rxBleScanResult -> { 
      // Process scan result here. 
      Log.e("MainActivity","FOUND :"+ rxBleScanResult.getBleDevice().getName()); 
     }, 
     throwable -> { 
      // Handle an error here. 
     } 
    ); 

// When done, just unsubscribe. 
scanSubscription.unsubscribe(); 

Edit: То, что я заметил, что это нарушает сканирование. Даже что-то вроде сравнения, если BleScanResult.getBleDevice().getName().equals("BleName") разрывает сканирование. Он просто возвращается как 3 или 5 устройств, а затем ничего больше не приходит.

Редактировать 2: Я оставлю предыдущую редакцию. У кого-то, вероятно, будет такая же проблема. Некоторые телефоны (LG G4 Android 6) возвращают null для некоторых устройств Bluetooth. Но некоторые другие (Samsung J5 Android 6) не возвращают нулевое значение. Вот что заставляет меня искать ошибку в другом месте. Но его просто, просто добавьте

if(BleScanResult.getBleDevice().getName()!=null) 

и теперь он больше не прерывает сканирование.

Смежные вопросы