Continuando com os artigos de introdução ao desenvolvimento Android, hoje iremos aprender a utilizar o recurso de GPS em nossas aplicações para Android, já aprendemos a construir pequenas aplicações android e também a se conectar a um servidor FTP, realizando também upload e mais este artigo fará com que os passos para se desenvolver para dispositivos com este sistema operacional sejam dados.

O ideal é que você tenha um dispositivo Android para realizar um teste real, caso não tenha, no final do artigo darei a solução para testar diretamente em uma AVD (Android Virtual Device).

Caso queira acompanhar a série de introdução ao desenvolvimento em Android:

desenvolvimento android

PORQUE UTILIZAR GPS EM UMA APLICAÇÃO MÓVEL?

Certamente um dos recursos mais incríveis dos celulares mais modernos é o GPS. GPS é o acrônimo para sistema de posicionamento global, é um sistema que permite ao dispositivo determinar a posição exata do aparelho no globo terrestre segundo coodernadas passadas por um dos satélites mundiais. É utilizado largamente em veículos automotivos para determinar rotas mas ultimamente é bem comum ver dispositivos móveis como celulares e tablets com GPS. Este sistema é muito utilizado por aplicativos sociais para realizar checkin, determinar onde a foto foi tirada ou mesmo montar um mapa de fotos em aplicativos sociais como o Facebook, Instagram, ou mesmo o Foursquare.

Um exemplo bem prático para aplicar esta funcionalidade em um aplicativo é determinar a posição exata de uma ocorrência de trânsito, este é apenas um de muitos exemplos. E você pode estar se perguntando, não existem já no mercado diversos aplicativos de GPS bem completos, para que aprender a desenvolver uma funcionalidade destas? Primeiramente possui uma razão didática, é sempre bom aprender a utilizar a API de sistema amplamente usado como o Android e a outra razão é que você pode necessitar agregar ao seu sistema esta funcionalidade sem que dependa de outras ferramentas para realizar tal tarefa.

CONSTRUINDO A INTERFACE

Como vimos no artigo Introdução ao Desenvolvimento para Android (Parte II) toda aplicação Android necessita de um arquivo XML que definirá a visualização do aplicativo, ou seja, será aquilo que o usuário verá quando iniciar a aplicação, estes arquivos XML não realizam operações, apenas são responsáveis por definir cores, tamanhos de elementos e outros fatos, para este exemplo iremos construir um XML bem simples, apenas iremos inserir um botão de ação, 2 textView e 2 EditText, que serão carregados com as informações de GPS. Caso tenha dificuldades para criar projetos, arquivos XML, acesse o link acima que você terá todas as informações necessárias para tal.

A visualização de nosso aplicativo deve ser semelhante a esta:

construindo a interface android

Para que você consiga este resultado, seu arquivo XML deve estar semelhante a isto:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.22"
                android:text="Latitude" />

            <EditText
                android:id="@+id/edLatitude"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="0.73"
                android:ems="10" >

                <requestFocus />
            </EditText>

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Longitude" />

            <EditText
                android:id="@+id/edLongitude"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:ems="10" />

        </LinearLayout>

        <Button
            android:id="@+id/btLocalizar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Obter localização" />

    </LinearLayout>

</LinearLayout>

Note que nas linhas 22, 44 e 53 definimos os nomes do dois EditText e também do botão de ação, sem a definição correta dos nomes destes elementos teremos problemas quando passarmos para o código Java necessário para obter a localização e mostrar para o usuário o resultado, atente para isso.

CONSTRUINDO A LÓGICA NECESSÁRIA

A lógica necessária para que o nosso aplicativo funcione de fato consiste basicamente em três passos:

  • Importar os elementos do arquivo XML, ou seja, pegar os elementos da tela através da classe R, gerada automaticamente pelo plugin do Android.
  • Ativar o GPS e depois receber os parâmetros de latitude e longitude
  • Por fim, precisamos apresentar ao usuário estas informações.

Irei inserir o código inteiro da classe Main.java e depois explicar as linhas mais importantes do código, vamos lá:

//nome do pacote, pode mudar de acordo com a configuração do projeto
package br.com.gps;

//importação das classes necessárias para o funcionamento do aplicativo
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Main extends Activity {

	//variáveis que usaremos durante o processo
    private EditText edLatitude;
	private EditText edLongitude;
	private Button btLocalizar;

	@Override // Método onCreate, iniciada quando o aplicativo é aberto
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setupElements();
    }

	// Método usado para importar os elementos da classe R
    public void setupElements(){
    	edLatitude = (EditText) findViewById(R.id.edLatitude);
    	edLongitude = (EditText) findViewById(R.id.edLongitude);

        btLocalizar = (Button) findViewById(R.id.btLocalizar);
        btLocalizar.setOnClickListener(new Button.OnClickListener() {
	        public void onClick(View v){
	        	startGPS();
        }});
    }
    //Método que faz a leitura de fato dos valores recebidos do GPS
    public void startGPS(){
    	LocationManager lManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    	LocationListener lListener = new LocationListener() {
	    	public void onLocationChanged(Location locat) {
	    		updateView(locat);
	    	}
	    	public void onStatusChanged(String provider, int status, Bundle extras) {}
	    	public void onProviderEnabled(String provider) {}
	    	public void onProviderDisabled(String provider) {}
    	};
    	lManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, lListener);
    }

    //  Método que faz a atualização da tela para o usuário.
    public void updateView(Location locat){
    	Double latitude = locat.getLatitude();
    	Double longitude = locat.getLongitude();

    	edLatitude.setText(latitude.toString());
    	edLongitude.setText(longitude.toString());
    }
}

O primeiro grupo de código que vai desde a linha 4 até a linha 13 são importações de classes que serão usadas em nosso aplicativo, provavelmente o Eclipse já incluirá ou dará assistência para que sejam colocadas todas estas importações, caso você tenha algum problema copie todo o trecho que está acima.

Nas linhas 22 até a linha 27 é criado um método chamado onCreate, este método é implementado por nós para que seja executado sempre que o aplicativo iniciar, ou seja, tão logo o aplicativo seja mostrado para nós, o método é chamado. Neste método é feito o carregamento do XML para ser a visualização do aplicativo, também é chamado o método setupElements, que explicarei logo abaixo seu objetivo.

Entre as linhas 30 e 39 temos o método setupElements, ele é responsável por importar para o código java, os elementos gerados pelo arquivo XML que configuramos no início do artigo, dentro deste elemento além da instanciação dos elementos também é criado um método que possui o objetivo de executar o método startGPS() tão logo o usuário clicar no botão btSalvar.

As linhas de 41 e 52 são as linhas mais importantes do aplicativo, são elas que fazem de fato a comunicação com o GPS do celular e faz ele requisitar as coordenadas atuais de sua localização, note que existe um método chamado onLocationChanged, ou seja, quando a localização do celular mudar, será chamada um outro método chamado updateView, que nada mais faz do que atualiza os dados em tela para que o usuário enfim veja as coordenadas em seu dispositivo.

MODULARIZAÇÃO

Ainda não falamos deste assunto nestes tutoriais sobre desenvolvimento Android, perceba que nosso aplicativo apesar de possuir poucas linhas, ele possui diversos métodos, isso acontece porque utilizamos um dos conceitos mais importantes da programação moderna, a modularizarão. Este padrão faz com que nosso aplicativo seja dividido em trechos de código menores chamados métodos e cada um deste método tenha um único objetivo, isso faz com que nosso código fique mais claro e também seja necessário um esforço menor quando for necessário fazer alguma manutenção no código, pois sei onde encontrar cada funcionalidade do aplicativo, se precisar mudar o modo com que o usuário visualiza o resultado da busca pelas coordenadas (Exibir em uma caixa de diálogo, por exemplo), mexeremos no método que possui este objetivo, ou seja, o updateView.

PERMISSÃO PARA ACESSO AO GPS DO CELULAR

Existe um arquivo chamado AndroidManifest.xml que guarda todas as informações do aplicativo, lá podemos encontrar que permissões aquele aplicativo precisará, como acesso a internet, publicar algo em meu nome e lá também encontramos a opção de permitir o acesso ao GPS do celular, para que isso aconteça, insira estas linhas no AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

COMO TESTAR O APLICATIVO SEM POSSUIR UM DISPOSITIVO COM GPS?

dispositivo

 

