比较喜好简单明了的风格,以下方法只是单次获取位置,定位方式没有写死,是根据设备当前所处环境获取最佳定位方式去定位的
/**
* 用最优的定位方式,获得经度、纬度:【记得加权限】
* @param context
* @return 经度、纬度
*/
public double[] getPosition(Context context) {
//位置管理对象
LocationManager locationManager = (LocationManager) context.getSystemService(context.LOCATION_SERVICE);
//最优定位方式
Criteria criteria = new Criteria();
criteria.setCostAllowed(true);//允许使用流量
criteria.setAccuracy(Criteria.ACCURACY_FINE); //指定获取经纬度的精确度(精确度越高相应的越耗电)
String actor = locationManager.getBestProvider(criteria, true);
//开始定位
Location location = locationManager.getLastKnownLocation(actor);
if (location == null) {
//失败
Toast.makeText(context,"请检查定位服务是否开启",Toast.LENGTH_LONG).show();
} else {
double longitude = location.getLongitude();//经度
double latitude = location.getLatitude();//纬度
//装,返回
return new double[]{longitude,latitude};
}
//定位失败返回null
return null;
}
记得权限,记得权限
<!--GPS坐标-->
android:name="android.permission.ACCESS_FINE_LOCATION"
<!--粗略坐标【网络定位时用】-->
android:name="android.permission.ACCESS_COARSE_LOCATION"
<!--模拟器虚拟定位【真机没必要】-->
android:name="android.permission.ACCESS_MOCK_LOCATION"