โหมดสาธิตสำหรับร้านค้าปลีก

Android 7.1.1 รองรับโหมดสาธิตสำหรับร้านค้าปลีกในระดับระบบเพื่อให้ลูกค้าตรวจสอบการทำงานของอุปกรณ์ที่ร้านค้าปลีกได้ อุปกรณ์ได้รับการตั้งค่าเพื่อสาธิตการใช้งานในร้านค้าปลีกโดยใช้แอปเจ้าของอุปกรณ์เพื่อให้มั่นใจว่าการใช้งานอุปกรณ์จะจำกัดไว้สำหรับแอปโหมดเดโมบางแอปเท่านั้น ผู้ใช้ปลายทางต้องเพิ่มบัญชีส่วนตัวในอุปกรณ์สาธิตค้าปลีกไม่ได้ Android 8.1 แก้ไขการรองรับนี้เพื่อใช้ในการสร้างขึ้น ผู้ใช้เดโมผ่าน DevicePolicyManager createAndManageUser API ซึ่งช่วยให้ OEM ปรับแต่งโหมดค้าปลีกมาตรฐานได้มากขึ้นในแง่ของการจัดการผู้ใช้และการจัดการนโยบายอุปกรณ์ในอุปกรณ์สาธิต

แม้ว่าจะใช้ DevicePolicyManager API ในเวอร์ชันก่อน Android 8.1 ได้ แต่คุณจะสร้างผู้ใช้ประเภทเดโม (DevicePolicyManager.MAKE_USER_DEMO) ไม่ได้ด้วย createAndManageUser API ในเวอร์ชัน 8.0 และเก่ากว่า

การใช้งานใน Android 8.1 ขึ้นไป

ส่วนนี้จะไฮไลต์การเพิ่มประสิทธิภาพแพลตฟอร์มและอธิบายแอปสาธิตการค้าปลีกใน Android 8.1 ขึ้นไป

การเปลี่ยนแปลงของแพลตฟอร์ม

ตั้งค่า DEVICE_DEMO_MODE

อุปกรณ์ที่ใช้โหมดสาธิตการขายปลีกตามเจ้าของอุปกรณ์ต้องตั้งค่า Settings.Global.DEVICE_DEMO_MODE เป็น 1 ก่อนการจัดสรรเพื่อระบุว่าอุปกรณ์ได้รับการจัดสรรสำหรับโหมดสาธิตการขายปลีก SystemServer ใช้ Flag นี้เพื่อจัดการแง่มุมต่างๆ ของโหมดค้าปลีก เช่น โปรไฟล์พลังงานและ SystemUI

เปิดใช้ RetailDemoModeService

ในอุปกรณ์ที่ใช้โหมดสาธิตสำหรับร้านค้าปลีก วิซาร์ดการตั้งค่าจะตั้งค่าส่วนกลางเป็น Global.DEVICE_DEMO_MODE เป็น true เพื่อระบุว่าอุปกรณ์เข้าสู่โหมดร้านค้าปลีกแล้ว เมื่อเห็นการตั้งค่านี้ RetailDemoModeService จะสร้างผู้ใช้เดโมและเปลี่ยนไปใช้ผู้ใช้ดังกล่าวเมื่อเริ่มผู้ใช้ 0 เปิดใช้โปรแกรมเปิดที่กำหนดเองที่ระบุไว้ในทรัพยากรการวางซ้อน และปิดใช้ SUW System Server และ SystemUI ยังใช้ Flag นี้เพื่อจัดการแง่มุมต่างๆ ของโหมดค้าปลีกด้วย

ตั้งค่า Launcher หรือโปรแกรมเล่นวิดีโอที่กำหนดเอง

ผู้ผลิตอุปกรณ์สามารถระบุ Launcher ที่กําหนดเองโดยการลบล้างทรัพยากรเฟรมเวิร์ก config_demoModeLauncherComponent ที่ระบุไว้ในไฟล์ config.xml ดังนี้

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

