Android 11 menambahkan fungsi untuk mendukung 5G di aplikasi Anda. Topik ini membahas fungsi tersebut dan memberi gambaran bagaimana penambahan fungsi khusus 5G ke aplikasi dapat meningkatkan pengalaman pengguna.
Dibuat untuk 5G
Saat memutuskan cara menggunakan 5G, pikirkan jenis pengalaman yang ingin Anda buat. Beberapa contoh kemampuan 5G yang dapat menyempurnakan aplikasi Anda:
- Secara otomatis membuat pengalaman yang sudah ada menjadi lebih cepat dan lebih baik karena kecepatan dan latensi 5G yang lebih baik.
- Meningkatkan pengalaman pengguna, misalnya dengan menampilkan video 4k atau mendownload aset game dengan resolusi lebih tinggi.
- Setelah mengonfirmasi bahwa peningkatan penggunaan data tidak akan membebani pengguna, pengalaman yang biasanya hanya disediakan melalui Wi-Fi dapat disertakan, seperti mendownload konten secara proaktif yang biasanya hanya dilakukan jika terhubung ke Wi-Fi yang tidak berbayar.
- Menyediakan pengalaman yang hanya bisa diberikan oleh 5G dan hanya berfungsi dengan kecepatan tinggi dan latensi rendah.
Fungsi 5G
Android 11 memperkenalkan perubahan dan penyempurnaan fungsi berikut ini:
Memeriksa pembatasan koneksi
NET_CAPABILITY_TEMPORARILY_NOT_METERED
adalah kemampuan yang ditambahkan di Android 11 yang memberi tahu Anda jika
jaringan yang Anda gunakan tidak berbayar berdasarkan informasi yang diberikan oleh
operator seluler.
Flag baru digunakan bersama
NET_CAPABILITY_NOT_METERED
.
Flag yang ada menunjukkan apakah jaringan selalu tidak berbayar, dan berlaku untuk
koneksi Wi-Fi maupun seluler.
Perbedaan antara kedua flag tersebut adalah
NET_CAPABILITY_TEMPORARILY_NOT_METERED
dapat berubah tanpa perubahan
jenis jaringan. Aplikasi yang menargetkan Android 11 dapat menggunakan
flag NET_CAPABILITY_TEMPORARILY_NOT_METERED
. Pada perangkat yang menjalankan Android 9
dan lebih rendah, OS tidak akan melaporkan flag. Untuk aplikasi yang berjalan di Android 10,
flag ini mungkin tersedia, tergantung perangkat yang menjalankannya.
Setelah menentukan bahwa jaringan saat ini tidak berbayar untuk sementara atau secara permanen, Anda dapat menampilkan konten dengan resolusi yang lebih tinggi (seperti video 4k), mengupload log, mencadangkan file, dan mendownload konten secara proaktif.
Bagian-bagian berikut membahas langkah-langkah untuk menambahkan pemeriksaan status koneksi berbayar ke aplikasi Anda.
Mendaftarkan callback jaringan
Mendaftarlah untuk callback jaringan menggunakan
ConnectivityManager.registerDefaultNetworkCallback()
untuk mengetahui kapan NetworkCapabilities
berubah. Anda dapat mendeteksi perubahan pada
NetworkCapabilities
dengan mengganti
metode onCapabilitiesChanged()
di NetworkCallback
Anda.
registerDefaultNetworkCallback()
menyebabkan callback yang terdaftar langsung
terpicu saat terdaftar, sehingga memberikan info tentang status saat ini ke aplikasi. Callback
di masa mendatang sangat penting bagi aplikasi untuk mengambil tindakan yang sesuai saat status
berubah dari tidak berbayar menjadi berbayar atau sebaliknya.
Memeriksa apakah koneksi berbayar
Gunakan objek NetworkCapabilites
yang Anda terima dalam callback jaringan untuk
memeriksa output kode berikut:
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)
Jika nilainya benar, Anda dapat memperlakukan jaringan sebagai tidak berbayar.
Pertimbangan tambahan
Saat bekerja dengan fungsi ini, perhatikan hal berikut:
Menggunakan flag
NET_CAPABILITY_TEMPORARILY_NOT_METERED
mengharuskan Anda mengompilasi aplikasi Anda terhadap SDK Android 11.Kemampuan
NET_CAPABILITY_NOT_METERED
bersifat permanen di jaringan. Jaringan dengan kemampuan ini akan terputus secara otomatis jika kehilangan kemampuan ini (menjadi berbayar).Sebaliknya,
NET_CAPABILITY_TEMPORARILY_NOT_METERED
dapat berubah di jaringan tanpa memutuskan koneksi. Oleh karena itu, aplikasi harus memproses callbackonCapabilitiesChanged()
yang harus ditangani saat jaringan kembali ke status berbayar (kehilangan kemampuanNET_CAPABILITY_TEMPORARILY_NOT_METERED
).Jaringan tidak dapat memiliki
NET_CAPABILITY_NOT_METERED
danNET_CAPABILITY_TEMPORARILY_NOT_METERED
secara bersamaan.
Deteksi 5G
Mulai Android 11, Anda dapat mendeteksi apakah perangkat terhubung ke jaringan 5G menggunakan panggilan API berbasis callback. Anda dapat memeriksa apakah koneksi berupa jaringan 5G NR (mandiri) atau NSA (nonmandiri).
Beberapa penggunaan untuk panggilan API ini dapat mencakup:
Menampilkan branding 5G di aplikasi Anda untuk memperjelas bahwa Anda menawarkan pengalaman 5G yang unik.
Mengaktifkan pengalaman 5G yang unik di aplikasi hanya ketika berada di jaringan 5G. Anda harus mengombinasikan pemeriksaan status ini dengan memeriksa status koneksi berbayar.
Melacak koneksi 5G untuk tujuan analisis.
Untuk menguji deteksi 5G tanpa perangkat 5G, Anda dapat menggunakan fitur yang ditambahkan ke emulator Android SDK.
Mendeteksi 5G
Panggil
TelephonyManager.listen()
,
dengan meluluskan
LISTEN_DISPLAY_INFO_CHANGED
,
untuk menentukan apakah pengguna memiliki koneksi jaringan 5G. Ganti
metode onDisplayInfoChanged()
untuk menentukan jenis jaringan yang digunakan untuk tujuan tampilan. Satu pengecualian
adalah jika operator memilih untuk menampilkan 5G sebagai RAT untuk jaringan mmWave-nya,
OVERRIDE_NETWORK_TYPE_NR_NSA
akan ditampilkan.
Tabel berikut menunjukkan jaringan yang sesuai dengan nilai:
Jenis nilai yang ditampilkan | Jaringan |
---|---|
OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO |
LTE pro lanjutan (5Ge) |
OVERRIDE_NETWORK_TYPE_NR_NSA |
NR (5G) untuk jaringan 5G Sub-6 |
OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE |
(5G+/5G UW) untuk jaringan 5G mmWave |
Estimasi bandwidth
Estimasi bandwidth menggunakan objek NetworkCapabilities
yang Anda gunakan
saat menentukan status koneksi berbayar. Anda bisa mendapatkan estimasi bandwidth menggunakan objek tersebut.
Reliabilitas dan akurasi metode estimasi bandwidth
getLinkDownstreamBandwidthKbps()
dan
getLinkUpstreamBandwidthKbps()
mengalami peningkatan di Android 11 karena upgrade ke dukungan framework dan
perbaikan bug platform/modem untuk mengakomodasi 5G.
Bandwidth default hanya memberikan panduan untuk memulai aplikasi saja. Ini akan membantu Anda dengan skenario "memulai saat tidak ada aktivitas". Aplikasi Anda harus mengukur apa yang dilihatnya setelah pengguna mulai berinteraksi dengan aplikasi dan menyesuaikan perilaku streaming secara dinamis. Misalnya, Anda dapat memilih resolusi video yang akan diberikan berdasarkan estimasi bandwidth saat memulai. Lanjutkan memeriksa estimasi saat pengguna Anda menggunakan aplikasi; ketika jenis dan kekuatan koneksi mereka berubah, sesuaikan perilaku aplikasi Anda.