GPS, Triangulação de Antenas e LocationSource no Android

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Android /GPS, Triangulação de Antenas e LocationSource no Android

GPS, Triangulação de Antenas e LocationSource no Android

Vinícius Thiengo
(18719) (22)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloManual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas
CategoriaEngenharia de Software
Autor(es)Gene Kim, Jez Humble, John Willis, Patrick Debois
EditoraAlta Books
Edição1ª
Ano2018
Páginas464
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

Opa! Blz?

Nesse vídeo mostro como ativar e utilizar o GPS e Triangulação de Antenas com a interface LocationListener que é fornecida pelo Android. Mostro também como obter o posicionamento atual do usuário utilizando o método setMyLocationEnabled() da classe GoogleMap e como sobrescrever a classe LocationSource para alterarmos via script a localização do Layer gerado pelo método setMyLocationEnabled().

Aparentemente pode vir a cabeça que para utilizarmos o GPS ou a Triangulação de Antenas temos de ter a API do Google Maps em nosso projeto, não, na verdade a API do Google Maps Android V2 com as funcionalidades de localização do sistema (GPS e cia) nos dão mais "poder de fogo" no momento de montarmos nossos scripts, mas o GPS pode ser utilizado de forma totalmente independente da API do Google Maps.

Fique atento quanto as permissões necessárias para podermos utilizar as funcionalidades de GPS e de Triangulação de Antenas e também a de localização via método setMyLocationEnabled() que utiliza o GPS. Note que o GPS é um dos hardwares que mais consomem bateria do dispositivo, logo saber utilizá-lo junto aos métodos do ciclo de vida de uma Activity tende a otimizar em muito seus scripts, claro que v deve avaliar o nível de necessidade do GPS em seu projeto, pois se for necessário que ele fique rodando no background enviando as coordenadas para um servidor Web não há a necessidade de se preocupar com isso e sim em quanto dar ou o não o stopService() que estará rodando no background. Mas enfim, sem muitas delongas vou deixar você assistir ao vídeo.

Obs. : será necessário que você utilize um dispositivo real com o GPS para poder testar a captura do movimento no método onLocationChanged(). Uma outra opção seria você implementar um script que utilize os métodos liberados pela permissão ACCESS_MOCK_LOCATION.

O link para download do projeto se encontra logo abaixo no post.

Segue links dos posts anteriores sobre o Google Maps Android V2 e entidades relazionadas:

Obtendo e Apresentando Rotas no Google Maps Android V2

Polyline, Geocoder e Distância no Google Maps Android

Markers e Listeners no Google Maps Android

GoogleMap e CameraPosition no Android, Entendendo e Utilizando

Google Maps V2 no Android, Inicio e Configuração

Segue links das páginas apresnetadas em vídeo:

Página da interface LocationListener no site oficial do Android

Página da interface LocationSource no site oficial do Android

Vlw

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

GoogleMap e CameraPosition no Android, Entendendo e UtilizandoGoogleMap e CameraPosition no Android, Entendendo e UtilizandoAndroid
Markers e Listeners no Google Maps AndroidMarkers e Listeners no Google Maps AndroidAndroid
Polyline, Geocoder e Distância no Google Maps AndroidPolyline, Geocoder e Distância no Google Maps AndroidAndroid
Obtendo e Apresentando Rotas no Google Maps Android V2Obtendo e Apresentando Rotas no Google Maps Android V2Android

Compartilhar

Comentários Facebook

Comentários Blog (22)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
Ricardo (1) (0)
12/09/2019
Olá Thiengo, tenho um app ele encontra a minha localização porem não encontra a localização dos endereços que eu cadastrei.
Responder
Vinícius Thiengo (0) (0)
09/01/2020
Ricardo, tudo bem?

Provavelmente você está utilizando a API errada.

O Google maps Android tem inúmeras APIs.

Para encontrar as coordenadas de um endereço ou o endereço de acordo com as coordenadas passadas você pode estar consultando os servidores do Google Maps como é apresentado na documentação do link a seguir: https://developers.google.com/maps/documentation/directions/start

