1 package com.bwei.test; 2 3 import com.amap.api.location.AMapLocation; 4 import com.amap.api.location.AMapLocationListener; 5 import com.amap.api.location.LocationManagerProxy; 6 import com.amap.api.location.LocationProviderProxy; 7 import com.amap.api.maps.AMap; 8 import com.amap.api.maps.LocationSource; 9 import com.amap.api.maps.MapView; 10 11 import android.app.Activity; 12 import android.location.Location; 13 import android.os.Bundle; 14 import android.widget.Toast; 15 16 public class PersonActivity extends Activity implements LocationSource,AMapLocationListener{ 17 private MapView mapView; 18 private AMap aMap; 19 private OnLocationChangedListener mListener; 20 private LocationManagerProxy mAMapLocationManager; 21 @Override 22 protected void onCreate(Bundle savedInstanceState) { 23 // TODO Auto-generated method stub 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_person); 26 mapView = (MapView)findViewById(R.id.map); 27 mapView.onCreate(savedInstanceState); 28 init(); 29 } 30 private void init() { 31 // TODO Auto-generated method stub 32 if(aMap == null){ 33 aMap = mapView.getMap(); 34 setUpMap(); 35 } 36 } 37 private void setUpMap() { 38 // TODO Auto-generated method stub 39 aMap.setLocationSource(this); 40 aMap.getUiSettings().setMyLocationButtonEnabled(true); 41 aMap.setMyLocationEnabled(true); 42 aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE); 43 } 44 45 @Override 46 protected void onDestroy() { 47 // TODO Auto-generated method stub 48 super.onDestroy(); 49 mapView.onDestroy(); 50 } 51 @Override 52 protected void onPause() { 53 // TODO Auto-generated method stub 54 super.onPause(); 55 mapView.onPause(); 56 deactivate(); 57 } 58 @Override 59 protected void onResume() { 60 // TODO Auto-generated method stub 61 super.onResume(); 62 mapView.onResume(); 63 } 64 @Override 65 protected void onSaveInstanceState(Bundle outState) { 66 // TODO Auto-generated method stub 67 super.onSaveInstanceState(outState); 68 mapView.onSaveInstanceState(outState); 69 } 70 @Override 71 public void onLocationChanged(Location arg0) { 72 // TODO Auto-generated method stub 73 74 } 75 @Override 76 public void onProviderDisabled(String arg0) { 77 // TODO Auto-generated method stub 78 79 } 80 @Override 81 public void onProviderEnabled(String provider) { 82 // TODO Auto-generated method stub 83 84 } 85 @Override 86 public void onStatusChanged(String provider, int status, Bundle extras) { 87 // TODO Auto-generated method stub 88 89 } 90 @Override 91 public void onLocationChanged(AMapLocation arg0) { 92 // TODO Auto-generated method stub 93 if(mListener != null&&arg0 != null){ 94 if (arg0.getAMapException().getErrorCode() == 0) { 95 mListener.onLocationChanged(arg0);// 显示系统小蓝点 96 } 97 } 98 double latitude = arg0.getLatitude(); 99 double longitude = arg0.getLongitude(); 100 Toast.makeText(this, "纬度"+latitude+"经度"+longitude, 0).show(); 101 102 } 103 @Override 104 public void activate(OnLocationChangedListener arg0) { 105 // TODO Auto-generated method stub 106 mListener = arg0; 107 if (mAMapLocationManager == null) { 108 mAMapLocationManager = LocationManagerProxy.getInstance(this); 109 //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, 110 //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求 111 //在定位结束后,在合适的生命周期调用destroy()方法 112 //其中如果间隔时间为-1,则定位只定一次 113 mAMapLocationManager.requestLocationData( 114 LocationProviderProxy.AMapNetwork, 60*1000, 10, this); 115 } 116 } 117 @Override 118 public void deactivate() { 119 // TODO Auto-generated method stub 120 mListener = null; 121 if (mAMapLocationManager != null) { 122 mAMapLocationManager.removeUpdates(this); 123 mAMapLocationManager.destroy(); 124 } 125 mAMapLocationManager = null; 126 } 127 }