Muitos desenvolvedores quando iniciam suas aventuras pelo desenvolvimento Android não possuem um dispositivo para testar suas aplicações, a imagem ao lado mostra como ficou o aplicativo criado neste artigo em um Galaxy Ace da Samsumg, que por sinal é um ótimo aparelho, seja para testar os aplicativos, seja para utilizar no dia-a-dia. Caso você não tenha um dispositivo físico, pode testar mesmo em uma AVD (Android Virtual Device), precisaremos apenas de algumas configurações para isto.

Dentro do Eclipse vá até o menu Window > AVD Manager, caso já tenha criado alguma AVD, clique em Editar, caso contrário crie uma nova. As últimas opções de configurações são as opções de Hardware, clique em New e depois em GPS Support colocando o valor yes. Após isso rode a aplicação no AVD normalemnte. Para alterar os parâmentos de localização, você pode acessar Emulator Control a alterar os valores que o GPS usará para localização.

Mesmo sendo possível realizar testes no AVD Manager, nada se compara a um dispositivo real, caso seja possível adquira um celular com Android para testar  suas aplicações em um ambiente de produção, como todos os recursos reais.

CONCLUSÃO

Neste artigo aprendemos a trabalhar o básico do GPS que é conseguir as informações de longitude e latitude de sua localização atual, em artigos futuros iremos ensinar como integrar estes valores com o Google Maps e ver no mapa s localização atual bem como buscar informações de estabelecimentos ou lugares que estejam próximos de nossa localização atual, qualquer dúvida que apareça durante o processo de contrução da aplicação é só comentar que estaremos disponíveis para tentar solucionar o problema.

Abraços!

 

Autor: Jair Rebello

Blog do Autor | Artigos do Autor:

Analista de Sistemas, empreendedor e blogueiro que dedica parte de seu tempo para a partilha de material de grande qualidade relacionados a Wordpress, SEO, Tableless, JQuery, PHP, Android e outras tecnologias mais. Pode me encontrar no Escola Sites ou O Android.

  • Explorer - Factory Construction & Ship Building Joomla Theme
  • Justice - Attorney and Law Firm Joomla Template
  • OwnFolio - One Page Personal Portfolio / vCard / Resume / Showcase Joomla Template
  • Big Business - Responsive Template
  • Merab - Creative Multipurpose Drupal 8 Theme
  • Fitness Academy Joomla Template
  • Fruition - Business Joomla Template
  • Educate | Education & Courses, Kindergartens Joomla Template
  • Constructive - Contractors Multipurpose Joomla Landing Page Theme
  • Vina Bubox - VirtueMart Joomla Template for Online Stores
  • BizOne - One Page Parallax Drupal Theme
  • LawHouse - Responsive Lawyers Attorneys Joomla Template

Gostou deste artigo? Então torne-se fã do Blog no Facebook!