Note que alguma API Android de comunicação remota deverá ser utilizada.

Para isso indico a Retrofit API, pois é a mais popular e mais utilizada pela comunidade Android:

-> Library Retrofit 2 no Android: https://www.thiengo.com.br/library-retrofit-2-no-android

Ricardo, é isso.

Surgindo mais dúvidas, pode perguntar.

Um excelente 2020 para você e família.

Abraço.
Responder
Alberto (0) (0)
15/07/2019
Pessoal, boa tarde!
com essa aplicacao que vc estao desenvolvendo eh possivel localizar um dispositivo movel apenas com o numero do chip inserido nele?
Responder
Vinícius Thiengo (0) (0)
17/07/2019
Alberto, tudo bem?

Não, não é possível utilizando APIs de programação como a do Google Maps do vídeo acima.

Para tentar localizar você de utilizar o MEI do aparelho junto a triangulação de antenas.

Abraço.
Responder
Heraldo Gama (1) (0)
23/02/2015
Ola Vinicius,
Sou novo no assunto, e tentei rodar essa app exercicio de GPS, triangulacao e Locationsource no meu dispositivo (android 4.4.4), mas nao mostrou o mapa. Abriu o fragment, controles do mapa, mas o mapa em si não apareceu. Já no emulador padrão ( uso o Android Studio 1.1.0 - API 19) rodou normal. Detalhe, mantive as coordenadas do projeto original e na sequencia mudei pra minhas, também rodou normal. Qual seria o problema de não rodar no dispositivo ?
Responder
Vinícius Thiengo (1) (1)
24/02/2015
Fala Heraldo, blz? Provavelmente já está com o Google Play Services de seu device atualizado, atualize o Google Play Services sendo utilizado no APP tb (atualize no AndroidStudio, não no aparelho, nesse caso). Verifique se no AndroidManifest.xml vc colocou essas permissões tb:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Coloque tb essa linha abaixo dentro de sua tag <application>

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>

