Modo de demonstração na loja

O Android 7.1.1 introduziu suporte no nível do sistema para o modo de demonstração na loja para que que os clientes possam examinar os dispositivos em ação nas lojas. Os dispositivos estão configurados para demonstração na loja usando um aplicativo do proprietário do dispositivo para garantir que o uso do dispositivo seja restritas a alguns apps no modo de demonstração. Os usuários finais não podem adicionar um conta pessoal em um dispositivo de demonstração no varejo. O Android 8.1 revisa esse suporte para criar usuários de demonstração usando o DevicePolicyManager createAndManageUser (em inglês) API. Isso permite uma personalização de OEM muito maior para o modo de varejo padrão nos os termos de gerenciamento de usuários e de política do dispositivo no dispositivo de demonstração.

Enquanto o DevicePolicyManager As APIs podem ser usadas em versões anteriores ao Android 8.1, Não é possível criar usuários do tipo de demonstração (DevicePolicyManager.MAKE_USER_DEMO) com o método createAndManageUser nas versões 8.0 e anteriores.

Implementação no Android 8.1 e versões mais recentes

Esta seção destaca as melhorias da plataforma e descreve a demonstração na loja no Android 8.1 e versões mais recentes.

Mudanças na plataforma

Definir DEVICE_DEMO_MODE

Os dispositivos que implementam um modo de demonstração na loja baseado no proprietário do dispositivo precisam definir Settings.Global.DEVICE_DEMO_MODE em 1 antes de provisionamento para indicar que o dispositivo está sendo provisionado para demonstração no varejo modo SystemServer (link em inglês) usa essa flag para gerenciar aspectos do modo de varejo, como perfil de energia e SystemUI do dispositivo.

Ativar RetailDemoModeService

Em dispositivos que implementam um modo de demonstração na loja, o assistente de configuração define uma configuração Global.DEVICE_DEMO_MODE como true para indicar que o dispositivo entrou no modo de varejo. Ao com essa configuração, RetailDemoModeService cria um usuário de demonstração e alterna para ele quando o usuário 0 é iniciado, ativa na tela de início personalizada especificada em um recurso de sobreposição e desativa o SUW. Sistema O Server e a SystemUI também usam essa flag para gerenciar aspectos do modo de varejo.

Definir tela de início ou player de vídeo personalizado

Os fabricantes de dispositivos podem especificar uma tela de início personalizada substituindo o framework recurso config_demoModeLauncherComponent especificado em config.xml da seguinte forma.

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

O aplicativo DemoPlayer de demonstração na loja, localizado em /packages/apps/retailDemo (link em inglês) é a tela de início personalizada padrão no Android Open Source Project (AOSP). A O app procura um vídeo em uma partição do dispositivo, como /data/preloads/demo/retail_demo.mp4 e o reproduz em repetição. Quando o usuário toca na tela, a tela de início personalizada desativa o componente de atividade, fazendo com que a tela de início padrão do sistema inicialização.

A tela de início personalizada precisa ter o componente personalizado marcado como desativado por padrão para que ele não apareça em cenários que não sejam de demonstração. No cenário da demonstração, O servidor ativa o config_demoModeLauncherComponent especificado ao iniciar um uma nova sessão de demonstração.

O assistente de configuração também procura o vídeo mencionado anteriormente para fornecer uma para entrar no modo de varejo. O SUW pode ser modificado para procurar outras Sinal específico do OEM de que o modo demonstração é compatível se o vídeo não faz parte do a demonstração. Se houver partições A/B do sistema, a partição do sistema B precisará consulte o vídeo de demonstração em /preloads/demo. Ele é copiado /data/preloads/demo na primeira inicialização

Personalize apps pré-carregados para o modo de demonstração na loja

Aplicativos pré-carregados podem personalizar sua experiência para o modo de demonstração na loja ao chamar UserManager.isDemoUser() API para ver se o app é iniciado em um ambiente de demonstração.

