Esse tutorial é bem simples. Se você quer saber sua latitude e longitude no Android e usar na sua aplicação, leia abaixo.
Essa é uma simples classe Activity chamada GpsDisplay. Nel, eu pego alguns TextViews e exibo as informações que eu quero, vindas do GPS.
O GPS pode fornecer essas informações para você.
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);
- Precisão = Accuracy
- Altitude
- Latitude
- Longitude
- Provider = Que é de onde ele está tirando a informação. Pode ser o gps ou network(internet).
- Speed – Velocidade a qual vocÊ está se movimentando.
- E por ultimo, uma lista de providers.
Nessa View, eu criei vários TextView´s para exibir as informações e um botão, que ao ser clicado, ele irá criar objetos da classe LocationManager e Location e mais uma String que armazenará os providers.
Button retrieve = (Button)findViewById(R.id.btnRetrieve);
retrieve.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LocationManager LM = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
String bestProvider = LM.getBestProvider(new Criteria(),true);
//System.out.println("*************"+LM.getBestProvider(new Criteria(),true));
Location 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()));
}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);
}
}
});
LocationManager pega o serviço que está disponível, no caso, o serviço de localização, que é o que o GPS usa.
A String bestProvider armazena o melhor provider(o provedor de localização) que estiver disponível.
Ao criar um objeto Location ele pega a ultima localização(que seria a atual), e atribui ao objeto location.
Se o objeto não estiver nulo,
Através dele, conseguimos pegar os items citados no começo do post.
Senão,
os textViews são settados para “No Information”. Isso pode ocorrer no caso do GPS estiver desligado, ou no caso do emulador.
Maaasss. Pra isso tudo funcionar certinho, voce tem que editar o AndroidManifest.xml
E nele, voce adiciona uma uses-permission como aqui:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"> </uses-permission>
Abaixo segue o AndroidManifest.xml a classe que pega o gps e o main.xml.
Até mais.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="lab.blog.ps" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".GpsDisplay" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"> </uses-permission> </manifest>
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" > <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/btnRetrieve" android:text = "Retrieve Data" android:layout_gravity="center" /> </TableRow> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Accuracy" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/noInfo" android:id="@+id/txtAccuracy" /> </TableRow> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Altitude" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/noInfo" android:id="@+id/txtAltitude" /> </TableRow> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Latitude" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/noInfo" android:id="@+id/txtLatitude" /> </TableRow> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Longitude" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/noInfo" android:id="@+id/txtLongitude" /> </TableRow> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Provider" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/noInfo" android:id="@+id/txtProvider" /> </TableRow> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Speed" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/noInfo" android:id="@+id/txtSpeed" /> </TableRow> </TableLayout> <TextView android:layout_marginTop="10px" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Providers currently available" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="------------------------------" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:id="@+id/txtProvList" /> </LinearLayout>
GpsDisplay.java
import android.app.Activity;
import android.content.Context;
import android.view.View.OnClickListener;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class GpsDisplay extends Activity {
/** Called when the activity is first created. */
@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) {
LocationManager LM = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
String bestProvider = LM.getBestProvider(new Criteria(),true);
//System.out.println("*************"+LM.getBestProvider(new Criteria(),true));
Location 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()));
}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);
}
}
});
}
}