http://www.jianshu.com/p/2b3661928e66
demo
public class MainActivity extends Activity implements EasyPermissions.PermissionCallbacks{
//声明AMapLocationClient类对象
public AMapLocationClient mLocationClient = null;
//声明定位回调监听器
public AMapLocationListener mLocationListener = new AMapLocationListener() {
@Override
public void onLocationChanged(AMapLocation amapLocation) {
if (amapLocation != null) {
if (amapLocation.getErrorCode() == 0) {
//可在其中解析amapLocation获取相应内容。
double locationType = amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
double latitude = amapLocation.getLatitude();//获取纬度
double longitude = amapLocation.getLongitude();//获取经度
Log.e("Amap==经度:纬度", "locationType:"+locationType+",latitude:"+latitude+",longitude:"+longitude);
}else {
//定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
Log.e("AmapError","location Error, ErrCode:"
+ amapLocation.getErrorCode() + ", errInfo:"
+ amapLocation.getErrorInfo());
}
}
}
};
//声明AMapLocationClientOption对象
public AMapLocationClientOption mLocationOption = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[] perms = new String[]{Manifest.permission.ACCESS_FINE_LOCATION};
if (EasyPermissions.hasPermissions(MainActivity.this, perms)) {//检查是否获取该权限
//已获取权限
// JumpInApp();
} else {
//第二个参数是被拒绝后再次申请该权限的解释 "为了功能正常使用,请开启您的权限"
//第三个参数是请求码
//第四个参数是要申请的权限
EasyPermissions.requestPermissions(MainActivity.this, "为了功能正常使用,请开启您的权限", 0, perms);
}
//初始化定位
mLocationClient = new AMapLocationClient(getApplicationContext());
//设置定位回调监听
mLocationClient.setLocationListener(mLocationListener);
//初始化AMapLocationClientOption对象
mLocationOption = new AMapLocationClientOption();
//设置定位模式为AMapLocationMode.Battery_Saving,低功耗模式。
mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);
//给定位客户端对象设置定位参数
mLocationClient.setLocationOption(mLocationOption);
//启动定位
mLocationClient.startLocation();
/**
* 获取一次定位
*/
//该方法默认为false,true表示只定位一次
mLocationOption.setOnceLocation(true);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mLocationClient.stopLocation();
}
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
if (perms.get(0).equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// JumpInApp();
}
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
}
}