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ınonCapabilitiesChanged()
geri çağırmasını 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ğı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ü | Ağ |
---|---|
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.