37 votos

¿Por qué tengo que activar los servicios de localización para emparejarme con un dispositivo Bluetooth?

Cada vez que intento conectar mi Samsung Galaxy S6 con Android 6.0.1 a un dispositivo con Bluetooth, me dice que habilite los "servicios de localización".

Cuando me quejé de esto, el proveedor de software me respondió: "Las recientes actualizaciones de la API de Google Android que afectan a la tecnología Bluetooth LE requieren que se concedan permisos de localización para poder utilizar la aplicación".

No veo la necesidad de esto.

Este debate habla de esto. El referencia técnica dice que las aplicaciones deben tener ciertos permisos , no que los servicios de localización estén activos.

Para acceder a los identificadores de hardware de los dispositivos externos cercanos mediante Bluetooth y Wi-Fi, su aplicación debe tener los permisos ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION

Pregunta : ¿Significa esto que la declaración del proveedor de software es incorrecta?

0 votos

Definitivamente, el sistema de permisos está completamente estropeado con la reestructuración de MM (las explicaciones dicen que tenían en mente "balizas Bluetooth" que podrían utilizarse para localizarte). A mi entender, tu duda está justificada y la afirmación del vendedor es incorrecta: Las aplicaciones necesitan el permiso para acceder al Bluetooth. Pero si necesitan un servicio de localización para encontrar el hardware ("gire a la derecha en la segunda junta de soldadura, pase el transistor en la puerta 3 "), me sorprendería. Dudo mucho que los servicios de localización tengan que estar activados para eso, pero no tengo ningún dispositivo MM para verificarlo.

0 votos

No puedo añadir una "respuesta" así que aquí está como "comentario": Corro Android 11 en un Galaxy y tengo un reloj Huawei, pero probablemente sea el caso en general: Parece que se requiere la ubicación para emparejar >>o conectar sin emparejar<<, y la app (Huawei Health) hace lo segundo, nunca empareja (a nivel de Bluetooth), por lo que se requiere la ubicación cada vez. Para solucionarlo: revoca el permiso de localización de la app y apaga y enciende el bluetooth para desconectar; instala "NRF Connect" desde Play Store, inícialo, activa la localización, busca tu dispositivo en la lista, toca tres puntos y luego "enlaza". Ahora se conecta sin localización.

0 votos

