Zawsze włączone aplikacje i tryb nieaktywny systemu

Wear OS automatycznie przechodzi w tryb oszczędzania energii w przypadku aktywnej aplikacji, gdy użytkownik nie jest dłużej używać zegarka. 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 monitorować tętno i tempo w trakcie bieganie—ty może też kontrolować, co ma się wyświetlać w trybie nieaktywnym o niskim poborze energii. Uruchamianie aplikacji na Wear OS w trybie nieaktywnym i interaktywnym nazywamy aplikacjami zawsze włączonymi.

Stały widoczność aplikacji wpływa na żywotność baterii. tę funkcję.

Konfigurowanie projektu

Aby włączyć tę funkcję, wykonaj te czynności:

  1. Utwórz lub zaktualizuj projekt na podstawie konfiguracji w Utwórz i uruchomić stronę z aplikacjami do noszenia.
  2. Dodaj uprawnienie WAKE_LOCK do pliku manifestu Androida:
<uses-permission android:name="android.permission.WAKE_LOCK" />

Włącz tryb stały

Aby użyć funkcji AmbientLifecycleObserver, wykonaj te czynności:

  1. Zaimplementuj AmbientLifecycleObserver.AmbientLifecycleCallback, jak w przykładzie poniżej. 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.
        }
    }
  2. Utwórz AmbientLifecycleObserver i zarejestruj obserwatora. Zwykle będzie używana w usłudze onCreate() 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)
    
      // ...
    }
    
  3. Usuń obserwatora, wywołując funkcję removeObserver(), gdy jest zawsze włączona nie jest już wymagane. Możesz na przykład wywołać tę metodę w metoda onDestroy() działania.

Zawsze włączone aplikacje mogą przenieść się w tle

Od Wear OS 5 system przenosi zawsze włączone aplikacje w tle po wyświetlają się w trybie nieaktywnym 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. powiadomienie o trwającej aktywności powiązane z Twoją zawsze aktywną aktywnością.

Aby system mógł rozpoznać trwającą aktywność, trwający intencja dotyku powiadomienia musi wskazywać Twoją zawsze aktywną aktywność, jak widać w ten fragment 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()
)

Zmień wygląd w trybie nieaktywnym

Domyślnie, gdy ekran jest włączony, gdy zegarek przejdzie w tryb nieaktywny. Możesz to zmienić przez zastąpienie metod w argumencie AmbientLifecycleCallback

Aby oszczędzać energię, wykonaj te czynności:

  • Zmniejsz jasność ekranu, a większość ekranu pozostaw czarna. Rozważ wyświetlania tylko istotnych informacji w trybie nieaktywnym, gdy użytkownik przejdzie w tryb interaktywny.
  • Możesz korygować wybrane treści, aby nie pojawiały się zbyt często. Na przykład pokaż minutniki do najbliższej minuty zamiast do najbliższej sekundy.
  • W: AmbientDetails obiekt przekazany do onEnterAmbient():
    • 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 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.

Aby dowiedzieć się, jak można to osiągnąć, przeczytaj artykuł poświęcony tworzeniu wiadomości Przykładowe ćwiczenie w GitHubie, które wykorzystuje AmbientAware z biblioteki Horologist.