这次来总结一下我用到的Android原生获取经纬度和地址信息的案例,喜欢的可以收藏下,不喜勿喷!!!

1、一般来说,既然获取经纬度等信息,就需要获取定位权限啦。

可以在你的首页或者应用启动时先写获取权限的逻辑。。。

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 粗略的位置权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 精确的位置权限 -->
/*网络权限也需要 ,此处我就不多说了*///
private static final int PERMISSIONS_REQUEST_CODE = 1024;//此方法为获取权限private boolean checkAndRequestPermission() {if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {return true;}List<String> lackedPermission = new ArrayList<>();if (!(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)) {lackedPermission.add(Manifest.permission.ACCESS_FINE_LOCATION);}if (!(checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED)) {lackedPermission.add(Manifest.permission.ACCESS_COARSE_LOCATION);if (lackedPermission.isEmpty()) {return true;}// 请求缺少的权限,在 onRequestPermissionsResult 中返回是否获得权限String[] requestPermissions = new String[lackedPermission.size()];lackedPermission.toArray(requestPermissions);requestPermissions(requestPermissions, PERMISSIONS_REQUEST_CODE);return false;}//权限的回调@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[]         grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if (requestCode == PERMISSIONS_REQUEST_CODE) {/*此处做你的处理*/        }}//次处实例如何调用,实例为权限全部请求成功
if (checkAndRequestPermission()) {//检查权限loadSplashAd();//打开开屏广告timeType = true;}

2、权限获取成功之后,开始获取经纬度以及地址信息。(这是我查阅网上资料整理的一个工具类,可直接使用哦)

/*** 获取经纬度、位置工具类*/
public class LocationUtils {@SuppressLint("StaticFieldLeak")private volatile static LocationUtils uniqueInstance;private LocationManager locationManager;private String locationProvider;private Location location;private final Context mContext;private LocationUtils(Context context) {mContext = context;getLocation();}//采用Double CheckLock(DCL)实现单例public static LocationUtils getInstance(Context context) {if (uniqueInstance == null) {synchronized (LocationUtils.class) {if (uniqueInstance == null) {uniqueInstance = new LocationUtils( context );}}}return uniqueInstance;}//获取经纬度locationprivate void getLocation() {//1.获取位置管理器locationManager = (LocationManager) mContext.getSystemService( Context.LOCATION_SERVICE );//2.获取位置提供器,GPS或是NetWorkList<String> providers = locationManager.getProviders( true );if (providers.contains( LocationManager.NETWORK_PROVIDER )) {//如果是网络定位Log.d( "TAG", "如果是网络定位" );locationProvider = LocationManager.NETWORK_PROVIDER;} else if (providers.contains( LocationManager.GPS_PROVIDER )) {//如果是GPS定位Log.d( "TAG", "如果是GPS定位" );locationProvider = LocationManager.GPS_PROVIDER;} else {Log.d( "TAG", "没有可用的位置提供器" );return;}// 需要检查权限,否则编译报错,想抽取成方法都不行,还是会报错。只能这样重复 code 了。if (Build.VERSION.SDK_INT >= 23 &&ActivityCompat.checkSelfPermission( mContext, Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED &&ActivityCompat.checkSelfPermission( mContext, Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED) {return;}if (ActivityCompat.checkSelfPermission( mContext, Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission( mContext, Manifest.permission.ACCESS_COARSE_LOCATION ) != PackageManager.PERMISSION_GRANTED) {return;}//3.获取上次的位置,一般第一次运行,此值为nullLocation location = locationManager.getLastKnownLocation( locationProvider );if (location != null) {setLocation( location );}// 监视地理位置变化,第二个和第三个参数分别为更新的最短时间minTime和最短距离minDistacelocationManager.requestLocationUpdates( locationProvider, 0, 0, locationListener );}private void setLocation(Location location) {this.location = location;String address = "纬度:" + location.getLatitude() + "经度:" + location.getLongitude();Log.d( "TAG", address );}//获取经纬度public Location showLocation() {return location;}//获取地址信息:城市、街道等信息public static String getAddress(Context context,Location location) {List<Address> result = null;String address = null;try {if (location != null) {Geocoder gc = new Geocoder(context, Locale.getDefault());result = gc.getFromLocation(location.getLatitude(),location.getLongitude(), 1);
//                result = gc.getFromLocation(37.833832912379386,
//                        112.4759295159054, 1);Toast.makeText(context, "获取地址信息:" + result.toString(), Toast.LENGTH_LONG).show();Log.v("TAG", "获取地址信息:" + result.toString());for (int i = 0; i < result.size(); i++) {Log.d("TAG", result.get(i).getSubAdminArea());//开发区Log.d("TAG", result.get(i).getAdminArea());//山西省Log.d("TAG", result.get(i).getLocality());//晋城市Log.d("TAG", result.get(i).getAddressLine(0));address = result.get(i).getAddressLine(0);}//admin=山西省,sub-admin=长风西街街道,locality=太原市//admin=山西省,sub-admin=开发区,locality=晋城市}} catch (Exception e) {e.printStackTrace();}return address;}}

3、接下来就是使用啦!!!

/*直接在你需要的地方这样使用即可,经纬度和位置信息看注释*/
//获取位置locationLocation location = LocationUtils.getInstance(this).showLocation();if (location != null) {String tude = "纬度:" + location.getLatitude() + "经度:" + location.getLongitude();Log.d("FLY.LocationUtils", tude);latitude = location.getLatitude();//纬度longitude = location.getLongitude();//经度address = LocationUtils.getAddress(this, location);//位置信息} else {Log.i("FLY.LocationUtils", "address");}

到此,本文结束!!!感谢网上的小伙伴为我提供资料让我学习使用,我再次整理出来,有错的地方欢迎大家指出,不喜勿喷!!!

Android获取经纬度以及地址信息相关推荐

  1. 微信小程序地图获取经纬度并获取经纬度的地址信息

    在需要添加地图的html页面 <map id="map" longitude="{{longitude}}" latitude="{{latit ...

  2. 在vue中使用高德地图获取坐标与地址信息(包含点击+搜索)

    首先 注册登陆高德地图 https://lbs.amap.com/ 划过头像里面有个应用管理点开 进入到应用管理打开我的应用 选择创建应用 然后按照要求填写内容,切记一定要选择web端(JS API) ...

  3. uni-app获取位置信息(经纬度转换地址信息)

    uniapp获取位置信息,获取到的信息为经纬度,再通过转换成地址信息 1.使用uni.getLocation()获取位置信息 2.下载qqmap-wx-jssdk.js插件插件下载地址 3.使用腾讯位 ...

  4. Android百度地图将经纬度转换为地址信息

    正题: 实现经纬度转为地址信息,主要用到的类是GeoCoder,通过newInstance获得类的实例. 用到的方法为 public boolean reverseGeoCode(ReverseGeo ...

  5. Android获取cpu和内存信息、网址的代码

    android获取手机cpu并判断是单核还是多核 /**  * Gets the number of cores available in this device, across all proces ...

  6. android socket gprs 与 wifi 网络切换,Android应用开发Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址...

    Android 获取手机Wifi地址和Gprs地址,反射修改Wifi地址. //查看Wifi地址publicString   getWifiIpAddress() { //获取wifi服务WifiMa ...

  7. android 获取apk的版本信息

    今天,简单讲讲android如何获取apk的版本信息. 这个很简单,但是之前还是查找了资料,所以记录一下. 一.应用程序得到自己的版本信息 /*** 得到当前应用版本名称的方法* * @param c ...

  8. android获取详细地址,Android获取当前子网掩码地址(亲测可用)

    Android 获取当前子网掩码地址(亲测可用),现在网上好多都是通过 DhcpInfo 来获取,但是通过这种方法有 Bug,很多人用 DhcpInfo 的方式都是获取不到,都是为 0.0.0.0. ...

  9. android获取进程内存使用信息、一键加速(内存清理)与进程重要级别解析

    android获取进程内存使用信息.一键加速(内存清理)与进程重要级别解析 获取进程内存使用信息 获取单个或多个进程 获取系统内存状态的信息 MemoryInfo说明 内存清理 killBackgro ...

  10. android获取apk版本号,android 获取apk的版本信息

    释放双眼,带上耳机,听听看~! 今天,简单讲讲android如何获取apk的版本信息. 这个很简单,但是之前还是查找了资料,所以记录一下. 一.应用程序得到自己的版本信息 /** * 得到当前应用版本 ...

最新文章

  1. rotate.js实现图片旋转 (chrome,IE,firefox都可以实现)
  2. 在Cacti上实现MSN报警机制
  3. Git 技术篇-git切换工作空间,git设置默认进入空间,git初始化工作空间
  4. svpwm仿真_案例12:三相三线PWM整流仿真建模
  5. linux 配置path
  6. Vue生命周期和钩子函数的一些理解
  7. 删除查找后的目录或文件
  8. XcodeGhost事件或成年内最严重信息安全事件
  9. 苹果VR大业再添一员大将Spaces,创始人来自梦工厂!
  10. TDM和TDMA的经典简述
  11. 文件头格式标准魔数-magic number和mime.types
  12. Linux公社 学习连接
  13. 如何把视频写在博客里?
  14. 自动化测试的理解总结与感悟
  15. Facebook sdk嵌入,登陆与注销
  16. Linux(5)RedHat7 基本命令四-cd命令详解
  17. 教师试讲学生名字_我们如何帮助老师学习学生的名字
  18. 【web测试】实战1:去哪儿网购买火车票|优化|po模式
  19. 考研英语 | 17天搞定GRE单词
  20. 玩着k3s树莓派集群指南

热门文章

  1. 长难句——考研英语刘晓燕#6
  2. Andriod基础知识了解一下
  3. 异形外星人那么“阔怕”,神秘外星信号该不该回复?
  4. pandox怎么用_神器Pandoc的安装与使用 | Flyaway's Blog
  5. GitChat · 前端 | React 生态系统:从小白到大神
  6. 【iOS-iap防护】验证用户付费收据!拒绝iap Cracker!拒绝iap Free!让iphone越狱用户无从下手!(作者新浪微博: @李华明Himi )
  7. 键盘按键名键码对照表
  8. 机工士姆斯塔迪奥(20分)
  9. 计算机桌面背景显示方式有几种,如何让计算机自动更改桌面背景
  10. 通过phpstudy(小皮面板)搭建DVWA靶场教程