Menambahkan kemampuan 5G ke aplikasi Anda

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 callback onCapabilitiesChanged() yang harus ditangani saat jaringan kembali ke status berbayar (kehilangan kemampuan NET_CAPABILITY_TEMPORARILY_NOT_METERED).

  • Jaringan tidak dapat memiliki NET_CAPABILITY_NOT_METERED dan NET_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() guna 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.