Uygulamanıza 5G özellikleri ekleyin

Android 11, uygulamalarınızda 5G'yi destekleyen işlevler ekler. Bu bölümde işlevler ele alınmaktadır ve uygulamanıza 5G'ye özgü işlevler eklemenin kullanıcı deneyimini nasıl iyileştirebileceğine dair genel bir bakış sunulur.

5G için geliştirme

5G ile nasıl etkileşimde bulunacağınıza karar verirken ne tür deneyimler oluşturmaya çalıştığınızı düşünün. 5G'nin uygulamanızı daha iyi hale getirebileceği bazı çözümler şunlardır:

  • 5G'nin hız ve gecikme iyileştirmeleri sayesinde mevcut deneyimleri otomatik olarak daha hızlı ve iyi hale getirin.
  • 4K video gösterme veya daha yüksek çözünürlüklü oyun öğeleri indirme gibi yöntemlerle kullanıcı deneyimini üst seviyelere taşıyın.
  • Artan veri kullanımının kullanıcıya maliyet getirmeyeceğini onayladıktan sonra, normalde yalnızca kablosuz ağ üzerinden sağlanan deneyimleri (genellikle sınırsız kablosuz ağ için ayrılmış içerikleri proaktif olarak indirme) dahil edin.
  • Yalnızca yüksek hızlarda ve düşük gecikmeyle çalışan 5G'ye özel deneyimler sunun.

5G işlevi

Android 11, aşağıdaki işlev değişikliklerini ve geliştirmelerini sunar:

Ölçümü kontrol et

Android 11'e eklenen NET_CAPABILITY_TEMPORARILY_NOT_METERED, kullandığınız ağın hücresel operatörler tarafından sağlanan bilgilere göre ölçüm yapılmadığını belirten bir özelliktir.

Yeni işaret, NET_CAPABILITY_NOT_METERED ile birlikte kullanılır. Mevcut işaret, bir ağın her zaman sınırsız olup olmadığını gösterir ve hem kablosuz hem de hücresel bağlantılar için geçerlidir.

İki işaret arasındaki fark: NET_CAPABILITY_TEMPORARILY_NOT_METERED, ağ türü değişmeden değiştirilebilir. Android 11'i hedefleyen uygulamalar NET_CAPABILITY_TEMPORARILY_NOT_METERED işaretini kullanabilir. Android 9 ve önceki sürümleri çalıştıran cihazlarda işletim sistemi, bayrağı bildirmez. Android 10 çalıştıran uygulamalarda bu işaret, çalıştığı cihaza bağlı olarak kullanılabilir.

Mevcut ağın geçici veya kalıcı olarak sınırsız olduğunu belirledikten sonra, daha yüksek çözünürlüklü içerik (4K video gibi), günlükleri yükleyebilir, dosyaları yedekleyebilir ve proaktif bir şekilde içerik indirebilirsiniz.

Aşağıdaki bölümlerde, uygulamanıza ölçüm denetimi ekleme adımları açıklanmaktadır.

Ağ geri çağırması kaydedin

NetworkCapabilities değiştiğinde haberdar olmak için ConnectivityManager.registerDefaultNetworkCallback() üzerinden ağ geri araması için kaydolun. NetworkCallback öğenizde onCapabilitiesChanged() yöntemini geçersiz kılarak NetworkCapabilities üzerinde yapılan değişiklikleri tespit edebilirsiniz.

registerDefaultNetworkCallback(), kaydedildiğinde kayıtlı geri çağırmanın hemen tetiklenmesine neden olarak uygulamaya mevcut durumla ilgili bilgi verir. Gelecekteki geri çağırmalar, durum ölçülü değilken sayaçlı olarak veya tam tersi şekilde değiştiğinde uygulamaların uygun işlemleri yapması açısından kritik öneme sahiptir.

Sayaçlılığı kontrol etme

Aşağıdaki kodun çıkışını kontrol etmek için ağ geri çağırmasında aldığınız NetworkCapabilites nesnesini kullanın:

Kotlin

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

Java

NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED) ||
  NetworkCapabilities.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED)

Değer doğru ise ağı sınırsız olarak değerlendirebilirsiniz.

Göz önünde bulundurulması gereken diğer noktalar

