始め方
-
パッケージのインストール
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 -
ネイティブプロジェクトと同期
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx 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();};APIリファレンス
Section titled “APIリファレンス”isAvailable()
Section titled “isAvailable()”デバイスでフラッシュライトが利用可能かどうかを確認します。
const result = await CapacitorFlash.isAvailable();// 戻り値: { value: boolean }switchOn(options?)
Section titled “switchOn(options?)”フラッシュライトをオンにします。
interface SwitchOnOptions { intensity?: number; // 0.0から1.0まで (iOSのみ)}
await CapacitorFlash.switchOn({ intensity: 0.5 });switchOff()
Section titled “switchOff()”フラッシュライトをオフにします。
await CapacitorFlash.switchOff();isSwitchedOn()
Section titled “isSwitchedOn()”フラッシュライトが現在オンかどうかを確認します。
const result = await CapacitorFlash.isSwitchedOn();// 戻り値: { value: boolean }toggle()
Section titled “toggle()”フラッシュライトをオン/オフに切り替えます。
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; }}ベストプラクティス
Section titled “ベストプラクティス”-
まず利用可能性を確認する 使用する前に、常にフラッシュライトの利用可能性を確認してください:
const { value } = await CapacitorFlash.isAvailable();if (!value) {// 代替UIを表示するか、フラッシュライト機能を無効にする} -
エラーを適切に処理する
try {await CapacitorFlash.switchOn();} catch (error) {console.error('Failed to turn on flashlight:', error);} -
必要ないときはオフにする バッテリーを節約するため、アプリがバックグラウンドに移行したとき、または機能が不要になったときは、常にフラッシュライトをオフにしてください。
-
急速な切り替えを避ける LEDを損傷したり、バッテリーを消耗する可能性がある急速なオン/オフ切り替えを防ぐため、デバウンスを実装してください。
プラットフォームに関する注意事項
Section titled “プラットフォームに関する注意事項”- iOS 10.0+が必要
AVCaptureDeviceトーチモードを使用- 輝度制御をサポート (0.0から1.0まで)
Android
Section titled “Android”- Android 6.0 (API 23)+が必要
- Camera2 APIを使用
- 輝度制御はサポートされていません (デフォルトの明るさを使用)
- MediaDevices APIとトーチ機能を持つブラウザでサポート
- デバイスのフラッシュライトにアクセスするためにカメラストリームを使用
- カメラへのアクセスにユーザーの許可が必要
- モバイルブラウザで最適に動作 (AndroidのChrome)
- デスクトップブラウザは通常
isAvailable: falseを返します (トーチハードウェアがないため) - Web上では輝度制御はサポートされていません