Android 11, uygulamalarınızda 5G'yi destekleyen işlevler ekler. Bu konu, işlevselliği kapsar ve uygulamanıza 5G'ye özel işlevler eklemenin kullanıcı deneyimini nasıl iyileştirebileceğine dair genel bir bakış sunar.
5G için uygulama oluşturma
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ı iyileştirmesinin bazı yolları ş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östermek veya daha yüksek çözünürlüklü oyun öğeleri indirmek gibi yöntemlerle kullanıcı deneyimini üst düzeye çıkarın.
- Artan veri kullanımının kullanıcıya maliyete yol açmayacağını onayladıktan sonra, genellikle yalnızca kablosuz ağ üzerinden sunulan deneyimleri (ör. genellikle sınırsız kablosuz ağ için ayrılmış içerikleri proaktif olarak indirme) ekleyin.
- Yalnızca yüksek hız ve düşük gecikmeyle çalışan, 5G'ye özgü deneyimler sunun.
5G işlevi
Android 11'de aşağıdaki işlevsel değişiklikler ve iyileştirmeler yapılmıştır:
Ölçüm durumunu 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ı belirtir ve hem kablosuz hem de hücresel bağlantılar için geçerlidir.
Bu iki işaret arasındaki fark, NET_CAPABILITY_TEMPORARILY_NOT_METERED
ağ türü değişmeden değişebilir. 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. Android 10'da çalışan uygulamalarda, çalıştırıldığı cihaza bağlı olarak bu işaret 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örüntüleyebilir, günlük yükleyebilir, dosyaları yedekleyebilir ve proaktif olarak içerik indirebilirsiniz.
Aşağıdaki bölümlerde, uygulamanıza ölçüm kontrolünü ekleme adımları ele alınmaktadır.
Ağ geri çağırma işlevini kaydetme
NetworkCapabilities
değişikliğini bildirmek için ConnectivityManager.registerDefaultNetworkCallback()
kullanarak ağ geri araması için kaydolun. NetworkCallback
öğenizdeki onCapabilitiesChanged()
yöntemini geçersiz kılarak NetworkCapabilities
öğesindeki değişiklikleri algılayabilirsiniz.
registerDefaultNetworkCallback()
, kayıtlı geri çağırma işlevinin kayıt sırasında 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 tam tersi şekilde değiştiğinde uygulamaların uygun işlemi yapması için çok önemlidir.
Ölçümlü olup olmadığını kontrol etme
Aşağıdaki kodun çıkışını kontrol etmek için bir 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 true ise ağı sınırsız olarak kabul edebilirsiniz.
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 derlemeniz gerekir.NET_CAPABILITY_NOT_METERED
özelliği ağda kalıcıdır. Bu özelliğe sahip bir ağ, özelliği kaybederse (ölçülen hale gelirse) bağlantısı otomatik olarak kesilir.Buna karşılık,
NET_CAPABILITY_TEMPORARILY_NOT_METERED
, bağlantıyı kesmeden ağda değişebilir. Bu nedenle, ağ ücretli durumuna döndüğünde (NET_CAPABILITY_TEMPORARILY_NOT_METERED
özelliğini kaybettiğinde) 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
bulunamaz.
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ı algılayabilirsiniz. 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ımları şunlardır:
Benzersiz bir 5G deneyimi sunduğunuzu vurgulamak için uygulamanızda 5G markasını gösterme
Uygulamada yalnızca 5G ağındayken benzersiz bir 5G deneyimi etkinleştirme. Bu durum kontrolünü metrenin olup olmadığını kontrol etmekle 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 göndererek TelephonyManager.listen()
işlevini çağırın. Görüntülü reklamcılık 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 göstermeyi seçerse OVERRIDE_NETWORK_TYPE_NR_NSA
döndürülmesidir.
Aşağıdaki tabloda, değerlere karşılık gelen ağlar gösterilmektedir:
İade 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çülmeyi belirlerken kullandığınız NetworkCapabilities
nesnesini kullanır. Bu nesneyi kullanarak bant genişliği tahminleri alabilirsiniz.
Android 11'de, çerçeve desteğinde yapılan yükseltmeler ve 5G'ye uyum sağlamak için platform/modem hata düzeltmeleri sayesinde getLinkDownstreamBandwidthKbps()
ve getLinkUpstreamBandwidthKbps()
bant genişliği tahmini yöntemlerinin güvenilirliği ve doğruluğu iyileştirildi.
Bant genişliği varsayılanları yalnızca uygulamanın başlatılmasıyla ilgili yol göstericidir. Bu, "boş durumda başlatma" senaryosuyla ilgili olarak size yardımcı olacaktır. Uygulamanız, kullanıcılarınız uygulamayla etkileşime geçmeye başladıktan sonra gördüğü verileri ö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.