Pesquise algo no blog

domingo, 15 de novembro de 2015

Curso Android Aula 12 - Obtenha endereços via Georreferenciamento Latitude e Longitude




Prenda nesta aula como utilizar o Georreferenciamento no Android e a partir das coordenadas GPS latitude a longitude, obter um ou mais endereços.

Assine o Canal do curso no YouTube.

Introdução


Os celulares em geral oferecem um universo de possibilidade muito grande para o desenvolvedor de aplicativos. Posso afirmar que por mais simples que seja o celular que você usa, a quantidade de possibilidades de desenvolver algo novo e muito maior do que a nossa capacidade de implementar.

Uma tecnologia que eu particularmente sou fascinado é o uso das tecnologias relacionadas com o Georreferenciamento.

Nesta aula, irei apresentar como obter tendo como informação a latitude e a longitude do usuário, e a partir daí mostrar informações concretas tais como o nome da Cidade, do Estado e do País do usuário.

Objetivo


O objetivo principal desta aula é ensinar como usar algumas classes do SDK Android para trabalhar com informações ligadas com o Georreferenciamento. Para demonstrar a aplicação desta tecnologia, criaremos uma simples aplicação Android que capturará as coordenadas GPS e apresentará o nome da Cidade, Estado e do País do usuário.

Video demonstrativo de aplicativo utilizando o que é apresentado nesta aula e comentários sobre o projeto que iremos construir nesta aula.





Pré-Requisitos para esta aula



É muito importante que você tenha conhecimentos básicos de programação Java Orientada a Objetos. Não é necessário ter experiência anterior com projetos Android, porém, caso tenha, você irá tirar muito mais proveito desta aula.

De qualquer forma, nesta aula irei postar os passos-a-passos para criar do ZERO um projeto Android antes de entrar no tema da Aula. Caso você já sabe criar projetos no Android Studio, pode pular para a item Codificando o Projeto.

Classes utilizadas nesta aula


  1. Address
  2. Geocoder
  3. Location
  4. LocationManager

Permissões que devem ser adicionadas ao AndroidManifest.xml


  • <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • <uses-permission android:name="android.permission. ACCESS_COARSE_LOCATION" />
  • <uses-permission android:name="android.permission.INTERNET" />


Classe Address


Esta classe permite obter o endereço do usuário.

Classe Geocoder


Esta classe trabalha em conjunto com a Classe Location, e utilizando o método getFromLocation, devolve informações sobre o endereço do usuário.

Classe LocationManager


Esta Classe será utilizada para verificar quais serviços de localização estão disponíveis.

Classe Location


Esta Classe é responsável em encontrar a última localização válida do usuário, assim nos permite obter latitude e longitude a partir do serviço disponível. Nesta aula, iremos solicitar ao GPS as coordenadas.

Permissão android.permission. ACCESS_COARSE_LOCATION


Esta permissão é necessário para obter uma localização aproximada do usuário, utilizando geralmente a rede da operadora de celular. Funciona muito bem dentro de prédios, estações de metrô ou lugares fechados. Eu costumo dizer que é utilizada nos casos em que não temos visada GPS. 

Permissão android.permission.ACCESS_FINE_LOCATION


Esta permissão permite obter uma localização mais precisa, com variações até de metros. Mas é necessário estar em um ambiente aberto ou ter visada GPS. Para alguns modelos de celulares mais modernos, é possível utilizar o GPS mesmo sem rede de dados ativa. O que é o meu caso.


Permissão android.permission. INTERNET


Esta permissão é necessária para que o aplicativo acesse a INTERNET. Na prática, o aplicativo deve ser capaz de comutar entre um serviço e outro, ou seja, caso não consiga obter as coordenadas precisas utilizando o GPS, tentará utilizando a rede de dados da operadora, o que normalmente necessita acesso a Internet.




Criação da Aplicação de Exemplo


Utilizaremos como de costume o Android Studio para o projeto desta aula. Portanto, carregue o Android Studio e siga os próximos passos. Caso você não tenha o Android Studio instalado, faça o download acessando este link: Download Android Studio.


Passo 01 - Criar o Projeto





  1. Mantenha o Android Studio sempre atualizado.
  2. Crie um novo projeto Android Studio

Passo 02 - Nomear o Projeto




  1. Aplication Name: Informe Aula 12
  2. Company Domain: Para esta aula informe cursoandroid.marcomaddo
  3. Clique no botão Next

Passo 03 - Selecionar a versão da API




