一律開啟應用程式和系統微光模式

當使用者不再使用手錶時,Wear OS 會自動將應用程式改為低功率模式。這就是所謂的「系統微光模式」。如果使用者與 在特定時間範圍內再次觀看手錶時,Wear OS 會將使用者帶回應用程式, 然後留下的印象

有特定用途,例如:使用者想在 跑步—您 也可以控制低耗電微光模式的螢幕。執行的 Wear OS 應用程式 「持續待機應用程式」

持續顯示應用程式會影響電池續航力,因此新增應用程式時,請考量這一點 這項功能就會套用至您的應用程式

設定專案

如要支援微光模式,請按照下列步驟操作:

  1. 根據以下項目建立或更新專案: 建立 並執行穿戴式應用程式頁面
  2. WAKE_LOCK 權限新增至 Android 資訊清單檔案:
<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,並註冊觀察器。一般而言,這個 會用於 onCreate();如果使用 Compose for Wear OS,則用於頂層可組合函式 允許在活動的整個生命週期啟用「一律打開」行為。

    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() 的物件:
    • 如果已設定 deviceHasLowBitAmbient,請盡可能停用反鋸齒功能。
    • 如果已設定 burnInProtectionRequired,請移動視覺化內容 避開實心白色區域

使用 Compose for Wear OS 時,建議您使用這些回呼方法更新「狀態」,讓系統適當重組 UI。

如需實際範例,請參閱以 Compose 為基礎的 GitHub 上的運動範例,使用 AmbientAware 來自 Horologist 程式庫的可組合項。