Android应用程序追踪手机位置

Android应用程序跟踪手机位置
要让Android应用程序跟踪手机位置的变化,需要调用LocationManager实例对象的requestLocationUpdates()方法,这个方法需要四个参数:

  1、Location Provider的类型
  2、多久更新一次位置,以毫秒为单位
  3、位置变化至少多少才更新一次位置,以米为单位
  4、用于处理位置变化的LocationListener
LocationListener的形式:

LocationListener onLocationChange=new LocationListener() {
public void onLocationChanged(Location location) { }
public void onProviderDisabled(String provider) { }
public void onProviderEnabled(String provider) { }
public void onStatusChanged(String provider, int status,Bundle extras) { }
};


当不再需要跟踪位置跟新时,调用LocationManager实例对象的removeUpdates()方法,传入参数的类型为LocationListener.

  以下程序代码实例演示了跟踪位置变化的过程


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.widget.TextView;

public class WhereAmI extends Activity{

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LocationManager locationManager;
String context = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(context);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);

String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);
updateWithNewLocation(location);
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
}

private final LocationListener locationListener = new LocationListener()
{
public void onLocationChanged(Location location)
{
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider)
{
updateWithNewLocation(null);
}
public void onProviderEnabled(String provider){
}
public void onStatusChanged(String provider, int status,Bundle extras){
}

};

private void updateWithNewLocation(Location location){
String latLongString;
TextView myLocationText;
myLocationText = (TextView)findViewById(R.id.myLocationText);
if (location != null){
double lat = location.getLatitude();
double lng = location.getLongitude();
latLongString = "Lat:" + lat + " Long:" + lng;
}
else{
latLongString = "No location found";
}
myLocationText.setText("Your Current Position is: " +latLongString);
}

}