Langsung ke konten

Memulai

  1. Instal paket

    Terminal window
    npm i @capgo/capacitor-flash
  2. Sinkronkan dengan proyek native

    Terminal window
    npx cap sync

Import plugin dan gunakan metodenya untuk mengontrol senter:

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();
};

Memeriksa apakah senter tersedia pada perangkat.

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

Menyalakan senter.

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

Mematikan senter.

await CapacitorFlash.switchOff();

Memeriksa apakah senter sedang menyala.

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

Mengalihkan senter on/off.

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. Periksa ketersediaan terlebih dahulu Selalu verifikasi ketersediaan senter sebelum menggunakannya:

    const { value } = await CapacitorFlash.isAvailable();
    if (!value) {
    // Show alternative UI or disable flashlight features
    }
  2. Tangani error dengan baik

    try {
    await CapacitorFlash.switchOn();
    } catch (error) {
    console.error('Failed to turn on flashlight:', error);
    }
  3. Matikan saat tidak diperlukan Selalu matikan senter ketika aplikasi Anda berpindah ke background atau ketika fitur tidak lagi diperlukan untuk menghemat baterai.

  4. Hindari toggling yang cepat Terapkan debouncing untuk mencegah pergantian on/off yang cepat yang dapat merusak LED atau menguras baterai.

  • Memerlukan iOS 10.0+
  • Menggunakan mode torch AVCaptureDevice
  • Mendukung kontrol intensitas (0.0 hingga 1.0)
  • 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