概览
摄像头应用常常需要光线:暗室里的安防摄像头、扫描器、夜间视频通话。KlugTorch 可在摄像头持续运行的同时开启和关闭摄像头补光灯(后置摄像头旁的 LED)。
KlugTorch 首先检测设备是否配有摄像头补光灯。许多平板和部分手机没有补光灯,因此应用可以直接在这些设备上隐藏补光灯按钮。
它可与实时摄像头推流并行工作。KlugTorch 不会自行打开摄像头,因此绝不会与推流争用摄像头。
使用 KlugMedia 推流的应用也可以使用其内置的补光灯控制。KlugTorch 每天都在我们的应用中使用,这就是我们的概念验证。
特性
- 自成一体:一个 ANE,无需添加核心库或依赖 ANE
- 检测设备是否配有摄像头补光灯
- 一次调用即可开启和关闭摄像头补光灯
- 在 iOS 上摄像头推流期间也可使用,不会中断
- 读取补光灯的当前状态
- 每次切换后都会触发变更事件,切换失败时同样如此
- iOS 和 Android 使用同一套 API
支持的平台
iOS arm64
Android arm64 · armv7
在没有摄像头补光灯的设备上以及其他平台上,isSupported 返回 false,因此同一份代码可以保留在每个应用中。
入门
将扩展添加到您的应用描述文件中:
<extensions>
<extensionID>com.klug.torch.Torch</extensionID>
</extensions>
补光灯位于后置摄像头旁,因此应使用后置摄像头。
代码示例
三个完整流程。on() 和 off() 立即返回;每次调用后都会触发变更事件,mode 会告诉您结果。完整文档 →
1 · 仅在有补光灯的设备上显示补光灯按钮
import com.klug.torch.Torch; import flash.events.Event; var torch:Torch = Torch.getInstance(); // iOS: true if the default (back) camera has a torch. // Android 6+: true if a back-facing camera has a flash. // False on devices without a light and on other platforms. lightButton.visible = torch.isSupported; // lightButton: your app's toggle button
2 · 切换补光灯并跟踪结果
var wantLight:Boolean = false; torch.addEventListener( Event.CHANGE, onTorchChange ); // after every on() / off() function setLight( on:Boolean ):void { wantLight = on; if ( on ) torch.on(); else torch.off(); } function onTorchChange( e:Event ):void { // the event carries no detail: read mode for the current state lightButton.selected = torch.mode; if ( torch.mode != wantLight ) // the light could not be switched showMessage( "The light is not available right now." ); // your app }
在 Android 上,当应用的其他部分占用摄像头时(例如来自 AIR 的 flash.media.Camera 的流),系统不会切换补光灯。此时 on() 以变更事件结束,mode 保持为 false。使用 KlugMedia 推流的应用请改用其 setTorch()。
3 · 摄像头停止时关闭补光灯
function stopStreaming():void { if ( torch.mode ) setLight( false ); // first the light, then the camera stopCamera(); // your app's stream shutdown torch.removeEventListener( Event.CHANGE, onTorchChange ); }
API 概览
| Torch.getInstance() | 返回唯一实例。 |
| isSupported | 仅当设备配有可用的摄像头补光灯时为 True:在 iOS 上,默认(后置)摄像头带有补光灯;在 Android 6+ 上,后置摄像头带有闪光灯。 |
| on() | 开启摄像头补光灯;随后触发变更事件。 |
| off() | 关闭摄像头补光灯;随后触发变更事件。 |
| mode | 补光灯开启时为 True。iOS 读取摄像头的补光灯状态;Android 报告最近一次成功的 on() / off() 的状态。 |
事件
| Event.CHANGE ("change") | 在每次 on() 和 off() 之后触发,补光灯无法切换时同样触发。请读取 mode 获取结果。 |
购买 KlugTorch
一个 AIR 应用的年度许可,含 12 个月内的所有更新。付款后,您将通过电子邮件收到扩展、ActionScript 库和文档,通常在一个工作日内。许可与条款
税费在结账时由 Link (Stripe) 计算。您需要在结账时输入 AIR 应用的应用 ID。
要求
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 或更高版本 |
| Android | Android 6.0 (API 23) 或更高版本 |
| 权限 | 无自有要求 |
| 硬件 | 后置摄像头旁的摄像头补光灯 |