QPython 悬浮窗与二维码扫描——移动端自动化的入口配套
悬浮窗
悬浮窗(Floating Window)允许 QPython 在任何 App 之上显示 UI 界面——包括 Toast 弹窗、Dialog 对话框、FSW2 Activity 的浮窗形式、自定义悬浮小球等。
悬浮窗的实际用途
| 场景 | 说明 |
|---|---|
| 跨 App 弹窗 | 你的脚本正在后台运行,需要向用户弹出一个提示(如传感器触发报警) |
| 控制面板 | 在任何 App 上显示一个控制按钮,一键触发脚本 |
| 调试反馈 | 在其他 App 使用过程中,显示实时调试信息 |
| FSW2 Activity 覆盖 | FSW2 构建的界面可以作为悬浮窗覆盖在其他 App 上 |
权限前置
悬浮窗权限必须授予(SYSTEM_ALERT_WINDOW)。没有这条权限,所有弹窗都会静默失败。检查方式:
- 系统设置 → 应用管理 → QPython → 权限 → 悬浮窗 → 允许
- 部分 ROM(MIUI、ColorOS)需要在「显示在其他应用上方」里打开
基本用法
from androidhelper import Android
droid = Android()
# 这个会在任何 App 上弹出 Toast
droid.makeToast("来自 QPython 的后台通知")
Toast 是最轻量的悬浮窗形式——不打断用户操作,几秒后自动消失。
自定义悬浮小球(部分版本支持)
某些 QPython 版本提供了自定义悬浮视图的 API,可以在屏幕上画一个小圆圈或半透明按钮,用户点击后触发动作。这在后台脚本场景下特别有用——脚本不用抢前台,用户想触发某个功能时点一下悬浮球就行。
具体 API 以实际版本为准。
二维码扫描
QPython 早期版本就把二维码扫描作为核心功能之一——用摄像头识别二维码内容。
基本用法
from androidhelper import Android
droid = Android()
result = droid.scanBarcode().result
print(f"扫描结果: {result}")
调用后会拉起相机界面,用户对准二维码扫描,扫描完成后返回解码后的字符串(通常是 URL 或文本)。
典型用途
场景一:扫码运行脚本
把 Python 脚本的下载链接编码成二维码,用 QPython 扫码后自动下载并运行:
import requests
from androidhelper import Android
droid = Android()
url = droid.scanBarcode().result
if url.startswith("http"):
response = requests.get(url)
# 把脚本保存到本地
with open("downloaded_script.py", "w") as f:
f.write(response.text)
# 执行
exec(response.text)
这个功能在团队协作场景下很有用——一个人写好脚本放到网上,其他人扫码就能拿到并运行。
场景二:扫码传数据
两台手机都装了 QPython,A 生成一个包含指令的二维码,B 扫描后执行:
# A 手机(生成二维码,需第三方库 qrcode)
import qrcode
data = "ACTION: start_monitoring"
img = qrcode.make(data)
img.save("action.png")
# B 手机(扫描并解析)
result = droid.scanBarcode().result
if result.startswith("ACTION:"):
action = result.split(":")[1].strip()
if action == "start_monitoring":
droid.startSensingTimed(1, 1000)
二维码生成
QPython 内置了扫描但没有直接提供生成 API。生成二维码的方式:
- 通过 QPYPI 安装
qrcode库(纯 Python,应该能装成功) - 生成图片后用
droid.takePicture或其他方式展示
import qrcode
from PIL import Image
img = qrcode.make("Hello QPython")
img.save("qr.png")
droid.makeToast("二维码已保存")
悬浮窗 + 二维码的组合场景
这两个功能组合起来可以做很多有意思的事情:
远程控制脚本
- 手机 A 上的 QPython 后台运行脚本,同时显示一个悬浮控制球
- 手机 B 扫 A 的屏幕二维码(包含远程控制 URL)
- B 的扫码结果通过网络传到 A,A 根据内容执行对应操作
扫码配置自动化
- 在电脑上生成一个包含自动化参数的二维码(如:开启传感器监听、采样频率 500ms、触发阈值 20)
- 手机 QPython 扫码后解析参数
- 脚本根据参数启动对应的自动化流程
权限需求
| 功能 | 需要的权限 |
|---|---|
| Toast / Dialog 弹窗 | 悬浮窗(SYSTEM_ALERT_WINDOW) |
| FSW2 浮窗 | 悬浮窗 |
| 二维码扫描 | 相机 + 存储(保存扫码图片时) |
小结
悬浮窗和二维码扫描是 QPython 移动端自动化能力的重要配套——悬浮窗让脚本可以在后台持续运行时与用户交互,二维码扫描让手机之间可以用图像快速传递指令和数据。两者组合起来可以做远程控制、扫码配置等高级玩法。
硬件与自动化部分到此结束。接下来是社区与资源,了解 QPython 的学习渠道和社区生态。