AI グラスの実行時にデバイスの可用性を確認する

ユーザーが 1 日を過ごす中で、AI グラスがホスト デバイス(ユーザーのスマートフォンなど)との接続を失ったり、グラスを外したときに一時的に使用できなくなったりすることがあります。このようなデバイスの可用性の変化に対応するため、アプリでは XR デバイスの可用性 API を使用できます。この API は、デバイスの可用性シグナルを標準の Android Lifecycle.State 値に統合します。この API を使用すると、オーディオ ルーティングや起動ワードの有効化を管理したり、AI グラスが使用可能なときにユーザー入力がいつ必要になるかを把握したりできます。

ライフサイクル状態について

次の表に、デバイスの可用性シグナルが Lifecycle.State 値にどのようにマッピングされるかを示します。

ライフサイクル状態

デバイスのステータス

説明

INITIALIZED

作成日

ライフサイクル オブジェクトは作成されましたが、まだ監視されていません。

CREATED

無効

サービスは接続されていますが、ユーザーがデバイスを装着していません。

STARTED

有効

ユーザーがデバイスを装着しています。

DESTROYED

未接続

デバイスが切断されているか、サービス接続が失われています。

デバイスの可用性を確認してモニタリングする

デバイスの可用性を確認してモニタリングするには、投影されたコンテキストとライフサイクル状態を使用して、アプリが各ケースをどのように処理するかを決定します。

    val xrDevice = XrDevice.getCurrentDevice(projectedContext)

    xrDevice.getLifecycle().currentStateFlow
        .takeWhile { it != Lifecycle.State.DESTROYED }
        .collect { state ->
            when (state) {
                Lifecycle.State.STARTED -> { /* Device is ACTIVE (worn) */ }
                Lifecycle.State.CREATED -> { /* Device is INACTIVE (not worn) */ }
                else -> { /* Handle other states */ }
            }
        }
}

コードに関する主なポイント

  • 接続を確認する: デバイスのライフサイクルにアクセスする前に、 ProjectedContext.isProjectedDeviceConnected を呼び出して、 投影されたデバイスがホスト デバイスに接続されていることを確認します。
  • ProjectedContext を取得する: 接続を確認した後でのみ ProjectedContext.createProjectedDeviceContext を呼び出し、このコンテキストを XrDevice インスタンスに渡します。
  • コンテキストの無効化を処理する: 投影されたデバイスが接続されるたびに、新しいdeviceIdが生成されます。状態が DESTROYED に達すると、現在の ProjectedContext は無効になります。すぐに使用を停止し、新しい接続を待ちます。
  • バッテリーとリソースを最適化する: ライフサイクル状態に基づいてアプリの機能を適切に処理し、システム リソースを保持してバッテリー消費量を削減します。たとえば、状態が CREATED に変わったら、AI メガネへの UI コンテンツの投影を停止する必要があります。