跳转到内容

BLE 蓝牙键鼠

更新: 2025/7/20 字数: 0 字 时长: 0 分钟

BLE 模块提供了通过蓝牙低功耗(BLE)控制设备的接口,包括触摸操作、按键模拟、文本输入等功能。

导入BLE类

js
importClass("com.cloud.hid.BLE");

初始化与连接

BLE.init(context)

初始化 BLE 控制器

参数:
context:Android 上下文对象

返回值:
boolean:初始化是否成功

示例:

js
var result = BLE.init(context);
console.log('初始化结果:', result);

BLE.checkBlePermissions([context])

检查 BLE 权限,如果没有权限需要提示用户开启蓝牙权限、位置信息权限。否则无法连接成功

参数:
context (可选): Android 上下文对象

返回值:
boolean: 是否有权限

示例:

js
var hasPermission = BLE.checkBlePermissions();
console.log('是否有BLE权限:', hasPermission);

BLE.connect([mac])

连接 ESP32 设备

参数:
mac (可选): 指定设备的 MAC 地址

返回值:
boolean: 连接是否成功

示例:

js
var result = BLE.connect();
console.log('连接结果:', result);
js
// 连接指定设备
var result2 = BLE.connect("AA:BB:CC:DD:EE:FF");
console.log('指定设备连接结果:', result2);

BLE.restart()

重启 ESP32 设备

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.restart();
console.log('重启结果:', result);

BLE.onDestroy()

销毁 BLE 控制器

示例:

js
BLE.onDestroy();
console.log('BLE控制器已销毁');

BLE.state()

获取 ESP32 设备状态

返回值:
boolean: 设备状态

示例:

js
var state = BLE.state();
console.log('设备状态:', state);

按键操作

BLE.home()

模拟 HOME 主页键

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.home();
console.log('HOME键操作结果:', result);

BLE.back()

模拟 BACK 返回键

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.back();
console.log('BACK键操作结果:', result);

BLE.recents()

模拟最近任务键

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.recents();
console.log('最近任务键操作结果:', result);

注意事项

输入法相关按键部分手机不兼容,建议使用Bot.js系统提供的脚本输入法以解决此问题。

BLE.enter()

模拟 ENTER 回车键

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.enter();
console.log('ENTER键操作结果:', result);

BLE.selectAll()

全选操作

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.selectAll();
console.log('全选操作结果:', result);

BLE.screenshot()

截图操作

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.screenshot();
console.log('截图操作结果:', result);

BLE.cut()

剪切操作

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.cut();
console.log('剪切操作结果:', result);

BLE.copy()

复制操作

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.copy();
console.log('复制操作结果:', result);

BLE.paste()

粘贴操作

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.paste();
console.log('粘贴操作结果:', result);

BLE.input(str)

输入文本

参数:
str: 要输入的文本

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.input("Hello cloud"); // 无法输入中文,可以用设置剪切板 setClip(text) + 粘贴键 BLE.paste() 或者使用Bot.js系统提供的脚本输入法
console.log('输入操作结果:', result);

BLE.delete([i])

删除操作

参数:
i (可选): 删除次数,默认为1

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.delete(3); // 删除3次
console.log('删除操作结果:', result);

BLE.backspace([i])

退格操作

参数:
i (可选): 退格次数,默认为1

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.backspace(2); // 退格2次
console.log('退格操作结果:', result);

触摸操作

BLE.touchDown(id, x, y)

按下触摸点

参数:

  • id: 触摸点ID
  • x: X坐标
  • y: Y坐标

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.touchDown(1, 100, 200);
console.log('按下触摸点结果:', result);

BLE.touchMove(id, x, y)

移动触摸点

参数:

  • id: 触摸点ID
  • x: X坐标
  • y: Y坐标

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.touchMove(1, 150, 250);
console.log('移动触摸点结果:', result);

BLE.touchUp(id)

抬起触摸点

参数:

  • id: 触摸点ID

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.touchUp(1);
console.log('抬起触摸点结果:', result);

BLE.click(x, y)

点击坐标

参数:

  • x: X坐标
  • y: Y坐标

返回值:
boolean: 操作是否成功

示例:

js
var result = BLE.click(300, 500);
console.log('点击操作结果:', result);

BLE.press(x, y, duration)

长按坐标

参数:

  • x: X坐标
  • y: Y坐标
  • duration: 持续时间(毫秒)

返回值:
boolean: 操作是否成功

示例:

js
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: 操作是否成功

示例:

js
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:操作是否成功

示例:

js
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: 操作是否成功

示例:

js
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: 操作是否成功

示例:

js
var result = BLE.keyWrite(204); // 截屏键
console.log('按键写入结果:', result);

BLE.keyRelease([keyCode])

按键释放

参数:

  • keyCode (可选): 指定按键代码,不传则释放所有按键

返回值:
boolean: 操作是否成功

示例:

js
var result1 = BLE.keyRelease(204); // 释放截屏键
console.log('释放指定键结果:', result1);

var result2 = BLE.keyRelease(); // 释放所有按键
console.log('释放所有键结果:', result2);

完整示例代码

js
/* 导入 */
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 功能可能依赖设备蓝牙版本与厂商支持
  • 坐标参数需要根据实际屏幕分辨率进行调整
  • 操作间隔不宜过短,以免造成设备响应不及时