追踪用户的位置:得到用户移动的轨迹
注册权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
import android.app.Activity; import android.content.Context; 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; public class MainActivity extends Activity { private Button button = null; private LocationManager locationManager = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button = (Button)findViewById(R.id.button); //创建LocationManager对象 locationManager = (LocationManager)MainActivity.this.getSystemService(Context.LOCATION_SERVICE); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { //绑定监听器,第二个参数表示更新的最小时间(毫秒);第三个参数表示更新的最小距离(米) locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5000, new TestLocationListener()); } }); } private class TestLocationListener implements LocationListener{ //位置变化时调用 @Override public void onLocationChanged(Location location) { //经度 System.out.println(location.getLongitude()); //纬度 System.out.println(location.getLatitude()); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } } }
当点击按钮的时候无反应,因为要距离大于5000米时才会调用onLocationChange函数打印经纬度。
在DDMS中修改经纬度,然后点击按钮,则会打印出当前位置: