ユーザーが 1 日を過ごす中で、AI グラスがホスト デバイス(ユーザーのスマートフォンなど)との接続を失ったり、グラスを外したときに一時的に使用できなくなったりすることがあります。このようなデバイスの可用性の変化に対応するため、アプリでは XR デバイスの可用性 API を使用できます。この API は、デバイスの可用性シグナルを標準の Android Lifecycle.State 値に統合します。この API を使用すると、オーディオ ルーティングや起動ワードの有効化を管理したり、AI グラスが使用可能なときにユーザー入力がいつ必要になるかを把握したりできます。
ライフサイクル状態について
次の表に、デバイスの可用性シグナルが Lifecycle.State 値にどのようにマッピングされるかを示します。
ライフサイクル状態 |
デバイスのステータス |
説明 |
|---|---|---|
|
作成日 |
ライフサイクル オブジェクトは作成されましたが、まだ監視されていません。 |
|
無効 |
サービスは接続されていますが、ユーザーがデバイスを装着していません。 |
|
有効 |
ユーザーがデバイスを装着しています。 |
|
未接続 |
デバイスが切断されているか、サービス接続が失われています。 |
デバイスの可用性を確認してモニタリングする
デバイスの可用性を確認してモニタリングするには、投影されたコンテキストとライフサイクル状態を使用して、アプリが各ケースをどのように処理するかを決定します。
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 コンテンツの投影を停止する必要があります。