Google 致力于为黑人社区推动种族平等。查看具体举措
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Modalità demo al dettaglio

Android 7.1.1 e versioni successive offrono supporto a livello di sistema per la modalità di vendita al dettaglio in modo che gli utenti possano esaminare prontamente i dispositivi in ​​azione. Android 8.1 rivede questo supporto per creare utenti demo tramite Device Policy Manager. Ciò consente una personalizzazione OEM molto maggiore rispetto alla modalità di vendita al dettaglio standard.

Android 8.1 e versioni successive

Tramite Device Policy Manager, Android 8.1 supporta la dimostrazione della funzionalità del dispositivo agli utenti nei negozi al dettaglio. Sebbene le API di Device Policy Manager possano essere utilizzate nelle versioni precedenti alla 8.1, gli utenti di tipo demo non possono essere creati con createAndManageUser precedenti alla 8.1.

Implementazione

Approvvigionamento

Impostare Settings.Global.DEVICE_DEMO_MODE su 1 prima del provisioning per indicare che il dispositivo deve entrare in modalità retail. System Server utilizzerà questo flag per gestire aspetti della modalità di vendita al dettaglio, come il profilo di alimentazione. Inoltre, i dipendenti della vendita al dettaglio devono concedere la proprietà del dispositivo all'applicazione demo. Una volta completata la configurazione del consumatore, non è possibile impostare i proprietari del dispositivo.

Creazione dell'applicazione demo

Le app del proprietario del dispositivo non richiedono privilegi elevati o preinstallazione sull'immagine di sistema. Sono per lo più implementate come app tradizionali, con le seguenti differenze:

  • Tutte le app del proprietario del dispositivo devono estendere il componente DeviceAdminReceiver , che funge da token di autorizzazione per tutte le API di Device Policy Manager. Il componente deve contenere l'autorizzazione android.permission.BIND_DEVICE_ADMIN , includere le politiche speciali richieste come metadati e filtrare gli intenti android.app.action.PROFILE_PROVISIONING_COMPLETE e android.app.action.DEVICE_ADMIN_ENABLED .
  • Il DevicePolicyManager#MAKE_USER_DEMO , impostato per creare utenti speciali di tipo demo, è un'API nascosta. Questo flag è una costante 0x4.
  • La proprietà del dispositivo può essere assegnata solo tramite Managed Provisioning.

Device Policy Manager

Le API Device Policy Manager concedono tutti i diritti Device Owner (DO) e Profile Owner (PO), ad eccezione dell'installazione dei pacchetti, che è automaticamente consentita. Un PO affiliato a una DO può utilizzare un'interfaccia AIDL per accedere ai diritti concessi solo alla DO. Le funzionalità disponibili includono:

  • Crea utenti. Gli utenti creati tramite DevicePolicyManager vengono automaticamente impostati come PO.
  • Cambia utente.
  • Imposta la politica di autorizzazione su PERMISSION_POLICY_AUTO_GRANT che garantirà automaticamente tutte le autorizzazioni di runtime. Le autorizzazioni possono anche essere concesse in modo più ristretto: un'unica autorizzazione per una singola app. Ciò non si applica alle autorizzazioni Appops, che gli utenti devono comunque concedere per utente e per app.
  • Aggiungi restrizioni utente. Le restrizioni relative alla modalità di vendita al dettaglio possono includere, ma non sono limitate a:
    • DISALLOW_MODIFY_ACCOUNTS
    • DISALLOW_USB_FILE_TRANSFER
    • DISALLOW_DEBUGGING_FEATURES
    • DISALLOW_CONFIG_WIFI
    • DISALLOW_CONFIG_BLUETOOTH
    • DISALLOW_INSTALL_UNKNOWN_SOURCES
    • DISALLOW_CONFIG_MOBILE_NETWORKS
  • Abilita gli aggiornamenti automatici del sistema. I dispositivi scaricheranno e applicheranno automaticamente gli aggiornamenti OTA.
  • Imposta i pacchetti consentiti da LockTask.
  • Ripristina le impostazioni di fabbrica del dispositivo.
  • Disabilita il blocco della tastiera.
  • Impedisci l'impostazione di password / impronte digitali.
  • Controlla le modifiche alla rete Wi-Fi. Se utilizzato con la DISALLOW_CONFIG_WIFI utente DISALLOW_CONFIG_WIFI , le app del proprietario del dispositivo possono controllare l'accesso all'impostazione di selezione della rete Wi-Fi.
  • Riavvia il dispositivo.
  • Installa i pacchetti tramite PackageInstaller .
  • Imposta un set autorizzato di Impostazioni.Globale , Impostazioni.Sicuro e Impostazioni.Sistema .
  • Blocca la disinstallazione dei pacchetti.

Esempi e risorse aggiuntive

Validazione

CTS non copre la modalità demo al dettaglio perché è una funzionalità opzionale. Il test deve essere condotto manualmente o con unit test per l'applicazione demo.

Android 8.0 e versioni precedenti

