Para respeitar a privacidade do usuário, os desenvolvedores de aplicativos são incentivados a solicitar apenas permissões de localização aproximadas. Os aplicativos que precisam de uma posição aproximada aproximada geralmente usam o local de rede (FLP) porque é rápido e consome menos energia.
Em comparação com dispositivos móveis baseados em Android, a localização de rede em aplicativos automotivos pode ser mais desafiadora. Você pode usar duas APIs Android:
A API LocationManager exige que você identifique explicitamente o provedor de localização preferencial.
A API do Google Play Services oferece uma maneira mais simplificada de trabalhar com localização com a introdução do Fused Location Provider (FLP).
Muitos aplicativos automotivos usam FLP da API Google Play Services (GPS) em vez de LM. A FLP seleciona o fornecedor de localização ideal com base nos critérios e políticas de solicitação de localização (potência e precisão) exigidas pelo veículo.
Em vez disso, você pode optar por solicitar e usar explicitamente NETWORK_PROVIDER
no LM, bem como GPS_PROVIDER
para posições precisas, que usa permissões android.permission.ACCESS_FINE_LOCATION
. Na API 31, o FUSED_PROVIDER
, anteriormente acessível apenas através da API GPS, agora está disponível como provedor de localização para LM. Você pode visualizar uma implementação mais simples do FLP em FusedLocationProvider.java
.
Embora seja possível usar GPS_PROVIDER
apenas com direitos de permissão grosseiros, a estrutura degrada artificialmente a precisão para se alinhar às expectativas. Faz pouco sentido para desenvolvedores que visam telefones Android porque a disponibilidade geral é baixa e muitas vezes mais lenta para obter uma posição grosseira.
Localização de rede no setor automotivo
O NETWORK_PROVIDER
usado em telefones Android (com Google Mobile Services) mudou de determinar a localização com base apenas em torres de celular próximas para também usar pontos de acesso Wi-Fi ou até mesmo beacons Bluetooth (BT). O uso de NETWORK_PROVIDER
pode exigir uma conexão de dados.
Para aplicativos automotivos, as restrições de dispositivo são diferentes. Como o GNSS está normalmente ligado, nenhuma penalidade será incorrida devido ao aumento de energia e uso da bateria. Como resultado, o tempo de atividade do IVI não é comprometido. Nós nos esforçamos para minimizar a troca de dados com nossos servidores.
Muitos aplicativos, portanto, usam o FLP da Play API em vez do LM diretamente, pois o FLP faz automaticamente a coisa inteligente ao usar o provedor de localização mais capaz de satisfazer os critérios/políticas de solicitação de localização (ou seja, potência e precisão) nos bastidores.
Ao contrário dos dispositivos móveis, os veículos raramente parecem saltar de um lugar para outro. A posição do veículo é conhecida sob o capô na maioria das vezes.
Provedor de localização de rede
A maioria dos veículos não implementa APIs de telefonia necessárias para obter as informações necessárias sobre um Cell ID (e intensidade do sinal). Como resultado, e porque minimizamos o uso de dados, nenhuma implementação funcional adicional de PNL é fornecida.
Provedor de localização fundido
O FLP móvel, além de usar de forma inteligente os provedores de rede e GPS conforme apropriado, funde informações de outros sensores para melhorar ainda mais a qualidade dos locais. A implementação atual do FLP da Automotive, por outro lado, aproveita as suposições acima mencionadas e usa GPS_PROVIDER
como fonte subjacente o tempo todo. Ele falsifica as posições do GNSS, adicionando alguns erros para ser mais impreciso quando necessário. Por exemplo, quando localizações aproximadas são fornecidas a um cliente.
Como tal, em muito poucos casos pode demorar mais do que o normal para que a primeira posição esteja disponível. Por exemplo, na primeira vez que um veículo ou, para ser mais preciso, o seu subsistema de localização é utilizado ou após ser rebocado.
Projete aplicativos para usos móveis e automotivos
Recomendamos que os aplicativos destinados a dispositivos móveis e automotivos que não exigem uma qualidade de precisão mais alta solicitem apenas android.permission.ACCESS_COARSE_LOCATION
e voltem a usar o FLP quando disponível. Alternativamente, como último recurso, use GPS_PROVIDER
diretamente com as mesmas permissões. A estrutura degrada a precisão da posição GNSS subjacente para se alinhar às expectativas da API. Para saber mais, consulte Precisão .
Além disso, esses aplicativos devem declarar explicitamente o recurso android.hardware.location.network
como opcional em seu manifesto. Por exemplo:
<uses-feature android:name="android.hardware.location.network" android:required="false" />
Essa abordagem garante compatibilidade máxima com dispositivos em todos os setores e, portanto, disponibilidade máxima do aplicativo sem diferenças de código para obter posições quando necessário.