専用デバイス

通常、Glass は、エンタープライズ ソリューションを構成する少数のアプリケーションを備えた専用デバイスとして使用するように構成されます。次のガイドでは、Glass を専用デバイスとして設定する方法について説明します。

プロビジョニング

Glass Enterprise Edition 2 のロータッチ プロビジョニングでは、QR コードで提供されたメタデータからダウンロードされた管理者用アプリをインストールして構成します。このアプリケーションは、デバイスの構成を管理する推奨の方法である DevicePolicyManager API を利用できます。

ランチャーを置き換える

専用デバイスをセットアップするには、ランチャー アプリケーションを置き換える必要があります。これにより、デバイスの再起動後に専用アプリが自動的に起動します。次のコンテンツでは、アプリを準備してランチャーとして設定するタスクの概要を説明します。

  • アクティビティ インテント フィルタ
  • 新しいランチャーを設定する
  • アクティビティ インテント フィルタ

    アプリケーションのマニフェストのメイン アクティビティに次のカテゴリを追加する必要があります。

    <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() を呼び出します。この処理は、デバイスがすでにプロビジョニングされている場合にのみ機能します。プロビジョニングされていないデバイスの場合は、デバイスの UI から新しいランチャーを選択します。

    永続的な優先アクティビティを追加

    このメソッドを使用すると、デバイスを操作せずに、指定された 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);

    デバイスで UI を使用する

    次のいずれかの方法で、ランチャー選択ダイアログを画面に表示します。

    設定で上にスワイプするタップ操作を使用する

    ホーム画面を後ろにスワイプすると、設定概要画面が表示されます。タップして設定画面を開きます。上にスワイプしてダイアログを表示します。

    アプリケーションでのインテントの使用

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

    ロックタスク モードを開始する

    ロックタスク モードは、アプリのアクティビティによって開始できます。次のスニペットは、これを行う方法を示しています。

    Kotlin

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

    Java

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