Dispositivos dedicados

Normalmente, o Glass é configurado para ser usado como um dispositivo dedicado com um pequeno número de aplicativos que compõem uma solução empresarial. O guia a seguir demonstra como configurar o Glass como um dispositivo dedicado.

Provisionamento

O provisionamento de baixo toque no Glass Enterprise Edition 2 instala e configura um aplicativo de administrador que é baixado dos metadados fornecidos em um QR code. Esse aplicativo pode aproveitar a API DevicePolicyManager, que é o método preferido para gerenciar a configuração do dispositivo.

Substituir tela de início

Para configurar um dispositivo dedicado, é necessário substituir o aplicativo de início. Isso garante que o aplicativo dedicado seja iniciado automaticamente após a reinicialização do dispositivo. O conteúdo a seguir descreve as tarefas envolvidas na preparação de um aplicativo e na definição dele como o iniciador:

  • Filtro de intent de atividade
  • Definir um novo iniciador
  • Filtro de intent de atividade

    Adicione as seguintes categorias à atividade principal no manifesto do aplicativo:

    <intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <category android:name="android.intent.category.LAUNCHER"/>
    
      <category android:name="android.intent.category.HOME"/>
      <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>

    Definir um novo iniciador

    Para definir um novo iniciador, chame addPersistentPreferredActivity() no aplicativo administrador. Isso só funciona se o dispositivo já tiver sido provisionado. Para dispositivos não provisionados, selecione um novo iniciador na interface do dispositivo.

    Adicionar atividade preferida persistente

    Esse método permite definir um determinado componentName como o iniciador do dispositivo sem interagir com ele.

    Kotlin

    val filter = IntentFilter(Intent.ACTION_MAIN)
    filter.addCategory(Intent.CATEGORY_HOME)
    filter.addCategory(Intent.CATEGORY_DEFAULT)
    
    val componentName = ComponentName(PACKAGE_NAME, CLASS_NAME)
    val devicePolicyManager: DevicePolicyManager =
        context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
    val adminName = getComponentName(context)
    devicePolicyManager.addPersistentPreferredActivity(adminName, filter, componentName)

    Java

    final IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN);
    filter.addCategory(Intent.CATEGORY_HOME);
    filter.addCategory(Intent.CATEGORY_DEFAULT);
    
    final ComponentName componentName = new ComponentName(PACKAGE_NAME, CLASS_NAME);
    DevicePolicyManager devicePolicyManager =
        (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    final adminName = getComponentName(context);
    devicePolicyManager.addPersistentPreferredActivity(adminName, filter, componentName);

    Usar a interface no dispositivo

    Use um dos seguintes métodos para mostrar uma caixa de diálogo de seleção de iniciador na tela:

    Usar o gesto de deslizar para cima nas configurações

    Deslize para trás na tela inicial para mostrar uma tela de resumo das configurações. Em seguida, toque para acessar a tela de configurações. Deslize para cima para mostrar a caixa de diálogo.

    Como usar intents no aplicativo

    Kotlin

    val intent = Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);

    Java

    final Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);
    Como usar o comando adb

    adb shell am start -a android.intent.action.MAIN -c android.intent.category.HOME

    Deslize para frente e para trás no touchpad para selecionar o aplicativo preferido e toque para confirmar. Use o mesmo método para selecionar o botão "Sempre".

    Modo de bloqueio de atividade

    O modo de bloqueio de tarefas permite criar uma lista de pacotes que podem ser executados no dispositivo.

    Definir pacotes permitidos

    O snippet a seguir mostra como definir a lista de pacotes:

    Kotlin

    private val KIOSK_PACKAGE = "com.example.kiosk"
    private val PLAYER_PACKAGE = "com.example.player"
    private val APP_PACKAGES = arrayOf(KIOSK_PACKAGE, PLAYER_PACKAGE)
    
    val devicePolicyManager: DevicePolicyManager =
      context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
    val adminName = getComponentName(context)
    devicePolicyManager.setLockTaskPackages(adminName, APP_PACKAGES)

    Java

    private static final String KIOSK_PACKAGE = "com.example.kiosk";
    private static final String PLAYER_PACKAGE = "com.example.player";
    private static final String[] APP_PACKAGES = {KIOSK_PACKAGE, PLAYER_PACKAGE};
    
    final DevicePolicyManager devicePolicyManager =
        (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
    final ComponentName adminName = getComponentName(context);
    devicePolicyManager.setLockTaskPackages(adminName, APP_PACKAGES);

    Iniciar o modo de bloqueio de atividade

    O modo de bloqueio de tarefas pode ser iniciado pela atividade do aplicativo. O snippet a seguir mostra como fazer isso:

    Kotlin

    override fun onResume() {
        super.onResume()
        activity.startLockTask()
    }

    Java

    @Override
    public void onResume() {
      super.onResume();
      getActivity().startLockTask();
    }