แอป DemoPlayer สำหรับเดโมการค้าปลีกซึ่งอยู่ที่ /packages/apps/RetailDemo เป็นโปรแกรมเปิดแอปที่กำหนดเองเริ่มต้นในโครงการโอเพนซอร์ส Android (AOSP) แอปจะค้นหาวิดีโอในพาร์ติชันของอุปกรณ์ เช่น /data/preloads/demo/retail_demo.mp4 และเล่นวิดีโอแบบวนซ้ำ เมื่อผู้ใช้แตะหน้าจอ ตัวเปิดใช้ที่กำหนดเองจะปิดใช้คอมโพเนนต์กิจกรรม ซึ่งจะทำให้ตัวเปิดใช้ระบบเริ่มต้นทำงาน

ตัวเปิดใช้ที่กำหนดเองต้องทําเครื่องหมายคอมโพเนนต์ที่กําหนดเองว่า "ปิดใช้" โดยค่าเริ่มต้นเพื่อไม่ให้แสดงในสถานการณ์ที่ไม่ใช่เดโม ในสถานการณ์การสาธิต ระบบเซิร์ฟเวอร์จะเปิดใช้ config_demoModeLauncherComponent ที่ระบุเมื่อเริ่มเซสชันการสาธิตใหม่

นอกจากนี้ เครื่องมือช่วยตั้งค่ายังมองหาวิดีโอที่กล่าวถึงก่อนหน้านี้เพื่อให้ผู้ใช้เข้าสู่โหมดค้าปลีกได้ SUW สามารถแก้ไขให้มองหาสัญญาณอื่นๆ ที่เฉพาะเจาะจงสำหรับ OEM ซึ่งระบุว่ารองรับโหมดค้าปลีกได้หากวิดีโอไม่ได้เป็นส่วนหนึ่งของการสาธิต หากมีพาร์ติชันระบบ A/B พาร์ติชันระบบ B ต้องมีวิดีโอสาธิตที่ /preloads/demo ระบบจะคัดลอกไฟล์นี้ไปยัง /data/preloads/demo เมื่อบูตเครื่องครั้งแรก

ปรับแต่งแอปที่โหลดไว้ล่วงหน้าสำหรับโหมดสาธิตสำหรับร้านค้าปลีก

แอปที่โหลดไว้ล่วงหน้าสามารถปรับแต่งประสบการณ์การใช้งานสำหรับโหมดสาธิตสำหรับร้านค้าปลีกได้โดยเรียกใช้ UserManager.isDemoUser() API เพื่อดูว่าแอปเปิดขึ้นในสภาพแวดล้อมการสาธิตหรือไม่

ระบบจะตั้งค่าข้อจำกัดบางอย่างในผู้ใช้เดโม ซึ่งคล้ายกับนโยบายอุปกรณ์หรือโปรไฟล์ที่มีการจัดการซึ่งป้องกันไม่ให้แอปและผู้ใช้ดำเนินการบางอย่าง ข้อจำกัดอย่างหนึ่งคือ DISALLOW_MODIFY_ACCOUNTS ข้อจํากัดนี้ทําให้ AccountManager และ Settings ไม่อนุญาตให้เพิ่มบัญชี แอป Google บางแอปจะตอบสนองต่อข้อจำกัดนี้และแสดงข้อความแสดงข้อผิดพลาด ส่วนแอปอื่นๆ จะไม่แสดงข้อความแจ้งให้ป้อนบัญชี (เช่น YouTube และ Photos) เราขอแนะนำให้แอป OEM ตรวจสอบด้วยว่ามีการตั้งค่า DISALLOW_MODIFY_ACCOUNTS หรือไม่ และจัดการสถานการณ์ตามความเหมาะสม

การอัปเดตระบบ