Certas restrições são definidas no usuário de demonstração, semelhantes a dispositivos gerenciados ou políticas de perfil que impedem que apps e usuários realizem determinadas operações. Uma dessas restrições é DISALLOW_MODIFY_ACCOUNTS. Com essa restrição, o AccountManager e Configurações não permitem a adição de contas. Alguns apps do Google reagem a essa restrição e mostrar uma mensagem de erro, e outros não solicitarão uma conta (como YouTube e Fotos). Recomendamos que apps OEM também verifiquem se DISALLOW_MODIFY_ACCOUNTS é definido e processa o cenário de acordo.

Atualizações do sistema

Por padrão, quando o modo demonstração está ativado, a política do dispositivo é definida como over the air (OTA) (OTA) são atualizados automaticamente. O download, a reinicialização e a instalação serão feitos nos dispositivos de varejo a atualização (respeitando os limites de bateria) sem interação do usuário.

App de demonstração na loja

A implementação do modo de demonstração na loja baseado no proprietário do dispositivo exige uma Controlador de política do dispositivo que o app seja definido como proprietário do dispositivo. O AOSP contém um app RetailDemo de referência implementação em /packages/apps/retailDemo.

Os apps do proprietário do dispositivo não precisam de privilégios elevados ou da pré-instalação no imagem do sistema e pode ser baixada durante o processo de configuração ou provisionamento. Na maioria das vezes, eles são implementados como apps tradicionais, com os seguintes diferenças:

APIs no DevicePolicyManager permitem que o Proprietário do Dispositivo (DO) e o Proprietário do Perfil (PO) apliquem vários tipos de dispositivos políticas. Alguns aplicativos do DevicePolicyManager as funções aplicáveis ao modo de demonstração na loja estão listadas a seguir.

  • Criar e gerenciar usuários.

  • Reinicialize o dispositivo.

  • Define os pacotes permitidos do LockTask.

  • Instale os pacotes usando o PackageInstaller.

  • Bloquear a desinstalação de pacotes.

  • Ative as atualizações automáticas do sistema. Os dispositivos vão fazer o download e aplicar atualizações OTA automaticamente.

  • Desativar o bloqueio de teclado.

  • Impedir a configuração de senhas ou impressões digitais.

  • Defina um conjunto na lista de permissões de Settings.Global, Settings.Secure, e Settings.System. configurações.

  • Defina a política de permissão como PERMISSION_POLICY_AUTO_GRANT, que concede automaticamente todas as permissões de execução. Também é possível conceder permissões de forma mais específica: uma única permissão para um único aplicativo. Isso não se aplica a permissões app-ops, que os usuários ainda precisam conceder por usuário e app.

  • Defina restrições de usuário relevantes para o modo demonstração, conforme definido no Gerenciador de usuários da seguinte forma.

    • DISALLOW_MODIFY_ACCOUNTS
    • DISALLOW_USB_FILE_TRANSFER
    • DISALLOW_DEBUGGING_FEATURES
    • DISALLOW_CONFIG_WIFI
    • DISALLOW_CONFIG_BLUETOOTH
    • DISALLOW_INSTALL_UNKNOWN_SOURCES
    • DISALLOW_CONFIG_MOBILE_NETWORKS

Atualizar o vídeo de demonstração usando a Web

O app RetailDemo em /packages/apps/retailDemo pode atualizar o vídeo de demonstração se houver conectividade de rede. O URL do qual fazer o download do vídeo pode ser configurado substituindo o seguinte no app RetailDemo.

<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>

Se for preciso usar vídeos diferentes em regiões diferentes, então URLs de download podem ser configurados usando recursos de string específicos da localidade em res/values-*/strings.xml. Por exemplo, se é preciso usar vídeos diferentes nos Estados Unidos e no Grã-Bretanha, os URLs de download correspondentes poderão ser colocados em res/values-en-rUS/strings.xml e res/values-en-rGB/strings.xml, respectivamente, mostrada a seguir.

  • Em res/values-en-rUS/strings.xml:

    <string name="retail_demo_video_download_url">download URL for US video goes here</string>
    
  • Em res/values-en-rGB/strings.xml:

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

