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 ubicación".
Cuando me quejé de esto, el proveedor de software respondió: "Las actualizaciones recientes de la API de Android de Google que afectan la tecnología Bluetooth LE requieren que se otorguen permisos de ubicación para usar la aplicación".
No veo la necesidad de esto.
Esta discusión habla de esto. La referencia técnica dice que las aplicaciones deben tener ciertos permisos , no que los servicios de ubicación estén activos.
Para acceder a los identificadores de hardware de dispositivos externos cercanos a través de escaneos de Wi-Fi y Bluetooth, su aplicación ahora debe tener los permisos ACCESS_FINE_LOCATION o ACCESS_COARSE_LOCATION
Pregunta : ¿Significa esto que la declaración del proveedor de software es incorrecta?
Mi entendimiento de Bluetooth es que las aplicaciones que usan Bluetooth tienen acceso directo a la dirección MAC del dispositivo con el fin de emparejar. Asumiré esto para esta respuesta.
Si puede leer las direcciones MAC de los transmisores WiFi o Bluetooth, puede localizar un dispositivo. Así es como funciona la ubicación WiFi/Bluetooth; usted escucha las direcciones MAC de los transmisores y las busca en una base de datos global gigante.
Por lo tanto, cualquier aplicación que use Bluetooth y una conexión de datos es teóricamente capaz de localizar su dispositivo. No estoy seguro de que esto sea posible en la práctica; Bluetooth no tiene el mismo alcance ni la misma infraestructura de punto de acceso semipermanente que Wi-Fi.
Al solicitar los servicios de ubicación para acceder a Bluetooth, se asegura de que el usuario comprenda que la información de su ubicación puede filtrarse cuando usa Bluetooth. En versiones de Android anteriores a Marshmallow, el usuario podía usar Bluetooth sin los servicios de ubicación habilitados, pero la información de ubicación podía filtrarse. En estas versiones anteriores, también podía ejecutar escaneos WiFi para encontrar direcciones MAC sin los servicios de ubicación habilitados, lo que nuevamente significaba que la información de su ubicación podría filtrarse. El requisito para permitir que los servicios de ubicación usen Bluetooth se trata de garantizar que alguien que deshabilite la ubicación mantenga su ubicación privada.
Caracterizaría este problema como un problema de diseño y no como un error. Presumiblemente, se puede corregir un error, pero no me queda claro si puede usar Bluetooth sin perder información de ubicación. Bluetooth se creó antes de que nadie considerara los servicios de ubicación WiFi y Bluetooth.
El proveedor tiene razón, debe habilitar los servicios de ubicación para buscar dispositivos WiFi o Bluetooth LE.
Vea el error #185370 para más detalles. Google dijo que lo arreglaron en una 'versión futura', pero según los comentarios sobre el error, todavía no está arreglado en Android 7.
Editar: anteriormente dije que los servicios de ubicación solo son necesarios cuando la aplicación que inicia el escaneo se ejecuta en segundo plano. El código fuente indica que esto solo es cierto si el API-Target es <Android M.
El OP preguntó sobre el emparejamiento (el método Bluetooth original y seguro para la privacidad para definir una nueva relación confiable al confirmar un código enviado desde el otro dispositivo). Para el emparejamiento, una aplicación NO necesita:
Creo que el error #185370 no está relacionado. No hay error; hay vendedores deshonestos.
Una dirección MAC tiene una identificación de fabricante y una identificación de dispositivo, y generalmente un número de modelo. Android 6.0 castró una función que anteriormente permitía que la aplicación de un fabricante buscara direcciones MAC para vincularlas a sus propios productos, para ahorrarle el problema del emparejamiento y otras cosas divertidas.
Sin embargo, muchas aplicaciones abusaron de él para encontrar todos los productos WiFi y Bluetooth en su hogar, qué automóvil conduce, sus proveedores de datos, etc., y averiguar dónde trabaja, qué tienen sus amigos o quiénes son, con qué frecuencia visita, a qué tiendas vas, etc. (piensa en marketing, intromisión en las elecciones y 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. WifiInfo.getMacAddress() y theBluetoothAdapter.getAddress() los métodos ahora devuelven un valor constante de 02:00:00:00:00:00".
Nuevamente, los servicios de ubicación no son necesarios para "Emparejar". Esto es de mi nuevo escáner de código de vehículo Bluetooth "BlueDriver" ODBII (es decir, luz de control del motor):
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.
(A primera vista de su Declaración de privacidad me asusté: cargarán en sus servidores, el VIN (incluye mfr, modelo, ID, etc.) de cada automóvil al que servicio, además de todos los datos del automóvil con hábitos de manejo, etc.; No puedo optar por no recibir ADS en mi correo electrónico. Luego lo leí hasta el final. Descubrí que tienen políticas muy estrictas sobre mantenerlo privado y NO compartirlo. ¡Muy inusual!)
Los servicios de ubicación pueden ser legítimos. La aplicación Fitbit no la necesita para conectarse a mi Fitbit, pero puede ayudarlos a recopilar todos los datos que quieren de mí. Y créanme, es mucho más de lo que necesitan para verificar mi frecuencia cardíaca y contar mis pasos, y el mapeo es opcional.
Necesitaré agregar mis dos centavos a esto: ser un desarrollador de aplicaciones que necesita buscar dispositivos de salud Bluetooth LE. También necesito hacer esto 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 una ubicación FINE y permisos en segundo plano 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, pero la aplicación no necesita información de ubicación ni se preocupa por la ubicación. La aplicación también filtra los escaneos para asegurarse de que solo expone los dispositivos de salud que puede admitir (hay muchos dispositivos patentados).
Puedo descubrir en segundo plano SPP y HDP (el Android anterior a 10 eliminó HDP en la versión 10) sin estos permisos. Trabajar con Bluetooth es bastante difícil para muchas personas, especialmente para los ancianos que no son particularmente expertos en tecnología. Android está haciendo que el uso de su plataforma sea cada vez más imposible de usar en situaciones remotas de monitoreo de pacientes.
Así que mi respuesta a la pregunta original. El desarrollador de la aplicación no está "mintiendo". ¡Android forzó esto!
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, también puede averiguar la ubicación a partir de la baliza disponible. Entonces, si una aplicación obtiene acceso para usar Bluetooth en su teléfono, es probable que también pueda recuperar su ubicación. Por lo tanto, tiene sentido que una aplicación solicite acceso a la ubicación cuando intenta buscar dispositivos Bluetooth.
Entonces, la dependencia de la ubicación para Bluetooth se agrega en Android 6 (Marshmallow) en adelante. Además, en la versión reciente de Android (10 en adelante), han restringido aún más el uso de la ubicación en función de si está utilizando la aplicación (acceso en primer plano) o si su aplicación se ejecuta 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 agrega en iOS.
El permiso de ubicación y los servicios de ubicación deben ser dos cosas separadas. Si acepto, esta aplicación puede usar wifi de datos de ubicación de baja precisión, etc. VS, esta aplicación usa o requiere que el gps del teléfono esté habilitado.
Ejemplo: mantengo el gps en mi teléfono apagado, pero no puedo sincronizar mi fitbit porque dicen que no solo necesito dar permiso de ubicación a la aplicación, el gps del teléfono también tiene que estar encendido.
izzy
EvgEnZh
EvgEnZh