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

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

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

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

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

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

ตั้งค่า DEVICE_DEMO_MODE

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

เปิดใช้ RetailDemoModeService

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

ตั้งค่า 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 และเล่นวิดีโอแบบวนซ้ำ เมื่อผู้ใช้แตะหน้าจอ ตัวเรียกใช้งานที่กำหนดเองจะปิดใช้คอมโพเนนต์กิจกรรม ซึ่งจะทำให้ตัวเรียกใช้งานเริ่มต้นของระบบเริ่มทำงาน

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

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

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

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

ผู้ใช้เดโมจะมีข้อจำกัดบางอย่างคล้ายกับนโยบายอุปกรณ์หรือโปรไฟล์ที่มีการจัดการ ซึ่งจะป้องกันไม่ให้แอปและผู้ใช้ดำเนินการบางอย่าง ข้อจำกัดอย่างหนึ่งคือ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 รวมนโยบายพิเศษที่ขอเป็นข้อมูลเมตา และกรองเจตนา android.app.action.PROFILE_PROVISIONING_COMPLETE และ android.app.action.DEVICE_ADMIN_ENABLED

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

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

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

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

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

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

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

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

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

  • ปิดใช้คีย์การ์ด

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

  • ตั้งค่าที่อนุญาตสำหรับSettings.Global, Settings.Secure, และSettings.System

  • ตั้งค่านโยบายสิทธิ์เป็น PERMISSION_POLICY_AUTO_GRANT ซึ่ง จะให้สิทธิ์รันไทม์ทั้งหมดโดยอัตโนมัติ นอกจากนี้ยังให้สิทธิ์ได้ แคบลงด้วย นั่นคือให้สิทธิ์เดียวแก่แอปเดียว ซึ่งใช้ไม่ได้กับ สิทธิ์ app-ops ซึ่งผู้ใช้ยังคงต้องให้สิทธิ์แบบต่อผู้ใช้ ต่อแอป

  • ตั้งค่าการจำกัดผู้ใช้ที่เกี่ยวข้องกับโหมดการขายปลีกตามที่กำหนดไว้ใน 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 ที่กำหนดเองเพื่อเปิดใช้บริการหรือกิจกรรมอื่นเพิ่มเติมเมื่อออก

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

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

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

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

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

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

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

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

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