โดยค่าเริ่มต้น เมื่อเปิดใช้โหมดค้าปลีก ระบบจะตั้งค่านโยบายอุปกรณ์เป็นการอัปเดตผ่านอากาศ (OTA) โดยอัตโนมัติ อุปกรณ์ค้าปลีกจะดาวน์โหลด รีบูต และติดตั้งการอัปเดต (โดยคำนึงถึงเกณฑ์แบตเตอรี่) โดยที่ผู้ใช้ไม่ต้องดำเนินการใดๆ

แอปเดโมสำหรับร้านค้าปลีก

การติดตั้งใช้งานโหมดสาธิตการค้าปลีกตามเจ้าของอุปกรณ์กำหนดให้ต้องตั้งค่าแอปตัวควบคุมนโยบายอุปกรณ์เป็นผู้เป็นเจ้าของอุปกรณ์ AOSP มีการใช้งานแอป RetailDemo อ้างอิงใน /packages/apps/RetailDemo

แอปเจ้าของอุปกรณ์ไม่จำเป็นต้องมีสิทธิ์ที่ยกระดับหรือการติดตั้งล่วงหน้าในภาพระบบ และสามารถดาวน์โหลดได้ในระหว่างกระบวนการตั้งค่าหรือการจัดสรร โดยส่วนใหญ่จะติดตั้งใช้งานเหมือนแอปแบบดั้งเดิม แต่จะแตกต่างกันตรงที่ต่อไปนี้

  • แอปเจ้าของอุปกรณ์ทั้งหมดต้องขยายคอมโพเนนต์ DeviceAdminReceiver ซึ่งทำหน้าที่เป็นโทเค็นการให้สิทธิ์สําหรับ API ทั้งหมดของ DevicePolicyManager คอมโพเนนต์ต้องมีสิทธิ์ android.permission.BIND_DEVICE_ADMIN ใส่นโยบายพิเศษที่ขอเป็นข้อมูลเมตา และกรอง Intent android.app.action.PROFILE_PROVISIONING_COMPLETE และ android.app.action.DEVICE_ADMIN_ENABLED

  • Flag DevicePolicyManager#MAKE_USER_DEMO ซึ่งตั้งค่าไว้เพื่อสร้างผู้ใช้ประเภทเดโมพิเศษเป็น API ที่ซ่อนอยู่ Flag นี้มีค่าเป็น 0x4 แบบคงที่

  • การมอบหมายการเป็นเจ้าของอุปกรณ์ต้องดำเนินการผ่านบทบาทผู้ถือครองการจัดการอุปกรณ์หรือแอป ManagedProvisioning เท่านั้น

API ในคลาส DevicePolicyManager ช่วยเจ้าของอุปกรณ์ (DO) และเจ้าของโปรไฟล์ (PO) ให้บังคับใช้นโยบายต่างๆ ของอุปกรณ์ได้ ฟังก์ชัน DevicePolicyManager บางส่วนที่ใช้ได้กับโหมดสาธิตสำหรับร้านค้าปลีกมีดังนี้

  • สร้างและจัดการผู้ใช้

  • รีบูตอุปกรณ์

  • ตั้งค่าแพ็กเกจที่ LockTask อนุญาต

  • ติดตั้งแพ็กเกจผ่าน PackageInstaller

  • บล็อกไม่ให้ถอนการติดตั้งแพ็กเกจ

  • เปิดใช้การอัปเดตระบบอัตโนมัติ อุปกรณ์จะดาวน์โหลดและติดตั้งอัปเดต OTA โดยอัตโนมัติ

  • ปิดใช้การป้องกันหน้าจอ

  • ป้องกันไม่ให้ตั้งรหัสผ่านหรือลายนิ้วมือ

  • ตั้งค่าชุดการตั้งค่า Settings.Global, Settings.Secure และSettings.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

อัปเดตวิดีโอเดโมโดยใช้เว็บ