A escolha da versão da API que será compatível com o aplicativo, define o universo de compatibilidade da sua aplicação com os dispositivos Android do mercado. Note que deixarei a API 10 Android 2.3.3 (Gingerbread) o que vai garantir compatibilidade com 99.76% de celulares.

  1. Seleciona a versão mínima do SDK
  2. Clique em Next

Passo 04 - Selecionar o tipo de Activity



A versão 1.4 do Android Studio traz vários novos tipos de Activities, vale muito a pena dar uma estudada em cada uma deles. Você certamente vai ganhar tempo e poderá criar aplicativos com layouts mais modernos. Para esta aula iremos criar uma Activity Vazia padrão.


  1. Selecione Empty Activity
  2. Clique no botão Next

Passo 05 - Escolar o nome da Activity






Você pode escolher o nome que desejar para a Activity, porém nesta aula iremos deixar o nome padrão que é MainActivity. Não iremos criar nesta aula mais de uma Activity.

  1. Clique no botão Next

Passo 06  - Criação do Projeto pelo Android Studio.






Se tudo foi realizado conforme os passos, neste momento o seu projeto estará sendo Criado.


Passo 07 - Conformação de que o projeto foi criado com sucesso.



As vezes por algum motivo o projeto não é criado com sucesso. Você pode verificar se tudo ocorreu conforme o esperado efetuando duas verificações iniciais, que comento abaixo:

  1. Verifique se o projeto foi compilado com sucesso, isso é constatado verificando a mensagem (1) no rodapé do Android Studio (Gradle build finished in 10s 983ms) no meu caso.
  2. Verifique se a estrutura de pastas do projeto está correta. Com o tempo e a prática você vai conseguir perceber qualquer problema.

Codificando o Projeto


AndroidManivest.xml


A primeira alteração que fazermos ao projeto é incluir as permissões que serão utilizadas.

Abra o arquivo AndroidManivest.xml, ele deve estar conforme a imagem abaixo.




Adicione as permissões antes da TAG <application> conforme demonstrado abaixo:




Criação do Layout da Aplicação


Iremos adicionar ao Layout padrão criado junto com o projeto cinco TextView para apresentar Latitude, Longitude, Nome da Cidade, Nome do Estado e Nome do País.




Adicione os componentes TextView conforme demonstrado abaixo. Cada TextView deverá possuir um ID. Utilize os IDs indicados abaixo:

  1. TextView latitude: id txtLatitude
  2. TextView longitude: id txtLongitude
  3. TextView cidade: id txtCidade
  4. TextView estado: id txtEstado
  5. TextView país: id txtPais


Execute o aplicativo para teste

Neste ponto é aconselhável que você faça um teste da aplicação. Qualquer problema poderá ser detectado agora e corrigido. Como boa prática de programação, sempre faça vários testes de compilação em seus projetos.

Ao rodar neste ponto o seu projeto, ele deverá apresentar a tela principal conforme o exemplo abaixo. No meu caso, eu rodei diretamente no celular.





Programação da Activity MainActivity


Programar a classe principal do nosso projeto é a parte que realmente nos interessa. Para deixar esta aula o mais fácil e didática possível, cujo objetivo é que cada aluno consiga reproduzir esta aula com sucesso, irei como sempre, executar passo a passo comentando todos eles. Mesmo assim se você encontrar qualquer dificuldade, deixe o seu comentário.


Abre a classe MainActivity, e se você selecionou uma Empty Activity, sua classe deve estar conforme a imagem abaixo.




Adicione os objetos TextView





Vincule os objetos TextView aos id do Layout via findViewByID


Dica: Use o atalho command + j, no caso do Mac para ganhar produtividade, veja a imagem abaixo:



Note que temos a opção fbc - findViewByID with cast. O uso deste atalho evitará erros de digitação, bem como ganharemos muito tempo. No vídeo desta aula, irei demonstrar o uso deste atalho na prática.




Adicione as Classes Location e LocationManager




Nas listas 23 e 24 adicionamos as classes que irão nos fornecer acesso ao GPS.


Obtendo as coordenadas GPS

Para obter as coordenadas GPS, latitude e longitude, iremos utilizar as Classes LocationManager e Location.

Lembre-se de que adicionamos as permissões necessárias para este aplicativo no AndroidManifest.xml, entretanto, a partir da versão Marshmallow  o usuário tem mais liberdade em dar ou remover permissões aos aplicativos instalados.

