Modalità demo retail

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 retail. Android 8.1 rivede questo supporto per creare utenti demo tramite l'API DevicePolicyManager createAndManageUser. Ciò consente una personalizzazione OEM molto maggiore della modalità retail standard in termini di gestione degli utenti e gestione delle policy relative ai dispositivi sul dispositivo demo.

Sebbene le API DevicePolicyManager possano essere utilizzate nelle 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 evidenzia i miglioramenti della piattaforma e descrive l'app demo retail in Android 8.1 e versioni successive.

Cambiamenti a livello di piattaforme

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 è in fase di provisioning 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 retail, la procedura guidata di configurazione imposta un'impostazione globale setting Global.DEVICE_DEMO_MODE su true per indicare che il dispositivo è entrato in modalità retail. Quando vede questa impostazione, RetailDemoModeService crea un utente demo e passa a questo utente quando viene avviato l'utente 0, abilita il launcher personalizzato specificato in una risorsa di overlay e disabilita SUW. Anche System Server e SystemUI utilizzano questo flag per gestire gli aspetti della modalità retail.

Imposta un launcher 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 DemoPlayer per la demo retail, disponibile in /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, il launcher personalizzato disabilita il componente dell'attività, il che fa sì che venga avviato il launcher di sistema predefinito.

Il componente personalizzato del launcher personalizzato deve essere contrassegnato come disabilitato per impostazione predefinita in modo che non venga visualizzato in scenari non demo. Nello scenario demo, System Server abilita il 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à di accedere alla modalità retail. SUW può essere modificato per cercare un altro segno specifico del produttore OEM che indichi che la modalità retail è supportata se il video non fa parte della demo. Se sono presenti partizioni A/B di sistema, la partizione B del sistema deve contenere il video demo in /preloads/demo. Questo viene copiato in /data/preloads/demo al primo avvio.

Personalizza le app precaricate per la modalità demo retail

Le app precaricate possono personalizzare la propria esperienza per la modalità demo retail chiamando l'UserManager.isDemoUser() API per verificare se l'app viene avviata in un ambiente demo.

Nell'utente demo sono impostate alcune limitazioni, simili alle policy relative ai profili o ai dispositivi 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 (ad esempio YouTube e Foto). Ti consigliamo di verificare se anche le app OEM hanno impostato DISALLOW_MODIFY_ACCOUNTS e di gestire lo scenario di conseguenza.

Aggiornamenti di sistema

Per impostazione predefinita, quando la modalità retail è abilitata, la policy relativa ai dispositivi è impostata per l'aggiornamento automatico OTA (over-the-air). 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 retail 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 nell'immagine di sistema e possono essere scaricate durante la configurazione o il provisioning. Vengono implementate principalmente come le app tradizionali, con le seguenti differenze:

Le API nella classe DevicePolicyManager consentono al proprietario del dispositivo (DO) e al proprietario del profilo (PO) di applicare varie policy relative ai dispositivi. 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.

  • Impedisci la disinstallazione dei pacchetti.

  • Abilita gli aggiornamenti automatici del sistema. I dispositivi scaricheranno e applicheranno automaticamente gli aggiornamenti OTA.

  • Disabilita la schermata di blocco.

  • Impedisci l'impostazione di password o impronte digitali.

  • Imposta un insieme di impostazioni Settings.Global, Settings.Secure, e Settings.System consentite.

  • Imposta la policy relativa alle autorizzazioni su PERMISSION_POLICY_AUTO_GRANT, che concede automaticamente tutte le autorizzazioni di runtime. Le autorizzazioni possono anche essere concesse in modo più limitato: una singola autorizzazione a una singola app. Questo non si applica alle autorizzazioni di app-op, che gli utenti devono comunque concedere per utente e per app.

  • Imposta le limitazioni utente 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

Aggiorna il video demo utilizzando il web

L'app RetailDemo in /packages/apps/RetailDemo è in grado di aggiornare il video demo 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 le risorse stringa specifiche delle impostazioni internazionali in res/values-*/strings.xml. Ad esempio, se è necessario utilizzare video diversi negli Stati Uniti e in Gran Bretagna, è possibile inserire gli URL di download corrispondenti 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. Quando il video sul dispositivo è in riproduzione, l'app RetailDemo verifica in background se l'URL di download è fornito e se il video all'URL è più recente di quello in riproduzione.

In caso affermativo, 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 successive. Nessuno dei controlli viene eseguito di nuovo fino al riavvio successivo.

Linee guida per i video demo

I video dimostrativi devono essere in layout 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 durante la visualizzazione.

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 del dispositivo di esempio.

Convalida

CTS non copre la modalità demo retail perché è una funzionalità facoltativa. I test devono essere eseguiti manualmente o con unit test per l'app demo.

Sessione demo

Configurazione della sessione demo

I dispositivi demo retail possono essere avviati in modalità demo retail se configurati per la modalità demo dalla fabbrica. In alternativa, i dipendenti del negozio possono attivare la modalità retail direttamente dalla procedura guidata di configurazione.

Modalità demo retail

Figura 2. Modalità dimostrativa retail

Visualizza la sessione demo

Quando il dispositivo entra in modalità retail, passa a un nuovo utente demo e avvia automaticamente il launcher personalizzato specificato nella risorsa di 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 avviare una sessione utente demo. A questo punto, il launcher personalizzato avvia il launcher di sistema e poi esce. I produttori OEM possono modificare il launcher personalizzato per avviare anche un altro servizio o un'altra attività all'uscita.

Per mantenere l'integrità della modalità retail, la schermata di blocco è disabilitata e alcune azioni di Impostazioni rapide che potrebbero influire negativamente sulla modalità retail non sono consentite, tra cui le seguenti.

  • Attivazione/disattivazione della modalità aereo.
  • Rimozione o modifica dei punti di accesso Wi-Fi (Impostazioni).
  • Modifica dell'operatore (Impostazioni).
  • Configurazione dell'hotspot (Impostazioni).
  • Cambio utente.

Inoltre, l'accesso è bloccato anche ad alcune impostazioni globali che possono influire sulla modalità retail disabilitando le seguenti:

  • 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à 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à retail rimuove l'utente demo corrente, passa a un nuovo utente demo e riproduce di nuovo il video originale. Se lo schermo viene spento utilizzando il tasto di accensione, si riaccende automaticamente dopo alcuni secondi.

Dopo aver chiuso una sessione demo, i dispositivi vengono silenziati e vengono reimpostate alcune impostazioni globali, tra cui le seguenti:

  • Luminosità
  • Rotazione automatica
  • Torcia
  • Lingua
  • Accessibilità

Esci dalla modalità demo retail

Per uscire dalla modalità retail, i dipendenti del negozio devono assicurarsi che il dispositivo demo non sia registrato nella gestione dei dispositivi e ripristinare i dati di fabbrica del dispositivo dal bootloader.