Android 7.1.1 memperkenalkan dukungan tingkat sistem untuk mode demo retail sehingga pelanggan dapat memeriksa perangkat yang sedang beroperasi di toko retail. Perangkat disiapkan untuk demo retail menggunakan aplikasi pemilik perangkat untuk memastikan bahwa penggunaan perangkat dibatasi hanya untuk aplikasi mode demo tertentu. Pengguna akhir tidak boleh dapat menambahkan akun pribadi di perangkat demo retail. Android 8.1 merevisi dukungan ini untuk membuat pengguna demo melalui API createAndManageUser DevicePolicyManager. Hal ini memungkinkan penyesuaian OEM yang jauh lebih besar ke mode retail standar dalam hal pengelolaan pengguna dan pengelolaan kebijakan perangkat di perangkat demo.
Meskipun API DevicePolicyManager dapat digunakan pada versi sebelum Android 8.1, pengguna demo-type (DevicePolicyManager.MAKE_USER_DEMO
) tidak dapat dibuat dengan API createAndManageUser di versi 8.0 dan yang lebih lama.
Penerapan di Android 8.1 dan yang lebih baru
Bagian ini menyoroti peningkatan platform dan menjelaskan aplikasi demo retail di Android 8.1 dan yang lebih baru.
Perubahan platform
Menetapkan DEVICE_DEMO_MODE
Perangkat yang menerapkan mode demo retail berbasis pemilik perangkat harus menyetel
Settings.Global.DEVICE_DEMO_MODE
ke 1 sebelum
penyediaan untuk menunjukkan bahwa perangkat sedang disediakan untuk mode
demo retail.
SystemServer
menggunakan flag ini untuk mengelola aspek mode retail, seperti profil daya dan
SystemUI.
Aktifkan RetailDemoModeService
Di perangkat yang menerapkan mode demo retail, wizard penyiapan menetapkan setelan global
Global.DEVICE_DEMO_MODE
ke true
untuk menunjukkan bahwa perangkat telah memasuki mode retail. Setelah
melihat setelan ini, RetailDemoModeService membuat pengguna demo dan beralih ke pengguna tersebut saat pengguna 0 dimulai, mengaktifkan
peluncur kustom yang ditentukan dalam resource overlay, dan menonaktifkan SUW. SystemServer dan SystemUI juga menggunakan tanda ini untuk mengelola aspek mode retail.
Menyetel peluncur atau pemutar video kustom
Produsen perangkat dapat menentukan peluncur kustom dengan mengganti resource
framework config_demoModeLauncherComponent
yang ditentukan dalam file config.xml
seperti berikut.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
Aplikasi DemoPlayer demo retail 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 secara berulang. Saat pengguna menyentuh layar, peluncur kustom akan menonaktifkan komponen aktivitasnya, yang menyebabkan peluncur sistem default dimulai.
Peluncur kustom harus memiliki komponen kustom yang ditandai sebagai dinonaktifkan secara default
agar tidak muncul dalam skenario non-demo. Dalam skenario demo, Server
Sistem mengaktifkan config_demoModeLauncherComponent
yang ditentukan saat memulai
sesi demo baru.
Wizard penyiapan juga mencari video yang disebutkan sebelumnya untuk memberikan kemampuan untuk memasuki mode retail. SUW dapat diubah untuk mencari tanda khusus OEM lain yang menunjukkan bahwa mode retail didukung jika video bukan bagian dari demo. Jika ada partisi A/B sistem, partisi B sistem harus berisi video demo di /preloads/demo. File ini disalin ke /data/preloads/demo saat booting pertama.
Menyesuaikan aplikasi bawaan untuk mode demo promo
Aplikasi yang sudah dimuat sebelumnya dapat menyesuaikan pengalaman mereka untuk mode demo retail dengan memanggil
API UserManager.isDemoUser()
untuk melihat apakah aplikasi diluncurkan di lingkungan demo.
Pembatasan tertentu ditetapkan di pengguna demo, mirip dengan kebijakan profil atau perangkat terkelola yang mencegah aplikasi dan pengguna melakukan operasi tertentu.
Salah satu batasan ini adalah DISALLOW_MODIFY_ACCOUNTS
. Dengan batasan ini, AccountManager
dan Settings
tidak mengizinkan penambahan akun. Beberapa aplikasi Google bereaksi terhadap pembatasan ini dan menampilkan pesan error, dan aplikasi lainnya tidak akan meminta akun (seperti YouTube dan Foto). Sebaiknya aplikasi OEM juga memeriksa apakah
DISALLOW_MODIFY_ACCOUNTS
disetel dan menangani skenario tersebut dengan tepat.
Update sistem
Secara default, saat mode retail diaktifkan, kebijakan perangkat disetel ke update over-the-air (OTA) secara otomatis. Perangkat retail akan mendownload, memulai ulang, dan menginstal update (dengan memperhatikan batas baterai) tanpa interaksi pengguna.
Aplikasi demo promo
Penerapan mode demo retail berbasis pemilik perangkat memerlukan aplikasi Pengontrol Kebijakan Perangkat ditetapkan sebagai pemilik perangkat. AOSP berisi implementasi aplikasi RetailDemo referensi di /packages/apps/RetailDemo.
Aplikasi pemilik perangkat tidak memerlukan hak istimewa yang ditingkatkan atau pra-penginstalan pada image sistem dan dapat didownload selama proses penyiapan atau penyediaan. Aplikasi ini sebagian besar diimplementasikan seperti aplikasi tradisional, dengan perbedaan berikut:
Semua aplikasi pemilik perangkat harus memperluas komponen DeviceAdminReceiver, yang berfungsi sebagai token otorisasi untuk semua API DevicePolicyManager. Komponen harus memiliki izin
android.permission.BIND_DEVICE_ADMIN
, menyertakan kebijakan khusus yang diminta sebagai metadata, dan memfilter intentandroid.app.action.PROFILE_PROVISIONING_COMPLETE
danandroid.app.action.DEVICE_ADMIN_ENABLED
.Flag DevicePolicyManager#MAKE_USER_DEMO, yang disetel untuk membuat pengguna jenis demo khusus, adalah API tersembunyi. Flag ini memiliki nilai konstanta 0x4.
Kepemilikan perangkat hanya boleh ditetapkan melalui pemegang peran pengelolaan perangkat atau aplikasi ManagedProvisioning.
API di class DevicePolicyManager memungkinkan Pemilik Perangkat (DO) dan Pemilik Profil (PO) untuk menerapkan berbagai kebijakan perangkat. Beberapa fungsi DevicePolicyManager yang berlaku untuk mode demo retail tercantum sebagai berikut.
Membuat dan mengelola pengguna.
Boot ulang perangkat.
Menetapkan paket yang diizinkan LockTask.
Instal paket melalui PackageInstaller.
Blokir paket agar tidak di-uninstal.
Aktifkan update sistem otomatis. Perangkat akan otomatis mendownload dan menerapkan update OTA.
Nonaktifkan keyguard.
Mencegah penyetelan sandi atau sidik jari.
Tetapkan setelan Settings.Global, Settings.Secure, dan Settings.System yang masuk dalam daftar yang diizinkan.
Setel kebijakan izin ke
PERMISSION_POLICY_AUTO_GRANT
, yang secara otomatis memberikan semua izin runtime. Izin juga dapat diberikan secara lebih sempit: satu izin untuk satu aplikasi. Hal ini tidak berlaku untuk izin app-ops, yang harus diberikan pengguna berdasarkan per pengguna, per aplikasi.Tetapkan batasan pengguna yang relevan dengan mode retail sebagaimana ditentukan dalam 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
Memperbarui video demo menggunakan web
Aplikasi RetailDemo di /packages/apps/RetailDemo dapat memperbarui video demo jika ada konektivitas jaringan. URL untuk mendownload 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, URL download yang berbeda dapat dikonfigurasi dengan menggunakan resource string khusus lokalitas di res/values-*/strings.xml. Misalnya, jika video yang berbeda perlu digunakan di Amerika Serikat dan Inggris Raya, URL download yang sesuai dapat ditempatkan di res/values-en-rUS/strings.xml dan res/values-en-rGB/strings.xml, masing-masing, seperti yang ditunjukkan di bawah.
Di 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 didownload paling banyak satu kali untuk setiap perangkat yang dimulai ulang. Saat video di perangkat sedang diputar, aplikasi RetailDemo memeriksa di latar belakang apakah URL download disediakan dan video di URL tersebut lebih baru daripada video yang sedang diputar.
Jika ya, aplikasi RetailDemo akan mendownload dan mulai memutar video. Setelah video didownload, video tersebut akan digunakan untuk pemutaran di semua sesi demo ke depannya. Tidak ada pemeriksaan yang dilakukan lagi hingga setelah mulai ulang 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 menyebabkan burn-in, karena akan diputar terus-menerus saat ditampilkan.
Lihat definisi Developer Android pengguna, profil, dan akun, dokumentasi Device Policy Manager API dan aplikasi Pemilik Perangkat Contoh untuk mengetahui informasi selengkapnya.
Validasi
CTS tidak mencakup mode demo retail karena merupakan fitur opsional. Pengujian harus dilakukan secara manual atau dengan pengujian unit untuk aplikasi demo.
Sesi demo
Penyiapan sesi demo
Perangkat demo promo dapat melakukan booting ke mode demo promo jika dikonfigurasi untuk mode demo dari pabrik. Atau, karyawan retail dapat mengaktifkan mode retail langsung dari wizard penyiapan.
Gambar 2. Mode demonstrasi retail
Menampilkan sesi demo
Saat perangkat memasuki mode retail, perangkat akan beralih ke pengguna demo baru dan otomatis memulai peluncur kustom yang ditentukan dalam resource overlay seperti yang dijelaskan dalam Implementasi. Secara default, peluncur kustom ini memutar video demo secara berulang hingga pengguna menyentuh layar untuk memulai sesi pengguna demo. Pada saat itu, peluncur kustom akan memulai peluncur sistem, lalu keluar. OEM dapat mengubah peluncur kustom untuk meluncurkan layanan atau aktivitas lain saat keluar.
Untuk menjaga integritas mode retail, perlindungan tombol dinonaktifkan dan tindakan tertentu dari Setelan Cepat yang dapat memengaruhi mode retail secara negatif juga tidak diizinkan, termasuk yang berikut.
- Tombol mode Pesawat.
- Menghapus atau mengubah titik akses Wi-Fi (Setelan).
- Mengubah operator (Setelan).
- Mengonfigurasi hotspot (Setelan).
- Peralihan pengguna.
Selain itu, akses juga diblokir ke beberapa setelan global yang dapat memengaruhi mode retail dengan menonaktifkan hal berikut:
- Setelan Wi-Fi.
- Opsi konfigurasi jaringan seluler, terutama hotspot.
- Konfigurasi Bluetooth.
- Cadangkan & Reset, Tanggal & Waktu, dan Jaringan Seluler (tidak muncul sama sekali).
Jika pengguna tidak beraktivitas selama jangka waktu tertentu (90 detik secara default), mode retail akan menampilkan dialog sistem untuk meminta pengguna keluar dari sesi atau melanjutkan. Jika pengguna memilih untuk keluar atau tidak ada respons selama lima detik, mode retail akan menghapus pengguna demo saat ini, beralih ke pengguna demo baru, dan memutar video asli lagi. Jika layar dinonaktifkan menggunakan tombol daya, layar akan otomatis aktif kembali setelah beberapa detik.
Setelah keluar dari sesi demo, perangkat akan membisukan diri sendiri dan mereset beberapa setelan global, termasuk:
- Kecerahan
- Putar otomatis
- Senter
- Bahasa
- Aksesibilitas
Keluar dari mode demo promo
Untuk keluar dari mode retail, karyawan retail harus memastikan bahwa perangkat demo tidak terdaftar di pengelolaan perangkat dan mereset perangkat ke setelan pabrik dari boot loader.