소매 데모 모드

Android 7.1.1에서는 고객이 소매점에서 작동 중인 기기를 검사할 수 있도록 소매 데모 모드에 대한 시스템 수준 지원을 도입했습니다. 장치 사용이 특정 데모 모드 앱으로만 제한되도록 장치 소유자 앱을 사용하여 장치가 소매 시연용으로 설정됩니다. 최종 사용자는 소매 데모 장치에 개인 계정을 추가할 수 없어야 합니다. Android 8.1에서는 DevicePolicyManager createAndManageUser API를 통해 데모 사용자 를 생성하도록 이 지원을 수정합니다. 이를 통해 데모 장치의 사용자 관리 및 장치 정책 관리 측면에서 표준 소매 모드에 대한 OEM 사용자 정의가 훨씬 더 커집니다.

DevicePolicyManager API는 Android 8.1 이전 버전에서 사용할 수 있지만 데모 유형 사용자( DevicePolicyManager.MAKE_USER_DEMO )는 버전 8.0 및 이전 버전에서 createAndManageUser API로 생성할 수 없습니다.

Android 8.1 이상에서 구현

이 섹션에서는 플랫폼 개선 사항을 강조 표시하고 Android 8.1 이상의 소매 데모 앱에 대해 설명합니다.

플랫폼 변경

DEVICE_DEMO_MODE 설정

장치 소유자 기반 소매 데모 모드를 구현하는 장치는 프로비저닝 전에 Settings.Global.DEVICE_DEMO_MODE 를 1로 설정하여 장치가 소매 데모 모드용으로 프로비저닝되고 있음을 나타내야 합니다. SystemServer 는 이 플래그를 사용하여 전원 프로필 및 SystemUI와 같은 소매 모드의 측면을 관리합니다.

RetailDemoModeService 활성화

소매 데모 모드를 구현하는 장치에서 설정 마법사는 글로벌 설정 Global.DEVICE_DEMO_MODEtrue 로 설정하여 장치가 소매 모드로 전환되었음을 나타냅니다. 이 설정을 보면 RetailDemoModeService 는 데모 사용자를 만들고 사용자 0이 시작되면 전환하고 오버레이 리소스에 지정된 사용자 지정 실행 프로그램을 활성화하고 SUW를 비활성화합니다. System Server 및 SystemUI도 이 플래그를 사용하여 소매 모드의 측면을 관리합니다.

맞춤 런처 또는 동영상 플레이어 설정

기기 제조업체는 다음과 같이 config.xml 파일에 지정된 프레임워크 리소스 config_demoModeLauncherComponent 를 재정의하여 맞춤 실행 프로그램을 지정할 수 있습니다.

<!-- Component that is the default launcher when Retail Mode is enabled. -->
<string name="config_demoModeLauncherComponent">com.android.retaildemo/.DemoPlayer</string>

/packages/apps/RetailDemo 에 있는 소매 데모 DemoPlayer 앱은 AOSP(Android 오픈 소스 프로젝트)의 기본 맞춤 실행 프로그램입니다. 앱은 /data/preloads/demo/retail_demo.mp4와 같은 장치 파티션에서 비디오를 찾고 루프에서 재생합니다. 사용자가 화면을 터치하면 사용자 지정 시작 프로그램이 활동 구성 요소를 비활성화하여 기본 시스템 시작 프로그램을 시작합니다.

사용자 지정 실행 프로그램에는 데모가 아닌 시나리오에 표시되지 않도록 기본적으로 비활성화된 것으로 표시된 사용자 지정 구성 요소가 있어야 합니다. 데모 시나리오에서 System Server는 새 데모 세션을 시작할 때 지정된 config_demoModeLauncherComponent 를 활성화합니다.

설정 마법사는 소매 모드로 전환하기 위한 어포던스를 제공하기 위해 이전에 언급한 비디오도 찾습니다. 비디오가 데모의 일부가 아닌 경우 소매 모드가 지원된다는 다른 OEM 관련 기호를 찾도록 SUW를 수정할 수 있습니다. 시스템 A/B 파티션이 있는 경우 시스템 B 파티션은 /preloads/demo에 데모 비디오를 포함해야 합니다. 처음 부팅할 때 /data/preloads/demo에 복사됩니다.

소매 데모 모드를 위해 사전 로드된 앱 사용자 지정

사전 로드된 앱은 앱이 데모 환경에서 실행되는지 확인하기 위해 UserManager.isDemoUser() API를 호출하여 소매 데모 모드에 대한 경험을 사용자 정의할 수 있습니다.

