Usar LocationListener no Android?

Para complementar o post sobre GPS ->https://renatopuccinipt.com/2011/07/15/pegar-latitude-e-longitude-no-android/ escrevo esse post com o intuito de melhorar uma aplicação que acessa dados de localização geográfica.

Quando fiz minha primeira app que acessava informações do GPS, achei o maximo. Porém ficava encucado de como fazer para aparecer na barra topo do Android que o GPS estava trabalhando. Foi ae que descobri o LocationListener.

Ele é uma interface que prove updates do GPS para você. E automaticamente faz com que o iconezinho que indica a sua posição fique piscando na barra no topo da tela.

Como o LocationListener é uma interface, basta simplesmente criarmos uma classe (essa pode ser até uma inner class) que implemente essa interface.

Essa classe implementa automaticamente todos os métodos da Interface.

Como você já tem um LocationManager para acessar as informações do GPS, fica simples somente criar um objeto da classe MeuLocationListener e adicionar em um método particular do seu objeto LocationManager.

A propósito, eu dispoonibilizei a apk aqui.

(nota: para seguir esse post, é necessário ter visto este outro->https://renatopuccinipt.com/2011/07/15/pegar-latitude-e-longitude-no-android/)

package br.gps.info;

import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class UsingGPSActivity extends Activity {
	/** Called when the activity is first created. */

	MeuLocationListener mm = new MeuLocationListener();
	LocationManager LM = null;
Location l = null;
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);

 final TextView acc = (TextView) findViewById(R.id.txtAccuracy);
 final TextView alt = (TextView) findViewById(R.id.txtAltitude);
 final TextView lat = (TextView) findViewById(R.id.txtLatitude);
 final TextView longi = (TextView) findViewById(R.id.txtLongitude);
 final TextView pro = (TextView) findViewById(R.id.txtProvider);
 final TextView spd = (TextView) findViewById(R.id.txtSpeed);
 final TextView proList = (TextView) findViewById(R.id.txtProvList);

 Button retrieve = (Button) findViewById(R.id.btnRetrieve);
 retrieve.setOnClickListener(new OnClickListener() {
 @Override
 public void onClick(View v) {
 LM = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 String bestProvider = null;
 if (LM != null)
 bestProvider = LM.getBestProvider(new Criteria(), true);
 // System.out.println("*************"+LM.getBestProvider(new
 // Criteria(),true));

 if (mm != null)
 LM.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2,
 10, mm);

 if (bestProvider != null)
 l = LM.getLastKnownLocation(bestProvider);
 if (l != null) {
 acc.setText(String.valueOf(l.getAccuracy()));
 alt.setText(String.valueOf(l.getAltitude()));
 lat.setText(String.valueOf(l.getLatitude()));
 longi.setText(String.valueOf(l.getLongitude()));
 pro.setText(String.valueOf(l.getProvider()));
 spd.setText(String.valueOf(l.getSpeed()));
 proList.setText(String.valueOf(LM.getAllProviders())
 + "\nGPS Available");
 } else {
 acc.setText(R.string.noInfo);
 alt.setText(R.string.noInfo);
 lat.setText(R.string.noInfo);
 longi.setText(R.string.noInfo);
 pro.setText(R.string.noInfo);
 spd.setText(R.string.noInfo);
 proList.setText(R.string.noInfo);
 }
 }
 });
 }
}

 


private final class MeuLocationListener implements LocationListener {

@Override
public void onLocationChanged(Location locFromGps) {
// called when the listener is notified with a location update from
// the GPS
l = locFromGps
}

@Override
public void onProviderDisabled(String provider) {
// called when the GPS provider is turned off (user turning off the
// GPS on the phone)

}

@Override
public void onProviderEnabled(String provider) {
// called when the GPS provider is turned on (user turning on the
// GPS on the phone)
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// called when the status of the GPS provider changes
}
}

Anúncios

6 comentários em “Usar LocationListener no Android?

  1. não querendo pertubar mas , Sabe algum metodo para enviar informações das coordenadas para mysql ou qualquer outro. Ou se existe alguma forma de sincronizar informações do Sqlite do Android com mysql ou qualquer outro.

    E obrigado otimaa explicação em captura informações GPS. eu tinha feito um mas seu codigo me ajudou na parte de exibir speed que estava com dificuldade porque necessito para pode fazer rastreamento do Android, minha empresa esta trocando modulos dos carros por Android o custo sai bem mas barato.

    Muito obrigado mais uma vez

    abraço

    1. Cara, o unico jeito q vejo de vc sincronizar o banco do sql e de.um mysql em um servidot eh usando aplicacao web service.
      Dae vc faz seu app consultar o bando e enviar os dados pro web service que vc tem. Dae o web service faz.o resto. Syncroniza e inclui no banco mysql.
      Sacou?

      1. sim entendi sim eu ja estava vendo esquema do web service mas achei que tivesse alguma possibilidade do android fazer tudo direto. vou começar trabalha em cima de web service entao mesmo

        vlws

  2. Cara, como eu faria para pegar a distancia percorrida entre dois pontos?
    Eu utilizei o location.distanceTo(novoLocation) só que da uma número muito grande,
    e não sei se é em metros.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s