2010-01-27 11 views
15

Potrzebuję znać siłę sygnału połączenia Bluetooth z urządzeniem zdalnym, które wykonuję za pomocą telefonu z systemem Android 2.1. Z SDK widzę, że mogę określić RSSI w momencie odkrycia zdalnego urządzenia. Ale nie widzę sposobu aktualizacji tej wartości RSSI w czasie.Android 2.1: Jak odpytać wartość RSSI istniejącego połączenia Bluetooth?

Czy ktoś może mi pomóc? Dzięki!!

+0

Istnieje wpis w śledzenia błędów w projekcie Android, która rozwiązuje ten problem. Jeśli chcesz zasubskrybować (i wcisnąć) postępowanie w tej sprawie, powinieneś wpisać gwiazdkę https://code.google.com/p/android/issues/detail?can=1&start=0&num=100&q=rssi&colspec=ID%20Type%20Status % 20Owner% 20Podsumowanie% 20Stars & groupby = & sort = & id = 6707 – Martze

Odpowiedz

16

Z SDK jest to jedyny sposób na uzyskanie RSSI. Jest to trochę niewygodne, ponieważ nie jest przydatne, jeśli chcesz tylko okresowo monitorować siłę sygnału sparowanego urządzenia.

Istnieje jednak sposób, ale z SDK. Możesz użyć natywnego API (za pomocą NDK) i funkcji wywołania dostarczonych przez Bluez API, bazowy framework bluetooth w systemie Android (i prawie każdy system linuxowy). Ta funkcja to hci_read_rssi() dostarczona przez libbluetooth.so (część pakietu Bluez). Aby dowiedzieć się, jak z niego korzystać, możesz spojrzeć na Hcidump tool sources (dołączony do Bluez). Możesz napisać kod opakowania JNI do swojej funkcji, aby uzyskać siłę sygnału sparowanego urządzenia.

Istnieją dwie wady tej metody:

  • Do pomiaru RSSI można musi najpierw połączyć z urządzeniem zdalnym przynajmniej na niskim poziomie (uwierzytelnianie nie jest wymagane dla tego związku) i uwalniają związek po dzwoniąc pod numer hci_read_rssi(). Jest to wolniejsze niż mierzenie RSSI z sygnałów nawigacyjnych, ponieważ inne środki komunikacji bezprzewodowej zapewniają (GSM lub WIFI)
  • Wymagane jest na niskim poziomie połączenie z urządzeniami Bluetooth na prawach administratora Androida. Zapomnij więc o pisaniu i aplikacjach, które można uruchamiać na niehackowanych telefonach (zwykle nie mają dostępu do roota, a niektóre takie jak Motorola Droid/Milestone nawet unieważniają gwarancję, jeśli próbujesz ją zdobyć).
+3

Uwaga, to nie zadziała na 4.2, ponieważ stos zmienił się z bluez na broadcom. –

+0

Nie jest jasne, czy 'hci_read_rssi()' jest odpowiednią funkcją do uzyskania RSSI - zgodnie z tą odpowiedzią: http://stackoverflow.com/questions/30025139/bluez-bluetooth-api-and-distance-calibration-precision/ 30043437 # 30043437 – Pierz

1

Niestety nie dla Androida 2.1, ale również zapoznać się z tym API dla poziomu 18 (Android 4.3), które można ankieta

BluetoothGatt.readRemoteRssi() 

Czytaj RSSI dla podłączonego urządzenia zdalnego.

Zobacz Android docs here

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać odnośnik. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. –

Powiązane problemy