autojs之百度地图定位

使用场景

定位

效果展示

在这里插入图片描述

开发环境配置

软件版本
autojs8.7.3-0
java1.8.0_131
android studio4.1.2
mt管理器2.9.6

原理

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

准备工作

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

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

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

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

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

    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);
    
  3. 启动定位

    mLocationClient.start();
    
  4. 以上就是定位的所有代码

百度地图sdk配置

  1. 在AndroidManifest.xml文件中,填写AK。

    <meta-data
        android:name="com.baidu.lbsapi.API_KEY"
        android:value="AK" >
    </meta-data>
    
  2. 在AndroidManifest.xml文件中Application标签中声明service组件

    <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service>
    
  3. 基于以上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定位功能了


查看完整源码


微信公众号 AutoJsPro教程

在这里插入图片描述

QQ群

747748653

在这里插入图片描述

在 Auto.js 中,`packageName` 主要用于根据应用包名查找特定的界面元素,例如按钮、文本等。通过 `packageName` 可以更精确地定位目标应用中的控件,以便进行自动化操作。 ### 使用 `packageName` 定位的方法 1. **基础语法** 使用 `packageName` 的基本形式如下: ```javascript packageName("com.example.app").text("示例文本").findOne(); ``` 上述代码表示查找包名为 `com.example.app` 且文本为“示例文本”的控件。此方法常用于识别和点击特定应用中的按钮或输入框等界面元素。 2. **结合其他属性进行定位** 在实际使用中,通常会将 `packageName` 与其他属性(如 `text`、`id`、`className` 等)结合使用,以提高控件识别的准确性。例如: ```javascript packageName("com.tencent.mm").text("微信").findOne(); ``` 这段代码查找包名为 `com.tencent.mm`(即微信应用)且显示文本为“微信”的控件,并返回第一个匹配的结果。 3. **等待控件出现** 在某些情况下,可能需要等待特定控件出现在界面上。可以通过 `waitFor()` 方法实现: ```javascript packageName("com.example.app").text("登录").waitFor(); ``` 此代码会一直等待直到包名为 `com.example.app` 且文本为“登录”的控件出现在屏幕上。 4. **处理多个匹配结果** 如果存在多个符合条件的控件,可以使用 `find()` 或 `findOnce()` 方法获取所有匹配结果,并进一步筛选所需控件: ```javascript var results = packageName("com.example.app").find(); for (var i = 0; i < results.length; i++) { log(results[i].text()); } ``` 这段代码查找包名为 `com.example.app` 的所有控件,并打印它们的文本内容。 5. **点击与滑动操作** 找到控件后,可以直接对其进行点击或滑动操作: ```javascript var button = packageName("com.example.app").text("提交").findOne(); if (button) { button.click(); } ``` 6. **区域限制** 在查找控件时,也可以指定查找区域,从而减少误匹配的可能性: ```javascript packageName("com.example.app").boundsInside(0, 0, device.width, device.height / 2).text("确定").findOne(); ``` 此代码仅在屏幕的上半部分查找符合条件的控件。 7. **与图像识别结合使用** 在某些复杂场景下,还可以将 `packageName` 与图像识别功能结合使用,以实现更高级的自动化逻辑: ```javascript var pos = files.cwd(); var img = images.read(pos + "/target.png"); var p = findImage(captureScreen(), img, { region: [0, 50], threshold: 0.9 }); if (p && packageName("com.example.app").exists()) { click(p.x, p.y); } ``` ### 注意事项 - **权限问题**:在使用 `packageName` 进行控件查找时,确保已经申请了必要的权限,例如截图权限。 - **性能优化**:频繁调用 `findOne()` 或 `find()` 可能会影响脚本的执行效率,建议合理设置查找间隔。 - **兼容性**:不同设备或系统版本可能会导致控件属性发生变化,因此在编写脚本时应考虑兼容性问题。 ### 示例代码 以下是一个完整的示例,展示如何使用 `packageName` 查找并点击微信图标: ```javascript auto(); requestScreenCapture(); if (device.sdkInt > 28) { threads.start(function () { packageName('com.android.systemui').text('立即开始').waitFor(); text('立即开始').click(); }); } var pos = files.cwd(); var wxIcon = images.read(pos + "/wx2.png"); sleep(1000); var screen = captureScreen(); var p = findImage(screen, wxIcon, { region: [0, 50], threshold: 0.9 }); if (p) { log("找到微信图标: " + p); click(p.x, p.y); } else { log("未找到微信图标"); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牙叔教程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值