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()结束整个脚本。 不看代码,完全不知道脚本什么作用,还以为是领券的{:1_908:}
页:
[1]