案例
# HID判断手机电量操作电控开关
function 充电设置(min, max) {
let ok = true;
//检测10次保证状态正常
for (let i = 0; i < 10; i++) {
电量 = device.getBatteryLevel();
printl(电量)
//电量大于80并且正在充电
if (电量 >= max && device.isCharging() == true) {
//结束充电
printl("结束充电")
hid.setPowerOff();
sleep.second(5);
//确实没充电
if (device.isCharging() == false) {
ok = true;
break;
} else {
ok = false;
}
} else {
//否则电量小于25并且没有充电则开始充电
if (电量 <= min && device.isCharging() == false) {
//充电
printl("充电")
hid.setPowerOn();
sleep.second(5);
//确实已经开始充电
if (device.isCharging() == true) {
ok = true;
break;
} else {
ok = false;
}
}
}
}
if (ok == true) {
printl("控电正常")
return true;
} else {
printl("控电异常")
return false;
}
}
充电设置(76, 80)
# 判断HID是否已经连接
/**
* 检查HID是否连接
* @returns {boolean} 返回HID连接状态,true表示连接成功,false表示未连接
* @Author 飞云
*/
function isHidConnect() {
// 初始化结果为false,表示默认未连接
let result = false;
// 检查HID设备是否已连接
if (!hid.isOn()) {
// 如果未连接,输出连接提示
console.log('HID Connect...');
// 尝试通过BLE连接HID设备(必须先配对)
hid.connetBLE();
// 暂停3秒,等待连接过程完成
sleep.millisecond(3 * 1000);
}
// 再次检查HID设备的连接状态
if (!hid.isOn()) {
// 如果仍未连接,弹出警告提示用户进行手动配对
JsAlert.alert('HID未连接,请从悬浮窗进入蓝牙设置后,手动配对');
} else {
// 如果连接成功,输出成功提示
console.log('Success:HID Connect');
// 更新结果为true,表示连接成功
result = true;
}
// 返回HID的连接状态
return result;
}
// 调用函数并输出结果
printl(isHidConnect());
# 驱动
/*
有问题联系:1390373898
/*
/*
9123 这个是请求的端口,固定死的,不能其他任意端口冲突
http://127.0.0.1:9123 这个是手机的地址,通用,安卓脚本在本机运行用的,pc端脚本和服务端脚本不能这样用
http://92.168.1.4:9123 这个是手机内网地址,注意你自己手机内网地址,前面的是一个案例地址,随便写的.一般是易语言开发,网页,服务端开发用,也可以内网穿透
2个都可以用
*/
//这个玩意必须有 他是函数类
const 键鼠 = {};
/*
判断是否链接了HID
成功true
失败false
*/
键鼠.是否链接=function(){
var ret = http.get("http://127.0.0.1:9123/ison")
if (ret.statusCode == 200){
if (r.body.string()=="true")return true;
}
return false;
}
//设置为USB设备模式(支持三模设备,双模设备不支持) 待机状态usb模式灯常亮● 连接成功为快闪.需要多模版服务端
键鼠.切换USB=function(){
var ret = http.get("http://127.0.0.1:9123/setModel?model=usb")
if (ret.statusCode == 200){
if (r.body.string()=="true")return true;
}
return false;
}
//设置为OTG设备模式(支持双模,和三模设备)OTG模式待机状态灯是 慢闪 ●●●●●●●● 连接成功为快闪.需要多模版服务端
键鼠.切换OTG = function () {
var ret = http.get("http://127.0.0.1:9123/setModel?model=otg")
if (ret.statusCode == 200){
if (r.body.string()=="true")return true;
}
return false;
}
//设置为蓝牙设备模式(支持双模,和三模设备) 蓝牙模式待机状态灯是 闪2次灭一次 ●●○●●○●●○ 连接成功为快闪.需要多模版服务端
键鼠.切换蓝牙 = function () {
var ret = http.get("http://127.0.0.1:9123/setModel?model=ble")
if (ret.statusCode == 200){
if (r.body.string()=="true")return true;
}
return false;
}
/*
x 整数,x坐标
y 整数,y坐标
*/
键鼠.点击 = function (x, y) {
var ret = http.get("http://127.0.0.1:9123/click?x=" + x + "&y=" + y);
if (ret.statusCode == 200) return true;
return false;
}
/*
x 整数,x坐标
y 整数,y坐标
s 整数,点击次数
t 整数,每次间隔时间
.需要多模版服务端
*/
键鼠.连续点击 = function (x, y,s,t) {
var ret = http.get("http://127.0.0.1:9123/clicks?x=" + x + "&y=" + y+"&s="+s+"&t="+t);
if (ret.statusCode == 200) return true;
return false;
}
/*
x 整数,x坐标
y 整数,y坐标
*/
键鼠.随机点击 = function (x, y) {
var getRandomInt =(min, max)=> {
min = Math.ceil(min); // 将最小值向上取整
max = Math.floor(max); // 将最大值向下取整
return Math.floor(Math.random() * (max - min + 1)) + min; // 包含最大值和最小值
}
var x=x+getRandomInt(-10,10);
var y=y+getRandomInt(-10,10);
var ret = http.get("http://127.0.0.1:9123/click?x=" + x + "&y=" + y);
if (ret.statusCode == 200) return true;
return false;
}
/*
---x1,y1 整数,起点坐标
---x2,y2 整数,终点坐标
---steps 整数,起点到终点分成多少段滑动,建议写10~50
---downTime 整数,每一段距多少时间完成,注意是每一段距离,不是起点到点完成滑动时间,单位毫秒,建议写5~10,不能写0~1,你可以理解滑动速度,
如果想拖动,可以写50~100,假如你steps写10,分10段,downTime写20,那么完成时间是10*20毫秒
---upTime 整数,完成后等待多少时间抬起,单位毫秒,建议写10~50
*/
键鼠.滑动 = function (x1, y1, x2, y2, steps, downTime, upTime) {
var steps = steps || 5;
var downTime = downTime || 10;
var upTime = upTime || 10;
var ret = http.get("http://127.0.0.1:9123/swip?x1=" + x1 + "&y1=" + y1 + "&x2=" + x2 + "&y2=" + y2 + "&steps=" + steps + "&downTime=" + downTime + "&upTime=" + upTime);
if (ret.statusCode == 200) return true;
return false;
}
/*
---x1,y1 整数,起点坐标
---x2,y2 整数,终点坐标
---press 整数,按下时间毫秒,建议写10~1000,写大就是拖动了
---time 整数,起点到终点完成滑动时间,单位毫秒,建议写50~1500,不能写0~1,你可以理解完成速度,
---delay 整数,完成后等待多少时间抬起,单位毫秒,建议写10~50
.需要多模版服务端
*/
键鼠.滑动增强版 = function (x1, y1, x2, y2, press, time, delay) {
var press = steps || 10;
var time = downTime || 50;
var delay = delay || 10;
var ret = http.get("http://127.0.0.1:9123/swip?x1=" + x1 + "&y1=" + y1 + "&x2=" + x2 + "&y2=" + y2 + "&press=" + press + "&time=" + time + "&delay=" + delay);
if (ret.statusCode == 200) return true;
return false;
}
/*
---id 整数,模式按下 手指id 0~4,参考懒人
---x 整数,x坐标
---y 整数,y坐标
*/
键鼠.模式按下 = function (id, x, y) {
var ret = http.get("http://127.0.0.1:9123/touchDown?id=" + id + "&x=" + x + "&y=" + y);
if (ret.statusCode == 200) return true;
return false;
}
/*
---id 整数,模式滑动,手指id 0~4,参考懒人
---x 整数,终点x坐标
---y 整数,终点y坐标
*/
键鼠.模式滑动 = function (id, x, y) {
var ret = http.get("http://127.0.0.1:9123/touchMove?id=" + id + "&x=" + x + "&y=" + y);
if (ret.statusCode == 200) return true;
return false;
}
/*
---id 整数,抬起手指,手指id 0~4,参考懒人
*/
键鼠.模式抬起 = function (id) {
var ret = http.get("http://127.0.0.1:9123/touchUp?id=" + id);
if (ret.statusCode == 200) return true;
return false;
}
/*
--可以作为上滑动用,上翻页,注意有的视频页也不能滑动,都需要你自测试项目,有的设备用不了,你只能想办法了
*/
键鼠.向上移动 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=81");
if (ret.statusCode == 200) return true;
return false;
}
/*
--可以作为下滑动用,下翻页,注意有的视频页也不能滑动,都需要你自测试项目,有的设备用不了,你只能想办法了
*/
键鼠.向下移动 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=82");
if (ret.statusCode == 200) return true;
return false;
}
/*
--可以作为左滑动用,左翻页,注意有的视频页也不能滑动,都需要你自测试项目,有的设备用不了,你只能想办法了
*/
键鼠.向左移动 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=80");
if (ret.statusCode == 200) return true;
return false;
}
/*
--可以作为右滑动用,右翻页,注意有的视频页也不能滑动,都需要你自测试项目,有的设备用不了,你只能想办法了
*/
键鼠.向右移动 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=79");
if (ret.statusCode == 200) return true;
return false;
}
//#有的设备用不了,你只能想办法了
键鼠.主页键 = function () {
var ret = http.get("http://127.0.0.1:9123/home");
if (ret.statusCode == 200) return true;
return false;
}
//#有的设备用不了,你只能想办法了
键鼠.返回键 = function () {
var ret = http.get("http://127.0.0.1:9123/back");
if (ret.statusCode == 200) return true;
return false;
}
//#有的设备用不了,你只能想办法了
键鼠.后台键 = function () {
var ret = http.get("http://127.0.0.1:9123/recents");
if (ret.statusCode == 200) return true;
return false;
}
//输入框文本复制,有的设备用不了,你只能想办法了
键鼠.复制键 = function () {
var ret = http.get("http://127.0.0.1:9123/copy");
if (ret.statusCode == 200) return true;
return false;
}
//输入框文本粘贴,有的设备用不了,你只能想办法了
键鼠.粘贴键 = function () {
var ret = http.get("http://127.0.0.1:9123/paste");
if (ret.statusCode == 200) return true;
return false;
}
//输入框文本剪切,有的设备用不了,你只能想办法了
键鼠.剪切键 = function () {
var ret = http.get("http://127.0.0.1:9123/cut");
if (ret.statusCode == 200) return true;
return false;
}
/*
--输入框文本删除,只能一个一个删除,所以你需要循环多次,#有的设备用不了,你只能想办法了
*/
键鼠.删除键 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=76");
if (ret.statusCode == 200) return true;
return false;
}
//#选择输入框全部文本,有的设备用不了,你只能想办法了
键鼠.全选键 = function () {
var ret = http.get("http://127.0.0.1:9123/selectAll");
if (ret.statusCode == 200) return true;
return false;
}
/*
---keyCode 整数,按键码,百度去找电脑的按键编码,注意是电脑的,不是安卓的,和安卓不一样.传电脑键盘数字按键编码
---modify 整数 组合功能键,直接默认0,安卓不用,比如ctrl+v,不要问为什么
---,有的设备用不某些按键码,你只能想办法了,按键码参考地址: https://blog.csdn.net/u011119684/article/details/124978540
*/
键鼠.模式按键 = function (keyCode, modify) {
var modify = modify || 0;
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=" + modify + "&keyCode="..keyCode);
if (ret.statusCode == 200) return true;
return false;
}
/*
#有的设备用不了,你只能想办法了
*/
键鼠.截屏键 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=70");
if (ret.statusCode == 200) return true;
return false;
}
/*
#有的设备用不了,你只能想办法了
*/
键鼠.暂停键 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=72");
if (ret.statusCode == 200) return true;
return false;
}
/*
#有的设备用不了,你只能想办法了
*/
键鼠.上一页键 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=75");
if (ret.statusCode == 200) return true;
return false;
}
/*
#有的设备用不了,你只能想办法了
*/
键鼠.下一页键 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=78");
if (ret.statusCode == 200) return true;
return false;
}
键鼠.按下A键 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=4");
if (ret.statusCode == 200) return true;
return false;
}
键鼠.按下一键 = function () {
var ret = http.get("http://127.0.0.1:9123/keyPress?modify=0&keyCode=39");
if (ret.statusCode == 200) return true;
return false;
}
/*
区域多点找色
Color 字符串,颜色值,比如#ff39cbf4
Color_arr 字符串[],颜色值,比如[-7, -22, "#ff2dc0ef"]
*/
function 区域找色(Color, Color_arr) {
var img = images.captureScreen();
if (!img) return null;
var p = images.findMultiColors(img, Color, Color_arr);
if (p) {
return { x: p.x, y: p.y };
}
return null;
}
images.requestScreenCapture(); //请求截图权限
键鼠.模式按下(0, 665, 557)
sleep(2000)
键鼠.模式抬起(0)
/* while(true){
var point = 区域找色("#ff39cbf4", [[-7, -22, "#ff2dc0ef"], [-13, 2, "#ffffffff"], [-28, -33, "#ff9bdcf5"]]);
if (point) {
console.log("找到啦:" + point.x + "," + point.y);
//键鼠.点击(point.x, point.y);
键鼠.模式按下(0, point.x, point.y)
sleep(50)
键鼠.模式抬起(0)
sleep(2000)
键鼠.主页键();
}
sleep(1000)
}
*/
//键鼠.滑动(858,1650,90,1650,20,200,300)
/* while (true) {
键鼠.点击(665, 557)
sleep(2000)
键鼠.主页键()
sleep(1000)
}
*/
//click(665,557) //点击
//home() //主页键
/*
while (true) {
//["#ff39cbf4",[[0,0,"#ff39cbf4"],[-7,-22,"#ff2dc0ef"],[-13,2,"#ffffffff"],[-28,-33,"#ff9bdcf5"]]]
var point = 区域找色("#ff39cbf4", [[-7, -22, "#ff2dc0ef"], [-13, 2, "#ffffffff"], [-28, -33, "#ff9bdcf5"]]);
if (point) {
console.log("找到啦:" + point.x + "," + point.y);
var c = 键鼠.模式按下(0, point.x, point.y)
console.log(c);
sleep(50)
键鼠.模式抬起(0)
sleep(2000)
键鼠.主页键()
sleep(1000);
toast('正在运行脚本!')
}
}
*/
上次更新: 2024/11/05, 13:43:57