专用设备

Glass 通常配置为作为专用设备,包含少量构成企业解决方案的应用。以下指南演示了如何将 Glass 设置为专用设备。

正在预配

Glass Enterprise Edition 2 的低接触配置功能可安装和配置根据二维码中提供的元数据下载的管理员应用。此应用可以利用 DevicePolicyManager API,这是管理设备配置的首选方法。

替换启动器

如需设置专用设备,您必须替换启动器应用。这样可确保专用应用会在设备重新启动后自动启动。以下内容概述了准备应用并将其设置为启动器时所涉及的任务:

  • Activity intent 过滤器
  • 设置新启动器
  • activity intent 过滤器

    您需要将以下类别添加到应用清单的主 activity 中:

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

    设置新启动器

    要设置新的启动器,请从管理应用中调用 addPersistentPreferredActivity()。这仅在已配置设备时有效。对于未配置的设备,请从设备上的界面选择新的启动器。

    添加永久性首选 Activity

    通过此方法,您可以将指定的 componentName 设置为设备的启动器,而无需与设备交互。

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

    使用设备上的界面

    请使用下列方法之一在屏幕上显示启动器选择对话框:

    在“设置”中使用“向上滑动”手势

    在主屏幕上向后滑动以显示设置摘要屏幕。然后点按以进入设置屏幕。向上滑动以显示对话框。

    在应用中使用 intent

    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);
    
    使用 adb 命令

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

    在触控板上向前和向后滑动即可选择您偏好的应用,点按即可确认。使用相同的方法选择“始终”按钮。

    锁定任务模式

    使用锁定任务模式时,您可以创建可在设备上运行的软件包列表。

    设置允许的软件包

    以下代码段展示了如何设置软件包列表:

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

    启动锁定任务模式

    锁定任务模式可通过应用的 Activity 启动。以下代码段展示了如何执行此操作:

    Kotlin

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

    Java

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