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. I dispositivi vengono configurati per la demo retail utilizzando un'app del 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 in modalità demo retail. Android 8.1 rivede questo supporto per creare utenti della demo tramite l'API createAndmanageUser di DevicePolicyManager. Ciò consente una personalizzazione molto maggiore OEM rispetto alla modalità retail standard in termini di gestione utenti e criteri dei dispositivi sul dispositivo demo.
Mentre le API di DevicePolicyManager
possono essere utilizzate nelle versioni precedenti ad Android 8.1,
gli utenti demo-type (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 è in corso il provisioning del dispositivo per la modalità demo retail.
SystemServer
utilizza questo flag per gestire gli aspetti della modalità retail, come il profilo di alimentazione e
SystemUI.
Abilita RetailDemoModeService
Nei dispositivi che implementano una modalità demo per la vendita al dettaglio, la procedura guidata di configurazione imposta un'impostazione globale
Global.DEVICE_DEMO_MODE
su true
per indicare che il dispositivo è passato alla modalità di vendita al dettaglio. Dopo aver
veduto questa impostazione, RetailDemoModeService crea un utente demo e vi passa all'avvio dell'utente 0, abilita
l'Avvio app personalizzato specificato in una risorsa overlay e disabilita SUW. System
Server e SystemUI utilizzano questo flag anche per gestire aspetti della modalità retail.
Impostare un Avvio app o un video player personalizzato
I produttori di dispositivi possono specificare un launcher personalizzato eseguendo l'override della risorsa 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 DemoPlayer della demo retail, che si trova all'indirizzo /packages/apps/RetailDemo è il launcher 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, Avvio app personalizzato disattiva il componente dell'attività, quindi si avvia l'Avvio app predefinito del sistema.
Il componente personalizzato del programma di avvio personalizzato deve essere contrassegnato come disattivato per impostazione predefinita
in modo che non venga visualizzato in scenari non demo. Nello scenario di demo, System Server attiva 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'affordance per accedere alla modalità di vendita al dettaglio. SUW può essere modificato per cercare altri segnali specifici dell'OEM che indicano che la modalità retail è supportata se il video non fa parte della demo. Se esistono partizioni A/B del sistema, la partizione del sistema B deve contenere il video demo all'indirizzo /preloads/demo. Viene copiato in /data/preloads/demo al primo avvio.
Personalizza le app precaricate per la modalità demo retail
Le app precaricate possono personalizzare la loro esperienza per la modalità demo retail chiamando
l'API UserManager.isDemoUser()
per verificare se l'app viene lanciata in un ambiente demo.
Nell'utente demo vengono impostate alcune limitazioni, in modo simile ai criteri relativi ai dispositivi o ai profili gestiti che impediscono ad app e utenti di eseguire determinate operazioni.
Una di queste limitazioni è DISALLOW_MODIFY_ACCOUNTS
. Con questa limitazione, AccountManager
e Impostazioni
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 anche di controllare se
DISALLOW_MODIFY_ACCOUNTS
è impostata e di gestire lo scenario di conseguenza.
Aggiornamenti di sistema
Per impostazione predefinita, quando la modalità di vendita al dettaglio è attiva, il criterio del dispositivo è impostato automaticamente sull'aggiornamento over-the-air (OTA). I dispositivi di vendita al dettaglio scaricheranno, riavvieranno e installeranno l'aggiornamento (rispettando le soglie della batteria) senza l'intervento dell'utente.
App demo retail
L'implementazione della modalità demo retail basata sul proprietario del dispositivo richiede che sia impostata un'app del controller dei criteri dei dispositivi come proprietario del dispositivo. L'AOSP contiene un'implementazione di riferimento dell'app RetailDemo in /packages/apps/RetailDemo.
Le app di proprietà del dispositivo non richiedono privilegi con escalation o 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 di proprietà del dispositivo devono estendere il componente DeviceAdminReceiver, che funge da token di autorizzazione per tutte le API DevicePolicyManager. Il componente deve contenere l'autorizzazione
android.permission.BIND_DEVICE_ADMIN
, includere i criteri speciali richiesti 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 0x4.
La proprietà del dispositivo deve essere assegnata solo tramite il proprietario del ruolo di gestione dei dispositivi o l'app ManagedProvisioning.
Le API della classe DevicePolicyManager consentono al proprietario del dispositivo (DO) e al proprietario del profilo (PO) di applicare vari criteri per i dispositivi. Di seguito sono elencate alcune delle funzioni di DevicePolicyManager applicabili alla modalità demo per la vendita al dettaglio.
Creare e gestire gli utenti.
riavvia il dispositivo.
Imposta i pacchetti consentiti per LockTask.
Installa i pacchetti tramite PackageInstaller.
Blocca la disinstallazione dei pacchetti.
Attiva gli aggiornamenti di sistema automatici. I dispositivi scaricheranno e applicheranno automaticamente gli aggiornamenti OTA.
Disattiva il blocco della tastiera.
Impedire l'impostazione di password o impronte.
Configura un insieme di impostazioni Settings.Global, Settings.Secure e Settings.System, incluso nella lista consentita.
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. Questo non vale per le autorizzazioni di gestione app, che gli utenti devono comunque concedere in base all'utente e all'app.Imposta le limitazioni relative agli utenti pertinenti alla modalità retail come definito in UserManager come segue.
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 ha la possibilità di aggiornare il video demo in caso di connettività di rete. L'URL da cui scaricare il video può essere configurato sostituendo il seguente valore di 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 di stringhe specifiche delle impostazioni internazionali in res/values-*/strings.xml. Ad esempio, se è necessario utilizzare 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>
Il 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 l'URL di download è stato fornito 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 di questi controlli verrà eseguito di nuovo fino al riavvio successivo.
Linee guida sui video demo
I video dimostrativi devono avere un layout verticale o, se si tratta di un tablet, devono essere 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 ulteriori informazioni, consulta le definizioni di utenti, profili e account per gli sviluppatori Android, la documentazione dell'API Device Policy Manager e l'app Proprietario dispositivo di esempio.
Convalida
CTS non copre la modalità demo retail perché è una funzionalità facoltativa. I test devono essere eseguiti manualmente o con test di unità per l'app demo.
Sessione demo
Configurazione della sessione demo
I dispositivi in modalità demo retail possono avviarsi in modalità demo retail se configurati per la modalità demo dal produttore. In alternativa, i dipendenti possono abilitare la modalità retail direttamente dalla configurazione guidata.
Figura 2. Modalità dimostrazione retail
Mostra sessione demo
Quando il dispositivo entra in modalità retail, 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 programma di avvio personalizzato riproduce il video demo in loop finché l'utente non tocca lo schermo per avviare una sessione utente demo. L'Avvio app personalizzato avvia l'Avvio app di sistema e poi si chiude. Gli OEM possono modificare l'Avvio app personalizzato per avviare inoltre un altro servizio o un'altra attività all'uscita.
Per mantenere l'integrità della modalità retail, non sono consentite alcune azioni delle Impostazioni rapide che potrebbero influire negativamente sulla modalità retail, tra cui le seguenti.
- Pulsante di attivazione/disattivazione della modalità aereo.
- Rimozione o modifica dei punti di accesso Wi-Fi (Impostazioni).
- Cambio di operatore (Impostazioni).
- Configurazione dell'hotspot (Impostazioni).
- Cambio di utente.
Inoltre, viene bloccato anche l'accesso ad alcune impostazioni globali che possono influire sulla modalità retail disattivando quanto segue:
- 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 visualizzate).
Se l'utente è inattivo per un determinato periodo di tempo (90 secondi per impostazione predefinita), la modalità retail 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 risponde per cinque secondi, la modalità vendita al dettaglio rimuove l'utente demo corrente, passa a un nuovo utente demo e fa di nuovo il loop del video originale. Se lo schermo si spegne con il tasto di accensione, si riattiva automaticamente dopo qualche secondo.
Dopo aver chiuso una sessione di prova, 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à retail, i dipendenti devono assicurarsi che il dispositivo demo non sia registrato nella gestione dispositivi e ripristinare i dati di fabbrica del dispositivo dal bootloader.