Android 7.1.1 ha introdotto la modalità demo al dettaglio e ha fornito una semplice API per riprodurre un video dimostrativo. Questa implementazione è stata rimossa in Android 8.1.

Ciclo vitale

flusso in modalità demo al dettaglio

Figura 1. Opzione Modalità dimostrativa di vendita al dettaglio in Selezione lingua

Configurazione guidata (SUW)

I dipendenti di vendita al dettaglio possono abilitare la modalità di vendita al dettaglio direttamente dalla prima schermata di qualsiasi procedura guidata di configurazione selezionando la lingua Demo di vendita al dettaglio in fondo all'elenco. Questa opzione è disponibile per i nuovi dispositivi spediti freschi dalla fabbrica. Una volta completata la configurazione del consumatore, la modalità di vendita al dettaglio potrebbe non essere più disponibile. Una volta selezionato, il dispositivo termina SUW con un flusso abbreviato.

utilizzo della procedura guidata demo al dettaglio

Figura 2. Opzione Modalità dimostrativa di vendita al dettaglio in Selezione lingua

Ospite sessione

Quando il dispositivo entra in modalità di vendita al dettaglio, passa a un nuovo utente demo e avvia automaticamente il launcher personalizzato specificato nella risorsa overlay (descritto in Implementazione). Per impostazione predefinita, questo launcher personalizzato riproduce ripetutamente il video dimostrativo fino a quando l'utente non tocca lo schermo per iniziare una sessione ospite. A quel punto, il programma di avvio personalizzato avvia il programma di avvio del sistema e quindi esce. Gli OEM possono modificare il programma di avvio personalizzato per avviare in aggiunta un altro servizio o attività all'uscita. Vedere la sezione Implementazione per i dettagli.

Al fine di mantenere l'integrità della modalità di vendita al dettaglio, il blocco della tastiera è disabilitato e anche alcune azioni delle Impostazioni rapide che potrebbero influire negativamente sulla modalità di vendita al dettaglio sono disabilitate, tra cui:

  • Attiva / disattiva la modalità aereo
  • Rimozione o modifica dei punti di accesso Wi-Fi (Impostazioni)
  • Cambiare operatore (Impostazioni)
  • Configurazione dell'hotspot (Impostazioni)
  • Cambio utente

Inoltre, l'accesso viene bloccato anche ad alcune impostazioni globali che possono influire sulla modalità di vendita al dettaglio disabilitando:

  • Impostazioni Wi-Fi
  • Opzioni di configurazione della rete cellulare, in particolare hotspot
  • Configurazione Bluetooth
  • Backup e ripristino, data e ora e reti mobili (non vengono visualizzati affatto)

Se l'utente è inattivo per un certo periodo di tempo (90 secondi per impostazione predefinita), la modalità di vendita al dettaglio mostrerà una finestra di dialogo di sistema per richiedere all'utente di uscire dalla sessione o continuare. Se l'utente sceglie di uscire o se non c'è risposta per cinque secondi, la modalità di vendita al dettaglio uccide / cancella l'utente demo corrente, passa a un nuovo utente demo e ripete il video originale. Se qualcuno spegne lo schermo utilizzando il pulsante di accensione, si riaccende automaticamente dopo pochi secondi.

Dopo essere usciti da una sessione demo, i dispositivi si disattivano e ripristinano alcune impostazioni globali, tra cui:

  • Luminosità
  • Rotazione automatica
  • Torcia elettrica
  • linguaggio
  • Accessibilità

Uscita dalla modalità di vendita al dettaglio

Per uscire dalla modalità di vendita al dettaglio, i dipendenti della vendita al dettaglio devono ripristinare le impostazioni di fabbrica del dispositivo dal boot loader.

Esempi e fonte

Trova il launcher personalizzato che riproduce un video in loop all'interno di:

/packages/apps/RetailDemo

Implementazione

Abilitazione di RetailDemoModeService

La procedura guidata di configurazione imposta un'impostazione globale Global.DEVICE_DEMO_MODE=true per indicare che il dispositivo è entrato in modalità di vendita al dettaglio. Dopo aver visto questa impostazione, RetailDemoModeService crea e passa all'utente demo all'avvio dell'utente 0, abilita il programma di avvio personalizzato specificato in una risorsa di overlay e disabilita SUW. Anche System Server e SystemUI utilizzano questo flag per gestire aspetti della modalità retail.

Impostazione del launcher o del video player personalizzato

Un OEM specifica un launcher personalizzato sovrascrivendo la risorsa framework config_demoModeLauncherComponent specificata in: /frameworks/base/core/res/res/config.xml

Ad esempio, con:

<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>

L'app DemoPlayer demo al dettaglio situata in /packages/apps/RetailDemo è il launcher personalizzato predefinito in Android Open Source Project (AOSP). L'app cerca un video in /data/preloads/demo/retail_demo.mp4 e lo riproduce in loop. Quando l'utente tocca lo schermo, il programma di avvio personalizzato disabilita il suo componente di attività, il che si traduce nell'avvio del programma di avvio del sistema predefinito.

