IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android开发学习之位置服务 -> 正文阅读

[移动开发]Android开发学习之位置服务

(学习参考书:第一行代码第2版)
在开始之前,需要到提供LBS服务的API开发平台申请注册和申请API key。百度、高德地图均可,本文采用百度的API。

一、配置LBS SDK

  1. 选择所需功能下载jar文件
  2. 解压后将下载文件夹中libs目录下的jar文件复制到项目的app/libs文件夹下
  3. 在app/src/main目录下创建jniLibs目录,放入下载文件夹中除了libs的其他文件(即so文件)
  4. 点击Sync按钮同步,查看app/build.gradle是否存在 implementation files(…),如果不存在,在放入的jar包上右击选择add as library

二、使用百度定位

(官方参考文档:Android定位SDK描述文档

(1)确定自己位置的经纬度
使用方法:

  1. 在AndroidManifest中申请权限、配置开发密钥、添加外部权限
  2. 在主线程声明LocationCilent对象,使用getApplicationContext()方法传入构造函数
  3. 调用LocationCilent对象的registerLocationListener()方法注册一个定位监听器,当获取位置信息时,会回调这个监听器。该监听器继承BDAbstractLocationListener
  4. 申请运行时权限,并重写onRequestPermissionResult()方法对权限申请结果进行处理。
  5. 若权限都允许,调用LocationCilent的start()方法定位。
  6. 在监听器的onReceiveLocation()方法,在其中完成对位置信息的操作。如果要更新UI,别忘了在runOnUiThread()开启子线程。

配置SDK参数:
利用LocationClientOption配置。

LocationClientOption option = new LocationClientOption();

option.setLocationMode(LocationMode.Hight_Accuracy);
//可选,设置定位模式,默认高精度
//LocationMode.Hight_Accuracy:高精度;
//LocationMode. Battery_Saving:低功耗;
//LocationMode. Device_Sensors:仅使用设备;
	
option.setCoorType("bd09ll");
//可选,设置返回经纬度坐标类型,默认GCJ02
//GCJ02:国测局坐标;
//BD09ll:百度经纬度坐标;
//BD09:百度墨卡托坐标;
//海外地区定位,无需设置坐标类型,统一返回WGS84类型坐标
 	
option.setScanSpan(1000);
//可选,设置发起定位请求的间隔,int类型,单位ms
//如果设置为0,则代表单次定位,即仅定位一次,默认为0
//如果设置非0,需设置1000ms以上才有效
	
option.setOpenGps(true);
//可选,设置是否使用gps,默认false
//使用高精度和仅用设备两种定位模式的,参数必须设置为true
	
option.setLocationNotify(true);
//可选,设置是否当GPS有效时按照1S/1次频率输出GPS结果,默认false
	
option.setIgnoreKillProcess(false);
//可选,定位SDK内部是一个service,并放到了独立进程。
//设置是否在stop的时候杀死这个进程,默认(建议)不杀死,即setIgnoreKillProcess(true)
	
option.SetIgnoreCacheException(false);
//可选,设置是否收集Crash信息,默认收集,即参数为false

option.setWifiCacheTimeOut(5*60*1000);
//可选,V7.2版本新增能力
//如果设置了该接口,首次启动定位时,会先判断当前Wi-Fi是否超出有效期,若超出有效期,会先重新扫描Wi-Fi,然后定位
	
option.setEnableSimulateGps(false);
//可选,设置是否需要过滤GPS仿真结果,默认需要,即参数为false

option.setNeedNewVersionRgc(true);
//可选,设置是否需要最新版本的地址信息。默认需要,即参数为true
	
mLocationClient.setLocOption(option);
//mLocationClient为第二步初始化过的LocationClient对象
//需将配置好的LocationClientOption对象,通过setLocOption方法传递给LocationClient对象使用
//更多LocationClientOption的配置,请参照类参考中LocationClientOption类的详细说明

(2)获取地址
同样使用LocationClientOption配置参数

option.setIsNeedAddress(true);
//可选,是否需要地址信息,默认为不需要,即参数为false
//如果开发者需要获得当前点的地址信息,此处必须为true
//使用相应的getXxx()方法即可获取相应的地址。getCountry()、getProvince()、getCity()、getDistrict()、getStreet()

三、使用百度地图

(官方参考文档:Android地图SDK文档描述文档

(1)显示地图和正确位置

  1. 在定位的SDK基础上,在布局文件添加MapView控件
  2. 在activity设置布局之前调用SDKInitializer.initialize(getApplicationContext())进行初始化操作
  3. 获取MapView的实例,调用MapView的getMap()方法获取到BaiduMap实例
  4. 通过MapStatusUpdate对象设置缩放大小和定位位置
  5. 使用BaiduMap对象的animateMapStatus(update)方法提交更新
  6. 上述4,5功能封装在一个navigateTo(BDLocation)方法中,在监听器的onReceiveLoction()方法中调用该方法
  7. 重写onResume()、onPause()、onDestory()三个方法,并在其中对MapView进行管理,以保证资源及时释放。

(2)显示定位光标

  1. 在onCreate方法中让BaiduMap对象调用setMyLocationEnabled(true)
  2. 百度LBS SDK当中提供了一个MyLocationData.Builder类,该类是用来封装设备当前所在位置的,只需要将经纬度信息传入在该类的对应方法中就可以了。
  3. 要封装的信息设置完后,调用其build()方法获得一个MyLocationData实例,传入BaiduMap的setMyLocationData()中即可
  4. 在onDestory()方法中让BaiduMap对象调用setMyLocationEnabled(false)
步骤2:
MyLocationData.Builder locationBuilder = new MyLocationData.Builder();
locationBuilder.latitude(location.getLatitude());
locationBuilder.longitude(location.getLongitude());

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:48:06  更:2021-07-25 11:49:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 1:13:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码