本日は HoloLens2 の技術調査枠です。
HoloLens2アプリでホームボタンが押されたときにアプリを完全に終了させる方法を記事にします。
ホームボタンをタップしたときの3Dアプリケーションの動作
HoloLens2 では3Dアプリケーションからホーム画面に戻るとき、ホームボタンをタップします。
このとき、3Dアプリケーションは終了しておらず、フォーカスが外れた状態となっています。
バックグラウンド処理は動いており、かつ、再び起動パネルからアプリケーションを起動すると以前の状態を保ったまま再起動します。
アプリケーションの状態をリセットするため、アプリを完全に終了したい場合はホーム画面に戻った後、更にアプリケーションの起動パネルを閉じる必要があります。
ホームボタンが押されたときにアプリを完全に終了させる
今回はホームボタンが押された時点でアプリを完全に終了する処理を、スクリプトから実装してみます。
UWPアプリケーションを終了する CoreApplication.Exit 関数と、フォーカスが外れた状態を検知する OnApplicationFocus 関数を利用します。
docs.microsoft.com
docs.unity3d.com
以下のスクリプトを実装しました。
・AppExitCheck.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class AppExitCheck : MonoBehaviour { /// <summary> /// フォーカスの変更イベント /// </summary> /// <param name="focus"></param> private void OnApplicationFocus(bool focus) { // フォーカスが失われた場合はアプリを自動で完全終了する if (focus == false) { #if WINDOWS_UWP Windows.ApplicationModel.Core.CoreApplication.Exit(); #else Application.Quit(); #endif } } }
スクリプトを Unity プロジェクトの適当なオブジェクトに設定します。
これで準備完了です。
動作確認
デプロイした3Dアプリケーションを起動し、再びホームボタンをタップしてホーム画面に戻ってみます。
そのまま起動パネルを閉じることなく、再び起動パネルをタップしてみます。
すると起動時に Unity ロゴが表示され、アプリケーションが初期状態から起動しました。
これはスクリプトにより、ホームボタンを押した時点で3Dアプリケーションが一度完全に終了したためです。