手电筒使用指导
手电筒控制手机背面的闪光灯:开灯(On)、关灯(Off)、
切换开关(Toggle),以及查询是否开启(IsOn)。
工作原理
- 直接控制闪光灯,不打开相机、安卓上不需要相机权限,也不影响照相机组件;
- 重复开灯、重复关灯没有副作用;
- 离开屏幕(屏幕关闭)时组件会自动关灯,不会一直亮着;
- 设备没有闪光灯(大部分平板)或闪光灯正被其它 App 占用时,调用会弹出错误提示。
快速上手
when 按钮1.Click() {
手电筒1.Toggle()
}
点一下开灯,再点一下关灯。
案例一:带状态的开关按钮
按钮文字随状态变化,打开 App 时显示正确状态:
when Screen1.Initialize() {
更新按钮()
}
when 按钮_开关.Click() {
手电筒1.Toggle()
更新按钮()
}
procedure 更新按钮() {
if 手电筒1.IsOn() {
按钮_开关.Text = "关闭手电筒"
按钮_开关.BackgroundColor = &HFFFFC107
} else {
按钮_开关.Text = "打开手电筒"
按钮_开关.BackgroundColor = &HFFE0E0E0
}
}
案例二:SOS 闪烁信号
国际求救信号是「三短、三长、三短」。用计时器按节拍开关灯(计时器间隔 200 毫秒,一开始不启用):
global 节拍 = [1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0]
global 位置 = 1
when 按钮_SOS.Click() {
位置 = 1
计时器1.TimerEnabled = not 计时器1.TimerEnabled
if not 计时器1.TimerEnabled {
手电筒1.Off()
}
}
when 计时器1.Timer() {
if select(节拍, 位置) == 1 {
手电筒1.On()
} else {
手电筒1.Off()
}
位置 = 位置 + 1
if 位置 > length(节拍) {
位置 = 1
}
}
列表里 1 表示亮、0 表示灭,每一格 200 毫秒:短闪亮 1 格,长闪亮 3 格。改列表就能做出其它闪烁节奏。
案例三:光线暗了自动开灯
配合光线传感器:环境亮度低于 10 勒克斯时开灯,高于 50 时关灯(两个门槛不同,避免在临界亮度来回闪):
when 光线传感器1.LightChanged(照度值) {
if 照度值 < 10 {
手电筒1.On()
} else if 照度值 > 50 {
手电筒1.Off()
}
}
注意:闪光灯亮起后照到的光可能被传感器测到,门槛要按实际机型试一试。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 弹「手电筒操作失败」 | 设备没有闪光灯;闪光灯正被其它 App 或正在录像的相机占用 |
| 弹「需要 Android 6.0 及以上」 | 组件依赖安卓 6.0 引入的系统接口 |
| 离开 App 后灯还亮着 | 切到后台不会自动关(屏幕关闭才会);需要时在屏幕的「后退按键被按下」等时机调用关灯 |
| 鸿蒙上第一次开灯弹权限 | 鸿蒙控制闪光灯需要相机权限,允许后即可使用 |
| 联机调试点了没反应 | AI 伴侣版本太旧,不含本组件(打包 APK 不受影响) |
平台说明
- 安卓:6.0 及以上支持,不需要权限;
- 鸿蒙:支持,首次使用会请求相机权限。
完整 .aia 源码与操作指导
需要有闪光灯的真实设备,并允许摄像头权限。启动不会自动点亮,必须点按钮。可选择10秒自动关闭;测试完先关闭。伴侣可能已获得摄像头权限,拒绝权限测试可在系统应用设置中操作。
导入 FlashLightAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。
| API / 功能 | 操作入口 | 预期结果 |
|---|---|---|
| On | 点开启,允许摄像头权限 | 真实闪光灯点亮;500ms刷新实际状态,允许授权等待 |
| Off | 点关闭 | 闪光灯熄灭,状态区随后更新 |
| Toggle | 连续点切换,每次等状态更新 | 从关闭变开启,再从开启变关闭 |
| IsOn | 点读取,观察自动刷新 | 展示组件查询到的实际开关状态 |
| 自动关灯 | 勾选开关后点开启 | 实际开启约10秒后请求关闭;取消开关可持续开启 |
| 权限拒绝/无闪光灯 | 拒绝系统权限或用无闪光灯设备测试 | 错误区显示权限/硬件失败,不显示虚构成功 |
| 离开测试 | 点关闭并确认已熄灭 | 再退出伴侣或应用 |
所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。
手电筒
导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 需要有闪光灯的真实设备,并允许摄像头权限。启动不会自动点亮,必须点按钮。可选择10秒自动关闭;测试完先关闭。伴侣可能已获得摄像头权限,拒绝权限测试可在系统应用设置中操作。 覆盖检查 4/4。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。
扫码添加客服咨询