Nós teremos que sempre efetuar uma verificação se uma ou outra permissão está disponível.

Logo, para garantir que nossas permissões estarão disponíveis, iremos fazer um teste antes de chamar os métodos para obter as coordenadas GPS.

O código abaixo, contém todo o que necessitaremos.



Ao executar o aplicativo após implementar o código acima, nós já teremos as coordenadas GPS disponíveis conforme imagem abaixo:



Obtendo o endereço a partir das coordenadas latitude e longitude.


Iremos criar um método que recebe as coordenadas GPS e devolve o endereço do usuário, no nosso caso usaremos apenas a Cidade, Estado e País. Porém, é possível inclusive obter o endereço completo (Rua, Cep, etc). Este método fará uso da Classe Address.

Exemplo dos métodos que podem ser solicitados a classes Address




Adicione o método buscarEndereco ao projeto conforme imagem abaixo:




Conforme podemos observar, o método buscarEndereço, recebe a latitude e a longitude. O método criar uma lista de endereços a partir das coordenadas, mas nós estamos utilizando apenas um único endereço. Note a consulta getFromLocation o parâmetro 1. Caso você queira uma lista com mais endereço nas proximidades das coordenadas, mude esta número.

Se algum endereço existir, iremos atribuí-lo a lista de endereços e devolvemos para quem chamou o método.

Setando o endereço aos TextView correspondentes

Praticamente estamos finalizando nosso aplicativo. Basta chamar o método buscarEndereco para obtermos os dados necessários.

A imagem abaixo, contem o código necessário.



Basicamente, conforme podemos ver na linha 72, estamos atribuindo ao objeto endereço o resultado do método buscarEndereco. Em seguida, atribuímos os dados de endereço aos objetos TextView correspondentes.

Não foi feito um tratamento mais aprimorado para os possíveis erros. Por exemplo, caso o GPS esteja desligado, poderemos receber alguma informação errada ou nenhuma. Eu deixo ao seu critério implementar as validações que desejar.

Aplicação de Exemplo 


Com os conteúdos desta aula, eu criei um aplicativo de demonstração que pode ser baixado do Google Play.






Faça o download e veja que basta aplicar o que estamos estudando para criarmos aplicativos diversos.


Get it on Google Play

domingo, 15 de novembro de 2015

Curso Android Aula 12 - Obtenha endereços via Georreferenciamento Latitude e Longitude




Prenda nesta aula como utilizar o Georreferenciamento no Android e a partir das coordenadas GPS latitude a longitude, obter um ou mais endereços.

Assine o Canal do curso no YouTube.

Introdução


Os celulares em geral oferecem um universo de possibilidade muito grande para o desenvolvedor de aplicativos. Posso afirmar que por mais simples que seja o celular que você usa, a quantidade de possibilidades de desenvolver algo novo e muito maior do que a nossa capacidade de implementar.

Uma tecnologia que eu particularmente sou fascinado é o uso das tecnologias relacionadas com o Georreferenciamento.

Nesta aula, irei apresentar como obter tendo como informação a latitude e a longitude do usuário, e a partir daí mostrar informações concretas tais como o nome da Cidade, do Estado e do País do usuário.

Objetivo


O objetivo principal desta aula é ensinar como usar algumas classes do SDK Android para trabalhar com informações ligadas com o Georreferenciamento. Para demonstrar a aplicação desta tecnologia, criaremos uma simples aplicação Android que capturará as coordenadas GPS e apresentará o nome da Cidade, Estado e do País do usuário.

Video demonstrativo de aplicativo utilizando o que é apresentado nesta aula e comentários sobre o projeto que iremos construir nesta aula.





Pré-Requisitos para esta aula



É muito importante que você tenha conhecimentos básicos de programação Java Orientada a Objetos. Não é necessário ter experiência anterior com projetos Android, porém, caso tenha, você irá tirar muito mais proveito desta aula.

De qualquer forma, nesta aula irei postar os passos-a-passos para criar do ZERO um projeto Android antes de entrar no tema da Aula. Caso você já sabe criar projetos no Android Studio, pode pular para a item Codificando o Projeto.

Classes utilizadas nesta aula


  1. Address
  2. Geocoder
  3. Location
  4. LocationManager

Permissões que devem ser adicionadas ao AndroidManifest.xml


  • <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • <uses-permission android:name="android.permission. ACCESS_COARSE_LOCATION" />
  • <uses-permission android:name="android.permission.INTERNET" />


