오디오 안경과 디스플레이 안경은 유형에 따라 기능이 다릅니다. 예를 들어 모든 오디오 글라스와 디스플레이 글라스는 음성을 통해 오디오 환경을 제공하지만 디스플레이 글라스만 앱에서 Jetpack Compose Glimmer로 빌드된 UI를 표시할 수 있는 디스플레이가 있습니다.
다양한 기기에서 원활한 사용자 환경을 만들려면 다양한 기기 기능을 확인하도록 글라스용
Activity를 계획하세요. 이 접근 방식을 사용하면 특정 기기를 타겟팅하는 여러 활동이 아닌 동작을 조정하는 하나의 활동을 빌드하여 개발을 간소화할 수 있습니다.
프로젝션된 활동의 수명 주기 이해
오디오 글라스와 디스플레이 글라스를 위해 빌드하는 활동은 기기에서 직접 실행되지 않고 호스트 기기 (예: 사용자 휴대전화)에서 기기로 프로젝션됩니다. 이 목적으로 빌드하는 전용 활동은 프로젝션된 활동 입니다. 프로젝션된 활동의 수명 주기는 표준 활동 수명 주기를 기반으로 빌드되지만 다양한 유형의 오디오 글라스 와 디스플레이 글라스의 기능을 지원하는 몇 가지 주요 차이점도 포함합니다.
다음은 오디오 안경과 디스플레이 안경에 프로젝션되는 활동에만 해당하는 상호작용에 대한 설명이 포함된 주요 이벤트의 분석입니다.
onCreate()- 프로젝션된 활동이 생성될 때 호출됩니다.
- 여기에서 앱의 Jetpack Compose Glimmer UI 및 기타 구성요소를 초기화합니다.
onStart()- 프로젝션된 활동이 시작되고 사용자가 앱을 인식할 때 호출됩니다.
onResume()- 프로젝션된 활동이 포커스를 다시 얻을 때 호출됩니다. 활동에 포커스가 있는 동안에는 상호작용이 가능하며 터치패드 또는 버튼 입력을 사용할 수 있습니다.
- 안경을 머리에서 벗은 후 다시 착용할 때(착용) 호출됩니다.
onPause()- 프로젝션된 활동이 포커스를 잃었지만 사용자가 여전히 앱을 인식할 때 호출됩니다. 활동에 포커스가 없으면 상호작용이 불가능하며 입력 사용이 중지됩니다.
onStop()- 시스템에서 사용자가 더 이상 앱을 인식하지 않는다고 판단할 때 호출됩니다.
- 안경을 머리에서 벗을 때 (벗기) 호출됩니다.
onDestroy()- 프로젝션된 활동이 소멸되기 직전에 호출됩니다. 이 함수가 호출되면 시스템은 활동과 연결된 모든 리소스를 해제합니다.
디스플레이 상태가 프로젝션된 활동 수명 주기에 미치는 영향 이해
표준 Activity에서 기기의 화면이 꺼지면 수명 주기 상태가 변경되며 일반적으로 onPause() 또는 onStop()으로 이동합니다. 반면 안경의 디스플레이가 켜지거나 꺼져도 프로젝션된 활동 수명 주기는 변경되지 않습니다. 이 동작은 디스플레이가 꺼져 있어도 프로젝션된 활동이 시작됨 또는 재개됨 상태로 계속 실행되므로 앱의 오디오 환경이 중단 없이 계속될 수 있음을 의미합니다.
다른 액티비티 상태 변경은 다양한 시스템 및 사용자 이벤트로 인해 트리거되며 일반적인 방식으로 동작합니다.
사용자 인식이 프로젝션된 활동에 미치는 영향 이해
프로젝션된 활동이 표시되지 않더라도 사용자는 이를 인식할 수 있습니다. 인식 은 사용자가 앱의 환경을 감지하고 상호작용할 수 있는 모든 방법을 의미하며 다음을 포함합니다.
- 오디오, 들리는 의견 또는 기타 소리 신호 듣기
- 앱이 카메라 또는 마이크에 액세스하는 경우 개인 정보 보호 표시기와 같이 사용자에게 표시되는 LED를 트리거하는 앱 작업
이러한 상황에서 사용자는 디스플레이를 보고 있지 않더라도 오디오 글라스와 디스플레이 글라스가 활성 상태이고 응답하고 있음을 인식합니다.
- 프로젝션된 활동의
onStart()상태는 활동이 활성 상태임을 의미합니다. onResume()상태는 활동이 상호작용 가능하며 터치패드 입력을 수신하거나 기본 입력 디스패치를 수신하고 있음을 의미합니다.
사용자가 앱을 인식하는 한 활동은 활성 상태로 포그라운드에 유지됩니다. 시스템에서 짧은 시간 동안 인식 신호를 감지하지 못하면 시스템은 활동을 포그라운드에서 삭제하고 결국 onStop()을 트리거합니다.
프로젝션된 활동 및 프로젝션된 컨텍스트 이해
오디오 안경과 디스플레이 안경은 사용자 휴대전화의 기능을 확장하는 연결된 기기로 취급됩니다. A 프로젝션된 컨텍스트는 앱이 휴대전화의 하드웨어가 아닌 연결된 안경
기기의 하드웨어(예: 센서, 카메라 또는 마이크)와 상호작용할 수 있도록 하는 기기 인식
Context입니다. 오디오 글라스와 디스플레이 글라스를 위한 환경을 개발할 때 앱은 프로젝션된 컨텍스트를 사용하여 글라스의 하드웨어에 액세스해야 합니다.
호출 활동의 컨텍스트에 따라 프로젝션된 컨텍스트가 앱에 자동으로 부여될 수 있습니다.
프로젝션된 활동의 경우: 앱의 코드가 프로젝션된 활동 내에서 실행되는 경우 자체 활동 컨텍스트는 이미 프로젝션된 컨텍스트입니다. 이 시나리오에서는 해당 Activity 내에서 이루어진 호출이 이미 글라스의 하드웨어에 액세스할 수 있습니다.
휴대전화 앱 또는 서비스의 경우: 프로젝션된 활동 외부의 앱 일부 (예: 휴대전화 활동 또는 서비스)가 안경의 하드웨어에 액세스해야 하는 경우 프로젝션된 컨텍스트를 명시적으로 가져와야 합니다. 이렇게 하려면
createProjectedDeviceContext()메서드를 사용하세요.
자세한 내용은 프로젝션된 컨텍스트를 사용하여 오디오 글라스 및 디스플레이 글라스의 하드웨어에 액세스하기를 참고하세요.
기기 인식 API 이해
일부 표준 Android API는 호출 활동의 Context에 따라 액세스하는 기기의 하드웨어를 변경합니다. 이러한 API는 프로젝션된 컨텍스트를 수신하면 호스트 휴대전화 기기의 하드웨어 대신 안경의 하드웨어에 액세스합니다.
CameraManager: 글라스의 카메라에 액세스합니다.SensorManager: 안경에서 센서 데이터 (예: 자이로스코프 또는 가속도계 데이터)를 가져옵니다.AudioManager: 안경의 오디오 스트림, 볼륨, 라우팅을 관리합니다.AudioRecord: 안경의 마이크를 사용하여 오디오를 캡처합니다.