Iniziare
-
Installa il pacchetto
Terminal window npm i @capgo/capacitor-flashTerminal window pnpm add @capgo/capacitor-flashTerminal window yarn add @capgo/capacitor-flashTerminal window bun add @capgo/capacitor-flash -
Sincronizza con i progetti nativi
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
Utilizzo
Section titled “Utilizzo”Importa il plugin e usa i suoi metodi per controllare il flash:
import { CapacitorFlash } from '@capgo/capacitor-flash';
// Check if flashlight is availableconst checkFlashlight = async () => { const { value } = await CapacitorFlash.isAvailable(); console.log('Flashlight available:', value);};
// Turn on flashlightconst turnOn = async () => { await CapacitorFlash.switchOn();};
// Turn off flashlightconst turnOff = async () => { await CapacitorFlash.switchOff();};
// Check if flashlight is onconst checkStatus = async () => { const { value } = await CapacitorFlash.isSwitchedOn(); console.log('Flashlight is on:', value);};
// Toggle flashlightconst toggle = async () => { await CapacitorFlash.toggle();};Riferimento API
Section titled “Riferimento API”isAvailable()
Section titled “isAvailable()”Controlla se il flash è disponibile sul dispositivo.
const result = await CapacitorFlash.isAvailable();// Returns: { value: boolean }switchOn(options?)
Section titled “switchOn(options?)”Accende il flash.
interface SwitchOnOptions { intensity?: number; // 0.0 to 1.0 (iOS only)}
await CapacitorFlash.switchOn({ intensity: 0.5 });switchOff()
Section titled “switchOff()”Spegne il flash.
await CapacitorFlash.switchOff();isSwitchedOn()
Section titled “isSwitchedOn()”Controlla se il flash è attualmente acceso.
const result = await CapacitorFlash.isSwitchedOn();// Returns: { value: boolean }toggle()
Section titled “toggle()”Attiva/disattiva il flash.
await CapacitorFlash.toggle();Esempio Completo
Section titled “Esempio Completo”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; }}Migliori Pratiche
Section titled “Migliori Pratiche”-
Controlla prima la disponibilità Verifica sempre la disponibilità del flash prima di utilizzarlo:
const { value } = await CapacitorFlash.isAvailable();if (!value) {// Show alternative UI or disable flashlight features} -
Gestisci gli errori con attenzione
try {await CapacitorFlash.switchOn();} catch (error) {console.error('Failed to turn on flashlight:', error);} -
Spegni quando non necessario Spegni sempre il flash quando l’app va in background o quando la funzione non è più necessaria per risparmiare batteria.
-
Evita attivazioni rapide Implementa il debouncing per evitare rapide accensioni/spegnimenti che potrebbero danneggiare il LED o scaricare la batteria.
Note sulla Piattaforma
Section titled “Note sulla Piattaforma”- Richiede iOS 10.0+
- Utilizza la modalità torcia
AVCaptureDevice - Supporta il controllo dell’intensità (da 0.0 a 1.0)
Android
Section titled “Android”- Richiede Android 6.0 (API 23)+
- Utilizza Camera2 API
- Controllo dell’intensità non supportato (utilizza la luminosità predefinita)
- Supportato su browser con MediaDevices API e capacità torcia
- Utilizza lo stream della fotocamera per accedere al flash del dispositivo
- Richiede il permesso dell’utente per accedere alla fotocamera
- Funziona meglio su browser mobili (Chrome su Android)
- I browser desktop tipicamente restituiscono
isAvailable: false(nessun hardware torcia) - Controllo dell’intensità non supportato sul web