Android之获取地理位置

权限

// 清单文件中配置
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
// 申请权限
private String[] locationPermission = {Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION};requestPermission(locationPermission, new RequestPermissionCallBack() {@Overridepublic void onGranted(String[] permissions) {// 初始化initLocation();}@Overridepublic void onDenied(String[] permissions) {showToast(R.string.app_have_no_permission);}});

创建/销毁线程

private void startHandler() {if (mainHandler == null) {mainHandler = new Handler(Looper.getMainLooper());}if (workHandler == null) {handlerThread = new HandlerThread("handlerThread");handlerThread.start();workHandler = new Handler(handlerThread.getLooper());}
}private void stopHandler() {if (mainHandler != null) {mainHandler.removeCallbacksAndMessages(null);mainHandler = null;}if (handlerThread != null) {handlerThread.quit();handlerThread = null;}if (workHandler != null) {workHandler.removeCallbacksAndMessages(null);workHandler = null;}
}

初始化

// 移除监听
removeLocationListener();
//获取地理位置管理器
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (locationManager == null) return;
//获取所有可用的位置提供器
List<String> providers = locationManager.getProviders(true);
if (providers.size() <= 0) return;
String locationProvider;
if (providers.contains(LocationManager.NETWORK_PROVIDER)) {//如果是NetworklocationProvider = LocationManager.NETWORK_PROVIDER;
} else if (providers.contains(LocationManager.GPS_PROVIDER)) {//如果是GPSlocationProvider = LocationManager.GPS_PROVIDER;
} else {return;
}
//获取Location
Location location = locationManager.getLastKnownLocation(locationProvider);
if (location != null) {getAddress(location);
}
locationListener = new LocationListener() {@Overridepublic void onLocationChanged(Location location) {if (location == null) return;getAddress(location);}@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {}@Overridepublic void onProviderEnabled(String provider) {}@Overridepublic void onProviderDisabled(String provider) {}
};
// 设置监听
locationManager.requestLocationUpdates(locationProvider, 1000, 0f, locationListener);

移除监听

if(locationManager != null){locationManager.removeUpdates(locationListener);
}

解析位置

private void getAddress(Location location) {workHandler.post(() -> {try {if (location != null) {Geocoder gc = new Geocoder(this, Locale.getDefault());List<Address> result = gc.getFromLocation(location.getLatitude(),location.getLongitude(), 1);if (result.size() > 0) {Address address = result.get(0);mainHandler.post(() -> handleCountryAndArea(address ));}}} catch (Exception e) {e.printStackTrace();}});
}
// 处理地址信息
public void handleCountryAndArea(Address address) {}

Android之获取地理位置相关推荐

  1. android动态获取地理位置权限,Android6.0获取GPS定位和获取位置权限和位置信息的方法...

    1.添加权限--6.0之后要动态获取,下面会说 2.直接上代码,不多说,代码中注释很详细. private static final int BAIDU_READ_PHONE_STATE = 100; ...

  2. Android 获取地理位置信息 封装好了 直接用

    前言:花了一个早上研究了以下android获取经纬度,然后网上的参考资料都是杂七杂八,基本上都是过去几年的,现在我用 android6.0参照别人的结果发生好多错误,我的内心几乎是崩溃的.后来,不断百 ...

  3. 【Android笔记 二】Location获取地理位置信息(上)

    2011 7 22暑假实训的第五天,跟大家分享以下我对Android location的学习吧,这是一个最基本的获取地理位置信息的入门,下一次给大家介绍更质能化的地理位置选择Criteria,今天就先 ...

  4. reactnative 获取定位_react native 获取地理位置的方法示例

    react native 官网介绍了这个 api Geolocation 但是这个api只能返回 经纬度 所以要把经纬度 通过逆地理位置转义 http://recode.ditu.aliyun.com ...

  5. 用百度SDK获取地理位置和天气信息

    以下实现通过百度SDK获取地理位置和天气信息,请參考百度开发文档 1. 在相关下载最新的库文件.将so文件的压缩文件解压出来,把相应架构下的so文件放入开发人员自己APP的相应架构下的目录中,建议所有 ...

  6. Flutter 中获取地理位置[Flutter专题61]

    大家好,我是坚果,公众号"坚果前端" Flutter 中获取地理位置 如今,发现用户位置是移动应用程序非常常见且功能强大的用例.如果您曾经尝试过在 Android 中实现位置,您就 ...

  7. flutter利用高德如何获取地理位置信息bug处理

    flutter中对于利用高德如何获取地理位置信息, 1.在高德开发平台,注册成为开发者,并获取key 2.安装依赖 对于如何安装第三方插件 请点击此处pub.dev amap_location 3.修 ...

  8. Android中获取当前位置的使用步骤

    在Android中得到当前位置的步骤 1.在AndroidManifest.xml中声明权限 android.permission.ACCESS_FINE_LOCATION(或者android.per ...

  9. android 逆地址,Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道)

    Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道) 可以在非地图视图下直接获取,只要传入当前位置的经纬度 当然也可以在地图模式下获取详细信息 在非第三方地图集成下(系统自带功能)获取 ...

最新文章

  1. Kingbase金仓查看和剔除连接
  2. 重庆邮电大学计算机科学与技术培养方案,重庆邮电大学计算机科学与技术学院.doc...
  3. 提升自己逼格的编程之美之代码规范
  4. floquet端口必须沿z轴设置_请问CST 2012 floquet中的模式设置
  5. 近一半的智能手机受高通 Snapdragon 漏洞影响
  6. JPA唯一索引更新删除的问题
  7. atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty  HttpListener
  8. 2021年最新版裁判文书逆向
  9. 以正方体一个顶点进行旋转的3D立方体动画
  10. php学好要多久,零基础php自学要多久
  11. 两台计算机的ip地址怎么配置,同一台电脑如何设置两个IP地址?电脑配置双ip地址图文教程...
  12. android studio找不到aar,AndroidStudio 引入aar时常见问题
  13. linux curl t上传文件,curl 命令行上传文件
  14. 后OA时代:流程再造
  15. 用ImageMagick转换缩小JPG图像提高图像质量的方法
  16. 【错误解决】SpringBoot邮件服务的一些错误及其解决方案
  17. 李开复:从毛遂自荐到萌生去意
  18. 宝石典故之“凤凰血染红的鸡血石”
  19. 如何迁移foxmail中邮件账户下所有邮件(收件箱、发件箱等)
  20. 本博客搜索,因为csdn的搜索功能不好使,所以使用google做个搜索

热门文章

  1. 江在川上曰:JS函数
  2. VB中ByVal与ByRef有什么区别
  3. 数学建模题目之在线教学的分析与研究
  4. PHPNOW安装及使用
  5. 大块的写作时间?这个时代,它是奢侈品
  6. 2019 拼多多校招第三题sum 服务端研发工程师
  7. Apache Passenger配置常用参数解读
  8. 单人扑克游戏:地城恶棍的Python实现(附实现代码)
  9. 测序中,什么是“测通”
  10. day13-面向对象进阶