Android 11, uygulamalarınızda 5G'yi destekleme işlevi ekler. Bu konu, işlevselliği ele alır ve uygulamanıza 5G'ye özgü işlevler eklemenin kullanıcı deneyimini nasıl iyileştirebileceğine dair genel bir bakış sunar.
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ı yollar şunlardır:
- 5G'nin hız ve gecikme süresi iyileştirmeleri sayesinde mevcut deneyimleri otomatik olarak daha hızlı ve daha iyi hale getirin.
- 4K video göstererek veya daha yüksek çözünürlüklü oyun öğeleri indirerek kullanıcı deneyimini iyileştirin.
- Artan veri kullanımının kullanıcıya maliyeti olmayacağını 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'de aşağıdaki işlev değişiklikleri ve geliştirmeler yapıldı:
- Ölçülülük (Meteredness)
- 5G algılama
- Bant genişliği tahmini
Ölçümlülüğü kontrol etme
NET_CAPABILITY_TEMPORARILY_NOT_METERED
, Android 11'de eklenen bir özelliktir. Bu özellik, mobil operatörler tarafından sağlanan bilgilere göre kullandığınız ağın sınırsız olup olmadığını 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şaret hakkında rapor vermez. Android 10'da çalışan uygulamalar için bu işaret, üzerinde ç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 ölçüm kontrolü ekleme adımları açıklanmaktadır.
Ağ geri çağırması kaydetme
NetworkCapabilities
değiştiğinde bilgi almak için ConnectivityManager.registerDefaultNetworkCallback()
kullanarak ağ geri aramasına kaydolun. NetworkCapabilities
ile ilgili değişiklikleri, NetworkCallback
içindeki onCapabilitiesChanged()
yöntemini geçersiz kılarak algılayabilirsiniz.
registerDefaultNetworkCallback()
Kayıtlı geri çağırmanın, kaydedildiği anda hemen tetiklenmesine neden olur ve uygulamaya mevcut durum hakkında bilgi verir. Gelecekteki geri çağırmalar, durum sınırsızdan sınırlıya veya sınırlıdan sınırsıza değiştiğinde uygulamaların uygun işlemi yapması için kritik öneme sahiptir.
Ölçülülüğü kontrol etme
Aşağıdaki kodun çıktısı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ğruysa ağı sınırsız olarak değerlendirebilirsiniz.
Değerlendirebileceğiniz diğer hususlar
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 (ölçümlü hale gelirse) otomatik olarak bağlantıyı keser.Buna karşılık,
NET_CAPABILITY_TEMPORARILY_NOT_METERED
bağlantı kesilmeden bir ağda değişebilir. Bu nedenle, ağ ücretli durumuna döndüğünde (NET_CAPABILITY_TEMPORARILY_NOT_METERED
özelliği kaybolduğunda) uygulamalarınonCapabilitiesChanged()
geri çağırma işlevini dinlemesi gerekir.Bir ağda aynı anda hem
NET_CAPABILITY_NOT_METERED
hem deNET_CAPABILITY_TEMPORARILY_NOT_METERED
olamaz.
5G algılama
Android 11'den itibaren, geri çağırmaya dayalı 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 yalnızca 5G ağına bağlıyken benzersiz bir 5G deneyimi etkinleştirme. Bu durum kontrolünü ölçülü bağlantı kontrolüyle birlikte yapmanız gerekir.
Analiz amacıyla 5G bağlantılarını takip etme
5G cihaz olmadan 5G algılamayı 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 TelephonyManager.listen()
işlevini LISTEN_DISPLAY_INFO_CHANGED
ile çağırın. Gösterim amacıyla kullanılan ağ türünü belirlemek için
onDisplayInfoChanged()
yöntemini geçersiz kılın. Bir istisna olarak, 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 mmWave ağları için (5G+/5G UW) |
Bant genişliği tahmini
Bant genişliği tahmini, ölçülülüğü belirlerken kullandığınız NetworkCapabilities
nesnesini kullanır. Bu nesneyi kullanarak bant genişliği tahminleri alabilirsiniz.
Android 11'de, 5G'yi desteklemek için çerçeve desteğinde yapılan yükseltmeler ve platform/modem hata düzeltmeleri sayesinde bant genişliği tahmin yöntemlerinin getLinkDownstreamBandwidthKbps()
ve
getLinkUpstreamBandwidthKbps()
güvenilirliği ve doğruluğu artırıldı.
Bant genişliği varsayılanları yalnızca uygulama başlatma konusunda rehberlik sağlar. Bu, "boşta kalma durumunda başlatma" senaryosunda size yardımcı olur. Uygulamanız, kullanıcılarınız uygulamayla etkileşime geçmeye başladıktan sonra gördüklerini ölçmeli ve yayın davranışını dinamik olarak ayarlamalıdır. Örneğin, başlangıçtaki 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ürleri ve güçleri değiştikçe uygulamanızın davranışını buna göre ayarlayın.