Wear에서 앱 표시 유지

Wear OS는 사용자가 시계를 더 이상 사용하지 않을 때 활성 상태 앱의 저전력 모드 전환을 자동으로 처리합니다. 이를 시스템 대기 모드라고 합니다. 사용자가 특정 시간 내에 시계와 다시 상호작용하면 Wear OS는 사용자가 중단한 앱을 다시 표시합니다.

특정 사용 사례(예: 사용자가 달리기 중에 심박수와 속도를 확인하고자 함)에서는 저전력 대기 모드에서 표시되는 항목을 제어할 수도 있습니다. 대기 모드와 대화형 모드에서 모두 실행되는 Wear OS 앱을 상시 사용 설정 앱이라고 합니다.

앱이 계속 표시되도록 하면 배터리 수명에 영향을 미치므로 앱에 이 기능을 추가할 때는 이러한 영향을 고려하세요.

프로젝트 구성

대기 모드를 지원하려면 다음 단계를 따르세요.

  1. 웨어러블 앱을 만들고 실행 페이지의 구성을 기준으로 프로젝트를 만들거나 업데이트합니다.
  2. Android 매니페스트 파일에 WAKE_LOCK 권한을 추가합니다.
<uses-permission android:name="android.permission.WAKE_LOCK" />

상시 사용 설정 모드 사용 설정

AmbientLifecycleObserver 클래스를 사용하려면 다음 단계를 따르세요.

  1. 다음 예와 같이 AmbientLifecycleObserver.AmbientLifecycleCallback 인터페이스를 구현합니다. 이 단계에서는 메서드가 비어 있지만 이 가이드의 후반부에서는 대기 모드 시작 및 종료를 위해 시각화에 적용해야 하는 변경사항을 자세히 설명합니다.

    Kotlin

        val ambientCallback = object : AmbientLifecycleObserver.AmbientLifecycleCallback {
          override fun onEnterAmbient(ambientDetails: AmbientLifecycleObserver.AmbientDetails) {
            // ... Called when moving from interactive mode into ambient mode.
          }
    
          override fun onExitAmbient() {
            // ... Called when leaving ambient mode, back into interactive mode.
          }
    
          override fun onUpdateAmbient() {
            // ... Called by the system in order to allow the app to periodically
            // update the display while in ambient mode. Typically the system will
            // call this every 60 seconds.
          }
        }
        
  2. AmbientLifecycleObserver를 만들고 관찰자를 등록합니다. 일반적으로 이는 Wear OS용 Compose를 사용하는 경우 활동의 수명 주기 전체에 걸쳐 상시 사용 설정 동작이 사용 설정되도록 onCreate() 또는 최상위 컴포저블에서 사용합니다.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. 상시 사용 설정 동작이 더 이상 필요하지 않으면 removeObserver()를 호출하여 관찰자를 삭제합니다. 예를 들어 활동의 onDestroy() 메서드에서 이 메서드를 호출할 수 있습니다.

대기 모드의 시각적 모양 수정

기본적으로 상시 사용 설정을 구현할 때는 시계가 대기 모드로 전환되어도 화면의 모양이 변경되지 않습니다. AmbientLifecycleCallback의 메서드를 재정의하여 이 동작을 수정할 수 있습니다.

전원을 절약하려면 다음 단계를 따르세요.

  • 더 적은 픽셀을 비추고 화면 대부분을 검은색으로 둡니다. 대기 모드에서는 중요한 정보만 표시하고 사용자가 대화형 모드로 전환될 때 세부정보를 제공하는 것이 좋습니다.
  • 업데이트 빈도가 낮도록 콘텐츠를 조정합니다. 예를 들어 타이머를 가장 가까운 초 단위 대신 가장 가까운 분 단위로 표시합니다.
  • onEnterAmbient()에 전달된 AmbientDetails 객체에서 다음을 실행합니다.
    • deviceHasLowBitAmbient가 설정되면 가능한 경우 앤티앨리어싱을 중지합니다.
    • burnInProtectionRequired가 설정된 경우 시각화를 주기적으로 이동하고 흰색으로 채워진 영역은 피합니다.

Wear OS용 Compose를 사용할 때는 이러한 콜백 메서드를 사용하여 상태를 업데이트하는 것이 좋습니다. 그러면 시스템이 UI를 적절하게 재구성할 수 있습니다.

이를 달성하는 방법의 예는 다음 리소스를 참고하세요.