상시 사용 설정 앱 및 시스템 대기 모드

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() 메서드 있습니다.

항상 켜져 있는 앱을 백그라운드로 이동할 수 있음

Wear OS 5부터 시스템은 상시 사용 설정 앱을 다음 시간 이후에 백그라운드로 이동합니다. 일정 시간 동안 대기 모드에서 표시됩니다. 사용자가 할 수 있는 작업 시스템 설정에서 제한 시간을 구성합니다.

상시 사용 설정 앱에서 진행 중인 사용자 작업에 관한 정보(예: 음악 재생이나 운동 세션 등, 진행 중인 활동은 그대로 유지하는 것이 좋습니다. 표시됩니다. 이렇게 하려면 Ongoing Activity API를 사용하여 게시하세요. 상시 사용 설정 활동에 연결된 진행 중인 알림.

시스템이 진행 중인 활동을 인식할 수 있도록 진행 중인 알림의 터치 인텐트는 다음 코드 스니펫입니다.

// Create a pending intent that point to your always-on activity
val touchIntent =
    PendingIntent.getActivity(
        context,
        0,
        Intent(context, MyAlwaysOnActivity::class.java),
        PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    )

val notificationBuilder =
    NotificationCompat.Builder(this, CHANNEL_ID)
    // ...
    .setOngoing(true)

val ongoingActivity =
    OngoingActivity.Builder(
        applicationContext, NOTIFICATION_ID, notificationBuilder
    )
    // ...
    .setTouchIntent(touchIntent)
    .build()

ongoingActivity.apply(applicationContext)

notificationManager.notify(
    NOTIFICATION_ID,
    notificationBuilder.build()
)

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

기본적으로 항상 켜기를 구현할 때 화면에서는 자동으로 표시됩니다. 이 에서 메서드를 재정의하여 AmbientLifecycleCallback

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

  • 더 적은 픽셀을 비추고 화면 대부분을 검은색으로 둡니다. 고려 사항 대기 모드에서는 중요한 정보만 표시하고 사용자가 대화형 모드로 전환될 때 세부정보
  • 업데이트 빈도가 낮도록 콘텐츠를 조정합니다. 예를 들어 타이머를 표시합니다. 가장 가까운 초 단위 대신 가장 가까운 분 단위로 변환합니다.
  • AmbientDetails에 있음 객체가 onEnterAmbient()에 전달됩니다. <ph type="x-smartling-placeholder">
      </ph>
    • deviceHasLowBitAmbient가 설정되면 가능한 경우 앤티앨리어싱을 중지합니다.
    • burnInProtectionRequired를 설정하면 시각화를 다른 방향으로 옮깁니다. 흰색으로 채워진 영역은 피하세요.

Wear OS용 Compose를 사용할 때 다음 콜백 메서드를 사용하는 것이 좋습니다. state를 업데이트하여 시스템에서 UI를 적절하게 조정하는 것이 좋습니다.

이를 실현하는 방법의 예는 작성 기반 AmbientAware를 사용하는 GitHub의 운동 샘플 Horologist 라이브러리에서 가져와야 합니다.