本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

使用场景


定位


效果展示


image


开发环境配置

软件

版本

autojs

8.7.3-0

java

1.8.0_131

android studio

4.1.2

mt管理器

2.9.6


原理


autojs使用百度地图sdk, 实现设备定位


准备工作


  1. 阅读百度地图官方文档

http://lbsyun.baidu.com/index.php?title=android-locsdk

  1. 下载百度地图sdk, 文件类型为jar

http://lbs.baidu.com/index.php?title=sdk/download&action#selected=location_all

  1. 将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


开始写代码


  1. 初始化 LocationClient
let mLocationClient = null;
let myListener = getMyLocationListener();
mLocationClient = new LocationClient(context);
mLocationClient.registerLocationListener(myListener);


  1. 配置定位参数
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);


  1. 启动定位
mLocationClient.start();


  1. 以上就是定位的所有代码


百度地图sdk配置


  1. 在AndroidManifest.xml文件中,填写AK。
<meta-data
    android:name="com.baidu.lbsapi.API_KEY"
    android:value="AK" >
</meta-data>


  1. 在AndroidManifest.xml文件中Application标签中声明service组件
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service>


  1. 基于以上sdk的配置要求, 我们只能在打包的apk中调试定位功能, 因为要修改 AndroidManifest.xml


注册和获取密钥


官网开发指南: http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/create-project/key


SHA1的获取方法


  1. 概念: Android 签名证书的 SHA1 值
  2. 由于我们会使用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定位功能了