แอป RetailDemo ใน /packages/apps/RetailDemo สามารถอัปเดตวิดีโอสาธิตได้หากมีการเชื่อมต่อเครือข่าย คุณสามารถกำหนดค่า URL สำหรับดาวน์โหลดวิดีโอได้โดยลบล้างค่าสตริงต่อไปนี้ในแอป RetailDemo

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

หากต้องใช้วิดีโอที่แตกต่างกันในภูมิภาคต่างๆ คุณสามารถกำหนดค่า URL การดาวน์โหลดที่แตกต่างกันได้โดยใช้ทรัพยากรสตริงเฉพาะภาษาใน res/values-*/strings.xml เช่น หากต้องใช้วิดีโอที่แตกต่างกันในสหรัฐอเมริกาและบริเตนใหญ่ ให้วาง 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>
    

ระบบจะดาวน์โหลดวิดีโอนี้ไม่เกิน 1 ครั้งสำหรับการรีบูตอุปกรณ์แต่ละครั้ง เมื่อเล่นวิดีโอในอุปกรณ์ แอป RetailDemo จะตรวจสอบในเบื้องหลังว่ามีการให้ URL ดาวน์โหลดและวิดีโอใน URL นั้นใหม่กว่าวิดีโอที่เล่นอยู่หรือไม่

หากใช่ แอป RetailDemo จะดาวน์โหลดและเริ่มเล่นวิดีโอ เมื่อดาวน์โหลดวิดีโอแล้ว ระบบจะใช้วิดีโอดังกล่าวในการเล่นในเซสชันการสาธิตทั้งหมดนับจากนี้เป็นต้นไป การตรวจสอบจะไม่เกิดขึ้นอีกจนกว่าจะรีบูตครั้งถัดไป

หลักเกณฑ์สำหรับวิดีโอสาธิต

วิดีโอสาธิตต้องอยู่ในรูปแบบแนวตั้ง หรือหากเป็นแท็บเล็ต วิดีโอต้องอยู่ในการวางแนวตามปกติของอุปกรณ์ และอาจมีความยาวมากกว่า 5 วินาที เนื้อหาต้องไม่ทำให้เกิดภาพค้าง เนื่องจากจะเล่นอย่างต่อเนื่องเมื่อแสดงผล

ดูข้อมูลเพิ่มเติมได้จากคำจำกัดความของนักพัฒนาแอป Android เกี่ยวกับผู้ใช้ โปรไฟล์ และบัญชี, เอกสารประกอบเกี่ยวกับ Device Policy Manager API และตัวอย่างแอปเจ้าของอุปกรณ์

การตรวจสอบความถูกต้อง

CTS จะไม่ครอบคลุมโหมดสาธิตสำหรับร้านค้าปลีกเนื่องจากเป็นฟีเจอร์ที่ไม่บังคับ การทดสอบแอปเดโมต้องดำเนินการด้วยตนเองหรือใช้การทดสอบหน่วย

เซสชันสาธิต

การตั้งค่าเซสชันสาธิต

อุปกรณ์สาธิตสำหรับร้านค้าปลีกอาจบูตเข้าสู่โหมดสาธิตสำหรับร้านค้าปลีกหากได้รับการกำหนดค่าสำหรับโหมดสาธิตจากโรงงาน หรือพนักงานค้าปลีกจะเปิดใช้โหมดค้าปลีกจากวิซาร์ดการตั้งค่าโดยตรงก็ได้

โหมดสาธิตสำหรับร้านค้าปลีก

รูปที่ 2 โหมดสาธิตสำหรับร้านค้าปลีก

แสดงเซสชันสาธิต

