Ich frage mich, kann ich die Signalstärke von Bluetooth-Geräten in Reichweite meines iPhone messen. Grundsätzlich möchte ich nach einer Liste von Geräten in Reichweite suchen und dann sehen, welche die höchste Signalstärke hat. Ist es in iOS möglich und wie würde ich es tun?Kann ich Bluetooth-Signalstärke in iOS messen?
Antwort
Ja, es gibt eine Möglichkeit zur Messung der Signalstärke für Bluetooth Low Energy (4.0) ist die RSSI-Nummer. Wenn Sie sich für Peripheriegeräte scannen Sie das Flag CBCentralManagerScanOptionAllowDuplicatesKey auf YES gesetzt, wie unten dargestellt:
NSDictionary * dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@YES, CBCentralManagerScanOptionAllowDuplicatesKey, nil];
// Start scanning for peripherals
[cmanager scanForPeripheralsWithServices:nil options:dictionary];
Wenn Sie die RSSI-Nummer Arbeit sehen möchten, ohne Code schreiben Sie die App sollten überprüfen, LightBlue in iTunes. Wenn Sie eine Verbindung zu einem Peripheriegerät herstellen, zeigt es Ihnen die aktualisierte RSSI-Nummer jede Sekunde an, wenn es verbunden ist.
Werfen Sie einen Blick auf die CoreBluetooth documentation:
- (void)centralManager:(CBCentralManager *)central
didDiscoverPeripheral:(CBPeripheral *)peripheral
advertisementData:(NSDictionary *)advertisementData
RSSI:(NSNumber *)RSSI
{ ... }
RSSI ist das, was Sie suchen. Haftungsausschluss: Core Bluetooth ist nur für Bluetooth 4 LE geeignet.
Wenn der genaue Bereich keine Rolle spielt, Sie aber an allgemein verfügbaren Scannern interessiert sind, können Sie sich das github Projekt BeeTee ansehen, mit dem Sie nach allen Bluetooth Geräten in Ihrer Umgebung scannen können (nicht nur Bluetooth LE). Nochmal Disclaimer: Ich bin der Autor von BeeTee. ;-)
Wenn Sie Ihren "zentralen" Code mit CBCentralManager codieren, stellen Sie eventuell eine Verbindung zu dem CBPeripheral her, nach dem Sie suchen. Sobald Sie mit dem Peripheriegerät verbunden sind, behalten Sie einen Verweis darauf, legen Sie Ihr Objekt als den Delegaten der Peripherie fest und rufen Sie "readRSSI" auf dem Peripheriegerät auf. Sie erhalten einen Delegaten-Callback peripheral: didReadRSSI: error: Wenn Sie eine Methode schreiben, die 'readRSSI' aufruft, können Sie sie mit performSelector: withObject: afterDelay: aufrufen.
Eine andere der vorgeschlagenen Antworten auf diese Frage ist die Bereitstellung der Taste "Duplikate zulassen" beim Scannen. Die Dokumentation für den Wörterbuchschlüssel CBCentralManagerScanOptionAllowDuplicatesKey bei Übergabe an scanForPeripheralsWithServices:options: zeigt an, dass "das Deaktivieren dieser Filterung sich negativ auf die Lebensdauer der Batterie auswirken kann und nur bei Bedarf verwendet werden sollte".
Wenn Sie einen verzögerten Aufruf schreiben möchten, können Sie die Häufigkeit der Anrufe einstellen, um die Auswirkungen auf die Batterien Ihrer Benutzer zu managen.
- 1. Wie kann ich Entfernungen in Stereobildern messen?
- 2. Wie kann ich die Volatilität messen?
- 3. Wie kann ich Jenkins Build Performance messen?
- 4. Wie kann ich die Textgröße in UWP Apps messen?
- 5. Wie kann ich die Zeit eines Threads in C# messen?
- 6. Wie kann ich die Leistung einer HashTable in C# messen?
- 7. Wie kann ich Pixel in Chrome ohne eine Erweiterung messen?
- 8. Ansicht in Fragment messen
- 9. Wie kann ich die Antwort und Ladezeit einer Webseite messen?
- 10. Mit Mercurial, wie kann ich individuelle Beiträge messen?
- 11. Wie kann ich die Gesamtgröße meiner globalen Variablen messen?
- 12. Wie kann ich die Ähnlichkeit zwischen 2 Strings messen?
- 13. Wie kann ich die Bandbreitennutzung meines (SAMP) Servers messen?
- 14. Wie kann ich den Datenverkehr meiner App messen?
- 15. Wie kann ich die Qualität einer Faxdatei messen?
- 16. Wie kann ich messen, wie lange eine Funktion läuft?
- 17. Wie kann ich den Overhead eines spottenden Frameworks (TypeMock) messen?
- 18. Kann ich die Ausführungszeit einzelner Operationen mit TensorFlow messen?
- 19. Serverlaufzeit messen
- 20. Geräuschpegel messen
- 21. messen Zeitunterschied
- 22. Messen der Textbreite in Qt
- 23. Wie kann ich in Ios anrufen?
- 24. Kann ich IBActionAttr in iOS erkennen?
- 25. Wie kann ich einen Dateibrowser in iOS
- 26. Kann ich C++ Vorlage in iOS verwenden?
- 27. Wie kann ich von CFRunLoopRun in ios
- 28. Messen von Netzwerkverkehr in C#
- 29. Messen von Text in WPF
- 30. Wie kann man die Zeit zwischen Codezeilen in Python messen?