Bağımsız cihazlarda doğrudan bir ağ üzerinden iletişim kurun

Wear OS by Google sayesinde kol saati, herhangi bir cihaza ihtiyaç duymadan ağla doğrudan iletişim kurabilir. Android veya iOS telefona erişebilir. Bir veri katmanı bağlamak için Veri Katmanı API'sini Wear OS uygulamasından bir ağa bağlayın. Bunun yerine, bu makaledeki yönergeleri ve adımları uygulayın: rehberini inceleyin.

Ağ erişimi

Wear OS uygulamaları ağ istekleri yapabilir. Kol saatinde Bluetooth olduğunda saatin ağ trafiği genellikle akıllı telefon üzerinden telefon.

Bir telefon kullanılamadığında şuna bağlı olarak kablosuz ve hücresel ağlar kullanılır: için de geçerli. Ağlar arasındaki geçişleri Wear OS platformu yönetir.

HTTP, TCP ve UDP gibi protokolleri kullanabilirsiniz. Ancak CookieManager sınıfı dahil olmak üzere android.webkit API'leri, kullanılabilir. Çerezleri, isteklerdeki başlıkları okuyup yazarak kullanabilirsiniz. tıklayın.

Düzenli olarak yoklama da dahil olmak üzere eşzamansız istekler için WorkManager aracını kullanın. sağlar.

Belirli ağ türlerine bağlanmanız gerekiyorsa Okuma ağı durum.

Yüksek bant genişliğinde ağ erişimi

Wear OS platformu, aşağıdakileri sağlamak amacıyla ağ bağlantısını yönetir: en iyi genel kullanıcı deneyimini sunmaktır. Platform, varsayılan etkin ağı şu ölçüte göre seçer: iki ihtiyacı dengelemek: uzun pil ömrü ve ağ bant genişliği.

Pil korumaya öncelik verildiğinde, etkin ağda büyük dosyaları taşımak veya akışla aktarma gibi ağ görevleri için yeterli bant genişliği medya

Bu bölümde, aşağıdaki işlemler için ConnectivityManager sınıfının kullanılmasıyla ilgili yol gösterici bilgiler verilmektedir: uygulamanızın ihtiyaç duyduğu ağ bant genişliğine sahip olmasını sağlamaya yardımcı olur. Genel ağ kaynakları üzerinde ayrıntılı denetim hakkında bilgi edinmek için yönetme ağ kullanımı bölümünde bulabilirsiniz.

Kablosuz bağlantı isteyin

Taşıma gibi yüksek bant genişliğinde ağ erişimi gerektiren kullanım alanları için büyük dosyalar veya medya akışı gerçekleştiriyorsanız, yüksek bant genişliğine sahip bağlantı isteğinde bulunun. taşımayı kolaylaştırır. 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 bağlantısı veya hücresel radyo, pili korumak için kapalı olabilir. Kol saati bir cihaza bağlanamıyorsa ağda, NetworkCallback örneğinizin onAvailable() yöntemi çağrıldı.

onAvailable() çağrıldıktan sonra, cihaz NetworkCallback serbest bırakılana kadar kablosuz ağa bağlı kalır. Pil ömrünü korumak için artık bir Kablosuz ağ.

Kotlin

connectivityManager.bindProcessToNetwork(null)
connectivityManager.unregisterNetworkCallback(callback)

Java

connectivityManager.bindProcessToNetwork(null);
connectivityManager.unregisterNetworkCallback(callback);

Kablosuz ayarları etkinliğini başlat

Kablosuz ağ isteğinde bulunulurken sistem, kayıtlı bir ağa bağlanmaya çalışır olup olmadığını kontrol edin. Kayıtlı bir kablosuz ağ yoksa NetworkCallback örneğinizin onAvailable geri çağırma yöntemi çağrılamıyor.

Ağ isteğini zaman aşımına uğratmak için bir Handler kullanıyorsanız kullanıcının zaman aşımı oluştuğunda kablosuz ağ eklemesini sağlayın. Kullanıcıyı doğrudan Aşağıdaki amacı kullanarak kablosuz ağ ekleme etkinliği:

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"));

Ayar etkinliğini başlatmak için uygulamanızda CHANGE_WIFI_STATE olmalıdır izni gerekir.

Kullanıcı arayüzü ile ilgili dikkat edilmesi gereken noktalar