Classe Address


Esta classe permite obter o endereço do usuário.

Classe Geocoder


Esta classe trabalha em conjunto com a Classe Location, e utilizando o método getFromLocation, devolve informações sobre o endereço do usuário.

Classe LocationManager


Esta Classe será utilizada para verificar quais serviços de localização estão disponíveis.

Classe Location


Esta Classe é responsável em encontrar a última localização válida do usuário, assim nos permite obter latitude e longitude a partir do serviço disponível. Nesta aula, iremos solicitar ao GPS as coordenadas.

Permissão android.permission. ACCESS_COARSE_LOCATION


Esta permissão é necessário para obter uma localização aproximada do usuário, utilizando geralmente a rede da operadora de celular. Funciona muito bem dentro de prédios, estações de metrô ou lugares fechados. Eu costumo dizer que é utilizada nos casos em que não temos visada GPS. 

Permissão android.permission.ACCESS_FINE_LOCATION


Esta permissão permite obter uma localização mais precisa, com variações até de metros. Mas é necessário estar em um ambiente aberto ou ter visada GPS. Para alguns modelos de celulares mais modernos, é possível utilizar o GPS mesmo sem rede de dados ativa. O que é o meu caso.


Permissão android.permission. INTERNET


Esta permissão é necessária para que o aplicativo acesse a INTERNET. Na prática, o aplicativo deve ser capaz de comutar entre um serviço e outro, ou seja, caso não consiga obter as coordenadas precisas utilizando o GPS, tentará utilizando a rede de dados da operadora, o que normalmente necessita acesso a Internet.




Criação da Aplicação de Exemplo


Utilizaremos como de costume o Android Studio para o projeto desta aula. Portanto, carregue o Android Studio e siga os próximos passos. Caso você não tenha o Android Studio instalado, faça o download acessando este link: Download Android Studio.


Passo 01 - Criar o Projeto





  1. Mantenha o Android Studio sempre atualizado.
  2. Crie um novo projeto Android Studio

Passo 02 - Nomear o Projeto




  1. Aplication Name: Informe Aula 12
  2. Company Domain: Para esta aula informe cursoandroid.marcomaddo
  3. Clique no botão Next

Passo 03 - Selecionar a versão da API




A escolha da versão da API que será compatível com o aplicativo, define o universo de compatibilidade da sua aplicação com os dispositivos Android do mercado. Note que deixarei a API 10 Android 2.3.3 (Gingerbread) o que vai garantir compatibilidade com 99.76% de celulares.

  1. Seleciona a versão mínima do SDK
  2. Clique em Next

Passo 04 - Selecionar o tipo de Activity



A versão 1.4 do Android Studio traz vários novos tipos de Activities, vale muito a pena dar uma estudada em cada uma deles. Você certamente vai ganhar tempo e poderá criar aplicativos com layouts mais modernos. Para esta aula iremos criar uma Activity Vazia padrão.


  1. Selecione Empty Activity
  2. Clique no botão Next

Passo 05 - Escolar o nome da Activity






Você pode escolher o nome que desejar para a Activity, porém nesta aula iremos deixar o nome padrão que é MainActivity. Não iremos criar nesta aula mais de uma Activity.

  1. Clique no botão Next

Passo 06  - Criação do Projeto pelo Android Studio.






Se tudo foi realizado conforme os passos, neste momento o seu projeto estará sendo Criado.


Passo 07 - Conformação de que o projeto foi criado com sucesso.



As vezes por algum motivo o projeto não é criado com sucesso. Você pode verificar se tudo ocorreu conforme o esperado efetuando duas verificações iniciais, que comento abaixo:

  1. Verifique se o projeto foi compilado com sucesso, isso é constatado verificando a mensagem (1) no rodapé do Android Studio (Gradle build finished in 10s 983ms) no meu caso.
  2. Verifique se a estrutura de pastas do projeto está correta. Com o tempo e a prática você vai conseguir perceber qualquer problema.

Codificando o Projeto


AndroidManivest.xml


A primeira alteração que fazermos ao projeto é incluir as permissões que serão utilizadas.

Abra o arquivo AndroidManivest.xml, ele deve estar conforme a imagem abaixo.




Adicione as permissões antes da TAG <application> conforme demonstrado abaixo:




Criação do Layout da Aplicação


Iremos adicionar ao Layout padrão criado junto com o projeto cinco TextView para apresentar Latitude, Longitude, Nome da Cidade, Nome do Estado e Nome do País.




