Android 7.1.1 memperkenalkan dukungan tingkat sistem untuk mode demo ritel sehingga pelanggan dapat memeriksa perangkat yang sedang beraksi di toko ritel. Perangkat disiapkan untuk demo ritel menggunakan aplikasi pemilik perangkat untuk memastikan bahwa penggunaan perangkat dibatasi hanya untuk aplikasi mode demo tertentu. Pengguna akhir tidak boleh menambahkan akun pribadi pada perangkat demo ritel. Android 8.1 merevisi dukungan ini untuk membuat pengguna demo melalui DevicePolicyManager createAndManageUser API. Ini memungkinkan penyesuaian OEM yang jauh lebih besar ke mode ritel standar dalam hal manajemen pengguna dan manajemen kebijakan perangkat pada perangkat demo.
Meskipun DevicePolicyManager API dapat digunakan pada versi sebelum Android 8.1, pengguna tipe demo ( DevicePolicyManager.MAKE_USER_DEMO
) tidak dapat dibuat dengan createAndManageUser API di versi 8.0 dan yang lebih lama.
Implementasi di Android 8.1 dan yang lebih baru
Bagian ini menyoroti peningkatan platform dan menjelaskan aplikasi demo ritel di Android 8.1 dan yang lebih baru.
Perubahan platform
Setel DEVICE_DEMO_MODE
Perangkat yang menerapkan mode demo ritel berbasis pemilik perangkat harus menyetel Settings.Global.DEVICE_DEMO_MODE
ke 1 sebelum penyediaan untuk menunjukkan bahwa perangkat sedang disediakan untuk mode demo ritel. SystemServer menggunakan tanda ini untuk mengelola aspek mode ritel, seperti profil daya dan SystemUI.
Aktifkan RetailDemoModeService
Pada perangkat yang menerapkan mode demo ritel, wizard penyiapan menyetel pengaturan global Global.DEVICE_DEMO_MODE
ke true
untuk menunjukkan bahwa perangkat telah memasuki mode ritel. Setelah melihat pengaturan ini, RetailDemoModeService membuat pengguna demo dan beralih ke sana saat pengguna 0 dimulai, mengaktifkan peluncur khusus yang ditentukan dalam sumber daya overlay, dan menonaktifkan SUW. Server Sistem dan SystemUI juga menggunakan tanda ini untuk mengelola aspek mode ritel.
Setel peluncur khusus atau pemutar video
Produsen perangkat dapat menentukan peluncur khusus dengan mengganti sumber daya kerangka kerja config_demoModeLauncherComponent
yang ditentukan dalam file config.xml sebagai berikut.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
Aplikasi DemoPlayer demo ritel yang terletak di /packages/apps/RetailDemo adalah peluncur kustom default di Android Open Source Project (AOSP). Aplikasi mencari video di partisi perangkat seperti /data/preloads/demo/retail_demo.mp4 dan memutarnya dalam satu lingkaran. Saat pengguna menyentuh layar, peluncur khusus menonaktifkan komponen aktivitasnya, yang menyebabkan peluncur sistem default untuk memulai.
Peluncur khusus harus memiliki komponen khusus yang ditandai sebagai dinonaktifkan secara default sehingga tidak muncul dalam skenario non-demo. Dalam skenario demo, Server Sistem mengaktifkan config_demoModeLauncherComponent
yang ditentukan saat memulai sesi demo baru.
Wizard pengaturan juga mencari video yang disebutkan sebelumnya untuk memberikan kemampuan untuk masuk ke mode ritel. SUW dapat dimodifikasi untuk mencari beberapa tanda khusus OEM lainnya bahwa mode ritel didukung jika video bukan bagian dari demo. Jika ada partisi sistem A/B, partisi sistem B harus berisi video demo di /preloads/demo. Ini akan disalin ke /data/preloads/demo pada boot pertama.
Sesuaikan aplikasi yang dimuat sebelumnya untuk mode demo ritel
Aplikasi yang dimuat sebelumnya dapat menyesuaikan pengalamannya untuk mode demo ritel dengan memanggil UserManager.isDemoUser()
API untuk melihat apakah aplikasi diluncurkan di lingkungan demo.
Pembatasan tertentu ditetapkan di pengguna demo, serupa dengan perangkat terkelola atau kebijakan profil yang mencegah aplikasi dan pengguna melakukan operasi tertentu. Salah satu batasan ini adalah DISALLOW_MODIFY_ACCOUNTS
. Dengan pembatasan ini, Manajer Akun dan Pengaturan tidak mengizinkan penambahan akun. Beberapa aplikasi Google bereaksi terhadap pembatasan ini dan menampilkan pesan kesalahan, dan yang lain tidak akan meminta akun (seperti YouTube dan Foto). Kami menyarankan agar aplikasi OEM juga memeriksa apakah DISALLOW_MODIFY_ACCOUNTS
diatur dan menangani skenario yang sesuai.
Pembaruan sistem
Secara default, saat mode retail diaktifkan, kebijakan perangkat disetel ke pembaruan over-the-air (OTA) secara otomatis. Perangkat ritel akan mengunduh, mem-boot ulang, dan menginstal pembaruan (dengan memperhatikan ambang batas baterai) tanpa interaksi pengguna.
Aplikasi demo ritel
Penerapan mode demo ritel berbasis pemilik perangkat memerlukan aplikasi Pengontrol Kebijakan Perangkat untuk ditetapkan sebagai pemilik perangkat. AOSP berisi implementasi aplikasi RetailDemo referensi di /packages/apps/RetailDemo .
Aplikasi pemilik perangkat tidak memerlukan hak istimewa yang lebih tinggi atau pra-pemasangan pada citra sistem dan dapat diunduh selama proses penyiapan atau penyediaan. Mereka sebagian besar diimplementasikan seperti aplikasi tradisional, dengan perbedaan berikut:
Semua aplikasi pemilik perangkat harus memperluas komponen DeviceAdminReceiver , yang berfungsi sebagai token otorisasi untuk semua DevicePolicyManager API. Komponen harus memiliki izin
android.permission.BIND_DEVICE_ADMIN
, menyertakan kebijakan khusus yang diminta sebagai metadata, dan memfilterandroid.app.action.PROFILE_PROVISIONING_COMPLETE
danandroid.app.action.DEVICE_ADMIN_ENABLED
.Bendera DevicePolicyManager#MAKE_USER_DEMO , yang disetel untuk membuat pengguna tipe demo khusus, adalah API tersembunyi. Bendera ini memiliki nilai konstanta 0x4.
Kepemilikan perangkat harus ditetapkan hanya melalui pemegang peran pengelolaan perangkat atau aplikasi ManagedProvisioning .
API di kelas DevicePolicyManager mengaktifkan Pemilik Perangkat (DO) dan Pemilik Profil (PO) untuk menerapkan berbagai kebijakan perangkat. Beberapa fungsi DevicePolicyManager yang berlaku untuk mode demo ritel tercantum sebagai berikut.
Buat dan kelola pengguna.
Nyalakan ulang perangkat.
Setel paket yang diizinkan LockTask.
Instal paket melalui PackageInstaller .
Blokir paket agar tidak dihapus.
Aktifkan pembaruan sistem otomatis. Perangkat akan secara otomatis mengunduh dan menerapkan pembaruan OTA.
Nonaktifkan pengaman tombol.
Cegah pengaturan kata sandi atau sidik jari.
Setel kumpulan Settings.Global , Settings.Secure , dan Settings.System yang diizinkan.
Setel kebijakan izin ke
PERMISSION_POLICY_AUTO_GRANT
, yang secara otomatis memberikan semua izin waktu proses. Izin juga dapat diberikan secara lebih sempit: satu izin untuk satu aplikasi. Ini tidak berlaku untuk izin operasi aplikasi, yang masih harus diberikan pengguna pada basis per pengguna, per aplikasi.Tetapkan batasan pengguna yang relevan dengan mode ritel seperti yang didefinisikan di UserManager sebagai berikut.
-
DISALLOW_MODIFY_ACCOUNTS
-
DISALLOW_USB_FILE_TRANSFER
-
DISALLOW_DEBUGGING_FEATURES
-
DISALLOW_CONFIG_WIFI
-
DISALLOW_CONFIG_BLUETOOTH
-
DISALLOW_INSTALL_UNKNOWN_SOURCES
-
DISALLOW_CONFIG_MOBILE_NETWORKS
-
Perbarui video demo menggunakan web
Aplikasi RetailDemo di /packages/apps/RetailDemo memiliki kemampuan untuk memperbarui video demo jika ada konektivitas jaringan. URL untuk mengunduh video dapat dikonfigurasi dengan mengganti nilai string berikut di aplikasi RetailDemo.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
Jika video yang berbeda perlu digunakan di wilayah yang berbeda, maka URL unduhan yang berbeda dapat dikonfigurasi dengan menggunakan sumber daya string khusus lokal di res/values-*/strings.xml . Misalnya, jika video yang berbeda perlu digunakan di Amerika Serikat dan Inggris Raya, maka URL unduhan yang sesuai dapat ditempatkan di res/values-en-rUS/strings.xml dan res/values-en-rGB/strings.xml , masing-masing, ditunjukkan sebagai berikut.
Dalam res/values-en-rUS/strings.xml:
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
Di res/values-en-rGB/strings.xml:
<string name="retail_demo_video_download_url">download URL for UK video goes here</string>
Video ini diunduh paling banyak satu kali untuk setiap reboot perangkat. Saat video di perangkat diputar, aplikasi RetailDemo memeriksa di latar belakang apakah URL unduhan disediakan dan video di URL lebih baru daripada yang sedang diputar.
Jika demikian, aplikasi RetailDemo akan mengunduh dan mulai memutar video. Setelah video diunduh, itu digunakan untuk diputar di semua sesi demo ke depan. Tidak ada pemeriksaan yang terjadi lagi sampai setelah reboot berikutnya.
Panduan video demo
Video demonstrasi harus dalam tata letak potret atau, jika tablet, dalam orientasi alami perangkat, dan dapat berdurasi lebih dari lima detik. Konten tidak boleh mengakibatkan burn-in, karena akan diputar terus-menerus saat dipajang.
Lihat definisi Pengguna, profil, dan akun Pengembang Android , dokumentasi API Pengelola Kebijakan Perangkat , dan aplikasi Contoh Pemilik Perangkat untuk informasi selengkapnya.
Validasi
CTS tidak mencakup Mode Demo Ritel karena ini adalah fitur opsional. Pengujian harus dilakukan secara manual atau dengan pengujian unit untuk aplikasi demo.
Sesi demo
Pengaturan sesi demo
Perangkat demo ritel dapat boot ke mode demo ritel jika dikonfigurasi untuk mode demo dari pabrik. Atau, karyawan ritel dapat mengaktifkan mode ritel langsung dari wizard penyiapan.
Gambar 2. Mode demonstrasi ritel
Tampilkan sesi demo
Saat perangkat memasuki mode ritel, perangkat beralih ke pengguna demo baru dan secara otomatis memulai peluncur khusus yang ditentukan dalam sumber daya overlay seperti yang dijelaskan dalam Implementasi . Secara default, peluncur khusus ini memutar video demo secara berulang hingga pengguna menyentuh layar untuk memulai sesi pengguna demo. Pada saat itu, peluncur khusus memulai peluncur sistem dan kemudian keluar. OEM dapat mengubah peluncur khusus untuk meluncurkan layanan atau aktivitas lain saat keluar.
Untuk menjaga integritas mode retail, keyguard dinonaktifkan dan tindakan tertentu dari Pengaturan Cepat yang dapat mempengaruhi mode retail juga tidak diizinkan, termasuk yang berikut ini.
- Beralih mode pesawat.
- Menghapus atau memodifikasi titik akses Wi-Fi (Pengaturan).
- Mengubah operator (Pengaturan).
- Mengonfigurasi hotspot (Pengaturan).
- Pergantian pengguna.
Selain itu, akses juga diblokir ke beberapa pengaturan global yang dapat memengaruhi mode ritel dengan menonaktifkan berikut ini:
- Pengaturan Wi-Fi.
- Opsi konfigurasi jaringan seluler, terutama hotspot.
- Konfigurasi Bluetooth.
- Cadangkan & Atur Ulang, Tanggal & Waktu, dan Jaringan Seluler (tidak muncul sama sekali).
Jika pengguna menganggur selama beberapa waktu (90 detik secara default), mode ritel menampilkan dialog sistem untuk meminta pengguna keluar dari sesi atau melanjutkan. Jika pengguna memilih untuk keluar atau jika tidak ada respons selama lima detik, mode retail menghapus pengguna demo saat ini, beralih ke pengguna demo baru, dan mengulang kembali video asli. Jika layar dimatikan menggunakan tombol daya, layar akan hidup kembali secara otomatis setelah beberapa detik.
Setelah keluar dari sesi demo, perangkat membisukan dirinya sendiri dan mengatur ulang beberapa pengaturan global, termasuk yang berikut:
- Kecerahan
- Rotasi otomatis
- Senter
- Bahasa
- Aksesibilitas
Keluar dari mode demo ritel
Untuk keluar dari mode ritel, karyawan ritel harus memastikan bahwa perangkat demo tidak terdaftar di bawah pengelolaan perangkat dan menyetel ulang perangkat dari boot loader ke setelan pabrik.