コンテンツへスキップ

始め方

  1. パッケージのインストール

    Terminal window
    npm i @capgo/capacitor-flash
  2. ネイティブプロジェクトと同期

    Terminal window
    npx cap sync

プラグインをインポートして、フラッシュライトを制御するためのメソッドを使用します:

import { CapacitorFlash } from '@capgo/capacitor-flash';
// フラッシュライトが利用可能か確認
const checkFlashlight = async () => {
const { value } = await CapacitorFlash.isAvailable();
console.log('Flashlight available:', value);
};
// フラッシュライトをオンにする
const turnOn = async () => {
await CapacitorFlash.switchOn();
};
// フラッシュライトをオフにする
const turnOff = async () => {
await CapacitorFlash.switchOff();
};
// フラッシュライトがオンかどうかを確認
const checkStatus = async () => {
const { value } = await CapacitorFlash.isSwitchedOn();
console.log('Flashlight is on:', value);
};
// フラッシュライトを切り替える
const toggle = async () => {
await CapacitorFlash.toggle();
};

デバイスでフラッシュライトが利用可能かどうかを確認します。

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

フラッシュライトをオンにします。

interface SwitchOnOptions {
intensity?: number; // 0.0から1.0まで (iOSのみ)
}
await CapacitorFlash.switchOn({ intensity: 0.5 });

フラッシュライトをオフにします。

await CapacitorFlash.switchOff();

フラッシュライトが現在オンかどうかを確認します。

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

フラッシュライトをオン/オフに切り替えます。

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));
}
// ストロボ後にフラッシュライトがオフであることを確認
await CapacitorFlash.switchOff();
this.isOn = false;
}
}
  1. まず利用可能性を確認する 使用する前に、常にフラッシュライトの利用可能性を確認してください:

    const { value } = await CapacitorFlash.isAvailable();
    if (!value) {
    // 代替UIを表示するか、フラッシュライト機能を無効にする
    }
  2. エラーを適切に処理する

    try {
    await CapacitorFlash.switchOn();
    } catch (error) {
    console.error('Failed to turn on flashlight:', error);
    }
  3. 必要ないときはオフにする バッテリーを節約するため、アプリがバックグラウンドに移行したとき、または機能が不要になったときは、常にフラッシュライトをオフにしてください。

  4. 急速な切り替えを避ける LEDを損傷したり、バッテリーを消耗する可能性がある急速なオン/オフ切り替えを防ぐため、デバウンスを実装してください。

プラットフォームに関する注意事項

Section titled “プラットフォームに関する注意事項”
  • iOS 10.0+が必要
  • AVCaptureDeviceトーチモードを使用
  • 輝度制御をサポート (0.0から1.0まで)
  • Android 6.0 (API 23)+が必要
  • Camera2 APIを使用
  • 輝度制御はサポートされていません (デフォルトの明るさを使用)
  • MediaDevices APIとトーチ機能を持つブラウザでサポート
  • デバイスのフラッシュライトにアクセスするためにカメラストリームを使用
  • カメラへのアクセスにユーザーの許可が必要
  • モバイルブラウザで最適に動作 (AndroidのChrome)
  • デスクトップブラウザは通常isAvailable: falseを返します (トーチハードウェアがないため)
  • Web上では輝度制御はサポートされていません