本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《
使用场景
定位
效果展示
开发环境配置
软件
|
版本
|
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);
-
启动定位
-
以上就是定位的所有代码
百度地图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定位功能了