Memulai
-
Instal paket
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 -
Sinkronkan dengan proyek native
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
Penggunaan
Section titled “Penggunaan”Import plugin dan gunakan metodenya untuk mengontrol senter:
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();};Referensi API
Section titled “Referensi API”isAvailable()
Section titled “isAvailable()”Memeriksa apakah senter tersedia pada perangkat.
const result = await CapacitorFlash.isAvailable();// Returns: { value: boolean }switchOn(options?)
Section titled “switchOn(options?)”Menyalakan senter.
interface SwitchOnOptions { intensity?: number; // 0.0 to 1.0 (iOS only)}
await CapacitorFlash.switchOn({ intensity: 0.5 });switchOff()
Section titled “switchOff()”Mematikan senter.
await CapacitorFlash.switchOff();isSwitchedOn()
Section titled “isSwitchedOn()”Memeriksa apakah senter sedang menyala.
const result = await CapacitorFlash.isSwitchedOn();// Returns: { value: boolean }toggle()
Section titled “toggle()”Mengalihkan senter on/off.
await CapacitorFlash.toggle();Contoh Lengkap
Section titled “Contoh Lengkap”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; }}Praktik Terbaik
Section titled “Praktik Terbaik”-
Periksa ketersediaan terlebih dahulu Selalu verifikasi ketersediaan senter sebelum menggunakannya:
const { value } = await CapacitorFlash.isAvailable();if (!value) {// Show alternative UI or disable flashlight features} -
Tangani error dengan baik
try {await CapacitorFlash.switchOn();} catch (error) {console.error('Failed to turn on flashlight:', error);} -
Matikan saat tidak diperlukan Selalu matikan senter ketika aplikasi Anda berpindah ke background atau ketika fitur tidak lagi diperlukan untuk menghemat baterai.
-
Hindari toggling yang cepat Terapkan debouncing untuk mencegah pergantian on/off yang cepat yang dapat merusak LED atau menguras baterai.
Catatan Platform
Section titled “Catatan Platform”- Memerlukan iOS 10.0+
- Menggunakan mode torch
AVCaptureDevice - Mendukung kontrol intensitas (0.0 hingga 1.0)
Android
Section titled “Android”- Memerlukan Android 6.0 (API 23)+
- Menggunakan Camera2 API
- Kontrol intensitas tidak didukung (menggunakan kecerahan default)
- Didukung pada browser dengan MediaDevices API dan kemampuan torch
- Menggunakan stream kamera untuk mengakses senter perangkat
- Memerlukan izin pengguna untuk mengakses kamera
- Bekerja paling baik pada browser mobile (Chrome di Android)
- Browser desktop biasanya mengembalikan
isAvailable: false(tidak ada hardware torch) - Kontrol intensitas tidak didukung pada web