Uygulamanıza 5G özellikleri ekleme

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

5G için geliştirme

5G'yi nasıl kullanacağınıza karar verirken ne tür deneyimler oluşturmaya çalıştığınızı düşünün. 5G'nin uygulamanızı iyileştirebileceği bazı yöntemler şunlardır:

  • 5G'nin hız ve gecikme süresi iyileştirmeleri sayesinde mevcut deneyimleri otomatik olarak daha hızlı ve daha iyi hale getirme.
  • 4K video gösterme veya daha yüksek çözünürlüklü oyun öğeleri indirme gibi yöntemlerle kullanıcı deneyimini iyileştirin.
  • Artan veri kullanımının kullanıcıya maliyet getirmeyeceğini onayladıktan sonra, normalde yalnızca kablosuz bağlantı üzerinden sunulan deneyimleri (ör. genellikle sınırsız kablosuz bağlantı için ayrılan içerikleri proaktif olarak indirme) dahil edin.
  • Yalnızca yüksek hız ve düşük gecikme süresiyle çalışan, 5G'ye özgü deneyimler sunun.

5G işlevi

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

Kullanım ücretli olup olmadığını kontrol etme

NET_CAPABILITY_TEMPORARILY_NOT_METERED, Android 11'e eklenen bir özelliktir. Bu özellik, kullandığınız ağın hücresel operatörler tarafından sağlanan bilgilere göre sınırsız olup olmadığını size bildirir.

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, ağ türü değişmeden NET_CAPABILITY_TEMPORARILY_NOT_METERED değerinin değişebilmesidir. Android 11'i hedefleyen uygulamalar NET_CAPABILITY_TEMPORARILY_NOT_METERED işaretini kullanabilir. Android 9 ve önceki sürümlerin yüklü olduğu cihazlarda işletim sistemi, işaretle ilgili rapor oluşturmaz. Android 10'da çalışan 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çerikler (ör. 4K video) gösterebilir, günlükleri yükleyebilir, dosyaları yedekleyebilir ve içerikleri proaktif olarak indirebilirsiniz.

Aşağıdaki bölümlerde, uygulamanıza ücretli bağlantı kontrolü ekleme adımları açıklanmaktadır.

Ağ geri çağırma işlevi kaydetme

NetworkCapabilities değiştiğinde bildirim almak için ConnectivityManager.registerDefaultNetworkCallback() kullanarak bir ağ geri çağırma işlevi kaydedin. NetworkCallback sınıfınızda onCapabilitiesChanged() yöntemini geçersiz kılarak NetworkCapabilities üzerindeki değişiklikleri tespit edebilirsiniz.

registerDefaultNetworkCallback(), kayıtlı geri çağırmanın kayıt sırasında hemen tetiklenmesine neden olarak uygulamaya mevcut durum hakkında bilgi verir. Gelecekteki geri çağırmalar, durumun sınırsızdan sayaçlıya veya tam tersine değiştiği durumlarda uygulamaların uygun işlemi yapması açısından kritik öneme sahiptir.

Ücretli olup olmadığını kontrol etme

Aşağıdaki kodun çıkışını kontrol etmek için ağ geri çağırma işlevinde 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ğruysa ağı tarifesiz olarak değerlendirebilirsiniz.

Göz önünde bulundurulacak 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 derlemeniz gerekir.

  • NET_CAPABILITY_NOT_METERED özelliği bir ağda kalıcıdır. Bu özelliğe sahip bir ağ, özelliği kaybederse (ücretli hale gelirse) bağlantıyı otomatik olarak keser.

  • Buna karşılık, NET_CAPABILITY_TEMPORARILY_NOT_METERED bir ağda bağlantıyı kesmeden değişebilir. Bu nedenle uygulamalar, ağın tarifeli durumuna geri döndüğünü (NET_CAPABILITY_TEMPORARILY_NOT_METERED özelliğini kaybettiğini) işlemek için onCapabilitiesChanged() geri çağırma işlevini dinlemelidir.

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

5G algılama

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

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

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

  • Uygulamada benzersiz bir 5G deneyimini yalnızca 5G ağındayken etkinleştirme. Bu durum kontrolünü ücretli bağlantı kontrolü ile birlikte yapmanız gerekir.

  • Analiz amacıyla 5G bağlantılarını takip etme

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

5G'yi algılama

Kullanıcının 5G ağ bağlantısı olup olmadığını belirlemek için LISTEN_DISPLAY_INFO_CHANGED parametresini ileterek TelephonyManager.listen() yöntemini çağırın. Görüntüleme amacıyla kullanılan ağ türünü belirlemek için onDisplayInfoChanged() yöntemini geçersiz kılın. Operatör, mmWave ağı için RAT olarak 5G'yi göstermeyi tercih ederse OVERRIDE_NETWORK_TYPE_NR_NSA döndürülür.

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

Dönüş türü Ağ
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, kullanım ücretli olup olmadığını belirlerken üzerinde çalıştığınız NetworkCapabilities nesnesini kullanır. Bu nesneyi kullanarak bant genişliği tahminleri alabilirsiniz.

Android 11'de, çerçeve desteğindeki yükseltmeler ve 5G'ye uyum sağlamak için platform/modem hata düzeltmeleri sayesinde bant genişliği tahmin yöntemlerinin (getLinkDownstreamBandwidthKbps() ve getLinkUpstreamBandwidthKbps()) güvenilirliği ve doğruluğu artar.

Bant genişliği varsayılanları yalnızca uygulama başlatma konusunda rehberlik sağlar. Bu, "boşta başlatma" senaryosunda size yardımcı olacaktır. Uygulamanız, kullanıcılar uygulamayla etkileşime geçmeye 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 sunulacak videonun çözünürlüğünü seçebilirsiniz. Kullanıcılarınız uygulamayı kullanırken tahminleri kontrol etmeye devam edin. Bağlantı türleri ve güçleri değiştikçe uygulamanızın davranışını buna göre ayarlayın.