1.注册高德开发者账号:注册完成后登陆开发者账号
2.点击控制台,进入我的应用,刚开始没有,可以创建应用:
3.填写应用资料:
图片:
4.下载定位SdK:
- AMap_Location_V3.1.0_20161027.jar:
5.在清单文件中meta-data中配置key:
- android:name=”com.amap.api.v2.apikey”
android:value=”你的key值”
6.添加相应的权限 uses-permission :
- android:name=”android.permission.INTERNET”
写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据- android:name=”android.permission.WRITE_EXTERNAL_STORAGE”
用于进行网络定位- android:name=”android.permission.ACCESS_COARSE_LOCATION”
获取运营商信息,用于支持提供运营商信息相关的接口- android:name=”android.permission.ACCESS_NETWORK_STATE”
用于访问GPS定位- android:name=”android.permission.ACCESS_FINE_LOCATION”
用于读取手机当前的状态- android:name=”android.permission.READ_PHONE_STATE”
用于访问wifi网络信息,wifi信息会用于进行网络定位- android:name=”android.permission.ACCESS_WIFI_STATE”
这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位- android:name=”android.permission.CHANGE_WIFI_STATE”
这个权限用于允许程序在手机屏幕关闭后后台进程仍然运行
7.添加Java代码:
//声明mLocationOption对象
public AMapLocationClientOption mLocationOption = null;
mlocationClient = new AMapLocationClient(this);
//初始化定位参数
mLocationOption = new AMapLocationClientOption();
//设置定位监听
mlocationClient.setLocationListener(this);
//设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);
//设置定位间隔,单位毫秒,默认为2000ms
mLocationOption.setInterval(2000);
//设置定位参数
mlocationClient.setLocationOption(mLocationOption);
// 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
// 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求
// 在定位结束后,在合适的生命周期调用onDestroy()方法
// 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
//启动定位
mlocationClient.startLocation();
@Override
public void onLocationChanged(AMapLocation amapLocation) {
if (amapLocation != null) {
if (amapLocation.getErrorCode() == 0) {
//定位成功回调信息,设置相关消息
amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
amapLocation.getLatitude();//获取纬度
amapLocation.getLongitude();//获取经度
amapLocation.getAccuracy();//获取精度信息
SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date date = new Date(amapLocation.getTime());
df.format(date);//定位时间
} else {
//显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
Log.e(“AmapError”,”location Error, ErrCode:”
+ amapLocation.getErrorCode() + “, errInfo:”
+ amapLocation.getErrorInfo());
}
}
}