Wear OS by Google ile kol saatleri, Android veya iOS telefona erişmeden doğrudan bir ağla iletişim kurabilir. Wear OS uygulamasını ağa bağlamak için veri katmanı API'sini kullanmayın. Bunun yerine, bu rehberdeki yönergeleri ve adımları uygulayın.
Ağ erişimi
Wear OS uygulamaları ağ istekleri yapabilir. Bir kol saati telefona Bluetooth bağlantısıyla bağlandığında, kol saatinin ağ trafiği genellikle telefon üzerinden proxy'lenir.
Telefon kullanılamadığında, kol saatinin donanımına bağlı olarak kablosuz ve hücresel ağlar kullanılır. Ağlar arasındaki geçişler Wear OS platformu tarafından yönetilir.
HTTP, TCP ve UDP gibi protokolleri kullanabilirsiniz. Ancak CookieManager sınıfı da dahil olmak üzere android.webkit API'leri kullanılamaz. İstek ve yanıtlardaki başlıkları okuyup yazarak çerezleri kullanabilirsiniz.
Düzenli aralıklarla yoklama dahil olmak üzere asenkron istekler için WorkManager kullanın.
Belirli ağ türlerine bağlanmanız gerekiyorsa Ağ durumunu okuma başlıklı makaleyi inceleyin.
Yüksek bant genişliğine sahip ağ erişimi
Wear OS platformu, genel olarak en iyi kullanıcı deneyimini sunmak amacıyla ağ bağlantısını yönetir. Platform, iki ihtiyacı dengeleyerek varsayılan etkin ağı seçer: uzun pil ömrü ve ağ bant genişliği.
Pil korumaya öncelik verildiğinde, etkin ağda büyük dosyaları aktarma veya medya akışı gibi ağ görevleri için yeterli bant genişliği olmayabilir.
Bu bölümde, uygulamanızın ihtiyaç duyduğu ağ bant genişliğine sahip olmasını sağlamak için ConnectivityManager sınıfını kullanmayla ilgili yönergeler verilmektedir. Ağ kaynakları üzerinde ayrıntılı kontrol hakkında genel bilgi için Ağ kullanımını yönetme başlıklı makaleyi inceleyin.
Kablosuz bağlantı isteğinde bulunma
Büyük dosyaları aktarma veya medya yayını yapma gibi yüksek bant genişliği gerektiren kullanım alanları için yüksek bant genişliğine sahip bir aktarım (ör. kablosuz) ile bağlantı isteğinde bulunun. Bu durum aşağıdaki örnekte gösterilmektedir:
val callback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { super.onAvailable(network) // The Wi-Fi network has been acquired. Bind it to use this network by default. connectivityManager.bindProcessToNetwork(network) } override fun onLost(network: Network) { super.onLost(network) // Called when a network disconnects or otherwise no longer satisfies this request // or callback. } } fun requestWifiNetwork() { connectivityManager.requestNetwork( NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback ) }
Pil ömrünü korumak için kol saatinin kablosuz veya hücresel radyosu kapalı olabileceğinden ağ edinme işlemi anında gerçekleşmeyebilir. Saat bir ağa bağlanamıyorsa onAvailable() örneğinizin NetworkCallback yöntemi çağrılmaz.
onAvailable() çağrıldıktan sonra cihaz, NetworkCallback serbest bırakılana kadar kablosuz ağa bağlı kalmaya çalışır. Pil ömrünü korumak için, kablosuz ağa ihtiyacınız kalmadığında aşağıdaki örnekte gösterildiği gibi geri aramayı serbest bırakın.
connectivityManager.bindProcessToNetwork(null) connectivityManager.unregisterNetworkCallback(callback)
Kablosuz ayarları etkinliğini başlatma
Sistem, kablosuz ağ isteğinde bulunurken yapılandırılmış ve kapsama alanında olan kayıtlı bir ağa bağlanmaya çalışır. Kayıtlı kablosuz ağ yoksa onAvailable geri arama yöntemi çağrılmaz.NetworkCallback
Ağ isteğinin zaman aşımına uğraması için Handler kullanıyorsanız zaman aşımı gerçekleştiğinde kullanıcıyı kablosuz ağ eklemeye yönlendirebilirsiniz. Kullanıcıyı aşağıdaki amaçla doğrudan kablosuz ağ ekleme etkinliğine gönderin:
val networkSettingsAction = "com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS" val intent = Intent(networkSettingsAction).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) } context.startActivity(intent)
Ayarlar etkinliğini başlatmak için uygulamanızda CHANGE_WIFI_STATE izni olmalıdır.
Kullanıcı arayüzüyle ilgili dikkat edilmesi gerekenler
Uygulamanızın yüksek bant genişliği gerektiren bir işlem için yeni bir kablosuz ağa bağlanması gerekiyorsa bu bağlantıyı sorunsuz bir şekilde edinmeli ve gerektiğinde serbest bırakmalısınız. Kablosuz ağ yoksa özelliğin kablosuz bağlantı gerektirdiğini açıklayın ve kablosuz ayarları etkinliğini başlatmanın bir yolunu sunun. Kullanıcının, yüksek bant genişliğine sahip bir ağ gerektirmeyen uygulama özelliklerine erişmesini engellemeyin.
Güç ve veri kullanımıyla ilgili dikkat edilmesi gereken noktalar
Pil ömrünü korumak ve mobil veri kullanımını en aza indirmek için Wear OS cihaz, LTE veya ölçülü bağlantı yerine Bluetooth ya da kablosuz bağlantıyı yeniden kurana kadar analiz raporlama veya günlük toplama gibi gerekli olmayan ağ görevlerini erteleyin.
Cloud Messaging
Bildirim göndermek için doğrudan Firebase Cloud Messaging'i (FCM) kullanın.
Ağ erişimi veya FCM için Wear OS'e özgü API'ler yoktur. Ağa bağlanma ve bulut mesajlaşma ile ilgili mevcut belgelere bakın.
FCM, Doze ile iyi çalışır ve kol saatine bildirim göndermek için önerilen yöntemdir.
Wear OS uygulamanız çalışırken bir cihaz için kayıt jetonu toplayarak FCM'den gelen mesajları sağlayın. Ardından, sunucunuz FCM REST uç noktasına mesaj gönderirken jetonu hedef olarak ekleyin. FCM, jetonla tanımlanan cihaza mesaj gönderir.
FCM mesajı, JavaScript Object Notation (JSON) biçimindedir ve aşağıdaki yüklerden birini veya her ikisini içerebilir:
- Bildirim yükü: Bir kol saati tarafından bildirim yükü alındığında veriler doğrudan bildirim akışında kullanıcıya gösterilir. Kullanıcı bildirime dokunduğunda uygulamanız başlatılır.
- Veri yükü: Yükte bir dizi özel anahtar veya değer çifti olduğunda. Yük, Wear OS uygulamanıza veri olarak teslim edilir.
Yükler hakkında daha fazla bilgi ve örnek için mesaj türleri bölümüne bakın.
Varsayılan olarak bildirimler bir telefon uygulamasından kol saatine aktarılır. Bağımsız bir Wear OS uygulamanız ve buna karşılık gelen bir telefon uygulamanız varsa yinelenen bildirimler görülebilir. Örneğin, hem telefon hem de kol saati tarafından alınan FCM'den gelen tek bir bildirim, her iki cihazda da bağımsız olarak gösterilebilir. Köprü API'leri kullanarak bunu önleyebilirsiniz.
Arka plan hizmetlerini kullanma
Arka plan görevlerinin doğru şekilde yürütülmesini sağlamak için Doze ve uygulama bekleme modunu hesaba katmaları gerekir.
Bir ekran yeterince uzun süre kapalı kaldığında veya ortam moduna girdiğinde Doze'un bir alt kümesi gerçekleşebilir ve arka plan görevleri belirli süreler boyunca ertelenebilir.
Daha sonra, cihaz uzun süre hareketsiz kaldığında normal uyku modu devreye girer.
Uygulamanızın Doze'a uygun kod yürütme için kaydolmasına olanak tanıyan WorkManager API ile istekleri planlayın.
Kısıtlamalarla planlama
İstekleri pil ömrünü koruyacak şekilde yapılandırmak için kısıtlamaları kullanabilirsiniz. Taleplerinize dahil etmek için aşağıdaki sınırlamalardan birini veya daha fazlasını seçin:
Ağ iletişimi gerektiren bir istek planlayın.
NetworkTypeöğesininCONNECTEDveyaUNMETEREDolup olmadığını belirtin.UNMETEREDbüyük veri aktarımları,CONNECTEDise küçük aktarımlar için kullanılır.Şarj olurken istek planlayabilirsiniz.
Cihaz boştayken istek planlayın. Bu, özellikle cihaz şarj olurken daha düşük öncelikli arka plan işlemleri veya senkronizasyon için yararlıdır.
Daha fazla bilgi için WorkManager'ın Effect of constraints on periodic work (Kısıtlamaların periyodik çalışma üzerindeki etkisi) kılavuzunu inceleyin.