전용 기기

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)
    

    자바

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

    자바

    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)
    

    자바

    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()
    }
    

    자바

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