Gdy użytkownik przestanie korzystać z zegarka, Wear OS automatycznie przełączy aktywną aplikację w tryb niskiego poboru mocy. Jest to tzw. systemowy tryb nieaktywny. Jeśli użytkownik wejdzie w interakcję z ponownie w określonym przedziale czasu, Wear OS przenosi użytkownika z powrotem do aplikacji, którą przerwali.
w określonych przypadkach użycia, na przykład gdy użytkownik chce obserwować tętno i tempo podczas bieganie—ty może też kontrolować, co ma się wyświetlać w trybie nieaktywnym o niskim poborze energii. Aplikacje na Wear OS, które działają w trybie zwykłym i interaktywnie, nazywane są aplikacją zawsze włączoną.
Utrzymywanie aplikacji w stanie widocznym wpływa na czas pracy na baterii, dlatego weź to pod uwagę, dodając tę funkcję do aplikacji.
Konfigurowanie projektu
Aby włączyć tę funkcję, wykonaj te czynności:
- Utwórz lub zaktualizuj projekt na podstawie konfiguracji w Utwórz i uruchomić stronę z aplikacjami do noszenia.
- Dodaj uprawnienie
WAKE_LOCK
do pliku manifestu Androida:
<uses-permission android:name="android.permission.WAKE_LOCK" />
Włącz tryb Always On Display
Aby korzystać z klasy
AmbientLifecycleObserver
:
-
Zaimplementuj interfejs
AmbientLifecycleObserver.AmbientLifecycleCallback
, jak w tym przykładzie. Na tym etapie metody są puste, ale w dalszej części przewodnika znajdziesz szczegółowe informacje o tym, jakie zmiany upewnij się, że tworzysz wizualizację, by przejść do trybu nieaktywnego i z niego wyjść.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. } }
-
Utwórz
AmbientLifecycleObserver
i zarejestruj obserwatora. Zwykle będzie używana w usłudzeonCreate()
lub w funkcji kompozycyjnej najwyższego poziomu, jeśli używasz funkcji Utwórz na Wear OS, aby pozwalają na włączenie trybu Ekran zawsze wł. przez cały cykl życia działania.Kotlin
private val ambientObserver = AmbientLifecycleObserver(activity, callback) override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) lifecycle.addObserver(observer) // ... }
- Usuń obserwatora, wywołując funkcję
removeObserver()
, gdy zachowanie „zawsze włączone” nie jest już potrzebne. Możesz na przykład wywołać tę metodę w metodzieonDestroy()
swojej aktywności.
Zawsze włączone aplikacje mogą przenieść się w tle
Począwszy od Wear OS 5 system przenosi aplikacje zawsze aktywne na drugi plan po tym, jak są widoczne w trybie ambient przez określony czas. Użytkownicy mogą skonfigurować limit czasu w ustawieniach systemowych.
Jeśli w aplikacji są zawsze włączone informacje o trwającym działaniu użytkownika, takim jak podczas odtwarzania muzyki lub podczas treningu. widoczne do momentu zakończenia zadania. Aby to zrobić, użyj interfejsu Ongoing Activity API, aby opublikować powiadomienie, które jest połączone z Twoją stałą aktywnością.
Aby system mógł rozpoznać trwającą aktywność, intencja dotknięcia powiadomienia musi wskazywać na aktywność zawsze włączoną, jak pokazano w tym fragmencie kodu:
// 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()
)
Modyfikowanie wyglądu w trybie nieaktywnym
Domyślnie, gdy ekran jest włączony,
gdy zegarek przejdzie w tryb nieaktywny. Możesz zmodyfikować to zachowanie, zastępując metody w AmbientLifecycleCallback
.
Aby oszczędzać energię, wykonaj te czynności:
- Zmniejsz jasność ekranu, a większość ekranu pozostaw czarna. Rozważ wyświetlać tylko istotne informacje w trybie nieaktywnym, gdy użytkownik przejdzie w tryb interaktywny.
- Dostosuj treści, aby aktualizacje były rzadziej publikowane. Na przykład wyświetlanie zegara w pobliższej minucie zamiast w pobliższej sekundzie.
- W obiekcie
AmbientDetails
przekazanym do metodyonEnterAmbient()
:- Jeśli jest ustawiony
deviceHasLowBitAmbient
, wyłącz antyaliasing, jeśli to możliwe. - Jeśli ustawiono
burnInProtectionRequired
, przesuń wizualizację w inne miejsce okresowo i unikaj stałych białych obszarów.
- Jeśli jest ustawiony
Jeśli używasz funkcji Utwórz na Wear OS, zalecamy użycie tych metod wywołania zwrotnego aby zaktualizować stan, co umożliwi systemowi ponowne skomponowanie z odpowiednim interfejsem użytkownika.
Przykładem tego jest przykładowy ćwiczenia oparty na komponencie, który znajdziesz na GitHubie. Wykorzystuje on komponent AmbientAware
z biblioteki Horologist.