Uygulamanıza 5G özellikleri ekleyin

Android 11, uygulamalarınızda 5G'yi destekleyecek işlevler sunar. Bu konu, işlevleri ele almaktadır ve uygulamanıza 5G'ye özgü işlevler eklemenin kullanıcı deneyimini nasıl iyileştirebileceğine dair genel bir bakış sunmaktadır.

5G için geliştirme

5G ile nasıl etkileşim kuracağınıza karar verirken, ne tür deneyimler oluşturmaya çalıştığınızı düşünün. 5G'nin uygulamanızı geliştirebileceği bazı yöntemler şunlardır:

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

5G işlevi

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

Sayaç ölçüsünü kontrol edin

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

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 işaretinin değişebilmesidir. 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, işareti bildirmez. Bu işaret, Android 10 üzerinde çalışan uygulamalarda, çalıştırıldığı cihaza bağlı olarak kullanılabilir.

Mevcut ağın geçici veya kalıcı olarak ölçüme tabi tutulmadığını belirledikten sonra, daha yüksek çözünürlüklü içerik (4K video gibi) görüntüleyebilir, günlük yükleyebilir, dosya yedekleyebilir ve proaktif şekilde içerik indirebilirsiniz.

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

Bir ağ geri çağırması kaydet

NetworkCapabilities değiştiğinde bildirim almak için ConnectivityManager.registerDefaultNetworkCallback() üzerinden bir ağ geri çağırması için kaydolun. NetworkCallback etiketinizde onCapabilitiesChanged() yöntemini geçersiz kılarak NetworkCapabilities üzerinde yapılan değişiklikleri tespit edebilirsiniz.

registerDefaultNetworkCallback(), kayıtlı geri çağırmanın anında tetiklenmesini sağlayarak uygulamaya mevcut durum hakkında bilgi verir. Gelecekteki geri çağırmalar, durum sayaçsız'dan sayaçlı'ya (veya tam tersi) değiştiğinde uygulamaların uygun işlemi yapması açısından kritik öneme sahiptir.

Sayaçlı olup olmadığını kontrol etme

Aşağıdaki kodun çıkışını kontrol etmek için bir ağ geri çağırma işleminde 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 true 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 derlemiş olmanız gerekir.

  • NET_CAPABILITY_NOT_METERED özelliği ağ üzerinde kalıcıdır. Bu özelliğe sahip bir ağ, bu özelliği kaybederse (ölçülür hale gelir) bağlantısı otomatik olarak 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 kaybettiğinde) işlemek için 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 olmayan) bir ağ olup olmadığını kontrol edebilirsiniz.

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

  • 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ü, ölçümlülük kontrolü ile eşlemeniz gerekir.

  • Analiz amacıyla 5G bağlantıları takip ediliyor.

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ı belirlemek için LISTEN_DISPLAY_INFO_CHANGED numaralı telefonu geçen TelephonyManager.listen() numaralı telefonu arayın. Görüntüleme amacıyla kullanılan ağ türünü belirlemek için onDisplayInfoChanged() yöntemini geçersiz kılın. Bunun tek istisnası, operatör mmWave ağı için RAT olarak 5G'yi göstermeyi seçerse 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ü
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO Gelişmiş 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.

5G'yi kapsayacak şekilde çerçeve desteğine yapılan yükseltmeler ve platform/modem hata düzeltmeleri nedeniyle, Android 11'de bant genişliği tahmin yöntemlerinin güvenilirliği ve doğruluğu getLinkDownstreamBandwidthKbps() ve getLinkUpstreamBandwidthKbps() iyileştirildi.

Bant genişliği varsayılanları yalnızca uygulamayı başlatırken yol gösterir. Bu, "boşta başlatma" senaryosunda size yardımcı olacaktır. Uygulamanız, kullanıcılarınız uygulamayla etkileşim kurmaya başladığında gördüklerini ölçmeli ve akış davranışını dinamik olarak ayarlamalıdır. Örneğin, başlangıçta sağlanan bant genişliği tahminine bağlı olarak sağlanacak videonun çözünürlüğünü seçebilirsiniz. Kullanıcılarınız uygulamayı kullanırken 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.