런타임에 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가 무효화됩니다. 즉시 사용을 중지하고 새 연결을 기다립니다.
  • 배터리 및 리소스 최적화: 수명 주기 상태를 기반으로 앱 기능을 정상적으로 처리하여 시스템 리소스를 보존하고 배터리 소모를 줄입니다. 예를 들어 상태가 STARTED에서 CREATED로 다시 전환될 때 카메라 데이터 스트림과 같은 안경 관련 리소스를 해제해야 합니다. CREATED 상태는 기기를 더 이상 착용하지 않음을 나타내므로 불필요한 배터리 소모를 방지하고 사용자 개인 정보 보호를 촉진하려면 이러한 프로세스를 중지하는 것이 중요합니다.