get current position location android
Location.java
package com.localisation;
import java.io.IOException;
import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
public class localisation extends Activity implements OnClickListener, LocationListener{
private LocationManager lManager;
private Location location;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//On spécifie que l'on va avoir besoin de gérer l'affichage du cercle de chargement
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.main);
//On récupère le service de localisation
lManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//On affecte un écouteur d'évènement aux boutons
findViewById(R.id.obtenir_position).setOnClickListener(this);
}
//Méthode déclencher au clique sur un bouton
public void onClick(View v) {
obtenirPosition();
}
}
private void afficherLocation() {
//On affiche les informations de la position a l'écran
((TextView)findViewById(R.id.latitude)).setText(String.valueOf(location.getLatitude()));
((TextView)findViewById(R.id.longitude)).setText(String.valueOf(location.getLongitude()));
((TextView)findViewById(R.id.altitude)).setText(String.valueOf(location.getAltitude()));
}
public void onProviderDisabled(String provider) {
//Lorsque la source (GSP ou réseau GSM) est désactivé
Log.i("Tuto géolocalisation", "La source a été désactivé");
//...on affiche un Toast pour le signaler à l'utilisateur
Toast.makeText(localisation.this,
String.format("La source \"%s\" a été désactivé", provider),
Toast.LENGTH_SHORT).show();
//... et on spécifie au service que l'on ne souhaite plus avoir de mise à jour
lManager.removeUpdates(this);
//... on stop le cercle de chargement
setProgressBarIndeterminateVisibility(false);
}
public void onProviderEnabled(String provider) {
Log.i("Tuto géolocalisation", "La source a été activé.");
}
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.i("Tuto géolocalisation", "Le statut de la source a changé.");
}
}
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:text="Latitude"
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginLeft="10dip" />
<EditText android:text="0.0"
android:id="@+id/latitude"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:editable="false"
android:focusable="false"
android:gravity="center"
android:layout_marginRight="10dip"
android:layout_width="150dip" />
<TextView android:text="Longitude"
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/longitude"
android:layout_alignTop="@+id/longitude"
android:gravity="center"
android:layout_marginLeft="10dip" />
<EditText android:text="0.0"
android:id="@+id/longitude"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:editable="false"
android:focusable="false"
android:gravity="center"
android:layout_marginRight="10dip"
android:layout_width="150dip"
android:layout_below="@+id/latitude" />
<TextView android:text="Altitude"
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/altitude"
android:layout_alignTop="@+id/altitude"
android:gravity="center"
android:layout_marginLeft="10dip" />
<EditText android:text="altitude"
android:id="@+id/altitude"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:editable="false"
android:focusable="false"
android:gravity="center"
android:layout_marginRight="10dip"
android:layout_below="@+id/TextView02"
android:layout_width="150dip" />
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/TextView03"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dip">
<Button android:layout_height="wrap_content开发者_JAVA百科"
android:id="@+id/obtenir_position"
android:text="Obtenir Position"
android:layout_width="100dip" />
</LinearLayout>
</RelativeLayout>
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.localisation"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".localisation"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</application>
</manifest>
i have a problem in those codes. My goal is determine my position (longitude, latitude and altitude.
In a database i have some places defined by (longitude, latitude and altitude and i want to determine the most near place. (with google Map API (without displaying the map)
Can you help me please and explain me in details what i do now?
Thank you very much
I am using this code to get the Latitude and longitude of current location:
LocationManager locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000L,500.0f, locationListener);
Location location = locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double latitude=0;
double longitude=0;
latitude = location.getLatitude();
longitude = location.getLongitude();
I'm not sure if you are asking in general, "how do I get the gps location?" or more specific "what's wrong with this code".
If its general- this appears in How do I get the current GPS location programmatically in Android?. Also, I suggest you be careful with the getLastKnownLocation method. The last location can be horribly out of date. I also suggest you start polling gps before you actually need it, it can sometimes take a few seconds (or more) to get your first gps reading.
If its specific- maybe explain what problems you're having?
we will create an Android application which will display current location in Google Maps using Google Maps Android API V2.
Since the Google Map is displayed using SupportMapFragment, this application can run in Android API Level 8 or above. In order to use MapFragment for Google Maps, we need Android device with API level 12 or above.
This application is developed in Eclipse 4.2.1 with ADT plugin ( 21.0.0 ) and Android SDK ( 21.0.0 ). This application is tested in a real Android Phone with Android ( 2.3.6 ). An alternative method for this application is available at Showing current location using OnMyLocationChangeListener in Google Map Android API V2
Download code
精彩评论