Adicione os componentes TextView conforme demonstrado abaixo. Cada TextView deverá possuir um ID. Utilize os IDs indicados abaixo:

  1. TextView latitude: id txtLatitude
  2. TextView longitude: id txtLongitude
  3. TextView cidade: id txtCidade
  4. TextView estado: id txtEstado
  5. TextView país: id txtPais


Execute o aplicativo para teste

Neste ponto é aconselhável que você faça um teste da aplicação. Qualquer problema poderá ser detectado agora e corrigido. Como boa prática de programação, sempre faça vários testes de compilação em seus projetos.

Ao rodar neste ponto o seu projeto, ele deverá apresentar a tela principal conforme o exemplo abaixo. No meu caso, eu rodei diretamente no celular.





Programação da Activity MainActivity


Programar a classe principal do nosso projeto é a parte que realmente nos interessa. Para deixar esta aula o mais fácil e didática possível, cujo objetivo é que cada aluno consiga reproduzir esta aula com sucesso, irei como sempre, executar passo a passo comentando todos eles. Mesmo assim se você encontrar qualquer dificuldade, deixe o seu comentário.


Abre a classe MainActivity, e se você selecionou uma Empty Activity, sua classe deve estar conforme a imagem abaixo.




Adicione os objetos TextView





Vincule os objetos TextView aos id do Layout via findViewByID


Dica: Use o atalho command + j, no caso do Mac para ganhar produtividade, veja a imagem abaixo:



Note que temos a opção fbc - findViewByID with cast. O uso deste atalho evitará erros de digitação, bem como ganharemos muito tempo. No vídeo desta aula, irei demonstrar o uso deste atalho na prática.




Adicione as Classes Location e LocationManager




Nas listas 23 e 24 adicionamos as classes que irão nos fornecer acesso ao GPS.


Obtendo as coordenadas GPS

Para obter as coordenadas GPS, latitude e longitude, iremos utilizar as Classes LocationManager e Location.

Lembre-se de que adicionamos as permissões necessárias para este aplicativo no AndroidManifest.xml, entretanto, a partir da versão Marshmallow  o usuário tem mais liberdade em dar ou remover permissões aos aplicativos instalados.

Nós teremos que sempre efetuar uma verificação se uma ou outra permissão está disponível.

Logo, para garantir que nossas permissões estarão disponíveis, iremos fazer um teste antes de chamar os métodos para obter as coordenadas GPS.

O código abaixo, contém todo o que necessitaremos.



Ao executar o aplicativo após implementar o código acima, nós já teremos as coordenadas GPS disponíveis conforme imagem abaixo:



Obtendo o endereço a partir das coordenadas latitude e longitude.


Iremos criar um método que recebe as coordenadas GPS e devolve o endereço do usuário, no nosso caso usaremos apenas a Cidade, Estado e País. Porém, é possível inclusive obter o endereço completo (Rua, Cep, etc). Este método fará uso da Classe Address.

Exemplo dos métodos que podem ser solicitados a classes Address




Adicione o método buscarEndereco ao projeto conforme imagem abaixo:




Conforme podemos observar, o método buscarEndereço, recebe a latitude e a longitude. O método criar uma lista de endereços a partir das coordenadas, mas nós estamos utilizando apenas um único endereço. Note a consulta getFromLocation o parâmetro 1. Caso você queira uma lista com mais endereço nas proximidades das coordenadas, mude esta número.

Se algum endereço existir, iremos atribuí-lo a lista de endereços e devolvemos para quem chamou o método.

Setando o endereço aos TextView correspondentes

Praticamente estamos finalizando nosso aplicativo. Basta chamar o método buscarEndereco para obtermos os dados necessários.

A imagem abaixo, contem o código necessário.



Basicamente, conforme podemos ver na linha 72, estamos atribuindo ao objeto endereço o resultado do método buscarEndereco. Em seguida, atribuímos os dados de endereço aos objetos TextView correspondentes.

Não foi feito um tratamento mais aprimorado para os possíveis erros. Por exemplo, caso o GPS esteja desligado, poderemos receber alguma informação errada ou nenhuma. Eu deixo ao seu critério implementar as validações que desejar.

Aplicação de Exemplo 


Com os conteúdos desta aula, eu criei um aplicativo de demonstração que pode ser baixado do Google Play.






Faça o download e veja que basta aplicar o que estamos estudando para criarmos aplicativos diversos.


Get it on Google Play