Wear OS by Google sayesinde saat, Android veya iOS telefona erişim olmadan doğrudan ağla iletişim kurabilir. Bir Wear OS uygulamasını ağa bağlamak için Veri Katmanı API'sini kullanmayın. Bunun yerine, bu kılavuzdaki yönergeleri ve adımları uygulayın.
Ağ erişimi
Wear OS uygulamaları ağ isteğinde bulunabilir. Saatin bir telefona Bluetooth bağlantısı varsa saatin ağ trafiği genellikle telefon üzerinden proxy gerçekleştirilir.
Bir telefon kullanılamadığında, saatin 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 işlenir.
HTTP, TCP ve UDP gibi protokoller kullanabilirsiniz. Ancak
CookieManager
sınıfı dahil
android.webkit
API'leri kullanılamaz. İstek ve yanıtlarda üst bilgileri okuyup yazarak çerezleri kullanabilirsiniz.
Ayrıca düzenli aralıklarla yoklama da dahil olmak üzere, eşzamansız istekler için WorkManager API'yi kullanmanızı öneririz.
Belirli ağ türlerine bağlanmanız gerekiyorsa Ağ durumunu okuma bölümünü inceleyin.
Yüksek bant genişliğinde ağ erişimi
Wear OS platformu, genel olarak en iyi kullanıcı deneyimini sağlamak amacıyla ağ bağlantısını yönetir. Platform, iki ihtiyacı dengeleyerek varsayılan etkin ağı seçer:
- Uzun pil ömrü
- Ağ bant genişliği
Pil korumaya öncelik verildiğinde etkin ağ, büyük dosyaları taşıma veya medya akışı gibi ağ görevleri için yeterli bant genişliğine sahip olmayabilir.
Bu bölümde, uygulamanızın ihtiyaç duyduğu ağ bant genişliğine sahip olduğundan emin olmak için
ConnectivityManager
sınıfının kullanılmasıyla ilgili yol gösterici bilgiler sağlanmaktadır. Ağ kaynakları üzerinde ayrıntılı denetim hakkında genel bilgi için
Ağ kullanımını yönetme bölümünü inceleyin.
Kablosuz bağlantı isteğinde bulunun
Büyük dosyaların veya medya akışının taşınması gibi yüksek bant genişliğine sahip ağ erişimi gerektiren kullanım alanlarında kablosuz ağ gibi yüksek bant genişliğine sahip aktarımla bağlantı isteğinde bulunun. Bu, aşağıdaki örnekte gösterilmektedir:
Kotlin
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. } } connectivityManager.requestNetwork( NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback )
Java
ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() { public void onAvailable(Network network) { super.onAvailable(network); // The Wi-Fi network has been acquired. Bind it to use this network by default. connectivityManager.bindProcessToNetwork(network); } public void onLost(Network network) { super.onLost(network); // Called when a network disconnects or otherwise no longer satisfies this request or callback. } }; connectivityManager.requestNetwork( new NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback );
Saatin kablosuz veya hücresel radyosu kapalı
olduğundan pil tasarrufu yapmak için bir ağ edinme işlemi anında gerçekleşmeyebilir. Saat bir ağa bağlanamıyorsa NetworkCallback
örneğinizin onAvailable()
yöntemi çağrılmaz.
onAvailable()
çağrıldıktan sonra, NetworkCallback
serbest bırakılana kadar cihaz kablosuz ağa bağlı kalmaya çalışır. Artık bir kablosuz ağa ihtiyacınız olmadığında
pil ömrünü korumak için geri çağırmayı aşağıdaki örnekte gösterildiği gibi
bırakın.
Kotlin
connectivityManager.bindProcessToNetwork(null) connectivityManager.unregisterNetworkCallback(callback)
Java
connectivityManager.bindProcessToNetwork(null); connectivityManager.unregisterNetworkCallback(callback);
Kablosuz ayarları etkinliğini başlatma
Kablosuz ağ isteğinde bulunurken sistem, yapılandırılmış ve kapsama alanındaysa kayıtlı
bir ağa bağlanmaya çalışır. Kayıtlı kablosuz ağ yoksa NetworkCallback
örneğinizin onAvailable()
geri çağırma yöntemi çağrılmaz.
Ağ isteğini zaman aşımına uğratmak için bir Handler
kullanıyorsanız
zaman aşımı gerçekleştiğinde kullanıcıyı kablosuz ağ eklemeye yönlendirebilirsiniz.
Aşağıdaki amacı kullanarak kablosuz ağ eklemek için kullanıcıyı doğrudan etkinliğe gönderin:
Kotlin
context.startActivity(Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"))
Java
context.startActivity(new Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"));
Ayarlar etkinliğini başlatmak için uygulamanızın şu izne sahip olması gerekir: android.permission.CHANGE_WIFI_STATE
.
Kullanıcı arayüzüyle ilgili dikkat edilmesi gereken noktalar
Uygulamanız yüksek bant genişliğine sahip bir işlem için yeni bir kablosuz ağa bağlanmayı gerektiriyorsa kablosuz ağ ayarlarını başlatmadan önce bağlantı nedeninin kullanıcı tarafından netleştirildiğinden emin olun. Yalnızca yüksek bant genişliğine sahip ağ gerektiğinde kullanıcıdan yeni bir kablosuz ağ eklemesini isteyin. Kullanıcının, yüksek bant genişliğine sahip ağ gerektirmeyen uygulama özelliklerine erişmesini engellemeyin.
Şekil 1'de bir müzik uygulaması gösterilmektedir. Uygulama, kullanıcının daha düşük bant genişliğine sahip bir ağda müziklere göz atmasına olanak tanır ve kullanıcının yalnızca müzik indirmek veya canlı çalmak için yeni bir kablosuz ağ eklemesini gerektirir.

Şekil 1. Müzik indirmeye yönelik bir müzik uygulaması akışı.
Cloud Messaging
Uygulamalar, bildirim göndermek için doğrudan Firebase Cloud Messaging (FCM) özelliğini kullanabilir.
Ağ erişimine veya FCM'ye yönelik API'ler, Wear OS'e özel değildir. Ağa bağlanma ve bulut mesajlaşması ile ilgili mevcut belgeleri inceleyin.
FCM, Doz ile iyi çalışır ve bir saate bildirim göndermek için önerilen yöntemdir.
Wear OS uygulamanız çalıştığında cihaz için kayıt jetonu toplayarak FCM'den mesaj sağlayın. Ardından, sunucunuz FCM REST uç noktasına mesaj gönderdiğinde jetonu hedefin bir parçası olarak ekleyin. FCM, jetonla tanımlanan cihaza mesaj gönderir.
Bir FCM mesajı, JavaScript Object Notation (JSON) biçimindedir ve aşağıdaki yüklerden birini veya her ikisini içerebilir:
- Bildirim yükü: Bir saat 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ükün bir dizi özel anahtar veya değer çifti vardır. Yük, Wear OS uygulamanıza veri olarak gönderilir.
Daha fazla bilgi ve yük örnekleri için FCM mesajları hakkında bölümüne bakın.
Bildirimler varsayılan olarak bir telefon uygulamasından kol saatine köprü modundadır. Bağımsız bir Wear OS uygulamanız ve buna karşılık gelen bir telefon uygulamanız varsa yinelenen bildirimler alabilirsiniz. Örneğin, FCM'den hem telefon hem de kol saati tarafından alınan tek bir bildirim her iki cihaz tarafından da bağımsız olarak görüntülenebilirdi. Köprü API'leri kullanarak bunu önleyebilirsiniz.
Arka plan hizmetlerini kullanma
Arka plan görevlerinin doğru şekilde yürütülmesine yardımcı olmak için Doz ve Uygulama Bekletme'yi dikkate almaları gerekir.
Bir ekran kapandığında veya yeterince uzun bir süre ambiyans moduna girdiğinde, bir Doz alt kümesi gerçekleşebilir ve arka plan görevleri belirli süreler için ertelenebilir. Daha sonra, cihaz uzun bir süre hareketsiz kalırsa normal Doz işlemi gerçekleşir. İstekleri WorkManager API ile planlayın. Bu API, uygulamanızın Doz güvenli kod yürütmeye kaydolmasını sağlar.
Kısıtlamalarla program yapın
İstekleri, pil ömrünü koruyacak şekilde yapılandırmak için kısıtlamalar kullanabilirsiniz. İsteklerinize dahil edilecek aşağıdaki kısıtlamalardan birini veya daha fazlasını seçin:
- Ağ iletişimi gerektiren bir istek planlayın.
NetworkType
özelliğininCONNECTED
veyaUNMETERED
olduğunu belirtin.UNMETERED
büyük veri aktarımları,CONNECTED
ise küçük aktarımlar içindir. - Şarj olurken istek planlayın.
- Cihaz boştayken bir istek planlayın. Bu özellik, özellikle cihaz şarj olurken, düşük öncelikli arka plan işleri veya senkronizasyon için kullanışlıdır.
Bluetooth LE gibi bazı düşük bant genişlikli ağların sınırlı olarak kabul edildiğini unutmayın.
Daha fazla bilgi için WorkManager'ın kısıtlamaların periyodik çalışma üzerindeki etkisi kılavuzunu inceleyin.