Abraço
Responder
Heraldo Gama (1) (1)
24/02/2015
Bom dia Vinicius, estamos bem, e porae ?
Bom realmente a linha na TAG aplication do manifest não existia, eu adicionei. Já as permissões estão todas  lá. A versão do play service do SDK está atualizada (no caso a rev. 22) e a do meu celular (versão 6.5.99 - 1642632-038). Continua não apresentando o mapa no celular. Já no emulador, 100%. vou continuar estudando aqui pra ver onde está o problema, se ainda tiver alguma dica, de já agradeço. Abs.
Responder
Vinícius Thiengo (0) (0)
24/02/2015
Heraldo, aqui está ok tb, vlw...
No LogCat, o que está sendo printado nele (lembrando que o LogCat é a chave para descobrir as falhas na APP)? Outra coisa é: vc criou sua própria chave no Google Console igual fiz no vídeo? Abraço
Responder
Heraldo Gama (1) (0)
24/02/2015
ops!!! Sim, criei a chave no console. Você testou no seu celular, funcionou normal ? Ah, obrigado pela breve resposta.
Responder
Vinícius Thiengo (0) (0)
24/02/2015
Sim, rodou sem problemas, se me lembro bem. Nossa última opção agora é saber o que o LogCat está mostrando quando no Android 4.4 (KitKat). Se não conhece o LogCat veja esse vídeo (http://www.thiengo.com.br/entendendo-e-utilizando-o-a-classe-log-com-o-logcat-no-android ). Ai depois volte e informe o que foi printado lá. Abraço
Responder
Heraldo Gama (1) (0)
24/02/2015
Instalei o app num aparelho com a versão 4.1.2, tbm não mostrou o mapa (fica em branco a área onde deveria mostrar o mapa, mas o controle de zoom é mostrado), igual ao que acontece com o meu celular (versão 4.4.4). Como disse, executo no emulador (versão 4.4.2, API 19) e roda normalmente. No log cat, nenhum erro.
Responder
Vinícius Thiengo (0) (0)
24/02/2015
Heraldo, já tive esse problema, ele ocorreu quando assinei a APP e instalei no aparelho, as chaves sendo utilizadas não batiam, pois ele instalava com a chave do android.debug keystore e não com a keystore de minhaAPP que já estava assinada. Vc está assinando a APP e então instalando no aparelho? Para testes utilize a keystore do android.debug mesmo, ou seja, não assine a APP e depois instale no aparelho, apenas instale no aparelho rodando direto do IDE. Mas provavelmente vc já está fazendo isso. Bom vou esperar sua resposta, se mesmo assim não for vou rodar o projeto aqui para ver se algo está errado quando no aparelho real. Abraço
Responder
Heraldo Gama (1) (0)
24/02/2015
Criei a key no google.console, atribui a chave gerada ao meu manifest, gerei o APK e instalei no aparelho.
Responder
Vinícius Thiengo (0) (0)
25/02/2015
Ok Heraldo,
Vc poderia me enviar exatamente o projeto que está utilizando para eu testar aqui com minhas chaves? Somente para simular as mesmas condições que to. Segue email: thiengocalopsita@gmail.com. Abraço
Responder
Heraldo Gama (1) (0)
25/02/2015
Enviei via google drive.
Abs.
Responder
Heraldo Gama (1) (0)
02/03/2015
O problema era a SHA1, que não estava correta!!! Havia usado um recurso (alternativo), criando uma Activity Maps padrão, dae o Android Studio gera um XML com a KEY, no entanto após checar essa KEY com o comando keytool, percebi a diferença. Usei a gerada pelo prompt, e pronto, resolvido!!!! Obrigado, pelo apoio.
Responder
Vinícius Thiengo (0) (0)
03/03/2015
Show de bola Heraldo, abraço
Responder
16/11/2014
Thiengo,
Primeiro, parabéns pelas aulas, estão me ajudando muito! Valeu!
Uma dica legal para quem quiser testar o GPS provider no próprio emulador(Genymotion), na lateral direita da VM existe um botão "GPS", onde é possível simular uma posição como se o GPS real estivesse capturando informações.
Espero que ajude!
Abraço.
Responder
wallace Pacheco (0) (0)
14/11/2014
Cara conheci agora seu site. bem legal. Você poderia me dar uma dica de como saber se a posição do GPS esta fora de uma rota no maps ou no open street view?
Responder
Vinícius Thiengo (0) (0)
15/11/2014
Fala Wallace, blz?
Se é sua necessidade saber se o usuário está narota já aconselho utilizar o GPS provider, pois o provider de triangulação de antenas tem uma margem de erro mt grande. E mesmo com o GPS provider vc terá de colocar uma margem erro, recomendo margem de erro de 10 metros raio (ou seja, circular). Supondo que vc terá todas as coordenadas da rota, a cada par de rota vc consegue realizar essa verificação no seu bd / script que tem as rotas, tendo como parametro de entrada as corrdenadas atuais do usuário. Abraço
Responder
09/05/2014
Seus vídeos são muito bons! Gostei demais!
Assisti um monte. Estou tendo dificuldade pra criar um service que envia as informações de localização pro meu servidor.
Alguma dica?

Abraço!
Responder
Vinícius Thiengo (0) (0)
09/05/2014
Fala Filipe, blz? Então já conseguiu criar o service? Se sim crie um método que terá uma Thread secundária onde vc enviará as informações de coordenadas ao servidor, porém coloque o envio dentro de um While(true) e dentro desse while um Thread.sleep(). Note que o Service terá de implementar o LocationListener, para que todas as funcionalidades de GPS fiquem no Service mesmo. Vc terá de bolar uma lógica tb para desligar o Service, ai vc pode utilizar algumas flags. Outra coisa, essa é apenas uma ideia, com certeza existem várias outras soluções. abraço
Responder