Android之获取地理位置
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之获取地理位置相关推荐
- android动态获取地理位置权限,Android6.0获取GPS定位和获取位置权限和位置信息的方法...
1.添加权限--6.0之后要动态获取,下面会说 2.直接上代码,不多说,代码中注释很详细. private static final int BAIDU_READ_PHONE_STATE = 100; ...
- Android 获取地理位置信息 封装好了 直接用
前言:花了一个早上研究了以下android获取经纬度,然后网上的参考资料都是杂七杂八,基本上都是过去几年的,现在我用 android6.0参照别人的结果发生好多错误,我的内心几乎是崩溃的.后来,不断百 ...
- 【Android笔记 二】Location获取地理位置信息(上)
2011 7 22暑假实训的第五天,跟大家分享以下我对Android location的学习吧,这是一个最基本的获取地理位置信息的入门,下一次给大家介绍更质能化的地理位置选择Criteria,今天就先 ...
- reactnative 获取定位_react native 获取地理位置的方法示例
react native 官网介绍了这个 api Geolocation 但是这个api只能返回 经纬度 所以要把经纬度 通过逆地理位置转义 http://recode.ditu.aliyun.com ...
- 用百度SDK获取地理位置和天气信息
以下实现通过百度SDK获取地理位置和天气信息,请參考百度开发文档 1. 在相关下载最新的库文件.将so文件的压缩文件解压出来,把相应架构下的so文件放入开发人员自己APP的相应架构下的目录中,建议所有 ...
- Flutter 中获取地理位置[Flutter专题61]
大家好,我是坚果,公众号"坚果前端" Flutter 中获取地理位置 如今,发现用户位置是移动应用程序非常常见且功能强大的用例.如果您曾经尝试过在 Android 中实现位置,您就 ...
- flutter利用高德如何获取地理位置信息bug处理
flutter中对于利用高德如何获取地理位置信息, 1.在高德开发平台,注册成为开发者,并获取key 2.安装依赖 对于如何安装第三方插件 请点击此处pub.dev amap_location 3.修 ...
- Android中获取当前位置的使用步骤
在Android中得到当前位置的步骤 1.在AndroidManifest.xml中声明权限 android.permission.ACCESS_FINE_LOCATION(或者android.per ...
- android 逆地址,Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道)
Android高德获取逆地址编码(经纬度坐标-地址描述如省市区街道) 可以在非地图视图下直接获取,只要传入当前位置的经纬度 当然也可以在地图模式下获取详细信息 在非第三方地图集成下(系统自带功能)获取 ...
最新文章
- Kingbase金仓查看和剔除连接
- 重庆邮电大学计算机科学与技术培养方案,重庆邮电大学计算机科学与技术学院.doc...
- 提升自己逼格的编程之美之代码规范
- floquet端口必须沿z轴设置_请问CST 2012 floquet中的模式设置
- 近一半的智能手机受高通 Snapdragon 漏洞影响
- JPA唯一索引更新删除的问题
- atitit.跨架构 bs cs解决方案. 自定义web服务器的实现方案 java .net jetty HttpListener
- 2021年最新版裁判文书逆向
- 以正方体一个顶点进行旋转的3D立方体动画
- php学好要多久,零基础php自学要多久
- 两台计算机的ip地址怎么配置,同一台电脑如何设置两个IP地址?电脑配置双ip地址图文教程...
- android studio找不到aar,AndroidStudio 引入aar时常见问题
- linux curl t上传文件,curl 命令行上传文件
- 后OA时代:流程再造
- 用ImageMagick转换缩小JPG图像提高图像质量的方法
- 【错误解决】SpringBoot邮件服务的一些错误及其解决方案
- 李开复:从毛遂自荐到萌生去意
- 宝石典故之“凤凰血染红的鸡血石”
- 如何迁移foxmail中邮件账户下所有邮件(收件箱、发件箱等)
- 本博客搜索,因为csdn的搜索功能不好使,所以使用google做个搜索