사용자가 하루를 보내는 동안 AI 안경이 호스트 기기 (예: 사용자의 휴대전화)와의 연결이 끊어지거나 안경을 벗으면 안경을 일시적으로 사용할 수 없게 될 수 있습니다. 이러한 기기 사용 가능 여부의 변경사항을 고려하기 위해 앱은 기기 사용 가능 여부 신호를 표준 Android Lifecycle.State 값으로 통합하는 XR 기기 사용 가능 여부 API를 사용할 수 있습니다. 이 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 콘텐츠 투영을 중지해야 합니다.