앱과 사용자가 특정 작업을 수행하지 못하도록 하는 관리 장치 또는 프로필 정책과 유사하게 데모 사용자에 특정 제한이 설정됩니다. 이러한 제한 중 하나는 DISALLOW_MODIFY_ACCOUNTS 입니다. 이 제한으로 인해 AccountManager설정 은 계정 추가를 허용하지 않습니다. 일부 Google 앱은 이 제한에 반응하여 오류 메시지를 표시하고 다른 앱은 계정을 요구하지 않습니다(예: YouTube 및 포토). OEM 앱도 DISALLOW_MODIFY_ACCOUNTS 가 설정되어 있는지 확인하고 그에 따라 시나리오를 처리하는 것이 좋습니다.

시스템 업데이트

기본적으로 소매 모드가 활성화되면 장치 정책이 무선(OTA) 자동 업데이트로 설정됩니다. 소매 장치는 사용자 상호 작용 없이 업데이트(배터리 임계값 준수)를 다운로드, 재부팅 및 설치합니다.

소매 데모 앱

기기 소유자 기반의 소매 데모 모드를 구현하려면 Device Policy Controller 앱을 기기 소유자로 설정해야 합니다. AOSP에는 /packages/apps/RetailDemo 에 참조 RetailDemo 앱 구현이 포함되어 있습니다.

기기 소유자 앱은 높은 권한이나 시스템 이미지에 대한 사전 설치가 필요하지 않으며 설정 또는 프로비저닝 프로세스 중에 다운로드할 수 있습니다. 대부분 기존 앱처럼 구현되지만 다음과 같은 차이점이 있습니다.

DevicePolicyManager 클래스의 API를 사용하면 장치 소유자(DO) 및 프로필 소유자(PO)가 다양한 장치 정책을 시행할 수 있습니다. 소매 데모 모드에 적용 가능한 일부 DevicePolicyManager 기능은 다음과 같습니다.

  • 사용자를 만들고 관리합니다.

  • 장치를 재부팅하십시오.

  • LockTask 허용 패키지를 설정합니다.

  • PackageInstaller 를 통해 패키지를 설치합니다.

  • 패키지가 제거되지 않도록 차단합니다.

  • 자동 시스템 업데이트를 활성화합니다. 장치는 자동으로 OTA 업데이트를 다운로드하고 적용합니다.

  • 키가드를 비활성화합니다.

  • 암호 또는 지문 설정을 방지합니다.

  • Settings.Global , Settings.SecureSettings.System 설정의 허용된 집합을 설정합니다.

  • 권한 정책을 PERMISSION_POLICY_AUTO_GRANT 로 설정하면 모든 런타임 권한이 자동으로 부여됩니다. 권한은 더 좁게 부여할 수도 있습니다. 즉, 단일 앱에 대한 단일 권한입니다. 이것은 사용자가 여전히 사용자별, 앱별로 부여해야 하는 앱 운영 권한에는 적용되지 않습니다.

  • 다음과 같이 UserManager 에 정의된 대로 소매 모드와 관련된 사용자 제한을 설정합니다.

    • DISALLOW_MODIFY_ACCOUNTS
    • DISALLOW_USB_FILE_TRANSFER
    • DISALLOW_DEBUGGING_FEATURES
    • DISALLOW_CONFIG_WIFI
    • DISALLOW_CONFIG_BLUETOOTH
    • DISALLOW_INSTALL_UNKNOWN_SOURCES
    • DISALLOW_CONFIG_MOBILE_NETWORKS

웹을 사용하여 데모 비디오 업데이트

/packages/apps/RetailDemo 의 RetailDemo 앱에는 네트워크 연결이 있는 경우 데모 비디오를 업데이트할 수 있는 기능이 있습니다. 비디오를 다운로드할 URL은 RetailDemo 앱에서 다음 문자열 값을 재정의하여 구성할 수 있습니다.

<!-- URL where the retail demo video can be downloaded from. -->
<string name="retail_demo_video_download_url"></string>

다른 지역에서 다른 비디오를 사용해야 하는 경우 res/values-*/strings.xml 에서 로캘별 문자열 리소스를 사용하여 다른 다운로드 URL을 구성할 수 있습니다. 예를 들어 미국과 영국에서 서로 다른 비디오를 사용해야 하는 경우 해당 다운로드 URL을 res/values-en-rUS/strings.xml 및 res/values-en-rGB/strings.xml에 배치할 수 있습니다. , 각각 다음과 같이 표시됩니다.

  • res/values-en-rUS/strings.xml에서:

    <string name="retail_demo_video_download_url">download URL for US video goes here</string>
    
  • res/values-en-rGB/strings.xml에서:

    <string name="retail_demo_video_download_url">download URL for UK video goes here</string>
    

