📄

HoloLens 2 のスクーンオフ、アプリバックグラウンド遷移を検出する方法

2022/08/25に公開

はじめに

HoloLens 2 のアプリケーション実行状態遷移の検出方法について

HoloLens 2 アプリでは、アプリケーション実行中にメニューを開き、
ホームへ戻るボタンを押すと、アプリケーションがバックグラウンド実行状態 (Focus: false )に遷移します。また、スクリーンオフ (※) にすると、実行中のアプリケーションの処理が停止された (Pause) 状態に遷移します。※ 電源ボタン (物理) を押すと、スクリーンオフになる

操作 操作後の状態
アプリケーションを立ち上げる 0. メイン実行
メニューからホームメニューを押す 1. バックグラウンド実行
電源ボタンを使ってスクリーンオフにする 2. 停止状態

HoloLens 2 アプリケーションを現場環境へデプロイする際は、
アプリケーションの実行状態を監視して誤操作や不要なクラウドサービスの利用 (課金) を
回避する仕組みを実装に組み入れる必要があるかと思います。

ex.

  • アプリ内で使用している有料サービスを停止する
  • アプリの完全停止 (エンドユーザーが想定していない動作を防ぐ)

それでは、実際に上記ステータスの遷移を検出してみたいと思います。

バックグラウンド処理への移行を検出

MonoBehavior の OnApplicationFocus(bool) を使用して状態を取得可能

    // HoloLens メニューを開き、ホームボタンを押した際のイベント関数
    private void OnApplicationFocus(bool status)
    {
        // アプリケーション実行状態
        // false => バックグラウンド実行
        // true => メイン実行
        if (status == false)
        {
            // Do something
        }
    }

スクリーンオフへの移行を検出

MonoBehavior の OnApplicationPause(bool) を使用して状態を取得可能

    // HoloLens スクリーンがオフになった際のイベント関数
    private void OnApplicationPause(bool status)
    {
        // スクリーンのポーズ状態
        // false => スクリーンオン
        // true => スクリーンオフ
        if (status == true)
        {
            // Do something
        }
    }

終わりに

HoloLens 2 のスクリーンオフ、ホーム画面遷移イベントを取得することができます。下書きの記事がかなり溜まってきているので、少しずつ公開していければと思います。

参考文献

MonoBehaviour.OnApplicationFocus(bool)

Discussion