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