dlufjfiqnurr 发表于 2024-5-11 23:44

Autojs6-使用蓝牙定位权限,编写哈啰单车脚本

本帖最后由 dlufjfiqnurr 于 2024-5-12 00:37 编辑


注:本脚本可以使用`autojs6或者autojsX`安卓app运行。

**本脚本使用注意事项:**

蓝牙或者定位必须是autojs6 或者autojsX\*\*(安卓自动化软件app)开启的,才能使用对应关闭方法。否则执行关闭命令是没有任何效果的。\*\*

一句话,**自己开启的自己才能关,无法关闭别人开启的**

这也是为什么下面定位是分开写的原因,当然定位也可以写成一个方法。

**重要:如果你的autojs没有定位、蓝牙、修改系统权限,使用脚本是没有用!!!**

*通过adb授予安全写入权限*

```bash
--开启调试 授权安全设置
adb获取当前打开的app的包名
adb shell dumpsys window | findstr mCurrentFocus
--可以授权截图权限 不再弹窗询问
adb shell appops set {包名} PROJECT_MEDIA allow
--添加安全写入权限
adb shell pm grant{包名} android.permission.WRITE_SECURE_SETTINGS
```

*autojs6包名:org.autojs.autojs6*

**请确保执行前有无障碍权限**

!(https://s21.ax1x.com/2024/05/12/pkeUh6g.png)

## 1. 蓝牙

```javascript
//操作蓝牙函数,true启用,false禁用
function setBT(ec){
    //指定时间自动开启蓝牙和定位
    //导入蓝牙包和获取蓝牙适配器
    importClass("android.bluetooth.BluetoothAdapter");
    let mAdapter = BluetoothAdapter.getDefaultAdapter();
        //蓝牙没有启用并且执行开启操作
    if(!mAdapter.isEnabled()&&ec){
      mAdapter.enable();// 打开蓝牙
    }else if(mAdapter.isEnabled()&&!ec){
      mAdapter.disable();
    }
}
```

## 2. 定位

```javascript
//启用GPS
function enableGPS(){
    importClass("android.provider.Settings")
    importClass("android.location.LocationManager")
    Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, true);
}

//关闭GPS
function closeGPS(){
    importClass("android.provider.Settings")
    importClass("android.location.LocationManager")
    Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), LocationManager.GPS_PROVIDER, false);
}
```

## 3. 扩展

### 3.1 模块封装

mokuai.js

```javascript
// 省略以上代码

//打开根据app名称指定程序
function launchApp(appName){
    app.launchApp(appName);
}

module.exports.tools={
        launchApp,
    enableGPS,
    closeGPS,
    setBT
}
```

### 3.2 写一个哈啰单车脚本

单车.js(和mokuai.js在同一个目录下)

```javascript
let { tools } = require("./mokuai.js");

tools.setBT(true);
tools.enableGPS();
tools.launchApp("哈啰");

var thread = threads.start(function(){
    sleep(1.5*60*1000);
    /**
   * 退出有两种条件:1.执行完成 2.超时
   */
   log("超时关闭")
   exit();
});

//开屏
let open=threads.start(()=>{
    let i=0;
    while(i<10){//延时次数
                //关闭弹窗
      if(id("com.jingyao.easybike:id/actionDialogClose").exists()){
            id("com.jingyao.easybike:id/actionDialogClose").findOne().click();
      }
                //扫一扫
      if(id("com.jingyao.easybike:id/scanLayout").exists()){
            id("com.jingyao.easybike:id/scanLayout").findOne().click();
      }
      i++;
      sleep(1000);
    }
});
```

因为加了线程,哪怕线程内的代码执行完了,脚本也不会自动结束。

所以加了线程超时关闭,调用exit()结束整个脚本。

DUANAYU 发表于 2024-5-21 09:21

不看代码,完全不知道脚本什么作用,还以为是领券的{:1_908:}
页: [1]
查看完整版本: Autojs6-使用蓝牙定位权限,编写哈啰单车脚本