Android 11, uygulamalarınızda 5G'yi destekleyen işlevler ekler. Bu bölümde işlevler ele alınmaktadır ve uygulamanıza 5G'ye özgü işlevler eklemenin kullanıcı deneyimini nasıl iyileştirebileceğine dair genel bir bakış sunulur.
5G için geliştirme
5G ile nasıl etkileşimde bulunacağınıza karar verirken ne tür deneyimler oluşturmaya çalıştığınızı düşünün. 5G'nin uygulamanızı daha iyi hale getirebileceği bazı çözümler şunlardır:
- 5G'nin hız ve gecikme iyileştirmeleri sayesinde mevcut deneyimleri otomatik olarak daha hızlı ve iyi hale getirin.
- 4K video gösterme veya daha yüksek çözünürlüklü oyun öğeleri indirme gibi yöntemlerle kullanıcı deneyimini üst seviyelere taşıyın.
- Artan veri kullanımının kullanıcıya maliyet getirmeyeceğini onayladıktan sonra, normalde yalnızca kablosuz ağ üzerinden sağlanan deneyimleri (genellikle sınırsız kablosuz ağ için ayrılmış içerikleri proaktif olarak indirme) dahil edin.
- Yalnızca yüksek hızlarda ve düşük gecikmeyle çalışan 5G'ye özel deneyimler sunun.
5G işlevi
Android 11, aşağıdaki işlev değişikliklerini ve geliştirmelerini sunar:
Ölçümü kontrol et
Android 11'e eklenen NET_CAPABILITY_TEMPORARILY_NOT_METERED
, kullandığınız ağın hücresel operatörler tarafından sağlanan bilgilere göre ölçüm yapılmadığını belirten bir özelliktir.
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: NET_CAPABILITY_TEMPORARILY_NOT_METERED
, ağ türü değişmeden değiştirilebilir. 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, bayrağı bildirmez. Android 10 çalıştıran 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çerik (4K video gibi), günlükleri yükleyebilir, dosyaları yedekleyebilir ve proaktif bir şekilde içerik indirebilirsiniz.
Aşağıdaki bölümlerde, uygulamanıza ölçüm denetimi ekleme adımları açıklanmaktadır.
Ağ geri çağırması kaydedin
NetworkCapabilities
değiştiğinde haberdar olmak için ConnectivityManager.registerDefaultNetworkCallback()
üzerinden ağ geri araması için kaydolun. NetworkCallback
öğenizde onCapabilitiesChanged()
yöntemini geçersiz kılarak NetworkCapabilities
üzerinde yapılan değişiklikleri tespit edebilirsiniz.
registerDefaultNetworkCallback()
, kaydedildiğinde kayıtlı geri çağırmanın hemen tetiklenmesine neden olarak uygulamaya mevcut durumla ilgili bilgi verir. Gelecekteki geri çağırmalar, durum ölçülü değilken sayaçlı olarak veya tam tersi şekilde değiştiğinde uygulamaların uygun işlemleri yapması açısından kritik öneme sahiptir.
Sayaçlılığı kontrol etme
Aşağıdaki kodun çıkışı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ğru 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 derlenmiş olmanız gerekir.NET_CAPABILITY_NOT_METERED
özelliği ağda kalıcıdır. Bu özelliğe sahip bir ağ, yeteneğini kaybederse (ölçülmeye başlarsa) otomatik olarak bağlantısı 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 kaybeder) 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) ağı olup olmadığını kontrol edebilirsiniz.
Bu API çağrısının kullanım alanlarından bazıları şunlardır:
Benzersiz bir 5G deneyimi sunduğunuzu vurgulamak için uygulamanızda 5G markasını gösterme.
Uygulamada yalnızca 5G ağında benzersiz bir 5G deneyimi etkinleştiriliyor. Bu durum kontrolünü ölçülebilirlik kontrolü ile eşleştirmeniz gerekir.
Analiz amacıyla 5G bağlantılarının izlenmesi.
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ı öğrenmek için
TelephonyManager.listen()
numaralı telefonu arayın.
LISTEN_DISPLAY_INFO_CHANGED
Görüntüleme amacıyla kullanılan ağın türünü belirlemek için onDisplayInfoChanged()
yöntemini geçersiz kılın. Bunun bir istisnası, operatörün milimetre dalga ağı için RAT olarak 5G'yi göstermeyi tercih etmesi durumunda OVERRIDE_NETWORK_TYPE_NR_NSA
değerinin döndürülmesidir.
Aşağıdaki tabloda, bu 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, sayaçlılığı belirlerken birlikte çalıştığınız NetworkCapabilities
nesnesini kullanır. Bu nesneyi kullanarak bant genişliği tahminleri alabilirsiniz.
Bant genişliği tahmin yöntemlerinin getLinkDownstreamBandwidthKbps()
ve getLinkUpstreamBandwidthKbps()
, çerçeve desteğine yönelik yükseltmeler ve 5G'yi kapsayacak platform/modem hata düzeltmeleri nedeniyle Android 11'de iyileştirilmiştir.
Varsayılan bant genişliği ayarları yalnızca uygulama başlatıldığında yol gösterir. Bu, "boştayken başlatma" senaryosında size yardımcı olacaktır. Uygulamanız, kullanıcılarınız uygulamayla etkileşime 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 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ürü ve gücü değiştikçe uygulamanızın davranışını buna göre ayarlayın.