← 所有扩展

原生扩展

KlugTorch

com.klug.torch.Torch

无需 APM。下载即用,再简单不过。

检测设备是否配有摄像头补光灯,并可将其开启和关闭。在 iOS 上,即使摄像头正在推流也可使用,且不会中断推流。

iOSAndroid 已投入生产 €19 / 年起 · 购买

概览

摄像头应用常常需要光线:暗室里的安防摄像头、扫描器、夜间视频通话。KlugTorch 可在摄像头持续运行的同时开启和关闭摄像头补光灯(后置摄像头旁的 LED)。

KlugTorch 首先检测设备是否配有摄像头补光灯。许多平板和部分手机没有补光灯,因此应用可以直接在这些设备上隐藏补光灯按钮。

它可与实时摄像头推流并行工作。KlugTorch 不会自行打开摄像头,因此绝不会与推流争用摄像头。

使用 KlugMedia 推流的应用也可以使用其内置的补光灯控制。KlugTorch 每天都在我们的应用中使用,这就是我们的概念验证。

特性

  • 自成一体:一个 ANE,无需添加核心库或依赖 ANE
  • 检测设备是否配有摄像头补光灯
  • 一次调用即可开启和关闭摄像头补光灯
  • 在 iOS 上摄像头推流期间也可使用,不会中断
  • 读取补光灯的当前状态
  • 每次切换后都会触发变更事件,切换失败时同样如此
  • iOS 和 Android 使用同一套 API

支持的平台

iOS arm64
Android arm64 · armv7

在没有摄像头补光灯的设备上以及其他平台上,isSupported 返回 false,因此同一份代码可以保留在每个应用中。

入门

将扩展添加到您的应用描述文件中:

app.xml
<extensions>
    <extensionID>com.klug.torch.Torch</extensionID>
</extensions>

补光灯位于后置摄像头旁,因此应使用后置摄像头。

代码示例

三个完整流程。on() 和 off() 立即返回;每次调用后都会触发变更事件,mode 会告诉您结果。完整文档 →

1 · 仅在有补光灯的设备上显示补光灯按钮
Setup.as
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 · 切换补光灯并跟踪结果
Light.as
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 · 摄像头停止时关闭补光灯
Stream.as
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 库和文档,通常在一个工作日内。许可与条款

基础版
€19 / 年
  • 一个 AIR 应用的许可
  • 12 个月内的所有更新
  • 不含支持
购买基础版
标准版
€149 / 年
  • 一个 AIR 应用的许可
  • 12 个月内的所有更新
  • 7 天内通过电子邮件答复
购买标准版
优先版
€299 / 年
  • 一个 AIR 应用的许可
  • 12 个月内的所有更新
  • 48 小时内通过电子邮件答复
购买优先版
税费在结账时由 Link (Stripe) 计算。您需要在结账时输入 AIR 应用的应用 ID。

要求

AIR SDK51.x (HARMAN)
iOSiOS 17 或更高版本
AndroidAndroid 6.0 (API 23) 或更高版本
权限无自有要求
硬件后置摄像头旁的摄像头补光灯