เมื่ออุปกรณ์เข้าสู่โหมดค้าปลีก อุปกรณ์จะเปลี่ยนเป็นผู้ใช้เดโมรายใหม่และเริ่มตัวเปิดแอปที่กำหนดเองซึ่งระบุไว้ในทรัพยากรการวางซ้อนโดยอัตโนมัติ ตามที่อธิบายไว้ในการติดตั้งใช้งาน โดยค่าเริ่มต้น ตัวเปิดแอปที่กำหนดเองนี้จะเล่นวิดีโอสาธิตซ้ำๆ จนกว่าผู้ใช้จะแตะหน้าจอเพื่อเริ่มเซสชันผู้ใช้เดโม เมื่อถึงเวลาดังกล่าว Launcher ที่กําหนดเองจะเริ่มทำงานแล้วออกจาก Launcher ของระบบ OEM สามารถแก้ไข Launcher ที่กําหนดเองเพื่อเปิดบริการหรือกิจกรรมอื่นเพิ่มเติมเมื่อออก

ระบบจะปิดใช้การป้องกันการกดแป้นพิมพ์และจะไม่อนุญาตให้ดำเนินการบางอย่างจากการตั้งค่าด่วนที่อาจส่งผลเสียต่อโหมดค้าปลีก ซึ่งรวมถึงการดำเนินการต่อไปนี้ เพื่อรักษาความสมบูรณ์ของโหมดค้าปลีก

  • ปุ่มเปิด/ปิดโหมดบนเครื่องบิน
  • การนำจุดเข้าใช้งาน Wi-Fi ออกหรือแก้ไข (การตั้งค่า)
  • การเปลี่ยนผู้ให้บริการ (การตั้งค่า)
  • การกำหนดค่าฮอตสปอต (การตั้งค่า)
  • การเปลี่ยนผู้ใช้

นอกจากนี้ ระบบยังบล็อกการเข้าถึงการตั้งค่าส่วนกลางบางอย่างที่อาจส่งผลต่อโหมดค้าปลีกด้วยการปิดใช้การตั้งค่าต่อไปนี้

  • การตั้งค่า Wi-Fi
  • ตัวเลือกการกำหนดค่าเครือข่ายมือถือ โดยเฉพาะฮอตสปอต
  • การกําหนดค่าบลูทูธ
  • การสํารองข้อมูลและการรีเซ็ต วันที่และเวลา รวมถึงเครือข่ายมือถือ (ไม่แสดงเลย)

หากผู้ใช้ไม่มีการใช้งานเป็นระยะเวลาหนึ่ง (90 วินาทีโดยค่าเริ่มต้น) โหมดค้าปลีกจะแสดงกล่องโต้ตอบของระบบเพื่อแจ้งให้ผู้ใช้ออกจากเซสชันหรือดำเนินการต่อ หากผู้ใช้เลือกที่จะออกหรือไม่มีการตอบกลับเป็นเวลา 5 วินาที โหมดค้าปลีกจะนำผู้ใช้เดโมคนปัจจุบันออก เปลี่ยนไปใช้ผู้ใช้เดโมคนใหม่ และเล่นวิดีโอต้นฉบับซ้ำ หากปิดหน้าจอโดยใช้ปุ่มเปิด/ปิด หน้าจอจะเปิดขึ้นมาอีกครั้งโดยอัตโนมัติหลังจากผ่านไป 2-3 วินาที

หลังจากออกจากเซสชันการสาธิต อุปกรณ์จะปิดเสียงตัวเองและรีเซ็ตการตั้งค่าส่วนกลางบางอย่าง ซึ่งรวมถึงการตั้งค่าต่อไปนี้

  • ความสว่าง
  • การหมุนอัตโนมัติ
  • ไฟฉาย
  • ภาษา
  • การช่วยเหลือพิเศษ

ออกจากโหมดสาธิตสำหรับร้านค้าปลีก

หากต้องการออกจากโหมดค้าปลีก พนักงานค้าปลีกต้องตรวจสอบว่าอุปกรณ์สาธิตไม่ได้ลงทะเบียนภายใต้การจัดการอุปกรณ์และรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นจาก Bootloader