Saltar al contenido

Empezando

  1. Instalar el paquete

    Ventana de terminal
    npm i @capgo/capacitor-flash
  2. Sincronización con proyectos nativos

    Ventana de terminal
    npx cap sync

Importe el complemento y use sus métodos para controlar la linterna:

import { CapacitorFlash } from '@capgo/capacitor-flash';
// Check if flashlight is available
const checkFlashlight = async () => {
const { value } = await CapacitorFlash.isAvailable();
console.log('Flashlight available:', value);
};
// Turn on flashlight
const turnOn = async () => {
await CapacitorFlash.switchOn();
};
// Turn off flashlight
const turnOff = async () => {
await CapacitorFlash.switchOff();
};
// Check if flashlight is on
const checkStatus = async () => {
const { value } = await CapacitorFlash.isSwitchedOn();
console.log('Flashlight is on:', value);
};
// Toggle flashlight
const toggle = async () => {
await CapacitorFlash.toggle();
};

Comprueba si la linterna está disponible en el dispositivo.

const result = await CapacitorFlash.isAvailable();
// Returns: { value: boolean }

Enciende la linterna.

interface SwitchOnOptions {
intensity?: number; // 0.0 to 1.0 (iOS only)
}
await CapacitorFlash.switchOn({ intensity: 0.5 });

Apaga la linterna.

await CapacitorFlash.switchOff();

Comprueba si la linterna está encendida actualmente.

const result = await CapacitorFlash.isSwitchedOn();
// Returns: { value: boolean }

Activa y desactiva la linterna.

await CapacitorFlash.toggle();
import { CapacitorFlash } from '@capgo/capacitor-flash';
export class FlashlightService {
private isOn = false;
async init() {
const { value } = await CapacitorFlash.isAvailable();
if (!value) {
throw new Error('Flashlight not available on this device');
}
}
async toggle() {
if (this.isOn) {
await CapacitorFlash.switchOff();
} else {
await CapacitorFlash.switchOn();
}
this.isOn = !this.isOn;
}
async turnOn(intensity?: number) {
await CapacitorFlash.switchOn({ intensity });
this.isOn = true;
}
async turnOff() {
await CapacitorFlash.switchOff();
this.isOn = false;
}
async strobe(intervalMs: number = 100, duration: number = 3000) {
const endTime = Date.now() + duration;
while (Date.now() < endTime) {
await CapacitorFlash.toggle();
await new Promise(resolve => setTimeout(resolve, intervalMs));
}
// Ensure flashlight is off after strobe
await CapacitorFlash.switchOff();
this.isOn = false;
}
}
  1. Consulta primero la disponibilidad Siempre verifique la disponibilidad de la linterna antes de usarla:

    const { value } = await CapacitorFlash.isAvailable();
    if (!value) {
    // Show alternative UI or disable flashlight features
    }
  2. Maneja los errores con elegancia

    try {
    await CapacitorFlash.switchOn();
    } catch (error) {
    console.error('Failed to turn on flashlight:', error);
    }
  3. Apagar cuando no sea necesario Apague siempre la linterna cuando su aplicación pase a segundo plano o cuando la función ya no sea necesaria para ahorrar batería.

  4. Evita el cambio rápido Implemente la función antirrebote para evitar un encendido/apagado rápido que podría dañar el LED o agotar la batería.

  • Requiere iOS 10.0+
  • Utiliza el modo antorcha AVCaptureDevice
  • Admite control de intensidad (0,0 a 1,0)
  • Requiere Android 6.0 (API 23)+
  • Utiliza Cámara2 API
  • No se admite el control de intensidad (utiliza el brillo predeterminado)
  • Compatible con navegadores con MediaDevices API y capacidad de antorcha
  • Utiliza la transmisión de la cámara para acceder a la linterna del dispositivo
  • Requiere permiso del usuario para acceder a la cámara
  • Funciona mejor en navegadores móviles (Chrome en Android)
  • Los navegadores de escritorio normalmente devuelven isAvailable: false (sin hardware de antorcha)
  • El control de intensidad no es compatible con la web.