public class MLocationManager {
@SuppressLint("MissingPermission")
public static Location getLocation() {
LocationManager locationManager = (LocationManager) MApplication.getInstance().getSystemService(Context.LOCATION_SERVICE);
String provider = getProvider(locationManager);
if (TextUtils.isEmpty(provider)) {
return null;
}
if (AndPermission.hasPermissions(MApplication.getInstance(),
new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION})) {
return locationManager.getLastKnownLocation(provider);
}
return null;
}
public static String getProvider(LocationManager locationManager) {
List<String> provs = locationManager.getProviders(true);
if (provs.contains(LocationManager.NETWORK_PROVIDER)) {
return LocationManager.NETWORK_PROVIDER;//网络定位
} else if (provs.contains(LocationManager.GPS_PROVIDER)) {
return LocationManager.GPS_PROVIDER;//GPS定位
}
return null;
}
/**
* 逆地理编码 得到地址
*
* @param context
* @return
*/
public static String getAddress(Context context, Location mLocation) {
if (mLocation == null) {
return null;
}
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
double latitude = mLocation.getLatitude();
double longitude = mLocation.getLongitude();
try {
List<Address> address = geocoder.getFromLocation(latitude, longitude, 1);
Log.i("位置", "得到位置当前" + address + "'\n"
+ "经度:" + String.valueOf(address.get(0).getLongitude()) + "\n"
+ "纬度:" + String.valueOf(address.get(0).getLatitude()) + "\n"
+ "纬度:" + "国家:" + address.get(0).getCountryName() + "\n"
+ "城市:" + address.get(0).getLocality() + "\n"
+ "名称:" + address.get(0).getAddressLine(1) + "\n"
+ "街道:" + address.get(0).getAddressLine(0)
);
return address.get(0).getAddressLine(0) + " " + address.get(0).getLocality() + " " + address.get(0).getCountryName();
} catch (Exception e) {
e.printStackTrace();
return "未知";
}
}
}
Android 获取位置经纬度并转为地址信息
最新推荐文章于 2021-09-09 19:14:35 发布