package com.shunzhi.parent; import android.content.Intent; import android.util.Log; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationListener; import com.share.mvpsdk.global.GlobalApplication; import com.amap.api.location.AMapLocationClientOption.AMapLocationMode; /** * Created by Administrator on 2018/3/7 0007. */ public class AppContext extends GlobalApplication { private static AppContext appContext; public final static int LOCATION_CITYNAME=0x00; public String cityName="",district=""; public static AppContext getInstance() { return appContext; } //声明AMapLocationClient类对象 public AMapLocationClient mLocationClient = null; //声明AMapLocationClientOption对象 public AMapLocationClientOption mLocationOption=null; @Override public void onCreate() { appContext=this; super.onCreate(); //开启地图地位 initMapLocal(); } private void initMapLocal() { //初始化定位 mLocationClient = new AMapLocationClient(getApplicationContext()); //设置定位回调监听 mLocationClient.setLocationListener(mLocationListener); //初始化AMapLocationClientOption对象 mLocationOption = new AMapLocationClientOption(); /** * 设置定位场景,目前支持三种场景(签到、出行、运动,默认无场景) */ mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn); //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。 mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy); //设置定位模式为AMapLocationMode.Battery_Saving,低功耗模式。 // mLocationOption.setLocationMode(AMapLocationMode.Battery_Saving); //设置定位模式为AMapLocationMode.Device_Sensors,仅设备模式。 // mLocationOption.setLocationMode(AMapLocationMode.Device_Sensors); //设置定位间隔,单位毫秒,默认为2000ms,最低1000ms。 mLocationOption.setInterval(1000); //设置是否允许模拟位置,默认为true,允许模拟位置 mLocationOption.setMockEnable(true); //单位是毫秒,默认30000毫秒,建议超时时间不要低于8000毫秒。 mLocationOption.setHttpTimeOut(20000); //关闭缓存机制 mLocationOption.setLocationCacheEnable(false); if (null!=mLocationClient) mLocationClient.setLocationOption(mLocationOption); //启动定位 startLocation(); } public void startLocation(){ //启动定位 if (null!=mLocationClient){ // mLocationClient.setLocationOption(mLocationOption); //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效 stopLocation(); mLocationClient.startLocation(); }else initMapLocal(); } public void stopLocation(){ if (null!=mLocationClient)mLocationClient.stopLocation(); } public void destoryLocation(){ if (null!=mLocationClient)mLocationClient.onDestroy(); } //声明定位回调监听器 public AMapLocationListener mLocationListener = new AMapLocationListener() { @Override public void onLocationChanged(AMapLocation aMapLocation) { if(null!=aMapLocation){ if (aMapLocation.getErrorCode()==0){ cityName=aMapLocation.getCity(); district=aMapLocation.getDistrict(); aMapLocation.getCityCode(); Intent intent=new Intent(); intent.setAction(LOCATION_CITYNAME+""); sendBroadcast(intent); stopLocation(); }else { cityName="定位失败"; // Log.d("mlocation:","errorCode="+aMapLocation.getErrorCode()+"errorInfo="+aMapLocation.getErrorInfo()); } } } }; @Override public void onLowMemory() { super.onLowMemory(); //设置定位模式为AMapLocationMode.Battery_Saving,低功耗模式。 mLocationOption.setLocationMode(AMapLocationMode.Battery_Saving); } }