37 votes

Pourquoi dois-je activer les services de localisation pour me jumeler avec un appareil Bluetooth ?

Chaque fois que j'essaie de connecter mon Samsung Galaxy S6 sous Android 6.0.1 à un appareil compatible Bluetooth, il me demande d'activer les "services de localisation".

Lorsque je me suis plaint à ce sujet, le fournisseur de logiciels m'a répondu : "Les récentes mises à jour de l'API Google Android affectant la technologie Bluetooth LE nécessitent d'accorder des autorisations de localisation pour pouvoir utiliser l'application."

Je n'en vois pas la nécessité.

Cette discussion parle de ça. Le site référence technique dit que les applications doivent avoir certaines permissions mais pas que les services de localisation soient actifs.

Pour accéder aux identifiants matériels des périphériques externes proches via des balayages Bluetooth et Wi-Fi, votre application doit maintenant disposer des éléments suivants les permissions ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION.

Question : Cela signifie-t-il que la déclaration du vendeur du logiciel est incorrecte ?

13voto

mattm Points 4120

D'après ce que je comprends de Bluetooth, les applications utilisant Bluetooth ont un accès direct à l'adresse MAC de l'appareil pour le couplage. C'est ce que je vais supposer pour cette réponse.

Si vous pouvez lire les adresses MAC des émetteurs WiFi ou Bluetooth, vous pouvez localiser un appareil. C'est ainsi que la localisation WiFi/Bluetooth fonctionne : vous écoutez les adresses MAC des émetteurs et les recherchez dans une gigantesque base de données mondiale.

Par conséquent, toute application utilisant Bluetooth et une connexion de données est théoriquement capable de localiser votre appareil. Je ne suis pas sûr que cela soit possible en pratique ; Bluetooth n'a pas la même portée et la même infrastructure de points d'accès semi-permanents que WiFi.

En exigeant que les services de localisation accèdent à Bluetooth, vous vous assurez que l'utilisateur comprend que ses informations de localisation peuvent fuir lorsqu'il utilise Bluetooth. Dans les versions d'Android antérieures à Marshmallow, l'utilisateur pouvait utiliser Bluetooth sans activer les services de localisation, mais les informations de localisation pouvaient fuir. Dans ces anciennes versions, il était également possible d'effectuer des analyses WiFi pour trouver des adresses MAC sans que les services de localisation ne soient activés, ce qui signifiait là encore que les informations de localisation pouvaient fuir. L'obligation d'autoriser les services de localisation à utiliser Bluetooth vise à garantir qu'une personne qui désactive la localisation garde sa position privée.

Je qualifierais ce problème de problème de conception et non de bogue. On peut sans doute corriger un bogue, mais je ne suis pas certain que l'on puisse utiliser Bluetooth sans risquer de divulguer des informations de localisation. Bluetooth a été créé avant que quiconque n'envisage les services de localisation WiFi et Bluetooth.

4voto

jomo Points 143

Le vendeur a raison, vous devez activer les services de localisation pour rechercher les appareils WiFi ou Bluetooth LE.

Voir bug #185370 pour les détails. Google a déclaré l'avoir corrigé dans une "future version", mais selon les commentaires sur le bug, il n'est toujours pas corrigé dans Android 7.


Edit : J'ai dit précédemment que les services de localisation ne sont requis que lorsque l'application qui lance le scan est exécutée en arrière-plan. Le code source indique que cela n'est vrai que si l'API cible est < Android M.

3voto

Coder Steve Points 31

Le PO a posé une question sur l'appairage (la méthode Bluetooth originale et sécurisée pour définir une nouvelle relation de confiance en confirmant un code envoyé par l'autre appareil). Pour le jumelage, une application N'A PAS besoin de :

  1. Recherche d'une adresse MAC
  2. "Services de localisation"
  3. ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION (je ne suis pas sûr à 100%)

Je pense que le bug #185370 n'est pas lié. Il n'y a pas de bug, il y a des vendeurs malhonnêtes.

Une adresse MAC comporte un identifiant de fabricant et un identifiant de périphérique, et généralement un numéro de modèle. Android 6.0 a supprimé une fonction qui permettait auparavant à l'application d'un fabricant d'analyser les adresses MAC pour les relier à ses propres produits, afin de vous épargner les problèmes de jumelage et autres choses amusantes.