Il programma di avvio personalizzato deve avere il suo componente personalizzato 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 quando si avvia una nuova sessione demo.

La procedura guidata di configurazione cerca anche il video sopra per fornire un accesso alla modalità di vendita al dettaglio. SUW può essere modificato per cercare qualche altro segno specifico dell'OEM che la modalità di vendita al dettaglio è supportata se il video non fa parte della demo.

Se sono presenti partizioni di sistema A / B, la partizione di sistema B deve contenere il video dimostrativo in /preloads/demo . Questo viene copiato in /data/preloads/demo al primo avvio.

Per impostare impostazioni specifiche della modalità di vendita al dettaglio, utilizzare: Settings.Global.retail_demo_mode_constants . Ad esempio: user_inactivity_timeout_ms=90000,warning_dialog_timeout_ms=10000

Nota: 90000 millisecondi è l'impostazione predefinita del timeout corrente ma è configurabile.

Trovare immagini di esempio

Questa funzione inserisce le foto di esempio in una cartella speciale visibile a qualsiasi app della galleria. Le foto sono disponibili solo in modalità demo e non possono essere modificate dall'utente demo in quanto si trovano in una directory protetta.

Prevenire gli account Google

Alcune restrizioni sono impostate nell'utente guest, simili ai criteri del dispositivo / profilo gestiti che impediscono ad app e utenti di eseguire determinate operazioni. Una di queste limitazioni è DISALLOW_MODIFY_ACCOUNTS . Con questa restrizione, AccountManager e Impostazioni non consentono l'aggiunta di account. Alcune app Google reagiscono a questa restrizione e mostrano un messaggio di errore, mentre altre non chiederanno un account (come YouTube e Foto).

Le app OEM dovrebbero anche verificare se DISALLOW_MODIFY_ACCOUNTS è impostato. Ma questo è un problema generale non esclusivo della modalità di vendita al dettaglio. Probabilmente è già risolto per i casi d'uso aziendali.

Personalizzazione dell'avviatore di sistema

Gli OEM sono liberi di scegliere il layout, ma dovrebbero includere app che funzionano bene sulla schermata iniziale e sull'hotseat.

Personalizzazione delle app integrate per la modalità demo al dettaglio

Le app integrate potrebbero avere la loro esperienza per la modalità demo retail personalizzata chiamando l'API UserManager.isDemoUser() per vedere se l'app viene avviata in un ambiente demo.

Seguendo le linee guida del video dimostrativo

I video dimostrativi devono essere in layout verticale (o orientamento naturale del dispositivo, se tablet) e possono avere una durata maggiore di cinque secondi. Il contenuto non dovrebbe comportare il burn-in, poiché verrà riprodotto 24 ore su 24, 7 giorni su 7 quando sarà visualizzato.

Manutenzione

Disattivazione della modalità di vendita al dettaglio del dispositivo

Questo può essere fatto solo ripristinando le impostazioni di fabbrica dal boot loader.

Auto-OTA del software di sistema

Per impostazione predefinita, quando è abilitata la modalità di vendita al dettaglio, i criteri del dispositivo sono impostati per l'aggiornamento automatico via etere (OTA). I dispositivi al dettaglio scaricheranno, si riavvieranno e installeranno l'aggiornamento (rispettando le soglie della batteria) senza conferma anche se è contrassegnato come facoltativo.

Attenzione: se si utilizzano partizioni di sistema A / B per OTA, una volta ricevuto un OTA, il dispositivo non riesce a trovare le risorse della modalità di vendita al dettaglio originali nella partizione di sistema B. Pertanto, qualsiasi successivo ripristino delle impostazioni di fabbrica comporterà l'impossibilità di tornare alla modalità di vendita al dettaglio.

Aggiornamento del video dimostrativo tramite il web

L'app RetailDemo in /packages/apps/RetailDemo ha la capacità di aggiornare il video dimostrativo se è presente la connettività di rete. L'URL da cui scaricare il video può essere configurato sovrascrivendo 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 stringa specifiche per le impostazioni locali res/values-*/strings.xml. Ad esempio, se è necessario utilizzare video diversi negli Stati Uniti e nel Regno Unito, gli URL di download corrispondenti possono essere inseriti rispettivamente in res/values-en-rUS/strings.xml e res/values-en-rGB/strings.xml , rispettivamente .

In res/values-en-rUS/strings.xml :

<string name="retail_demo_video_download_url">download URL for US video goes here</string>

E allo stesso modo in res/values-en-rGB/strings.xml :

<string name="retail_demo_video_download_url">download URL for UK video goes here</string>

Questo video verrà scaricato al massimo una volta per ogni riavvio del dispositivo. Quando il video sul dispositivo viene riprodotto, l'app RetailDemo controlla in background se viene fornito l'URL di download e il video sull'URL è più recente di quello riprodotto.

In tal caso, l'app RetailDemo scaricherà questo video e inizierà a riprodurlo. Una volta scaricato questo video, il video scaricato verrà utilizzato per la riproduzione nelle sessioni demo successive. Nessuno dei controlli viene ripetuto fino al successivo riavvio.