이 동영상은 기기를 재부팅할 때마다 최대 한 번 다운로드됩니다. 장치의 비디오가 재생 중일 때 RetailDemo 앱은 다운로드 URL이 제공되고 URL의 비디오가 재생 중인 비디오보다 최신인지 백그라운드에서 확인합니다.

그렇다면 RetailDemo 앱이 비디오를 다운로드하고 재생하기 시작합니다. 비디오가 다운로드되면 앞으로 모든 데모 세션에서 재생하는 데 사용됩니다. 다음에 다시 부팅할 때까지 어떤 검사도 다시 수행되지 않습니다.

데모 비디오 가이드라인

데모 동영상은 세로 레이아웃이거나 태블릿인 경우 기기의 자연스러운 방향이어야 하며 길이는 5초 이상이어야 합니다. 콘텐츠는 표시될 때 지속적으로 재생되므로 번인이 발생하지 않아야 합니다.

자세한 내용은 사용자, 프로필, 계정의 Android 개발자 정의 , Device Policy Manager API 문서샘플 기기 소유자 앱 을 참조하세요.

확인

CTS는 선택적 기능이므로 소매 데모 모드를 다루지 않습니다. 테스트는 수동으로 수행하거나 데모 앱에 대한 단위 테스트로 수행해야 합니다.

데모 세션

데모 세션 설정

소매 데모 장치는 공장에서 데모 모드로 구성된 경우 소매 데모 모드로 부팅할 수 있습니다. 또는 소매점 직원이 설치 마법사에서 직접 소매점 모드를 활성화할 수 있습니다.

Retail demo mode

그림 2. 소매 데모 모드

데모 세션 표시

장치가 소매 모드로 전환되면 새 데모 사용자로 전환되고 구현 에 설명된 대로 오버레이 리소스에 지정된 사용자 지정 실행 프로그램이 자동으로 시작됩니다. 기본적으로 이 사용자 정의 런처는 사용자가 데모 사용자 세션을 시작하기 위해 화면을 터치할 때까지 반복해서 데모 비디오를 재생합니다. 이때 사용자 지정 시작 프로그램은 시스템 시작 프로그램을 시작한 다음 종료됩니다. OEM은 종료 시 다른 서비스 또는 활동을 추가로 시작하도록 사용자 지정 실행 프로그램을 변경할 수 있습니다.

소매 모드의 무결성을 유지하기 위해 키가드가 비활성화되고 다음을 포함하여 소매 모드에 부정적인 영향을 미칠 수 있는 빠른 설정의 특정 작업도 허용되지 않습니다.

  • 비행기 모드 토글.
  • Wi-Fi 액세스 포인트 제거 또는 수정(설정).
  • 통신사 변경(설정).
  • 핫스팟 구성(설정).
  • 사용자 전환.

또한 다음을 비활성화하여 소매 모드에 영향을 줄 수 있는 일부 전역 설정에 대한 액세스도 차단됩니다.

  • 와이파이 설정.
  • 셀룰러 네트워크 구성 옵션, 특히 핫스팟.
  • 블루투스 구성.
  • 백업 및 재설정, 날짜 및 시간, 모바일 네트워크(전혀 표시되지 않음).

사용자가 일정 시간(기본적으로 90초) 동안 유휴 상태이면 소매 모드는 사용자에게 세션을 종료하거나 계속할지 묻는 시스템 대화 상자를 표시합니다. 사용자가 종료를 선택하거나 5초 동안 응답이 없으면 소매 모드는 현재 데모 사용자를 제거하고 새 데모 사용자로 전환한 다음 원본 비디오를 다시 반복 재생합니다. 전원 버튼을 사용하여 화면을 끈 경우 몇 초 후에 자동으로 다시 켜집니다.

데모 세션을 종료하면 장치가 음소거되고 다음을 포함한 일부 전역 설정이 재설정됩니다.

  • 명도
  • 자동 회전
  • 플래시
  • 언어
  • 접근성

소매 데모 모드 종료

소매 모드를 종료하려면 소매 직원은 데모 장치가 장치 관리에 등록되지 않았는지 확인하고 부트 로더에서 장치를 공장 초기화해야 합니다.