Dispositivos de uso específico

Por lo general, Glass se configura para usarse como un dispositivo exclusivo con una pequeña cantidad de aplicaciones que componen una solución empresarial. En la siguiente guía, se muestra cómo configurar Glass como un dispositivo exclusivo.

Aprovisionamiento

El aprovisionamiento con poca interacción en Glass Enterprise Edition 2 instala y configura una aplicación para administradores que se descarga de los metadatos proporcionados en un código QR. Esta aplicación puede aprovechar la API de DevicePolicyManager, que es el método preferido para administrar la configuración del dispositivo.

Reemplazar selector

Para configurar un dispositivo exclusivo, debes reemplazar la aplicación de selector. Esto garantiza que la aplicación dedicada se inicie automáticamente después de que se reinicie el dispositivo. En el siguiente contenido, se describen las tareas necesarias para preparar una aplicación y establecerla como el selector:

  • Filtro de intents de actividad
  • Cómo establecer un nuevo selector
  • Filtro de intents de actividad

    Debes agregar las siguientes categorías a la actividad principal en el manifiesto de tu aplicación:

    <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>

    Cómo establecer un nuevo selector

    Para establecer un nuevo selector, llama a addPersistentPreferredActivity() desde la aplicación de administrador. Esto solo funciona si el dispositivo ya se aprovisionó. En el caso de los dispositivos no aprovisionados, selecciona un nuevo selector desde la IU del dispositivo.

    Agrega una actividad preferida persistente

    Este método te permite establecer un componentName determinado como el selector del dispositivo sin interactuar con él.

    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);

    Cómo usar la IU en el dispositivo

    Usa uno de los siguientes métodos para mostrar un diálogo de selección del selector en la pantalla:

    Cómo usar el gesto táctil de deslizar hacia arriba en la configuración

    Desliza el dedo hacia atrás en la pantalla principal para mostrar una pantalla de resumen de la configuración. Luego, presiona para ingresar a la pantalla de configuración. Desliza el dedo hacia arriba para mostrar el diálogo.

    Cómo usar la intención en la aplicación

    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);
    Usa el comando adb

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

    Desliza el dedo hacia adelante y hacia atrás en el panel táctil para seleccionar la aplicación que prefieras y presiona para confirmar. Usa el mismo método para seleccionar el botón "Siempre".

    Modo de tareas bloqueadas

    El modo de bloqueo de tareas te permite crear una lista de paquetes que pueden ejecutarse en el dispositivo.

    Cómo establecer los paquetes permitidos

    En el siguiente fragmento, se muestra cómo configurar la lista de paquetes:

    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);

    Cómo iniciar el modo de tareas bloqueadas

    La actividad de la aplicación puede iniciar el modo de tareas bloqueadas. En el siguiente fragmento, se muestra cómo puedes hacerlo:

    Kotlin

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

    Java

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