Por que preciso ativar os serviços de localização para parear com um dispositivo Bluetooth?

16

Sempre que tento conectar meu Samsung Galaxy S6 com Android 6.0.1 a um dispositivo habilitado para Bluetooth, ele solicita a ativação de "serviços de localização".

Quando reclamei, o fornecedor do software respondeu: "As atualizações recentes da API do Google Android que afetam a tecnologia Bluetooth LE exigem que sejam concedidas permissões de localização para o uso do aplicativo".

Não vejo a necessidade disso.

Esta discussão fala sobre isso. A referência técnica diz que os aplicativos precisam ter certas permissões , não que os serviços de localização estejam ativos.

Para acessar os identificadores de hardware de dispositivos externos próximos por meio de varreduras Bluetooth e Wi-Fi, seu aplicativo agora deve ter as permissões ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION

Pergunta : Isso significa que a declaração do fornecedor do software está incorreta?

GUI Junkie
fonte
O sistema de permissão é definitivamente completamente destruído pela reestruturação do MM (as explicações dizem que eles tinham "sinalizadores Bluetooth" em mente que poderiam ser usados ​​para localizá-lo). No meu entender, sua dúvida é justificada e a declaração do fornecedor está incorreta: os aplicativos precisam da permissão para acessar o Bluetooth. Mas se eles precisarem de um serviço de localização para encontrar o hardware ("vire à direita na segunda junta de solda, passe o transistor no portão 3 ..."), eu ficaria surpreso. Duvido muito que os serviços de localização precisem ser ativados para isso, mas não tenho um dispositivo MM para verificar.
Izzy

Respostas:

6

Meu entendimento do Bluetooth é que os aplicativos que usam Bluetooth têm acesso direto ao endereço MAC do dispositivo para fins de emparelhamento. Vou assumir isso para esta resposta.

Se você conseguir ler os endereços MAC dos transmissores WiFi ou Bluetooth, poderá localizar um dispositivo. É assim que a localização WiFi / Bluetooth funciona; você ouve os endereços MAC dos transmissores e os procura em um gigantesco banco de dados global.

Portanto, qualquer aplicativo usando Bluetooth e uma conexão de dados é teoricamente capaz de localizar seu dispositivo. Não tenho certeza se isso é praticamente possível; O Bluetooth não possui o mesmo alcance e infraestrutura de ponto de acesso semi-permanente que o WiFi.

Ao exigir que os serviços de localização acessem o Bluetooth, você garante que o usuário entenda que suas informações de localização podem vazar ao usar o Bluetooth. Nas versões do Android anteriores ao Marshmallow, o usuário podia usar o Bluetooth sem os serviços de localização ativados, mas as informações de localização poderiam vazar. Nessas versões mais antigas, também era possível executar varreduras de WiFi para encontrar endereços MAC sem os serviços de localização ativados, o que novamente significava que suas informações de localização poderiam vazar. O requisito para permitir que os serviços de localização usem o Bluetooth é garantir que alguém que desabilite a localização mantenha sua localização privada.

Eu caracterizaria esse problema como um problema de design e não como um bug. Presumivelmente, um bug pode ser corrigido, mas não está claro para mim que você pode usar o Bluetooth sem vazar informações de localização. O Bluetooth foi criado antes que alguém considerasse os serviços de localização WiFi e Bluetooth.

mattm
fonte
2

O fornecedor está correto, você precisa habilitar os serviços de localização para procurar dispositivos WiFi ou Bluetooth LE.

Veja o bug # 185370 para obter detalhes. O Google disse que o corrigiu em um 'release futuro', mas de acordo com os comentários sobre o bug, ele ainda não foi corrigido no Android 7.


Editar: Eu disse anteriormente que os serviços de localização são necessários apenas quando o aplicativo que inicia a verificação está sendo executado em segundo plano. O código-fonte indica que isso só é verdade se o alvo da API for <Android M.

jomo
fonte
Se é um bug do Android, por que o fornecedor está certo? Eles devem ter respondido: "É um erro do Android"
GUI Junkie
É possível vincular o dispositivo ao bluetooth fora do aplicativo?
GUI Junkie
Você perguntou se a declaração do fornecedor está incorreta. Não está incorreto, você precisa conceder permissões de local ao aplicativo. Além disso, devido ao bug, você precisa ativar os serviços de localização .
Jomo