런타임에 AI 글래스의 기기 가용성 확인

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