はじめに
-
パッケージをインストール
Terminal window npm i @capgo/capacitor-android-kioskTerminal window pnpm add @capgo/capacitor-android-kioskTerminal window yarn add @capgo/capacitor-android-kioskTerminal window bun add @capgo/capacitor-android-kiosk -
ネイティブプロジェクトと同期
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
プラットフォームサポート
Section titled “プラットフォームサポート”このプラグインはAndroid専用です。iOSのキオスクモード機能については、デバイスの組み込みガイドアクセス機能を使用してください。
- キオスクモード: システムUIを非表示にして没入型フルスクリーンモードに入る
- ランチャー統合: アプリをデバイスのランチャー/ホームアプリとして設定
- ハードウェアキー制御: 特定のハードウェアボタンをブロックまたは許可
- ステータス検出: キオスクモードがアクティブかどうか、またはアプリがランチャーとして設定されているかを確認
- Android 6.0以降: Android API 23からAndroid 15(API 35)までサポート
基本的な使用方法
Section titled “基本的な使用方法”キオスクモードへの入退出
Section titled “キオスクモードへの入退出”import { CapacitorAndroidKiosk } from '@capgo/capacitor-android-kiosk';
// キオスクモードに入るawait CapacitorAndroidKiosk.enterKioskMode();
// キオスクモードを終了await CapacitorAndroidKiosk.exitKioskMode();
// キオスクモードかどうかを確認const { isInKioskMode } = await CapacitorAndroidKiosk.isInKioskMode();console.log('Kiosk mode active:', isInKioskMode);ランチャー機能
Section titled “ランチャー機能”完全なキオスクモード機能のためには、アプリをデバイスのランチャーとして設定する必要があります:
// ユーザーがアプリをランチャーとして選択するためのホーム画面設定を開くawait CapacitorAndroidKiosk.setAsLauncher();
// アプリがランチャーとして設定されているか確認const { isLauncher } = await CapacitorAndroidKiosk.isSetAsLauncher();console.log('App is launcher:', isLauncher);ハードウェアキー制御
Section titled “ハードウェアキー制御”キオスクモードで機能させるハードウェアボタンを制御:
// 音量キーのみ許可await CapacitorAndroidKiosk.setAllowedKeys({ volumeUp: true, volumeDown: true, back: false, home: false, recent: false});
// すべてのキーをブロック(デフォルト)await CapacitorAndroidKiosk.setAllowedKeys({});async function setupKioskMode() { try { // すでにランチャーとして設定されているか確認 const { isLauncher } = await CapacitorAndroidKiosk.isSetAsLauncher();
if (!isLauncher) { // ユーザーにランチャーとして設定するよう促す await CapacitorAndroidKiosk.setAsLauncher(); alert('Please select this app as your Home app'); return; }
// 許可するキーを設定 await CapacitorAndroidKiosk.setAllowedKeys({ volumeUp: true, volumeDown: true, back: false, home: false, recent: false, power: false });
// キオスクモードに入る await CapacitorAndroidKiosk.enterKioskMode(); console.log('Kiosk mode activated');
} catch (error) { console.error('Failed to setup kiosk mode:', error); }}APIリファレンス
Section titled “APIリファレンス”isInKioskMode()
Section titled “isInKioskMode()”アプリが現在キオスクモードで実行されているかを確認します。
const { isInKioskMode } = await CapacitorAndroidKiosk.isInKioskMode();戻り値:
isInKioskMode(boolean): キオスクモードが現在アクティブかどうか
isSetAsLauncher()
Section titled “isSetAsLauncher()”アプリがデバイスのランチャー(ホームアプリ)として設定されているかを確認します。
const { isLauncher } = await CapacitorAndroidKiosk.isSetAsLauncher();戻り値:
isLauncher(boolean): アプリがデバイスのランチャーとして設定されているかどうか
enterKioskMode()
Section titled “enterKioskMode()”キオスクモードに入り、システムUIを非表示にしてハードウェアボタンをブロックします。これが効果的に機能するには、アプリをデバイスのランチャーとして設定する必要があります。
await CapacitorAndroidKiosk.enterKioskMode();exitKioskMode()
Section titled “exitKioskMode()”キオスクモードを終了し、通常のシステムUIとハードウェアボタンの機能を復元します。
await CapacitorAndroidKiosk.exitKioskMode();setAsLauncher()
Section titled “setAsLauncher()”このアプリをランチャーとして設定できるように、デバイスのホーム画面設定を開きます。完全なキオスクモード機能にはこれが必要です。
await CapacitorAndroidKiosk.setAsLauncher();setAllowedKeys(options)
Section titled “setAllowedKeys(options)”キオスクモードで機能させるハードウェアキーを設定します。デフォルトでは、キオスクモードですべてのハードウェアキーがブロックされます。
await CapacitorAndroidKiosk.setAllowedKeys({ volumeUp: true, volumeDown: true, back: false, home: false, recent: false, power: false, camera: false, menu: false});パラメータ:
volumeUp(boolean, オプション): 音量アップボタンを許可(デフォルト: false)volumeDown(boolean, オプション): 音量ダウンボタンを許可(デフォルト: false)back(boolean, オプション): 戻るボタンを許可(デフォルト: false)home(boolean, オプション): ホームボタンを許可(デフォルト: false)recent(boolean, オプション): 最近使用したアプリボタンを許可(デフォルト: false)power(boolean, オプション): 電源ボタンを許可(デフォルト: false)camera(boolean, オプション): カメラボタンを許可(存在する場合)(デフォルト: false)menu(boolean, オプション): メニューボタンを許可(存在する場合)(デフォルト: false)
getPluginVersion()
Section titled “getPluginVersion()”ネイティブCapacitorプラグインのバージョンを取得します。
const { version } = await CapacitorAndroidKiosk.getPluginVersion();console.log('Plugin version:', version);戻り値:
version(string): プラグインのバージョン番号
Android設定
Section titled “Android設定”1. MainActivityのセットアップ
Section titled “1. MainActivityのセットアップ”完全なハードウェアキーブロックを有効にするには、MainActivity.javaでdispatchKeyEventをオーバーライドする必要があります:
import android.view.KeyEvent;import ee.forgr.plugin.android_kiosk.CapacitorAndroidKioskPlugin;
public class MainActivity extends BridgeActivity { @Override public boolean dispatchKeyEvent(KeyEvent event) { // キオスクプラグインを取得 CapacitorAndroidKioskPlugin kioskPlugin = (CapacitorAndroidKioskPlugin) this.getBridge().getPlugin("CapacitorAndroidKiosk").getInstance();
if (kioskPlugin != null && kioskPlugin.shouldBlockKey(event.getKeyCode())) { return true; // キーをブロック }
return super.dispatchKeyEvent(event); }
@Override public void onBackPressed() { // super.onBackPressed()を呼び出さずに戻るボタンを無効化 // またはプラグインのhandleOnBackPressedを呼び出す }}2. AndroidManifest.xml
Section titled “2. AndroidManifest.xml”アプリをランチャーとして選択可能にするためにランチャーインテントフィルターを追加:
<activity android:name=".MainActivity" ...>
<!-- 既存のインテントフィルター --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
<!-- アプリをランチャーとして選択可能にするためにこれを追加 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>重要な注意事項
Section titled “重要な注意事項”-
ランチャー要件: 完全なキオスクモード機能(ホームボタンのブロック、タスク切り替えの防止)には、アプリをデバイスのランチャーとして設定する必要があります。
-
テスト: テスト時は、プログラムでキオスクモードを終了するか、別のアプリをランチャーとして設定できます。
-
Androidバージョン: このプラグインは、Android 11以降の最新Android APIを使用し、Android 6.0以降との互換性のために古いメソッドにフォールバックします。
-
セキュリティ: このプラグインは正当なキオスクアプリケーション向けに設計されています。ユーザーがキオスクモードを終了する方法を提供してください。
-
バッテリー: キオスクモードは画面をオンのままにします。独自の画面タイムアウトまたは明るさ管理の実装を検討してください。
iOS代替案
Section titled “iOS代替案”iOSデバイスの場合は、組み込みのガイドアクセス機能を使用してください:
- 設定 > アクセシビリティ > ガイドアクセスに移動
- ガイドアクセスをオンにする
- パスコードを設定
- アプリを開く
- サイドボタンをトリプルクリック
- 設定を調整してガイドアクセスを開始
ベストプラクティス
Section titled “ベストプラクティス”-
最初にランチャーステータスを確認
const { isLauncher } = await CapacitorAndroidKiosk.isSetAsLauncher();if (!isLauncher) {// 最初にランチャーとして設定するようユーザーに促すawait CapacitorAndroidKiosk.setAsLauncher();} -
終了メカニズムを提供
// 特定のキーの組み合わせで終了を許可// または秘密のジェスチャー/パターンを実装async function exitKioskWithConfirmation() {const confirmed = confirm('Exit kiosk mode?');if (confirmed) {await CapacitorAndroidKiosk.exitKioskMode();}} -
アプリのライフサイクルを処理
// アプリが再開したときにキオスクモードに再入window.addEventListener('resume', async () => {const { isInKioskMode } = await CapacitorAndroidKiosk.isInKioskMode();if (!isInKioskMode) {await CapacitorAndroidKiosk.enterKioskMode();}}); -
エラー処理
try {await CapacitorAndroidKiosk.enterKioskMode();} catch (error) {console.error('Failed to enter kiosk mode:', error);// ユーザーに通知して代替案を提供}