Resumen
Una app de cámara a menudo necesita luz: una cámara de seguridad en una habitación oscura, un escáner, una videollamada por la noche. KlugTorch enciende y apaga la luz de la cámara (el LED junto a la cámara trasera) mientras la cámara sigue funcionando.
KlugTorch primero detecta si el dispositivo tiene luz de cámara. Muchas tabletas y algunos teléfonos no la tienen, así que una app puede simplemente ocultar allí su botón de luz.
Funciona junto con un stream de cámara en directo. KlugTorch no abre una cámara propia, por lo que nunca compite con el stream por la cámara.
Las apps que hacen streaming con KlugMedia también pueden usar su control de linterna integrado. KlugTorch se usa a diario en nuestras apps, nuestra prueba de concepto.
Funciones
- Autónoma: una ANE, sin biblioteca central ni ANE de dependencias que añadir
- Detecta si el dispositivo tiene luz de cámara
- Enciende y apaga la luz de la cámara con una sola llamada
- Funciona mientras la cámara transmite en iOS, sin interrupciones
- Lee el estado actual de la luz
- Un evento de cambio tras cada conmutación, también cuando falla
- Una única API para iOS y Android
Plataformas compatibles
En dispositivos sin luz de cámara, y en otras plataformas, isSupported devuelve false, por lo que el mismo código puede permanecer en todas las apps.
Primeros pasos
Añade la extensión al descriptor de tu aplicación:
<extensions>
<extensionID>com.klug.torch.Torch</extensionID>
</extensions>
La luz está junto a la cámara trasera, por lo que la cámara trasera debe ser la activa.
Ejemplos de código
Tres flujos completos. on() y off() devuelven de inmediato; tras cada llamada llega un evento de cambio, y mode te indica el resultado. Documentación completa →
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
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 }
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 ); }
Resumen de la API
| Torch.getInstance() | Devuelve la instancia única. |
| isSupported | Verdadero solo si el dispositivo tiene una luz de cámara utilizable: en iOS la cámara predeterminada (trasera) tiene linterna, en Android 6+ una cámara trasera tiene flash. |
| on() | Enciende la luz de la cámara; sigue un evento de cambio. |
| off() | Apaga la luz de la cámara; sigue un evento de cambio. |
| mode | Verdadero mientras la luz está encendida. iOS lee el estado de la linterna de la cámara; Android informa del estado del último on() / off() correcto. |
Eventos
| Event.CHANGE ("change") | Se emite tras cada on() y off(), también cuando no se pudo conmutar la luz. Lee mode para ver el resultado. |
Compra KlugTorch
Una licencia anual para una aplicación AIR, con todas las actualizaciones durante 12 meses. Tras el pago recibes la extensión, la biblioteca ActionScript y la documentación por e-mail, normalmente en un día hábil. Licencia y términos
- Licencia para una aplicación AIR
- Todas las actualizaciones durante 12 meses
- Sin soporte
- Licencia para una aplicación AIR
- Todas las actualizaciones durante 12 meses
- Respuesta por e-mail en un plazo de 7 días
- Licencia para una aplicación AIR
- Todas las actualizaciones durante 12 meses
- Respuesta por e-mail en un plazo de 48 horas
Requisitos
| AIR SDK | 51.x (HARMAN) |
| iOS | iOS 17 o posterior |
| Android | Android 6.0 (API 23) o posterior |
| Permisos | Ninguno propio |
| Hardware | Una luz de cámara junto a la cámara trasera |