Comentários dos Alunos


  1. Osman
    4 de dezembro de 2012

    E agora? Como instalar a aplicação no tablet? ou no Telefone? (Essa é minha primeira aplicação android…)



    • Jair Rebello
      5 de dezembro de 2012

      Osman, aqui no Escola Criatividade já publicamos artigos com introdução ao desenvolvimento Android e nesses artigos você terá todas as informações que necessita.

      Abraços,



  2. Tulio
    11 de março de 2013

    Obrigado pelo artigo amigo!
    Ficou muito bom. É o segundo app que crio.
    Tava com dificuldade pra encontrar materiais em portugues, são poucos com tal qualidade.
    Só uma observação, depois do codigo fonte Java, no terceiro paragrafo, a ultima palavra “btSalvar” seria “btLocalizar”.

    Abs



  3. daniel
    8 de abril de 2013

    ola Jair,

    preciso falar contigo… entre em contato por favor

    Um abraço

    Daniel



  4. Hélio Monteiro
    19 de abril de 2013

    Vocês poderiam disponibilizar esse conteúdo pra download? não tenho acesso o tempo todo à internet. E gostaria muito de aprender esse e outros artigos sobre Android



  5. Julio Cesar
    28 de junho de 2013

    Gostaria de saber se e possivel mandar os dados de localizacao do gps para o pc, em tempo real ou por meio de arquivo mesmo, pela porta usb, blutooth ou rede. E como poderiamos começar.



  6. Renato
    18 de julho de 2013

    Ola, fiz a app e instalei no meu smartphone, mas não funciona. Executo e ela fecha alegando um erro. E em tempo de desenvolvimento quando testo no emulador Android também fecha e alega erro. Tem alguma ideia do que poderia ser ?



  7. marcos
    5 de agosto de 2013

    Fiz a sequencia correta dos codigos mas gera erro no manifest
    Installation error: INSTALL_FAILED_OLDER_SDK
    Please check logcat output for more details.
    Launch canceled!



  8. anony
    18 de agosto de 2013

    eu nao consigo emular o gps no eclipse, poderia fazer um tutorial ai explicando.



  9. José
    26 de agosto de 2013

    Jair,

    Tudo bom?

    Eu fiz conforme acima, mas, ele ainda não exibe as coordenadas do GPS, o que pode estar ocorrendo, até abre a activity, o layout ficou ok!

    Um abraço!

    José



  10. José
    26 de agosto de 2013

    Jair,

    Tudo bom?

    Você comentou na conclusão que iria postar como jogar no mapa as coordenadas do gps, se já fez e puder mandar o link, te agradeço.

    Um abraço!

    José



  11. Nome
    5 de setembro de 2013

    é possivel acessar o GPS sem a permissão do usuario



  12. Jairo
    24 de setembro de 2013

    Jair Rebello
    O app so faz abrir aquando aperto no botão nada acontece porque e o codigo esta igual ao seu.
    abraço



  13. Vilson Oga Júnior
    13 de março de 2014

    Gente, o meu está dando erro na hora de levantar a aplicação no emulador!
    Diz o seguinte, App “has stopped unexpectedly”
    copiei os codigos iguaizinhos.

    A classe R da main principal, voces importam da onde? android ou package maps?



  14. Rafael
    18 de junho de 2014

    Boa Tarde,

    Jair, muito bom seus artigos sobre desenvolvimento para android, estou tentando criar um projeto para rastreamento (ativar/desativar recursos) de dispositivos móveis através de comando via Web (Ex: Android antitheft, avast anti theft e outros), tem algum lugar que eu possa conseguir esse material?

    Projeto para curso de Ciência da computação.

    Atenciosamente,

    Rafael



  15. Douglas
    17 de outubro de 2014

    Olá, desenvolvi a aplicação normalmente e rodou em todas as avd que testei, mas no aparelho não funcionou, não deu erro algum, apenas não mostra as coordenadas. Oque será que houve?



    • Douglas
      17 de outubro de 2014

      O problema, que na verdade não é um problema é o método onLocationChanged, que só exibe no dispositivo caso o gps se mova, gostaria de saber se tem um método que exibe a localização atual, antes de alterar o trajeto.



  16. gil
    25 de outubro de 2014

    Muito obrigados pelo totorial jair, mas eu estou tendo dificuldades, o meu programa nao da nenhum erro, ele activa o gps mas nao da nenhuma coordenada, eu preciso das coordenadas actuais, o que faco????? obrigado mais uma vez…



  17. franclin
    3 de dezembro de 2014

    Ola boa noite,eu preciso criar um app de localização de pai para filho, com as seguintes função, quando o pai ligar para o filho enviara uma mensagem informando a localização do filho em tempo real, me pediram no meu curso.
    desde de já agradeço.



  18. Maherbson
    29 de maio de 2015

    Como seria se em vez do usuário colocar a latitude e longitude, colocasse o endereço, para achar-lo?



  19. Antonio Henrique
    14 de agosto de 2015

    acho que a permissão precisa ser dada para os seguintes usos:

    android.permission.ACCESS_COARSE_LOCATION

    e

    android.permission.ACCESS_FINE_LOCATION



  20. Rui
    23 de setembro de 2015

    Em Configurar>Pessoais>Localização, tem opção Ativar, quando está desmarcada, por exemplo o google play services não consegue localizar o aparelho com a conta google. Tem como pegar informação sem seguir essa regra?


RSS
Twitter
Facebook
Comentários
ASSINANTES
SEGUIDORES
FÃS
COMENTÁRIOS
7794

Subscrever Newsletter
Subscreva a Newsletter:



Aplicativos Android, iPhone e Muito Mais!




Assine a Escola Criatividade Assine a Newsletter da Escola Criatividade Escola Criatividade no Twitter Escola Criatividade no Facebook Escola Criatividade no Youtube Escola Criatividade no Google Buzz