[La aplicación (Huawei Health) sigue quejándose de que necesita la ubicación, pero se conecta y funciona igualmente cuando la ubicación está desactivada. El efecto secundario es que el icono del bluetooth permanece en la barra de estado y el reloj aparece en la lista de dispositivos bluetooth en los ajustes de Android, lo que no ocurre cuando se conecta a través de la aplicación sin emparejamiento. Normalmente veo ese icono sólo cuando se conectan los auriculares BT, así que me molesta un poco que ya no lo indique.

13voto

mattm Puntos 139

Según tengo entendido, las aplicaciones que utilizan Bluetooth tienen acceso directo a la dirección MAC del dispositivo con el fin de emparejarlo. Asumiré esto para esta respuesta.

Si puedes leer las direcciones MAC de los transmisores WiFi o Bluetooth, puedes localizar un dispositivo. Así es como funciona la localización por WiFi/Bluetooth; escuchas las direcciones MAC de los transmisores y las buscas en una gigantesca base de datos global.

Por lo tanto, cualquier aplicación que utilice Bluetooth y una conexión de datos es teóricamente capaz de localizar tu dispositivo. No estoy seguro de que esto sea posible en la práctica; Bluetooth no tiene el mismo alcance ni la misma infraestructura de puntos de acceso semipermanentes que WiFi.

Al exigir que los servicios de localización accedan a Bluetooth, te aseguras de que el usuario entienda que su información de localización puede filtrarse cuando utiliza Bluetooth. En las versiones de Android anteriores a Marshmallow, el usuario podía utilizar Bluetooth sin los servicios de localización activados, pero la información de localización podía filtrarse. En estas versiones anteriores, también se podían realizar escaneos de WiFi para encontrar direcciones MAC sin los servicios de localización habilitados, lo que de nuevo significaba que su información de localización podía filtrarse. El requisito de permitir los servicios de localización para utilizar Bluetooth trata de garantizar que alguien que desactive la localización mantenga su ubicación privada.

Yo calificaría esta cuestión como un problema de diseño y no como un error. Un error es presumiblemente solucionable, pero no tengo claro que se pueda utilizar Bluetooth en absoluto sin que se filtre potencialmente la información de localización. Bluetooth se creó antes de que nadie considerara los servicios de localización de WiFi y Bluetooth.

1 votos

¿Cómo se salta Apple este requisito?

0 votos

Además, si esto está relacionado con la MAC, ¿por qué puedo tener el Wifi activado y el Bluetooth desactivado?

2 votos

Esto parece más bien un fallo fatal al confundir un servicio que proporciona acceso directo a esa información con la posibilidad teórica de que la información proporcionada por ese servicio pueda estar disponible. Desactivar los servicios de localización no implica, supongo, desactivar los cuadros de texto con la etiqueta "¿dónde estás?", por lo que desactivar el bluetooth sólo logra una versión a medias de la intención del diseño. Utiliza una solicitud de activación/desactivación del usuario para simplemente reducir la superficie de ataque para las aplicaciones adversas que intentan inferir la ubicación sin permiso, sin eliminarla por completo.

4voto

Irgendwoanders Puntos 46

El vendedor tiene razón, tienes que habilitar los servicios de localización para buscar dispositivos WiFi o Bluetooth LE.

Ver error #185370 para más detalles. Google dijo que lo habían solucionado en una "futura versión", pero según los comentarios sobre el fallo, todavía no está solucionado en Android 7.


Edición: Anteriormente dije que los servicios de localización sólo son necesarios cuando la aplicación que inicia el escaneo se ejecuta en segundo plano. El código fuente indica que esto sólo es cierto si la API-Target es < Android M.

0 votos

Si es un error de Android, ¿por qué tendría razón el vendedor? Deberían haber respondido: "Es un error de Android"

0 votos

¿Es posible vincular el dispositivo al bluetooth fuera de la App?

2 votos

Ha preguntado si la declaración del vendedor es incorrecta. No es incorrecta, sí es necesario conceder la ubicación permisos a la aplicación. Además, debido al error, es necesario habilitar la ubicación servicios .

3voto

Coder Steve Puntos 21

El operador preguntaba sobre el emparejamiento (el método original de Bluetooth, seguro para la privacidad, para definir una nueva relación de confianza mediante la confirmación de un código enviado desde el otro dispositivo). Para el emparejamiento, una aplicación NO necesita:

  1. Buscar una dirección MAC
  2. "Servicios de localización"
  3. ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION (no estoy 100% seguro de esto)

Creo que el Bug #185370 no está relacionado. No hay ningún bug; hay vendedores deshonestos.

Una dirección MAC tiene un ID de fabricante y un ID de dispositivo, y normalmente un número de modelo. Android 6.0 castró una función que antes permitía a la aplicación de un fabricante escanear direcciones MAC para vincularlas a sus propios productos, para ahorrarte el trabajo de emparejamiento y otras cosas divertidas.

Sin embargo, muchas aplicaciones abusan de ella para encontrar todos los productos WiFi y Bluetooth de tu casa, qué coche conduces, tus proveedores de datos, etc., y averiguar dónde trabajas, qué tienen tus amigos o quiénes son, qué frecuencia visitas, a qué tiendas vas, etc. (piensa en el marketing, la intromisión en las elecciones y los juegos "gratuitos" de otros países).

De Google: "Para proporcionar a los usuarios una mayor protección de datos, a partir de esta versión, Android elimina el acceso programático al identificador de hardware local del dispositivo para las aplicaciones que utilizan las API de Wi-Fi y Bluetooth. Los métodos WifiInfo.getMacAddress() y theBluetoothAdapter.getAddress() devuelven ahora un valor constante de 02:00:00:00:00".

De nuevo, los servicios de localización no son necesarios para el "emparejamiento". Esto es de mi nuevo Bluetooth "BlueDriver" ODBII escáner de código de vehículo (es decir, la luz del motor del cheque):

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.

(La primera vez que leí su declaración de privacidad me asusté: subirán a sus servidores el número de bastidor (incluye el fabricante, el modelo, el número de identificación, etc.) de todos los coches a los que preste servicio, además de todos los datos del coche con sus hábitos de conducción, etc.; no puedo evitar que el ADS llegue a mi correo electrónico. Entonces lo leí hasta el final. Encontré que tienen políticas muy estrictas sobre mantenerlo privado y NO compartirlo. Muy inusual).

Los servicios de localización pueden ser legítimos. La aplicación de Fitbit no lo necesita para conectarse a mi Fitbit, pero puede ayudarles a recopilar todos los datos que quieran de mí. Y créeme, es mucho más de lo que necesitan para comprobar mi ritmo cardíaco y contar mis pasos, y el mapeo es opcional.

3voto

Brian Reinhold Puntos 111

Tendré que añadir mis dos centavos a esto - siendo un desarrollador de aplicaciones que necesita escanear para los dispositivos de salud Bluetooth LE. También necesito hacerlo en segundo plano para que la aplicación pueda volver a conectarse al dispositivo sin que el usuario tenga que interactuar con la aplicación.

El hecho de que Android requiera permisos de localización y de fondo para hacer esto en la última versión ha demostrado ser un gran dolor de cabeza. Los idiotas rechazan mi aplicación debido a esto, sin embargo, la aplicación no necesita información de ubicación o se preocupan por la ubicación. La aplicación también filtra los escaneos para asegurar que sólo expone los dispositivos de salud que puede soportar (hay un montón de dispositivos propietarios por ahí).

Puedo descubrir en segundo plano el SPP y el HDP (Android pre-10 mató al HDP en la versión 10) sin estos permisos. Trabajar con Bluetooth ya es bastante difícil para muchas personas, especialmente para los ancianos que no son especialmente expertos en tecnología. Android está haciendo que el uso de su plataforma sea cada vez más imposible en situaciones de monitorización remota de pacientes.

Así que mi respuesta a la pregunta original. El desarrollador de la aplicación no está "mintiendo". Android lo ha forzado.

0 votos

Sí, esto es un gran dolor de cabeza. Pero el problema es que como Google recopila el SSID del WiFi de todo el mundo, ahora se puede utilizar para determinar la ubicación exacta. Mal Google. Malo.

0 votos

No estoy buscando WiFi; estoy buscando dispositivos sanitarios con Bluetooth Low Energy. No necesito información sobre la ubicación para realizar esta tarea. La búsqueda de dispositivos BTLE implica escuchar los anuncios de dispositivos conectables. En esos anuncios puede haber UUIDs de servicio que indican qué soporta el dispositivo. Si el UUID admite un servicio de dispositivo de salud con el que mi aplicación puede trabajar, paso esa información al usuario y le pregunto si quiere conectarse. Si la respuesta es afirmativa, me conecto. No hay ubicación involucrada. Pero Google requiere permiso de localización para esa exploración. ¿Por qué?

0 votos

Primero, mis disculpas. No tengo ni idea de cómo he llegado a escribir sobre WiFi, cuando has escrito claramente "Bluetooth LE". Lo siento. Sí, estoy de acuerdo en que es inapropiado que Google exija este permiso. Lo único que se me ocurre (sin defender a Google, ni mucho menos) es que ¿no utiliza Bluetooth LE las mismas API que Bluetooth? Si es así, bueno, técnicamente, Bluetooth (no tanto Bluetooth LE) puede usarse más o menos para proporcionar una buena localización en circunstancias muy determinadas . En todos esos casos, alguien tendría que conocer la ubicación exacta del dispositivo Bluetooth. Continúa...

2voto

atroon Puntos 328

Para realizar una conexión Bluetooth, la dependencia de la ubicación se puede relacionar de la siguiente manera -

Si una aplicación puede buscar balizas Bluetooth conocidas, entonces también puede averiguar la ubicación de la baliza disponible. Por lo tanto, si una aplicación tiene acceso al uso de Bluetooth en su teléfono, es probable que también pueda recuperar su ubicación. Por lo tanto, tiene sentido que una aplicación pida acceso a la ubicación cuando intente buscar dispositivos Bluetooth.

Así que la dependencia de la ubicación para el Bluetooth se añade en Android 6 (Marshmallow) en adelante. Además, en las versiones recientes de Android (10 en adelante) han restringido aún más el uso de la ubicación en función de si se está utilizando la aplicación (acceso en primer plano) o si la aplicación se está ejecutando en segundo plano.

Una nota más es - esta dependencia de la ubicación y el permiso relacionado no es específica de Android, sino que también se añade en iOS.

0 votos

Hay un montón de usos nefastos que uno puede soñar. Dado el corto alcance de Bluetooth, se necesitarían muchas balizas para rastrear tu posición. Dicho esto, uno podría hacer la misma mierda con el Bluetooth estándar si tuviera un par correctamente diseñado. Pero no hay permisos de localización para eso.

0 votos

Con BLE. la ubicación puede ser inferida por los actores buenos y malos. También se puede deducir la ubicación a partir de una dirección IP (excluyendo VPNs) Estoy confundido en el mundo de la seguridad. Se supone que el cifrado es nuestro salvador, pero la ubicación, las cookies y el historial del navegador hacen un buen trabajo de seguimiento de nuestros comportamientos. ¿Por qué Google "pretende" ser seguro y al mismo tiempo utiliza cookies y guarda nuestro historial de búsqueda? Me parece que quieren ser los guardianes de esta información para su propio beneficio, mientras evitan que otros obtengan información bajo el pretexto de la "seguridad" .... ¿la seguridad de quién?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X