Her zaman açık uygulamalar ve sistem ambiyans modu

Wear OS, kullanıcı kol saatini kullanmayı bıraktığında etkin bir uygulamanın düşük güç moduna geçmesini otomatik olarak yönetir. Buna sistem ambiyans modu adı verilir. Kullanıcı belirli bir süre içinde kol saatiyle tekrar etkileşime geçerse Wear OS, kullanıcıyı uygulamada bıraktığı yere geri getirir.

Belirli kullanım alanları için (ör. koşu sırasında nabzı ve hızı görmek isteyen bir kullanıcı) düşük güç modunda nelerin gösterileceğini de kontrol edebilirsiniz. Hem ortam hem de etkileşimli modlarda çalışan Wear OS uygulamalarına her zaman açık uygulamalar denir.

Bir uygulamayı sürekli görünür yapmak pil ömrünü etkiler. Bu nedenle, uygulamaya eklerken bu etkiyi göz önünde bulundurun. uygulamanıza ekleyin.

Projenizi yapılandırma

Ambiyans modunu desteklemek için şu adımları uygulayın:

  1. Projenizi Oluştur ve giyilebilir bir uygulama sayfası çalıştırın.
  2. Android manifest dosyasına WAKE_LOCK iznini ekleyin:
<uses-permission android:name="android.permission.WAKE_LOCK" />

Her zaman açık modunu etkinleştir

AmbientLifecycleObserver sınıfını kullanmak için aşağıdakileri yapın:

  1. uygulayın AmbientLifecycleObserver.AmbientLifecycleCallback arayüzünü kullanın. Bu aşamada yöntemler boştur ancak rehberin ilerleyen bölümlerinde, ambiyans moduna girip çıkmak için görselleştirmede yapmanız gereken değişikliklerle ilgili ayrıntılar sağlanır.

    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. Bir AmbientLifecycleObserver oluşturun ve gözlemciyi kaydedin. Genellikle bu, etkinliğin yaşam döngüsü boyunca her zaman açık davranışının etkinleştirilmesine izin vermek için onCreate() veya Wear OS için Compose kullanılıyorsa üst düzey derlenebilir bileşende kullanılır.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. Her zaman açık olduğunda removeObserver() arayarak gözlemciyi kaldırın gerekli değildir. Örneğin, bu yöntemi onDestroy() yöntemi etkinliği'ne dokunun.

Her zaman açık olan uygulamalar arka plana taşınabilir

Sistem, Wear OS 5 sürümünden itibaren her zaman açık uygulamaları arka plana taşır. süre boyunca ambiyans modunda görünürler. Kullanıcılar, zaman aşımını sistem ayarlarından yapılandırabilir.

Her zaman açık uygulamanız, devam eden bir kullanıcı görevi (ör. müzik çalma veya antrenman oturumu) hakkında bilgi gösteriyorsa görev sona erene kadar devam eden etkinliği görünür durumda tutmak isteyebilirsiniz. Bunu yapmak için Oncontinue Activity API'yi kullanarak her zaman açık etkinliğinizle bağlantılı devam eden bir bildirim.

Sistemin devam eden etkinliği tanıması için devam eden bildirimin dokunma amacı, aşağıdaki kod snippet'inde gösterildiği gibi her zaman açık etkinliğinizi işaret etmelidir:

// 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()
)

Ambiyans modunda görsel görünümü değiştirin

Varsayılan olarak, sürekli açık ekran özelliği uygulandığında saat ambiyans moduna girdiğinde ekranın görünümü değişmez. Bu ayarı değiştirebilirsiniz geçersiz kılarak bir sonraki AmbientLifecycleCallback

Güç tasarrufuna yardımcı olmak için aşağıdakileri yapın:

  • Daha az sayıda piksel aydınlatılır ve ekranın büyük bir kısmı siyah bırakılır. Ambiyans modunda yalnızca önemli bilgileri göstermeyi ve kullanıcı etkileşimli moda girdiğinde daha fazla ayrıntı sunmayı düşünün.
  • İçerikleri daha seyrek güncellemeler için ayarlayın. Örneğin, zamanlayıcıları en yakın saniyeye değil, en yakın dakikaya göre gösterin.
  • onEnterAmbient() yöntemine iletilen AmbientDetails nesnesinde:
    • deviceHasLowBitAmbient ayarlanmışsa mümkün olduğunda kenar yumuşatma özelliğini devre dışı bırakın.
    • burnInProtectionRequired ayarlanmışsa görselleştirmeyi düzenli aralıklarla hareket ettirin ve tamamen beyaz alanlar kullanmaktan kaçının.

Wear OS için Compose'u kullanırken durumu güncellemek için bu geri çağırma yöntemlerini kullanmanızı öneririz. Bu yöntemler, sistemin kullanıcı arayüzünüzü uygun şekilde yeniden oluşturmasına olanak tanır.

Bunun nasıl yapılabileceğine ilişkin bir örnek için yazma tabanlı GitHub'da, AmbientAware kullanan alıştırma örneği Horology kütüphanesinden derlenebilir.