當使用者不處於閒置狀態時,Wear OS 會自動將應用程式改為低耗電模式 延長觀看時間這就是所謂的「系統微光模式」。如果使用者與 在特定時間範圍內再次觀看手錶時,Wear OS 會將使用者帶回應用程式, 然後留下的印象
有特定用途,例如:使用者想在 跑步—您 也可以控制低耗電微光模式的螢幕。執行的 Wear OS 應用程式 「持續待機應用程式」。
持續顯示應用程式會影響電池續航力,因此新增應用程式時,請考量這一點 這項功能就會套用至您的應用程式
設定專案
如要支援微光模式,請按照下列步驟操作:
- 根據以下項目建立或更新專案: 建立 並執行穿戴式應用程式頁面
- 將
WAKE_LOCK
權限新增至 Android 資訊清單檔案:
<uses-permission android:name="android.permission.WAKE_LOCK" />
啟用「一律打開」模式
如要使用
AmbientLifecycleObserver
類別,請執行以下操作:
-
實作
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. } }
-
建立
AmbientLifecycleObserver
,並註冊觀察器。一般而言,這個 會用於onCreate()
;如果使用 Compose for Wear OS,則用於頂層可組合函式 允許在活動的整個生命週期啟用「一律打開」行為。Kotlin
private val ambientObserver = AmbientLifecycleObserver(activity, callback) override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) lifecycle.addObserver(observer) // ... }
- 螢幕一律開啟時,呼叫
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 時,建議您使用這些回呼方法 更新 state,讓系統能夠重組 使用合適的 UI
如需實際範例,請參閱以 Compose 為基礎的
GitHub 上的運動範例,使用 AmbientAware
來自 Horologist 程式庫的可組合項。