専用デバイス

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

プロビジョニング中

Glass Enterprise Edition 2 のロータッチ プロビジョニングでは、QR コードで指定されたメタデータからダウンロードした管理アプリをインストールして構成します。このデバイスでは DevicePolicyManager API を利用できます。この 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>
    

    新しいランチャーの設定

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