O download deste vídeo é feito no máximo uma vez para cada reinicialização do dispositivo. Quando o no dispositivo está sendo reproduzido, o app RetailDemo verifica o segundo plano se o URL de download for fornecido e o vídeo no URL for mais recente que o sendo tocadas.

Nesse caso, o app RetailDemo faz o download e começa a reproduzir o vídeo. Depois que o vídeo for baixado, ele será usado em todas as sessões de demonstração a partir daquele momento. Nenhuma das verificações sejam feitas novamente até a próxima reinicialização.

Diretrizes para vídeos de demonstração

Os vídeos de demonstração precisam estar no layout de retrato ou, se for tablet, no orientação natural, e pode ter qualquer duração maior que cinco segundos. Conteúdo não deve resultar em burn-in, pois será reproduzido constantemente quando na tela.

Consulte as definições para desenvolvedores Android. de usuários, perfis e contas, documentação da API Device Policy Manager e App de exemplo do proprietário do dispositivo para mais informações.

Validação

O CTS não cobre o modo de demonstração na loja porque é um recurso opcional. Testagem precisam ser realizados manualmente ou com testes de unidade para o app de demonstração.

Sessão de demonstração

Configuração da sessão de demonstração

Dispositivos de demonstração na loja podem ser inicializados no modo de demonstração na loja se estiverem configurados para esse modo. na fábrica. Como alternativa, os funcionários do varejo podem ativar o modo demonstração diretamente do assistente de configuração.

Modo de demonstração na loja

Figura 2. Modo de demonstração na loja

Exibir sessão de demonstração

Quando o dispositivo entra no modo de varejo, ele alterna para um novo usuário de demonstração e inicia automaticamente a tela de início personalizada especificada no recurso de sobreposição conforme descrito em Implementação. Por padrão, esta tela de início personalizada reproduz o vídeo de demonstração repetidamente até que o usuário toque no para iniciar uma sessão de usuário de demonstração. Nesse momento, a tela de início personalizada será iniciada na tela de início do sistema e, em seguida, sai. OEMs podem alterar a tela de início personalizada para iniciar outro serviço ou atividade na saída.

Para manter a integridade do modo de varejo, o bloqueio de teclado é desativado e algumas ações das Configurações rápidas que poderiam afetar negativamente o modo de varejo são também não é permitido, incluindo o seguinte:

  • Botão para ativar ou desativar o modo avião.
  • Remover ou modificar pontos de acesso Wi-Fi (Configurações).
  • Alterando operadora (Configurações).
  • Configurar o ponto de acesso (Configurações).
  • Troca de usuário.

Além disso, o acesso a algumas configurações globais que podem afetar modo demonstração, desativando:

  • Configurações de Wi-Fi.
  • Opções de configuração de rede celular, principalmente pontos de acesso.
  • Configuração do Bluetooth.
  • Backup e Redefinir, data e Time e Mobile (eles não são exibidos).

Se o usuário ficar inativo por um período (90 segundos por padrão), o modo demonstração mostra uma caixa de diálogo do sistema para solicitar que o usuário saia da sessão ou continue. Se o usuário optar por sair ou se não houver resposta por cinco segundos, o varejo remove o usuário de demonstração atual, alterna para um novo usuário de demonstração e passa pelo vídeo original novamente. Se a tela for desligada usando o liga/desliga, ele volta a funcionar automaticamente após alguns segundos.

Depois de sair de uma sessão de demonstração, os dispositivos desativam o próprio som e redefinem algumas configurações, incluindo as seguintes:

  • Brilho
  • Rotação automática
  • Lanterna
  • Idioma
  • Acessibilidade

Sair do modo de demonstração na loja

Para sair do modo demonstração, os funcionários do varejo precisam garantir que o dispositivo de demonstração não estiver registrado no gerenciamento do dispositivo e redefina o dispositivo para a configuração original a partir do carregador de inicialização.