ウォッチドッグとは、プレーヤーをクラッシュから回復させるソリューションです。アプリケーションは、ウォッチドッグサービスに登録し、アプリケーション自体がアライブであることを知らせるメッセージを定期的に送信する必要があります。ウォッチドッグサービスに、所定の時間内にキープアライブメッセージが届かないと、ウォッチドッグサービスは、デバイスをリブートしてクリーンリカバリを試みるか(ウォッチドッグサービスが十分な権限が持つ場合)、アプリケーションの再起動を試みます。
Android のアーキテクチャ上、デバイスをリブートするには、アプリケーションがシステム権限を持っている必要があります。そのためには、製造元の署名キーを使用して apk に署名する必要があります。この署名をおこなわないと、ウォッチドッグはデバイスをリブートするのではなく、プレーヤーアプリケーションを再起動します。
PowerManager や HDMIControlServices など、Android の特権付き API にアクセスするには、製造元のキーを使用して Android apk に署名する必要があります。
警告:
前提条件
以下の手順を実行する前に、Android SDK をインストールしてください。
次の手順に従って、製造元のキーを使用して Android apk に署名します。
- Google Play または AEM Screens Player Downloads ページから apk をダウンロードします。
- 製造元のプラットフォームキーを入手して、pk8 ファイルと pem ファイルを取得します。
- find ~/Library/Android/sdk/build-tools -name "apksigner" を使用して、Android SDK の apksigner ツールを見つけます。
- <pathto> /apksigner sign --key platform.pk8 --cert platform.x509.pem aemscreensplayer.apk
- Android SDK の zip align ツールへのパスを見つけます。
- <pathto> /zipalign -fv 4 aemscreensplayer.apk aemscreensaligned.apk
- adb install を使用して、デバイスに aemscreensaligned.apk をインストールします。

1. 初期化
cordova プラグインの初期化時、システム権限を持っているかどうか、さらに、リブート権限を持っているかどうかの確認がおこなわれます。これらの 2 つの条件を満たしている場合は、リブートのペンディングインテントが作成され、条件を満たしていない場合は、(Launch Activity に基づいて)アプリケーションを再起動するためのペンディングインテントが作成されます。
2. キープアライブタイマー
15 秒おきにイベントをトリガーするためにキープアライブタイマーが使用されます。このイベントの間に、(アプリケーションをリブートまたは再起動する)既存のペンディングインテントをキャンセルし、次の 60 秒の間に新しいペンディングインテントを登録する(最終的にリブートを延期する)必要があります。
注意:
Android では、AlarmManager は、アプリケーションがクラッシュして、そのアラーム配信が API 19(Kitkat)から正確におこなわれなくても実行可能なペンディングインテントを登録するために使用されます。タイマーの間隔と AlarmManager のペンディングインテントのアラームとの間にいくらかの時間を設けるようにしてください。