回答
脚本和设备之间的通信主要依赖于 Hamibot 提供的运行环境和 API 接口。除了蓝牙和网络请求外,脚本还可以通过以下方式与设备进行交互:
-
共享存储(Storage)
脚本可以通过storages模块在设备本地读写持久化数据。多个脚本或应用之间可以共享这些数据,实现信息传递。例如:// 文档地址 https://docs.hamibot.com/ var storage = storages.create("shared"); storage.put("key", "value"); var value = storage.get("key"); -
环境变量(hamibot.env)
在调用脚本时,可以通过 API 的vars参数传入配置,脚本内部使用hamibot.env获取。这种方式常用于动态控制脚本行为。// 文档地址 https://docs.hamibot.com/ log(hamibot.env.var1); -
剪贴板(Clipboard)
脚本可以读取和修改设备的剪贴板内容,与其他应用交换简单数据。// 文档地址 https://docs.hamibot.com/ setClip("Hello from Hamibot"); var clipData = getClip(); -
通知监听(Notification Listener)
脚本可注册通知监听器,捕获设备上的通知信息并做出响应,实现基于事件的通信。 -
无障碍服务(Accessibility Service)
Hamibot 利用无障碍服务获取界面节点信息,模拟点击、滑动等操作,从而与设备上运行的应用进行深度交互。 -
文件系统
脚本可以在设备的指定目录下读写文件,用于存储日志、配置或临时数据,适用于大量数据的存取。
以上方式均在 Hamibot 的安全沙箱环境中运行,确保操作的安全性和稳定性。
补充回答 1
不同的设备之间无法直接通过 Hamibot 的脚本环境进行点对点通信,但可以通过以下几种间接方式实现跨设备信息传递:
-
云端共享变量(Vars)
你可以在调用脚本时通过 API 的vars参数为不同设备传递统一配置。这些变量可通过服务器下发,多个设备执行脚本时读取相同的远程数据。// 文档地址 https://docs.hamibot.com/ log(hamibot.env.sharedKey); -
外部服务器中转(HTTP 请求)
使用http模块将数据发送到第三方服务器或云函数(如阿里云 FC、腾讯云 SCF),其他设备通过请求同一接口获取数据,实现设备间通信。// 文档地址 https://docs.hamibot.com/ http.request('https://your-server.com/data', { method: 'POST', body: 'device1_data' }); -
广播事件(events.broadcast)
如果多台设备在同一局域网并运行相关脚本,可结合 UDP/TCP 等网络协议自行实现广播机制。虽然 Hamibot 不支持设备间直接广播,但可通过局域网内的 HTTP 服务或 Socket 通信达成。 -
消息队列或实时数据库
利用 Firebase、MQTT 等服务作为中介,一台设备发布消息,另一台设备订阅接收,实现异步通信。 -
剪贴板同步 + 外部服务辅助
将数据写入剪贴板并通过网络上传,其他设备从服务器下载后设置本地剪贴板。
综上,Hamibot 本身不提供设备间的直接通信通道,所有跨设备交互都需要依赖外部服务或中心化数据源来协调。建议使用 HTTP 接口配合轻量级后端服务实现稳定可靠的通信逻辑。