使用场景
定位
效果展示
开发环境配置
软件 | 版本 |
---|---|
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-dataandroid: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定位功能了
查看完整源码
微信公众号 AutoJsPro教程
QQ群
747748653