Bu işlevle çalışırken aşağıdakileri göz önünde bulundurun:

  • NET_CAPABILITY_TEMPORARILY_NOT_METERED işaretini kullanmak için uygulamanızı Android 11 SDK'sına göre derlenmiş olmanız gerekir.

  • NET_CAPABILITY_NOT_METERED özelliği ağda kalıcıdır. Bu özelliğe sahip bir ağ, yeteneğini kaybederse (ölçülmeye başlarsa) otomatik olarak bağlantısı kesilir.

  • Öte yandan NET_CAPABILITY_TEMPORARILY_NOT_METERED, bağlantıyı kesmeden bir ağ üzerinde değişebilir. Bu nedenle, ağ sayaçlı durumuna döndüğünde (NET_CAPABILITY_TEMPORARILY_NOT_METERED özelliğini kaybeder) uygulamaların onCapabilitiesChanged() geri çağırmasını dinlemesi gerekir.

  • Bir ağda aynı anda hem NET_CAPABILITY_NOT_METERED hem de NET_CAPABILITY_TEMPORARILY_NOT_METERED bulunamaz.

5G algılama

Android 11'den itibaren, geri çağırmaya dayalı bir API çağrısı kullanarak cihazın bir 5G ağına bağlı olup olmadığını tespit edebilirsiniz. Bağlantının 5G NR (bağımsız) veya NSA (bağımsız) ağı olup olmadığını kontrol edebilirsiniz.

Bu API çağrısının kullanım alanlarından bazıları şunlardır:

  • Benzersiz bir 5G deneyimi sunduğunuzu vurgulamak için uygulamanızda 5G markasını gösterme.

  • Uygulamada yalnızca 5G ağında benzersiz bir 5G deneyimi etkinleştiriliyor. Bu durum kontrolünü ölçülebilirlik kontrolü ile eşleştirmeniz gerekir.

  • Analiz amacıyla 5G bağlantılarının izlenmesi.

5G cihaz olmadan 5G algılamayı test etmek için Android SDK emülatörüne eklenen özellikleri kullanabilirsiniz.

5G'yi algıla

Kullanıcının 5G ağ bağlantısı olup olmadığını öğrenmek için TelephonyManager.listen() numaralı telefonu arayın. LISTEN_DISPLAY_INFO_CHANGED Görüntüleme amacıyla kullanılan ağın türünü belirlemek için onDisplayInfoChanged() yöntemini geçersiz kılın. Bunun bir istisnası, operatörün milimetre dalga ağı için RAT olarak 5G'yi göstermeyi tercih etmesi durumunda OVERRIDE_NETWORK_TYPE_NR_NSA değerinin döndürülmesidir.

Aşağıdaki tabloda, bu değerlere karşılık gelen ağlar gösterilmektedir:

Dönüş türü
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Advanced pro LTE (5Ge)
OVERRIDE_NETWORK_TYPE_NR_NSA 5G Sub-6 ağları için NR (5G)
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE 5G milimetre dalga ağları için (5G+/5G UW)

Bant genişliği tahmini

Bant genişliği tahmini, sayaçlılığı belirlerken birlikte çalıştığınız NetworkCapabilities nesnesini kullanır. Bu nesneyi kullanarak bant genişliği tahminleri alabilirsiniz.

Bant genişliği tahmin yöntemlerinin getLinkDownstreamBandwidthKbps() ve getLinkUpstreamBandwidthKbps(), çerçeve desteğine yönelik yükseltmeler ve 5G'yi kapsayacak platform/modem hata düzeltmeleri nedeniyle Android 11'de iyileştirilmiştir.

Varsayılan bant genişliği ayarları yalnızca uygulama başlatıldığında yol gösterir. Bu, "boştayken başlatma" senaryosında size yardımcı olacaktır. Uygulamanız, kullanıcılarınız uygulamayla etkileşime başladıktan sonra gördüklerini ölçmeli ve akış davranışını dinamik olarak ayarlamalıdır. Örneğin, başlangıçta bant genişliği tahminine göre sağlanacak videonun çözünürlüğünü seçebilirsiniz. Kullanıcılarınız uygulamayı kullandıkça tahminleri kontrol etmeye devam edin. Bağlantı türü ve gücü değiştikçe uygulamanızın davranışını buna göre ayarlayın.