BLE 蓝牙键鼠
更新: 2025/7/20 字数: 0 字 时长: 0 分钟
BLE 模块提供了通过蓝牙低功耗(BLE)控制设备的接口,包括触摸操作、按键模拟、文本输入等功能。
导入BLE类
importClass("com.cloud.hid.BLE");
初始化与连接
BLE.init(context)
初始化 BLE 控制器
参数:context
:Android 上下文对象
返回值:boolean
:初始化是否成功
示例:
var result = BLE.init(context);
console.log('初始化结果:', result);
BLE.checkBlePermissions([context])
检查 BLE 权限,如果没有权限需要提示用户开启蓝牙权限、位置信息权限。否则无法连接成功
参数:context
(可选): Android 上下文对象
返回值:boolean
: 是否有权限
示例:
var hasPermission = BLE.checkBlePermissions();
console.log('是否有BLE权限:', hasPermission);
BLE.connect([mac])
连接 ESP32 设备
参数:mac
(可选): 指定设备的 MAC 地址
返回值:boolean
: 连接是否成功
示例:
var result = BLE.connect();
console.log('连接结果:', result);
// 连接指定设备
var result2 = BLE.connect("AA:BB:CC:DD:EE:FF");
console.log('指定设备连接结果:', result2);
BLE.restart()
重启 ESP32 设备
返回值:boolean
: 操作是否成功
示例:
var result = BLE.restart();
console.log('重启结果:', result);
BLE.onDestroy()
销毁 BLE 控制器
示例:
BLE.onDestroy();
console.log('BLE控制器已销毁');
BLE.state()
获取 ESP32 设备状态
返回值:boolean
: 设备状态
示例:
var state = BLE.state();
console.log('设备状态:', state);
按键操作
BLE.home()
模拟 HOME 主页键
返回值:boolean
: 操作是否成功
示例:
var result = BLE.home();
console.log('HOME键操作结果:', result);
BLE.back()
模拟 BACK 返回键
返回值:boolean
: 操作是否成功
示例:
var result = BLE.back();
console.log('BACK键操作结果:', result);
BLE.recents()
模拟最近任务键
返回值:boolean
: 操作是否成功
示例:
var result = BLE.recents();
console.log('最近任务键操作结果:', result);
注意事项
输入法相关按键部分手机不兼容,建议使用Bot.js系统提供的脚本输入法以解决此问题。
BLE.enter()
模拟 ENTER 回车键
返回值:boolean
: 操作是否成功
示例:
var result = BLE.enter();
console.log('ENTER键操作结果:', result);
BLE.selectAll()
全选操作
返回值:boolean
: 操作是否成功
示例:
var result = BLE.selectAll();
console.log('全选操作结果:', result);
BLE.screenshot()
截图操作
返回值:boolean
: 操作是否成功
示例:
var result = BLE.screenshot();
console.log('截图操作结果:', result);
BLE.cut()
剪切操作
返回值:boolean
: 操作是否成功
示例:
var result = BLE.cut();
console.log('剪切操作结果:', result);
BLE.copy()
复制操作
返回值:boolean
: 操作是否成功
示例:
var result = BLE.copy();
console.log('复制操作结果:', result);
BLE.paste()
粘贴操作
返回值:boolean
: 操作是否成功
示例:
var result = BLE.paste();
console.log('粘贴操作结果:', result);
BLE.input(str)
输入文本
参数:str
: 要输入的文本
返回值:boolean
: 操作是否成功
示例:
var result = BLE.input("Hello cloud"); // 无法输入中文,可以用设置剪切板 setClip(text) + 粘贴键 BLE.paste() 或者使用Bot.js系统提供的脚本输入法
console.log('输入操作结果:', result);
BLE.delete([i])
删除操作
参数:i
(可选): 删除次数,默认为1
返回值:boolean
: 操作是否成功
示例:
var result = BLE.delete(3); // 删除3次
console.log('删除操作结果:', result);
BLE.backspace([i])
退格操作
参数:i
(可选): 退格次数,默认为1
返回值:boolean
: 操作是否成功
示例:
var result = BLE.backspace(2); // 退格2次
console.log('退格操作结果:', result);
触摸操作
BLE.touchDown(id, x, y)
按下触摸点
参数:
id
: 触摸点IDx
: X坐标y
: Y坐标
返回值:boolean
: 操作是否成功
示例:
var result = BLE.touchDown(1, 100, 200);
console.log('按下触摸点结果:', result);
BLE.touchMove(id, x, y)
移动触摸点
参数:
id
: 触摸点IDx
: X坐标y
: Y坐标
返回值:boolean
: 操作是否成功
示例:
var result = BLE.touchMove(1, 150, 250);
console.log('移动触摸点结果:', result);
BLE.touchUp(id)
抬起触摸点
参数:
id
: 触摸点ID
返回值:boolean
: 操作是否成功
示例:
var result = BLE.touchUp(1);
console.log('抬起触摸点结果:', result);
BLE.click(x, y)
点击坐标
参数:
x
: X坐标y
: Y坐标
返回值:boolean
: 操作是否成功
示例:
var result = BLE.click(300, 500);
console.log('点击操作结果:', result);
BLE.press(x, y, duration)
长按坐标
参数:
x
: X坐标y
: Y坐标duration
: 持续时间(毫秒)
返回值:boolean
: 操作是否成功
示例:
var result = BLE.press(300, 500, 1000); // 长按1秒
console.log('长按操作结果:', result);
BLE.swipeDetailed(startX, startY, endX, endY, steps, downTime, duration, upTime)
详细滑动操作
参数:
startX
: 起点X坐标startY
: 起点Y坐标endX
: 终点X坐标endY
: 终点Y坐标steps
: 滑动步数downTime
: 按下延迟(毫秒)duration
: 滑动持续时间(毫秒)upTime
: 抬起延迟(毫秒)
返回值:boolean
: 操作是否成功
示例:
var result = BLE.swipeDetailed(100, 200, 300, 400, 10, 0, 500, 0);
console.log('详细滑动操作结果:', result);
BLE.swipeShape(startX, startY, endX, endY, steps, downTime, duration, upTime, shape)
曲线滑动
参数:
startX
:起点 X 坐标startY
:起点 Y 坐标endX
:终点 X 坐标endY
:终点 Y 坐标steps
:滑动步数downTime
:按下延迟(毫秒)duration
:滑动持续时间(毫秒)upTime
:抬起延迟(毫秒)shape
:滑动形状(1-6)
返回值:
boolean
:操作是否成功
示例:
var result = BLE.swipeShape(100, 200, 300, 400, 10, 0, 500, 0, 1);
console.log('BLE曲线滑动操作结果:', result);
键盘操作
BLE.keyPress(modifier, keyCode) / BLE.keyPress(keyCode)
按键按下(必须得释放,否则可能导致后期按键异常)
参数:
modifier
: 修饰键keyCode
: 按键代码
或keyCode
: 按键代码
返回值:boolean
: 操作是否成功
示例:
var result1 = BLE.keyPress(135, 176); // 组合键实现主页键效果
console.log('组合按键结果:', result1);
var result2 = BLE.keyPress(204); // 截屏键 按下必须得释放 否则可能导致后期按键异常
console.log('单键按下结果:', result2);
sleep(200);
var resultKeyRelease = BLE.keyRelease(204);
console.log("释放键结果: " + resultKeyRelease);
BLE.keyWrite(keyCode)
按键写入
参数:
keyCode
: 按键代码
返回值:boolean
: 操作是否成功
示例:
var result = BLE.keyWrite(204); // 截屏键
console.log('按键写入结果:', result);
BLE.keyRelease([keyCode])
按键释放
参数:
keyCode
(可选): 指定按键代码,不传则释放所有按键
返回值:boolean
: 操作是否成功
示例:
var result1 = BLE.keyRelease(204); // 释放截屏键
console.log('释放指定键结果:', result1);
var result2 = BLE.keyRelease(); // 释放所有按键
console.log('释放所有键结果:', result2);
完整示例代码
/* 导入 */
importClass("com.cloud.hid.BLE");
/* 销毁 */
BLE.onDestroy();
/* 初始化 */
var resultIsInit = BLE.init(context);
console.log("初始化: " + resultIsInit);
/* 设置上下文(无返回值) */
BLE.setContext(context);
/* 获取上下文 */
var resultBleContext = BLE.getContext(context);
console.log("获取上下文: " + resultBleContext);
/* 检查权限 如果没有权限请开启蓝牙权限、位置信息权限*/
var resultHasPermission = BLE.checkBlePermissions(context);
console.log("是否有权限: " + resultHasPermission);
/* 连接默认设备 */
var resultIsConnected = BLE.connect();
console.log("连接默认设备: " + resultIsConnected);
// /* 连接指定 MAC 设备 */
// var mac = "AA:BB:CC:DD:EE:FF";
// var resultIsMacConnected = BLE.connect(mac);
// console.log("连接指定设备: " + resultIsMacConnected);
// /* 重启ESP32 设备 */
// var resultIsRestarted = BLE.restart();
// console.log("重启: " + resultIsRestarted);
/* 当前状态 */
var resultState = BLE.state();
console.log("BLE 状态: " + resultState);
/* 基础按键操作 */
var resultBack = BLE.back();
console.log("点击返回: " + resultBack);
var resultHome = BLE.home();
console.log("点击主页: " + resultHome);
var resultRecents = BLE.recents();
console.log("点击最近任务: " + resultRecents);
var resultEnter = BLE.enter();
console.log("点击回车: " + resultEnter);
/* 输入操作 */
var resultInput = BLE.input("adb123");
console.log("输入文字结果: " + resultInput);
/* 删除、退格操作 */
var resultDel = BLE.delete();
console.log("删除1个字符: " + resultDel);
var resultDel3 = BLE.delete(3);
console.log("删除3个字符: " + resultDel3);
var resultBackspace = BLE.backspace();
console.log("退格1个字符: " + resultBackspace);
var resultBackspace3 = BLE.backspace(3);
console.log("退格3个字符: " + resultBackspace3);
/* 粘贴复制剪切 */
var resultPaste = BLE.paste();
console.log("粘贴: " + resultPaste);
var resultCopy = BLE.copy();
console.log("复制: " + resultCopy);
var resultCut = BLE.cut();
console.log("剪切: " + resultCut);
var resultSelectAll = BLE.selectAll();
console.log("全选: " + resultSelectAll);
/* 按键模拟 */
var resultKeyWrite = BLE.keyWrite(212); /* 删除键 */
console.log("写键结果: " + resultKeyWrite);
var resultKeyWrite = BLE.keyWrite(178); /* 退格键 */
console.log("写键结果: " + resultKeyWrite);
/* 组合键模拟 */
var resultKey = BLE.keyPress(135, 176);
console.log("主页键 发送结果: " + resultKey);
/* 通过按下+释放模拟截图键 */
var resultKeySingle = BLE.keyPress(204);
console.log("单个键发送结果: " + resultKeySingle);
sleep(200)
var resultKeyRelease = BLE.keyRelease(204);
console.log("释放键结果: " + resultKeyRelease);
/* 模拟截图键 */
var resultKeyWrite = BLE.keyWrite(204);
console.log("写键结果: " + resultKeyWrite);
var resultKeyWrite = BLE.keyWrite(42);
console.log("写键结果: " + resultKeyWrite);
/* 点击坐标 */
var resultClicked = BLE.click(300, 400);
console.log("点击结果: " + resultClicked);
var resultPressed = BLE.press(300, 400, 1000);
console.log("长按结果: " + resultPressed);
/* 滑动 */
var resultSwipe = BLE.swipeShape(200, 500, 600, 500, 50, 200, 2000, 3000, 3);
console.log("形状滑动(SL)结果: " + resultSwipe);
BLE 与 USB 模块的主要区别
- 连接方式不同:BLE 使用蓝牙无线连接,USB 使用有线连接
- 性能差异:BLE 相比 USB 通常延迟稍高,且可能受无线干扰影响
- 功能差异:BLE 的
screenshot()
方法使用的按键代码为204
,而 USB 使用70
- 使用场景:对无线便捷性有要求时推荐使用 BLE,对操作延迟或稳定性要求较高时推荐使用 USB
注意事项
- 使用 BLE 模式需要确保设备已开启蓝牙并授予必要权限
- 部分 BLE 功能可能依赖设备蓝牙版本与厂商支持
- 坐标参数需要根据实际屏幕分辨率进行调整
- 操作间隔不宜过短,以免造成设备响应不及时