Zastanawiam się, czy mogę zmierzyć siłę sygnału urządzeń Bluetooth w zasięgu mojego iPhone'a. Zasadniczo chcę zrobić tylko listę urządzeń w zasięgu, a następnie sprawdzić, która z nich ma największą siłę sygnału. Czy jest to możliwe w iOS i jak mam to zrobić, jeśli tak?Czy mogę zmierzyć siłę sygnału Bluetooth w systemie iOS?
Odpowiedz
Tak, istnieje sposób pomiaru siły sygnału dla Bluetooth Low Energy (4.0) jest to numer RSSI. Podczas skanowania dla urządzeń peryferyjnych można ustawić flagę CBCentralManagerScanOptionAllowDuplicatesKey na TAK, jak pokazano poniżej:
NSDictionary * dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@YES, CBCentralManagerScanOptionAllowDuplicatesKey, nil];
// Start scanning for peripherals
[cmanager scanForPeripheralsWithServices:nil options:dictionary];
Jeśli chcesz zobaczyć prace numer RSSI bez konieczności pisania kodu powinieneś sprawdzić aplikację LightBlue w iTunes. Po podłączeniu do urządzenia peryferyjnego wyświetli zaktualizowany numer RSSI co sekundę, gdy jest podłączony.
Wystarczy popatrzeć na CoreBluetooth documentation:
- (void)centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{ ... }
RSSI jest to, czego szukasz. Zastrzeżenie: Core Bluetooth jest stworzony tylko dla Bluetooth 4 LE.
Jeśli dokładny zakres nie ma znaczenia, ale jesteś zainteresowany skanowaniem urządzeń, które są ogólnie dostępne, możesz rzucić okiem na projekt github BeeTee, który umożliwia skanowanie wszystkich urządzeń Bluetooth w pobliżu (nie tylko Bluetooth LE). Znowu zrzeczenie się: Jestem autorem BeeTee. ;-)
Kiedy kodujesz swój "centralny" kod za pomocą CBCentralManager, w końcu połączysz się z CBPeripheral, którego szukasz. Po nawiązaniu połączenia z urządzeniem peryferyjnym zachowaj odwołanie do niego, ustaw obiekt jako delegata urządzenia peryferyjnego i wywołaj "readRSSI" na urządzeniu peryferyjnym. Otrzymasz wywołanie oddzwaniacza peripheral: didReadRSSI: error: Jeśli napiszesz metodę, która wywołuje "readRSSI", możesz wywołać ją za pomocą performSelector: withObject: afterDelay:.
Inną z sugerowanych odpowiedzi na to pytanie jest dostarczenie klucza "zezwalaj na duplikaty" podczas skanowania. Dokumenty dla klucza słownika CBCentralManagerScanOptionAllowDuplicatesKey po przekazaniu do scanForPeripheralsWithServices:options: wskazują, że "Wyłączenie tego filtrowania może mieć negatywny wpływ na żywotność baterii i powinno być używane tylko w razie potrzeby".
Jeśli zdecydujesz się napisać opóźnione wywołanie, możesz ustawić częstotliwość połączeń, aby pomóc w zarządzaniu wpływem na baterie użytkowników.
- 1. Get siłę sygnału bluetooth
- 2. Jak mogę ocenić siłę sygnału GPS? (iPhone)
- 3. Siła sygnału Bluetooth LE Linux
- 4. Sygnał nodification sygnału Bluetooth
- 5. Android: Jak monitorować siłę sygnału WiFi
- 6. Linux Bluetooth l2ping z siłą sygnału
- 7. Dzienniki urządzeń dla bluetooth w systemie iOS
- 8. zmierzyć dwa różne (wektor) podobieństwo sygnału
- 9. jak uzyskać siłę sygnału modemu 3g w języku C++?
- 10. Bluetooth LE RSSI do wykrywania bliskości iOS
- 11. Integracja zewnętrznej klawiatury Bluetooth w systemie IOS 7
- 12. Profil bluetooth SPP iOS
- 13. Czy można wygenerować listę podłączonych urządzeń bluetooth na iOS?
- 14. Czy można uzyskać listę drukarek Bluetooth w systemie Android?
- 15. Uzyskiwanie siły sygnału WiFi w Androidzie
- 16. Czy parowanie Bluetooth OOB jest naprawdę obsługiwane w systemie Android?
- 17. Jak mogę zmierzyć czas wątku w C#?
- 18. Siła sygnału emulatora Androida:
- 19. Czy mogę utworzyć komputer Mac jako urządzenie peryferyjne Bluetooth?
- 20. Obsługa nowego urządzenia Bluetooth w systemie Android
- 21. iOS bluetooth scanForPeripheralsWithServices Brak wyników
- 22. Ustawianie automatycznego parowania Bluetooth w systemie Linux
- 23. Komunikacja Bluetooth między OSX a iOS
- 24. Wyszukiwanie urządzeń bluetooth w systemie Android
- 25. Wykrywanie urządzeń Bluetooth w systemie Android - startDiscovery()
- 26. Czy mogę zmierzyć czas wykonania poszczególnych operacji za pomocą TensorFlow?
- 27. Jak zatrzymać metodę viewForAnnotation przed przesłonięciem domyślnego niebieskiego sygnału nawigacyjnego użytkownika w systemie iOS
- 28. Jak mogę zmierzyć ruch danych mojej aplikacji?
- 29. Jak zmierzyć ciśnienie w sieci?
- 30. Jak niezawodnie zmierzyć dostępną pamięć w systemie Linux?