Android 7.1.1 ha introdotto il supporto a livello di sistema per la modalità demo retail, in modo che i clienti possano esaminare i dispositivi in azione nei negozi al dettaglio. I dispositivi sono configurati per la demo retail utilizzando un'app proprietario del dispositivo per garantire che l'utilizzo del dispositivo sia limitato solo a determinate app in modalità demo. Gli utenti finali non devono essere in grado di aggiungere un account personale su un dispositivo demo per la vendita al dettaglio. Android 8.1 rivede questo supporto per creare utenti demo tramite l'API DevicePolicyManager createAndManageUser. Ciò consente una personalizzazione OEM molto maggiore della modalità vendita standard in termini di gestione degli utenti e delle policy dei dispositivi sul dispositivo demo.
Sebbene le API DevicePolicyManager
possano essere utilizzate su versioni precedenti ad Android 8.1,
gli utenti di tipo demo (DevicePolicyManager.MAKE_USER_DEMO
) non possono essere creati
con l'API createAndManageUser
nelle versioni 8.0 e precedenti.
Implementazione in Android 8.1 e versioni successive
Questa sezione mette in evidenza i miglioramenti della piattaforma e descrive l'app demo per la vendita al dettaglio in Android 8.1 e versioni successive.
Modifiche alla piattaforma
Imposta DEVICE_DEMO_MODE
I dispositivi che implementano una modalità demo retail basata sul proprietario del dispositivo devono impostare
Settings.Global.DEVICE_DEMO_MODE
su 1 prima del
provisioning per indicare che il dispositivo viene sottoposto a provisioning per la modalità
demo retail.
SystemServer
utilizza questo flag per gestire aspetti della modalità vendita al dettaglio, come il profilo di alimentazione e
SystemUI.
Attiva RetailDemoModeService
Nei dispositivi che implementano una modalità demo retail, la procedura guidata di configurazione imposta un'impostazione
globale
Global.DEVICE_DEMO_MODE
su true
per indicare che il dispositivo è entrato in modalità retail. Quando
viene visualizzata questa impostazione, RetailDemoModeService crea un utente demo e passa a questo utente quando viene avviato l'utente 0, attiva
l'avvio app personalizzato specificato in una risorsa di overlay e disattiva SUW. Sistema
Anche Server e SystemUI utilizzano questo flag per gestire aspetti della modalità retail.
Impostare un Avvio app o un video player personalizzato
I produttori di dispositivi possono specificare un launcher personalizzato sostituendo la risorsa
del framework config_demoModeLauncherComponent
specificata nel file config.xml
come segue.
<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>
L'app demo retail DemoPlayer disponibile all'indirizzo /packages/apps/RetailDemo è l'avvio app personalizzato predefinito in Android Open Source Project (AOSP). L'app cerca un video in una partizione del dispositivo, ad esempio /data/preloads/demo/retail_demo.mp4 e lo riproduce in loop. Quando l'utente tocca lo schermo, l'avvio app personalizzato disattiva il relativo componente di attività, il che causa l'avvio dell'avvio app di sistema predefinito.
Il launcher personalizzato deve avere il componente personalizzato contrassegnato come disattivato per impostazione predefinita
in modo che non venga visualizzato in scenari non demo. Nello scenario demo, System
Server abilita config_demoModeLauncherComponent
specificato all'avvio di una
nuova sessione demo.
La procedura guidata di configurazione cerca anche il video menzionato in precedenza per fornire un'opportunità per attivare la modalità vendita al dettaglio. SUW può essere modificato per cercare un altro segnale specifico dell'OEM che indica che la modalità retail è supportata se il video non fa parte della demo. Se sono presenti partizioni A/B del sistema, la partizione B del sistema deve contenere il video demo in /preloads/demo. Viene copiato in /data/preloads/demo al primo avvio.
Personalizzare le app precaricate per la modalità demo retail
Le app precaricate possono personalizzare la propria esperienza per la modalità demo retail chiamando
l'API UserManager.isDemoUser()
per verificare se l'app viene avviata in un ambiente demo.
Nel profilo utente demo sono impostate determinate limitazioni, simili ai criteri per i profili o i dispositivi gestiti che impediscono ad app e utenti di eseguire determinate operazioni.
Una di queste limitazioni è DISALLOW_MODIFY_ACCOUNTS
. Con questa limitazione, AccountManager
e Settings
non consentono l'aggiunta di account. Alcune app Google reagiscono a questa limitazione
e mostrano un messaggio di errore, mentre altre non richiedono un account (come
YouTube e Foto). Consigliamo alle app OEM di verificare anche se
DISALLOW_MODIFY_ACCOUNTS
è impostato e di gestire lo scenario di conseguenza.
Aggiornamenti di sistema
Per impostazione predefinita, quando la modalità vendita al dettaglio è attivata, le norme del dispositivo sono impostate sull'aggiornamento over-the-air (OTA) automatico. I dispositivi retail scaricheranno, riavvieranno e installeranno l'aggiornamento (rispettando le soglie della batteria) senza interazione dell'utente.
App demo retail
L'implementazione della modalità demo per la vendita al dettaglio basata sul proprietario del dispositivo richiede che un'app Device Policy Controller sia impostata come proprietario del dispositivo. L'AOSP contiene un'implementazione di riferimento dell'app RetailDemo in /packages/apps/RetailDemo.
Le app proprietario del dispositivo non richiedono privilegi elevati o la preinstallazione sull'immagine di sistema e possono essere scaricate durante la procedura di configurazione o provisioning. Vengono implementate principalmente come le app tradizionali, con le seguenti differenze:
Tutte le app proprietario del dispositivo devono estendere il componente DeviceAdminReceiver, che funge da token di autorizzazione per tutte le API DevicePolicyManager. Il componente deve disporre dell'autorizzazione
android.permission.BIND_DEVICE_ADMIN
, includere le norme speciali richieste come metadati e filtrare gli intentandroid.app.action.PROFILE_PROVISIONING_COMPLETE
eandroid.app.action.DEVICE_ADMIN_ENABLED
.Il flag DevicePolicyManager#MAKE_USER_DEMO, impostato per creare utenti speciali di tipo demo, è un'API nascosta. Questo flag ha un valore costante di 0x4.
La proprietà del dispositivo deve essere assegnata solo tramite il titolare del ruolo di gestione dei dispositivi o l'app ManagedProvisioning.
Le API nella classe DevicePolicyManager consentono al proprietario del dispositivo e al proprietario del profilo di applicare varie norme del dispositivo. Di seguito sono elencate alcune delle funzioni di DevicePolicyManager applicabili alla modalità demo retail.
Creazione e gestione di utenti.
riavvia il dispositivo.
Imposta i pacchetti consentiti per LockTask.
Installa i pacchetti tramite PackageInstaller.
Blocca la disinstallazione dei pacchetti.
Attiva gli aggiornamenti automatici del sistema. I dispositivi scaricheranno e applicheranno automaticamente gli aggiornamenti OTA.
Disattiva il keyguard.
Impedire l'impostazione di password o impronte.
Imposta un insieme di impostazioni Settings.Global, Settings.Secure, e Settings.System consentite.
Imposta il criterio di autorizzazione su
PERMISSION_POLICY_AUTO_GRANT
, che concede automaticamente tutte le autorizzazioni di runtime. Le autorizzazioni possono essere concesse anche in modo più specifico: una singola autorizzazione a una singola app. Ciò non si applica alle autorizzazioni app-ops, che gli utenti devono comunque concedere per ogni utente e per ogni app.Imposta le limitazioni utente pertinenti alla modalità vendita al dettaglio come definito in UserManager nel seguente modo.
DISALLOW_MODIFY_ACCOUNTS
DISALLOW_USB_FILE_TRANSFER
DISALLOW_DEBUGGING_FEATURES
DISALLOW_CONFIG_WIFI
DISALLOW_CONFIG_BLUETOOTH
DISALLOW_INSTALL_UNKNOWN_SOURCES
DISALLOW_CONFIG_MOBILE_NETWORKS
Aggiornare il video dimostrativo utilizzando il web
L'app RetailDemo in /packages/apps/RetailDemo può aggiornare il video dimostrativo se è disponibile una connessione di rete. L'URL da cui scaricare il video può essere configurato sostituendo il seguente valore stringa nell'app RetailDemo.
<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>
Se è necessario utilizzare video diversi in regioni diverse, è possibile configurare URL di download diversi utilizzando risorse stringa specifiche per le impostazioni internazionali in res/values-*/strings.xml. Ad esempio, se devono essere utilizzati video diversi negli Stati Uniti e in Gran Bretagna, gli URL di download corrispondenti possono essere inseriti rispettivamente in res/values-en-rUS/strings.xml e res/values-en-rGB/strings.xml, come mostrato di seguito.
In res/values-en-rUS/strings.xml:
<string name="retail_demo_video_download_url">download URL for US video goes here</string>
In res/values-en-rGB/strings.xml:
<string name="retail_demo_video_download_url">download URL for UK video goes here</string>
Questo video viene scaricato al massimo una volta per ogni riavvio del dispositivo. Durante la riproduzione del video sul dispositivo, l'app RetailDemo controlla in background se è stato fornito l'URL di download e se il video all'URL è più recente di quello in riproduzione.
In questo caso, l'app RetailDemo scarica e avvia la riproduzione del video. Una volta scaricato, il video viene utilizzato per la riproduzione in tutte le sessioni demo future. Nessuno dei controlli viene eseguito di nuovo fino al riavvio successivo.
Linee guida per i video dimostrativi
I video dimostrativi devono essere in formato verticale o, se si tratta di un tablet, nell'orientamento naturale del dispositivo e possono avere una durata superiore a cinque secondi. I contenuti non devono causare burn-in, poiché verranno riprodotti costantemente quando sono visualizzati.
Per saperne di più, consulta le definizioni per sviluppatori Android di utenti, profili e account, la documentazione dell'API Device Policy Manager e l'app di esempio Proprietario del dispositivo.
Convalida
CTS non copre la modalità demo retail perché è una funzionalità facoltativa. Il test deve essere eseguito manualmente o con test delle unità per l'app demo.
Sessione demo
Configurazione della sessione demo
I dispositivi demo retail potrebbero avviarsi in modalità demo retail se configurati per la modalità demo dalla fabbrica. In alternativa, i dipendenti del punto vendita possono attivare la modalità vendita al dettaglio direttamente dalla procedura guidata di configurazione.
Figura 2. Modalità demo retail
Visualizza sessione demo
Quando il dispositivo entra in modalità vendita al dettaglio, passa a un nuovo utente demo e avvia automaticamente l'avvio app personalizzato specificato nella risorsa overlay come descritto in Implementazione. Per impostazione predefinita, questo launcher personalizzato riproduce il video demo in loop finché l'utente non tocca lo schermo per iniziare una sessione utente demo. A quel punto, l'Avvio app personalizzato avvia l'Avvio app di sistema e poi si chiude. Gli OEM possono modificare l'Avvio app personalizzato per avviare anche un altro servizio o un'altra attività all'uscita.
Per mantenere l'integrità della modalità retail, Keyguard è disattivato e anche alcune azioni delle Impostazioni rapide che potrebbero influire negativamente sulla modalità retail sono vietate, tra cui le seguenti.
- Attivazione/disattivazione della modalità aereo.
- Rimozione o modifica dei punti di accesso Wi-Fi (Impostazioni).
- Cambio operatore (Impostazioni).
- Configurazione dell'hotspot (Impostazioni).
- Cambio utente.
Inoltre, l'accesso è bloccato anche ad alcune impostazioni globali che possono influire sulla modalità vendita disattivando le seguenti impostazioni:
- Impostazioni Wi-Fi.
- Opzioni di configurazione della rete mobile, in particolare gli hotspot.
- Configurazione Bluetooth.
- Backup e ripristino, Data e ora e Reti mobili (non vengono visualizzati).
Se l'utente rimane inattivo per un determinato periodo di tempo (90 secondi per impostazione predefinita), la modalità vendita mostra una finestra di dialogo di sistema per chiedere all'utente di uscire dalla sessione o continuare. Se l'utente sceglie di uscire o se non viene data alcuna risposta per cinque secondi, la modalità vendita al dettaglio rimuove l'utente demo corrente, passa a un nuovo utente demo e ripete il video originale. Se lo schermo viene spento utilizzando il tasto di accensione, si riaccende automaticamente dopo alcuni secondi.
Dopo aver terminato una sessione demo, i dispositivi si disattivano e reimpostano alcune impostazioni globali, tra cui:
- Luminosità
- Rotazione automatica
- Torcia
- Lingua
- Accessibilità
Esci dalla modalità demo retail
Per uscire dalla modalità vendita al dettaglio, i dipendenti del punto vendita devono assicurarsi che il dispositivo demo non sia registrato nella gestione dei dispositivi e ripristinare i dati di fabbrica del dispositivo dal bootloader.