Immer wenn ich versuche, mein Samsung Galaxy S6 mit Android 6.0.1 mit einem Bluetooth-fähigen Gerät zu verbinden, fordert es mich auf, "Ortungsdienste" zu aktivieren.
Als ich mich darüber beschwerte, antwortete der Softwareanbieter: "Neueste Updates der Google Android API, die sich auf die Bluetooth LE-Technologie auswirken, erfordern, dass Standortberechtigungen erteilt werden, um die App zu verwenden."
Ich sehe die Notwendigkeit dafür nicht.
Diese Diskussion spricht darüber. Die technische Referenz besagt, dass die Apps bestimmte Berechtigungen haben müssen , nicht dass Ortungsdienste aktiv sein müssen.
Um über Bluetooth- und WLAN-Scans auf die Hardwarekennungen von externen Geräten in der Nähe zugreifen zu können, muss Ihre App jetzt über die Berechtigungen ACCESS_FINE_LOCATION oder ACCESS_COARSE_LOCATION verfügen
Frage : Bedeutet dies, dass die Aussage des Softwareherstellers falsch ist?
Mein Verständnis von Bluetooth ist, dass Anwendungen, die Bluetooth verwenden, zum Zwecke der Kopplung direkten Zugriff auf die MAC-Adresse des Geräts haben. Ich werde dies für diese Antwort annehmen.
Wenn Sie MAC-Adressen von WLAN- oder Bluetooth-Sendern lesen können, können Sie ein Gerät orten. So funktioniert die WLAN-/Bluetooth-Ortung; Sie hören auf MAC-Adressen von Sendern und schlagen diese in einer riesigen globalen Datenbank nach.
Daher ist jede Anwendung, die Bluetooth und eine Datenverbindung verwendet, theoretisch in der Lage, Ihr Gerät zu lokalisieren. Ich bin mir nicht sicher, ob dies praktisch möglich ist; Bluetooth hat nicht die gleiche Reichweite und semipermanente Zugangspunktinfrastruktur wie WiFi.
Indem Sie verlangen, dass Standortdienste auf Bluetooth zugreifen, stellen Sie sicher, dass der Benutzer versteht, dass seine Standortinformationen bei der Verwendung von Bluetooth preisgegeben werden können. In Android-Versionen vor Marshmallow konnte der Benutzer Bluetooth ohne aktivierte Standortdienste verwenden, aber Standortinformationen konnten durchsickern. In diesen älteren Versionen konnten Sie auch WLAN-Scans ausführen, um MAC-Adressen ohne aktivierte Standortdienste zu finden, was wiederum bedeutete, dass Ihre Standortinformationen durchsickern könnten. Die Anforderung, Ortungsdiensten die Verwendung von Bluetooth zu erlauben, besteht darin, sicherzustellen, dass jemand, der die Ortung deaktiviert, seinen Standort geheim hält.
Ich würde dieses Problem als Designproblem und nicht als Fehler charakterisieren. Ein Fehler ist vermutlich behebbar, aber mir ist nicht klar, dass Sie Bluetooth überhaupt verwenden können, ohne möglicherweise Standortinformationen preiszugeben. Bluetooth wurde entwickelt, bevor irgendjemand WiFi- und Bluetooth-Ortungsdienste in Betracht zog.
Der Anbieter hat Recht, Sie müssen Ortungsdienste aktivieren, um nach WiFi- oder Bluetooth LE-Geräten zu suchen.
Siehe Fehler Nr. 185370 für Details. Google sagte, dass sie es in einer „zukünftigen Version“ behoben haben, aber laut Kommentaren zu dem Fehler ist es in Android 7 immer noch nicht behoben.
Bearbeiten: Ich habe zuvor gesagt, dass Ortungsdienste nur erforderlich sind, wenn die App, die den Scan startet, im Hintergrund ausgeführt wird. Der Quellcode gibt an, dass dies nur wahr ist, wenn das API-Ziel < Android M ist.
Das OP fragte nach Pairing (die ursprüngliche, datenschutzsichere Bluetooth-Methode zum Definieren einer neuen, vertrauenswürdigen Beziehung durch Bestätigen eines vom anderen Gerät gesendeten Codes). Für die Kopplung benötigt eine App NICHT:
Ich glaube, dass der Fehler Nr. 185370 nichts damit zu tun hat. Es gibt keinen Fehler; Es gibt unseriöse Anbieter.
Eine MAC-Adresse hat eine Hersteller-ID und eine Geräte-ID und normalerweise eine Modellnummer. Android 6.0 hat eine Funktion kastriert, die es der App eines Herstellers zuvor ermöglichte, nach MAC-Adressen zu suchen, um sie mit ihren eigenen Produkten zu verknüpfen, um Ihnen die Mühe des Koppelns und anderer lustiger Dinge zu ersparen.
Viele Apps haben es jedoch missbraucht, um alle WLAN- und Bluetooth-Produkte in Ihrem Zuhause zu finden, welches Auto Sie fahren, Ihre Datenanbieter usw. und herauszufinden, wo Sie arbeiten, was Ihre Freunde haben oder wer sie sind, wie oft Sie sie besuchen. welche Geschäfte Sie besuchen, etc. (denken Sie an Marketing, Einmischung in Wahlen und „kostenlose“ Spiele aus anderen Ländern).
Von Google: „Um Benutzern einen besseren Datenschutz zu bieten, entfernt Android ab dieser Version den programmgesteuerten Zugriff auf die lokale Hardwarekennung des Geräts für Apps, die die Wi-Fi- und Bluetooth-APIs verwenden. WifiInfo.getMacAddress() und theBluetoothAdapter.getAddress() Methoden geben jetzt einen konstanten Wert von 02:00:00:00:00:00 zurück."
Auch hier werden für das „Pairing“ keine Ortungsdienste benötigt. Dies ist von meinem neuen Bluetooth "BlueDriver" ODBII-Fahrzeugcode-Scanner (dh Motorkontrollleuchte):
Location Services
BlueDriver can use the Bluetooth Location service to scan for
nearby BlueDriver sensors. Instead, if you wish, you can pair
a sensor in the Bluetooth settings of your phone.
(Auf den ersten Blick auf ihre Datenschutzerklärung bin ich ausgeflippt: Sie werden die VIN (einschließlich MFR, Modell, ID usw.) jedes Autos, das ich serviere, auf ihre Server hochladen, plus alle Daten des Autos mit Fahrgewohnheiten usw.; Ich kann nicht ablehnen, dass ADS in meine E-Mail strömt. Dann habe ich es bis zum Ende gelesen. Ich habe festgestellt, dass sie sehr strenge Richtlinien haben, um es privat zu halten und NICHT zu teilen. Sehr ungewöhnlich!)
Ortungsdienste können legitim sein. Die Fitbit-App benötigt es nicht, um sich mit meinem Fitbit zu verbinden, aber es kann ihnen helfen, alle Daten zu sammeln, die sie von mir wollen. Und glauben Sie mir, es ist viel mehr, als sie brauchen, um meine Herzfrequenz zu überprüfen und meine Schritte zu zählen, und das Mapping ist optional.
Dazu muss ich meinen Senf hinzufügen – ich bin ein App-Entwickler, der nach Bluetooth LE-Gesundheitsgeräten suchen muss. Ich muss dies auch im Hintergrund tun, damit sich die App wieder mit dem Gerät verbinden kann, ohne dass der Benutzer mit der App interagieren muss.
Die Tatsache, dass Android FINE Standort- und Hintergrundberechtigungen benötigt, um dies in der neuesten Version zu tun, hat sich als großes Problem erwiesen. Die Idioten lehnen meine App deshalb ab, aber die App benötigt keine Standortinformationen oder kümmert sich nicht um den Standort. Die App filtert die Scans auch, um sicherzustellen, dass nur Gesundheitsgeräte angezeigt werden, die sie unterstützen kann (es gibt viele proprietäre Geräte).
Ich kann SPP und HDP im Hintergrund erkennen (vor Android 10 wurde HDP in Version 10 getötet) ohne diese Berechtigungen. Die Arbeit mit Bluetooth ist für viele Menschen schwer genug, insbesondere für ältere Menschen, die nicht besonders technisch versiert sind. Android macht es immer unmöglicher, ihre Plattform in Situationen der Fernüberwachung von Patienten zu verwenden.
Also meine Antwort auf die Ausgangsfrage. Der App-Entwickler „lügt“ nicht. Android erzwang dies!
Um eine Bluetooth-Verbindung herzustellen, kann die Standortabhängigkeit wie folgt zusammenhängen:
Wenn eine App nach bekannten Bluetooth-Beacons scannen kann, kann sie auch den Standort anhand des verfügbaren Beacons ermitteln. Wenn also eine App Zugriff auf Bluetooth in Ihrem Telefon erhält, ist es wahrscheinlich, dass sie auch Ihren Standort abrufen kann. Daher ist es sinnvoll, dass eine App nach Standortzugriff fragt, wenn sie versucht, nach Bluetooth-Geräten zu suchen.
Daher wird die Standortabhängigkeit für Bluetooth ab Android 6 (Marshmallow) hinzugefügt. Darüber hinaus haben sie in der neuesten Android-Version (ab 10) die Verwendung des Standorts weiter eingeschränkt, je nachdem, ob Sie die App verwenden (Vordergrundzugriff) oder Ihre App im Hintergrund ausgeführt wird.
Noch ein Hinweis: Diese Abhängigkeit vom Standort und der damit verbundenen Berechtigung ist nicht spezifisch für Android, sondern wurde auch in iOS hinzugefügt.
Die Erlaubnis zur Ortung und die eingeschalteten Ortungsdienste sollten zwei verschiedene Dinge sein. Wenn ich damit einverstanden bin, kann diese App Standortdaten mit geringer Genauigkeit, WLAN usw. verwenden. VS. Diese App verwendet oder erfordert, dass das Telefon-GPS aktiviert ist.
Beispiel: Ich lasse GPS auf meinem Telefon ausgeschaltet, aber ich kann mein Fitbit nicht synchronisieren, weil sie sagen, dass ich der App nicht nur die Standortberechtigung erteilen muss, sondern auch das GPS des Telefons eingeschaltet sein muss.
Izzy
EvgEnZh
EvgEnZh