Cependant, de nombreuses applications en abusent pour trouver tous les produits WiFi et Bluetooth de votre maison, la voiture que vous conduisez, vos fournisseurs de données, etc., et pour savoir où vous travaillez, ce que vos amis possèdent ou qui ils sont, la fréquence de vos visites, les magasins que vous fréquentez, etc. (pensez au marketing, à l'ingérence dans les élections et aux jeux "gratuits" d'autres pays).

De Google : " Pour offrir aux utilisateurs une meilleure protection des données, à partir de cette version, Android supprime l'accès programmatique à l'identifiant matériel local de l'appareil pour les applications utilisant les API Wi-Fi et Bluetooth. Les méthodes WifiInfo.getMacAddress() et theBluetoothAdapter.getAddress() renvoient désormais une valeur constante de 02:00:00:00:00:00."

Encore une fois, les services de localisation ne sont pas nécessaires pour le "pairage". Ceci provient de mon nouveau scanner de code de véhicule ODBII Bluetooth "BlueDriver" (par exemple, le témoin de contrôle du moteur) :

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.

(Au premier coup d'œil à leur déclaration de confidentialité, j'ai paniqué : ils téléchargeront sur leurs serveurs le NIV (y compris le fabricant, le modèle, l'identifiant, etc.) de chaque voiture dont j'assure l'entretien, ainsi que toutes les données relatives à la voiture, notamment ses habitudes de conduite ; je ne peux pas refuser de recevoir les SDA dans mon courrier électronique. J'ai ensuite lu le document jusqu'à la fin. J'ai découvert qu'ils avaient des politiques très strictes concernant la confidentialité et le NON-partage des données. Très inhabituel !)

Les services de localisation peuvent être légitimes. L'application Fitbit n'en a pas besoin pour se connecter à mon Fitbit, mais cela peut l'aider à recueillir toutes les données qu'elle veut sur moi. Et croyez-moi, c'est bien plus que ce dont ils ont besoin pour vérifier mon rythme cardiaque et compter mes pas, et la cartographie est facultative.

3voto

Brian Reinhold Points 131

Je vais devoir ajouter mon grain de sel à ce sujet, car je suis un développeur d'applications qui doit rechercher les appareils de santé Bluetooth LE. J'ai également besoin de le faire en arrière-plan pour que l'application puisse se reconnecter au dispositif sans que l'utilisateur ait à s'engager dans l'application.

Le fait qu'Android exige des autorisations de localisation et d'arrière-plan FINE pour le faire sur la dernière version s'est avéré être un grand mal de tête. Les idiots rejettent mon application à cause de cela, alors que l'application n'a pas besoin d'informations de localisation ou ne se soucie pas de la localisation. L'application filtre également les scans pour s'assurer qu'elle n'expose que les appareils de santé qu'elle peut prendre en charge (il existe beaucoup d'appareils propriétaires).

Je peux découvrir en arrière-plan SPP et HDP (Android pré-10 a tué HDP dans la version 10) sans ces autorisations. Travailler avec Bluetooth est déjà assez difficile pour beaucoup de gens, surtout les personnes âgées qui ne sont pas particulièrement douées en technologie. Android rend l'utilisation de sa plateforme de plus en plus impossible dans les situations de surveillance à distance des patients.

Donc ma réponse à la question originale. Le développeur de l'application ne "ment" pas. Android l'a imposé !

2voto

user1056265 Points 121

Pour établir une connexion Bluetooth, la dépendance à l'égard de l'emplacement peut être reliée de la manière suivante : - le nombre d'heures d'utilisation de l'appareil.

Si une application peut rechercher des balises Bluetooth connues, elle peut également déterminer l'emplacement de la balise disponible. Donc, si une application a accès à l'utilisation de Bluetooth dans votre téléphone, il est probable qu'elle puisse également récupérer votre position. Il est donc logique qu'une application demande l'accès à la localisation lorsqu'elle essaie de rechercher des dispositifs Bluetooth.

La dépendance de la localisation pour Bluetooth est donc ajoutée à partir d'Android 6 (Marshmallow). De plus, dans les versions récentes d'Android (à partir de la version 10), l'utilisation de la localisation est encore plus restreinte selon que vous utilisez l'application (accès au premier plan) ou que votre application fonctionne en arrière-plan.

Il convient de noter que cette dépendance à l'égard de la localisation et des autorisations correspondantes n'est pas propre à Android, mais qu'elle est également présente dans iOS.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X