โหมดสาธิตการขายปลีก

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 ใช้แฟล็กนี้เพื่อจัดการลักษณะของโหมดการขายปลีก เช่น โปรไฟล์พลังงานและ SystemUI

เปิดใช้งาน RetailDemoModeService

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

ตั้งค่าตัวเรียกใช้งานหรือเครื่องเล่นวิดีโอแบบกำหนดเอง

ผู้ผลิตอุปกรณ์สามารถระบุตัวเรียกใช้งานแบบกำหนดเองได้โดยการแทนที่ทรัพยากรเฟรมเวิร์ก 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 Open Source Project (AOSP) แอพค้นหาวิดีโอในพาร์ติชั่นอุปกรณ์ เช่น /data/preloads/demo/retail_demo.mp4 และเล่นเป็นลูป เมื่อผู้ใช้สัมผัสหน้าจอ ตัวเรียกใช้งานแบบกำหนดเองจะปิดใช้ส่วนประกอบกิจกรรม ซึ่งทำให้ตัวเรียกระบบเริ่มต้นเริ่มทำงาน

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

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

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

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

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

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

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

แอปสาธิตการค้าปลีก

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

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

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

  • ค่าสถานะ 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 ซึ่งจะให้สิทธิ์รันไทม์ทั้งหมดโดยอัตโนมัติ การอนุญาตยังสามารถให้แคบกว่านี้ได้: การอนุญาตเดียวสำหรับแอปเดียว สิ่งนี้ใช้ไม่ได้กับสิทธิ์การใช้งานแอป ซึ่งผู้ใช้ยังคงต้องให้สิทธิ์ตามผู้ใช้ต่อแอป

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

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

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

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

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

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

การตรวจสอบ

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

เซสชั่นสาธิต

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

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

Retail demo mode

รูปที่ 2 โหมดสาธิตการขายปลีก

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

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

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

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

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

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

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

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

  • ความสว่าง
  • หมุนอัตโนมัติ
  • ไฟฉาย
  • ภาษา
  • การเข้าถึง

ออกจากโหมดสาธิตการขายปลีก

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