Uygulamanız yüksek bant genişliği için yeni bir kablosuz ağa bağlanmayı gerektiriyorsa işlemi yapmadan önce, bağlanma nedeninin kullanıcı açısından net olduğundan emin olun. Kablosuz ayarlarını başlattığınızda. Yalnızca kullanıcıdan yeni bir kablosuz ağ eklemesini isteyin daha geniş bant genişliğine sahip bir ağ. Bu durumda kullanıcının Yüksek bant genişliğinde ağ gerektirmeyen uygulama özelliklerine erişirken

Şekil 1'de bir müzik uygulaması gösterilmektedir. Uygulama, kullanıcının daha düşük bant genişliğine sahip bir ağdır ve kullanıcının yalnızca aşağıdaki durumlarda yeni bir kablosuz ağ eklemesini gerektirir: müzik indirmek veya canlı çalmak istiyorlar.

Müzik indiriliyor

Şekil 1. Müzik indirmek için kullanılan bir müzik uygulaması akışı.

Güç ve veri kullanımı konusunda dikkat edilmesi gereken noktalar

Pil ömrünü korumak ve mobil veri kullanımını en aza indirmek için analiz raporlama veya günlük toplama gibi kritik olmayan ağ görevleri Wear OS cihaz tekrar bir Bluetooth veya kablosuz bağlantı kurana kadar kullanın.

Bulut mesajlaşma

Bildirim göndermek için doğrudan Firebase Cloud Messaging (FCM) uygulamasını kullanın.

Wear OS'e özgü ağ erişimi veya FCM API'leri yoktur. Mevcut ağa bağlanma ve bulut üzerinden mesajlaşma hakkındaki belgeleri inceleyin.

FCM, Doze ile iyi bir şekilde çalışır ve bildirim göndermenin önerilen yoludur bir telefona geçirebilir.

Bir cihaz için kayıt jetonu toplayarak FCM'den gelen mesajları sağlayın Wear OS uygulamanız çalıştığında. Ardından jetonu hedefin bir parçası olarak ekleyin . FCM, mesajları şuraya gönderir: cihaz kodu ile tanımlanır.

FCM mesajı, JavaScript Object Notation (JSON) biçimindedir ve aşağıdakilerden biri ya da her ikisi:

  • Bildirim yükü: Bir kullanıcı tarafından bildirim yükü alındığında izledikten sonra veriler kullanıcıya doğrudan bildirim akışında gösterilir. Zaman Kullanıcı bildirime dokunduğunda uygulamanız başlatılır.
  • Veri yükü: Yükte bir dizi özel anahtar veya değer çifti bulunduğunda. Yük, Wear OS uygulamanıza veri olarak iletilir.

Daha fazla bilgi ve yük örnekleri için FCM mesajları hakkında başlıklı makaleye bakın.

Varsayılan olarak bildirimler, telefon uygulamasından kol saatine geçiş yapar. Bir bağımsız Wear OS uygulaması ve karşılık gelen telefon uygulaması, yinelenen bildirimler meydana gelebilir. Örneğin, FCM tarafından gönderilen tek bir bildirim telefon ve kol saati, her iki cihazda da bağımsız olarak gösterilebilir. Şunları yapabilirsiniz: köprü API'leri kullanarak bunu önleyebilirsiniz.

Arka plan hizmetlerini kullan

Arka plan görevlerinin doğru şekilde yürütülmesini sağlamak için Doz ve Uygulamayı Beklemeye Alma özellikleri için.

Ekran kapandığında veya yeterli uzun süre boyunca ambiyans moduna girdiğinde Arka plan görevleri belirli süreler boyunca ertelenebilir. Ardından cihaz uzun bir süre hareketsiz kaldığında normal Doz işlemi gerçekleşir. İstekleri, uygulamanızın kaydedilmesini sağlayan WorkManager API ile planlayın kullanıma hazır.

Kısıtlamalarla planlama

İstekleri pil tasarrufu yapacak şekilde yapılandırmak için kısıtlamalar kullanabilirsiniz hayat. istekler:

  • Ağ iletişimi gerektiren bir istek planlayın.

    NetworkType öğesinin CONNECTED veya UNMETERED olduğunu belirtin. UNMETERED büyük veri aktarımları için, CONNECTED ise küçük veri aktarımları içindir aktarım.

  • Şarj işlemi sırasında bir istek planlayın.

  • Cihaz boştayken istek planlayın. Bu, özellikle arka planda çalışma veya senkronizasyon, özellikle de arka planda çalışırken cihaz şarj oluyor.

Daha fazla bilgi için WorkManager'ın Kısıtlamaların çalışma rehberini inceleyebilirsiniz.