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ć).
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