使用场景
定位
效果展示
开发环境配置
软件 |
版本 |
autojs |
8.7.3-0 |
java |
1.8.0_131 |
android studio |
4.1.2 |
mt管理器 |
2.9.6 |
原理
autojs使用百度地图sdk, 实现设备定位
准备工作
- 阅读百度地图官方文档
http://lbsyun.baidu.com/index.php?title=android-locsdk
- 下载百度地图sdk, 文件类型为jar
http://lbs.baidu.com/index.php?title=sdk/download&action#selected=location_all
- 将jar转为dex
dx是android studio的命令, 我的路径: C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\30.0.3
dx --dex --output=classes2.dex BaiduLBS_Android.jar
开始写代码
- 初始化LocationClient类
let mLocationClient = null; let myListener = getMyLocationListener(); mLocationClient = new LocationClient(context); mLocationClient.registerLocationListener(myListener);
- 配置定位参数
let option = new LocationClientOption(); option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy); option.setCoorType("bd09ll"); option.setScanSpan(1000); option.setOpenGps(true); option.setLocationNotify(true); ... mLocationClient.setLocOption(option);
- 启动定位
mLocationClient.start();
- 以上就是定位的所有代码
百度地图sdk配置
- 在AndroidManifest.xml文件中,填写AK。
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="AK" > </meta-data>
- 在AndroidManifest.xml文件中Application标签中声明service组件
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service>
- 基于以上sdk的配置要求, 我们只能在打包的apk中调试定位功能, 因为要修改AndroidManifest.xml
注册和获取密钥
官网开发指南: http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/create-project/key
SHA1的获取方法
- 概念: Android 签名证书的 SHA1 值
- 由于我们会使用mt管理器给打包后的app签名, 所以我们只要用mt随便修改一下app,
然后签名, 再运行项目文件夹中的显示sha1.js
, 就可以获取到正确的sh1值了
sdk依赖
由于要启动服务com.baidu.location.f, 所以classes.dex中必须有这个类,
但是我们打包后的apk的classes.dex中, 是没有这个类的,
这个类在上面的准备工作 的classes2.dex中,
因此, 我们使用mt管理器, 将classes2.dex导入我们打包后的apk中
同时, sdk还有so依赖, 也用mt管理器添加进apk中
下载的sdk中有一个文件夹libs/armeabi-v7a
我们将文件夹里面的so文件, 放进apk中lib/armeabi-v7a
经过以上步骤, 百度地图的依赖就完整了, 就可以正常使用百度地图sdk定位功能了