在 Wear 上讓應用程式持續顯示

當使用者不再使用手錶時,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,並註冊觀察器。一般而言,使用 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,請定期調整視覺呈現方式,避免顯示實心白色區域。

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

如需實際操作範例,請查看 GitHub 上以 Compose 為基礎的 運動範例,這個範例會使用 Horologist 程式庫中的 AmbientAware 可組合項。