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 ก่อนวันที่
การจัดสรรเพื่อระบุว่ามีการจัดสรรอุปกรณ์สำหรับการสาธิตสำหรับร้านค้าปลีก
เซิร์ฟเวอร์ระบบ
ใช้ Flag นี้เพื่อจัดการด้านต่างๆ ของโหมดค้าปลีก เช่น โปรไฟล์พลังงานและ
SystemUI
เปิดใช้ RetailDemoModeService
ในอุปกรณ์ที่ใช้โหมดสาธิตสำหรับร้านค้าปลีก วิซาร์ดการตั้งค่าตั้งค่า
กำลังตั้งค่า
Global.DEVICE_DEMO_MODE
ไปยัง true
เพื่อระบุว่าอุปกรณ์เข้าสู่โหมดค้าปลีก เมื่อ
เมื่อเห็นการตั้งค่านี้ RetailDemoModeService จะสร้างผู้ใช้สาธิต และสลับไปเมื่อผู้ใช้ 0 เริ่มทำงาน ซึ่งจะเป็นการเปิดใช้
Launcher แบบกำหนดเองที่ระบุในทรัพยากรการวางซ้อนและปิดใช้ SUW ระบบ
เซิร์ฟเวอร์และ 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/การสาธิตร้านค้าปลีก เป็น Launcher ที่กำหนดเองเริ่มต้นในโครงการโอเพนซอร์ส Android (AOSP) แอปมองหาวิดีโอในพาร์ติชันอุปกรณ์ เช่น /data/preloads/demo/retail_demo.mp4 และเล่นวนซ้ำ เมื่อผู้ใช้แตะหน้าจอ Launcher ที่กำหนดเอง ปิดใช้คอมโพเนนต์กิจกรรม ซึ่งทำให้ตัวเรียกใช้งานระบบเริ่มต้น เริ่มต้น
Launcher ที่กำหนดเองต้องมีการทำเครื่องหมายคอมโพเนนต์ที่กำหนดเองเป็นปิดใช้โดยค่าเริ่มต้น
เพื่อไม่ให้โฆษณาแสดงในสถานการณ์ที่ไม่ใช่ข้อมูลประชากร ในสถานการณ์สาธิต ระบบ
เซิร์ฟเวอร์จะเปิดใช้ 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
ได้รับการตั้งค่าแล้วและจัดการสถานการณ์ตามที่เหมาะสม
การอัปเดตระบบ
เมื่อเปิดใช้โหมดค้าปลีกโดยค่าเริ่มต้น ระบบจะตั้งค่านโยบายอุปกรณ์เป็นผ่านอากาศ (OTA) (OTA) โดยอัตโนมัติ อุปกรณ์สำหรับค้าปลีกจะดาวน์โหลด รีบูต และติดตั้ง อัปเดต (เป็นไปตามเกณฑ์แบตเตอรี่) โดยที่ผู้ใช้ไม่ต้องโต้ตอบ
แอปเดโมสำหรับร้านค้าปลีก
การใช้งานโหมดสาธิตการค้าปลีกตามเจ้าของอุปกรณ์จำเป็นต้องมี เครื่องมือควบคุมนโยบายด้านอุปกรณ์ แอปที่จะตั้งค่าเป็นเจ้าของอุปกรณ์ AOSP มีแอป RetailDemo อ้างอิง การใช้งานใน /packages/apps/RetailDemo
แอปของเจ้าของอุปกรณ์ไม่จำเป็นต้องใช้สิทธิ์ขั้นสูงหรือการติดตั้งล่วงหน้าในอุปกรณ์ อิมเมจของระบบและสามารถดาวน์โหลดได้ระหว่างขั้นตอนการตั้งค่าหรือการจัดสรร ส่วนใหญ่จะมีการใช้งานเช่นเดียวกับแอปแบบดั้งเดิม โดยมีวิธีดังต่อไปนี้ ความแตกต่าง:
แอปของเจ้าของอุปกรณ์ทั้งหมดต้องขยาย DeviceAdminReceiver ซึ่งทำหน้าที่เป็นโทเค็นการให้สิทธิ์สำหรับ ตัวจัดการนโยบายด้านอุปกรณ์ API คอมโพเนนต์ต้องเก็บ
android.permission.BIND_DEVICE_ADMIN
รวมนโยบายพิเศษที่ขอเป็นข้อมูลเมตา และกรองandroid.app.action.PROFILE_PROVISIONING_COMPLETE
และandroid.app.action.DEVICE_ADMIN_ENABLED
IntentDevicePolicyManager#MAKE_USER_DEMO Flag ซึ่งได้รับการตั้งค่าเพื่อสร้างผู้ใช้ประเภทการสาธิตพิเศษเป็น API ที่ซ่อนอยู่ ธงนี้ มีค่าคงที่ที่ 0x4
การเป็นเจ้าของอุปกรณ์ต้องได้รับการกำหนดผ่านบทบาทการจัดการอุปกรณ์เท่านั้น เจ้าของ หรือการจัดสรรที่มีการจัดการ แอป
API ใน DevicePolicyManager คลาสเปิดใช้งาน Device Owner (DO) และ Profile Owner (PO) เพื่อบังคับใช้กับอุปกรณ์หลายประเภท DevicePolicyManager บางส่วนของ ฟังก์ชันที่ใช้กับโหมดสาธิตสำหรับร้านค้าปลีกมีดังนี้
สร้างและจัดการผู้ใช้
รีบูตอุปกรณ์
ตั้งค่าแพ็กเกจที่อนุญาต LockTask
ติดตั้งแพ็กเกจผ่าน PackageInstaller
บล็อกไม่ให้ถอนการติดตั้งแพ็กเกจ
เปิดใช้การอัปเดตระบบอัตโนมัติ อุปกรณ์จะดาวน์โหลดและใช้การอัปเดต OTA โดยอัตโนมัติ
ปิดใช้การล็อกปุ่ม
ป้องกันการตั้งรหัสผ่านหรือลายนิ้วมือ
ตั้งค่าชุด Settings.Global ในรายการที่อนุญาต การตั้งค่าปลอดภัย และ 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 ใหม่กว่า URL ดังกล่าว ที่กำลังเล่น
หากเป็นเช่นนั้น แอป RetailDemo จะดาวน์โหลดและเริ่มเล่นวิดีโอ เมื่อวิดีโอ จะถูกดาวน์โหลด ซึ่งจะใช้สำหรับการเล่นในเซสชันการสาธิตทั้งหมดนับจากนี้เป็นต้นไป ไม่ใช้เลย ของการตรวจสอบเกิดขึ้นอีกครั้งจนกว่าจะมีการรีบูตครั้งถัดไป
หลักเกณฑ์สำหรับวิดีโอสาธิต
วิดีโอการสาธิตต้องอยู่ในแนวตั้งหรืออยู่ในอุปกรณ์ หากเป็นแท็บเล็ต การวางแนวตามธรรมชาติ และสามารถมีความยาวมากกว่า 5 วินาที คอนเทนต์ ต้องไม่ทำให้เกิดภาพค้างเนื่องจากภาพจะเล่นต่อเนื่องเมื่ออยู่บนจอแสดงผล
ดูคำจำกัดความสำหรับนักพัฒนาแอป Android ของผู้ใช้ โปรไฟล์ และบัญชี เอกสารประกอบเกี่ยวกับ Device Policy Manager API และตัวอย่างแอปเจ้าของอุปกรณ์ เพื่อดูข้อมูลเพิ่มเติม
การตรวจสอบความถูกต้อง
CTS ไม่ครอบคลุมโหมดสาธิตสำหรับร้านค้าปลีกเนื่องจากเป็นฟีเจอร์เสริม การทดสอบ ต้องดำเนินการด้วยตนเองหรือการทดสอบ 1 หน่วยสำหรับแอปเดโม
เซสชันการสาธิต
การตั้งค่าเซสชันสาธิต
อุปกรณ์การสาธิตสำหรับร้านค้าปลีกอาจบูตเข้าสู่โหมดสาธิตของร้านค้าปลีกหากมีการกำหนดค่าไว้สำหรับโหมดสาธิต ออกมาจากโรงงาน หรือพนักงานร้านค้าปลีกอาจเปิดใช้โหมดค้าปลีก จากวิซาร์ดการตั้งค่าได้โดยตรง
รูปที่ 2 โหมดการสาธิตสำหรับร้านค้าปลีก
แสดงเซสชันการสาธิต
เมื่ออุปกรณ์เข้าสู่โหมดค้าปลีก อุปกรณ์จะเปลี่ยนไปเป็นผู้ใช้สาธิตรายใหม่ เริ่มต้น Launcher ที่กำหนดเองโดยอัตโนมัติที่ระบุไว้ในทรัพยากรการวางซ้อนโดยอัตโนมัติ ตามที่อธิบายไว้ในการใช้งาน โดยค่าเริ่มต้น Launcher ที่กำหนดเองนี้เล่นวิดีโอสาธิตซ้ำไปเรื่อยๆ จนกว่าผู้ใช้จะแตะ เพื่อเริ่มเซสชันผู้ใช้การสาธิต เมื่อถึงเวลานั้น Launcher ที่กำหนดเองจะเริ่มต้น Launcher ของระบบแล้วออกไป OEM สามารถปรับเปลี่ยน Launcher ที่กำหนดเองเป็น เปิดใช้บริการหรือกิจกรรมอื่นเพิ่มเติมเมื่อออกจากระบบ
เพื่อรักษาความสมบูรณ์ของโหมดการค้าปลีก การล็อกจะปิดใช้งานและ การดำเนินการบางอย่างจากการตั้งค่าด่วนที่อาจส่งผลเสียต่อโหมดหน้าร้าน ได้แก่ และไม่อนุญาต ซึ่งรวมถึงสิ่งต่อไปนี้
- สลับโหมดบนเครื่องบิน
- การลบหรือแก้ไขจุดเข้าใช้งาน Wi-Fi (การตั้งค่า)
- กำลังเปลี่ยนผู้ให้บริการ (การตั้งค่า)
- กำลังกำหนดค่าฮอตสปอต (การตั้งค่า)
- การเปลี่ยนผู้ใช้
นอกจากนี้ ระบบยังบล็อกการเข้าถึงการตั้งค่าส่วนกลางบางรายการที่อาจส่งผล โหมดค้าปลีกโดยปิดใช้รายการต่อไปนี้
- การตั้งค่า Wi-Fi
- ตัวเลือกการกำหนดค่าเครือข่ายมือถือ โดยเฉพาะฮอตสปอต
- การกำหนดค่าบลูทูธ
- การสำรองข้อมูลและ รีเซ็ต วันที่และ เวลา และเครือข่ายมือถือ (จะไม่แสดงขึ้นมาเลย)
หากผู้ใช้ไม่มีความเคลื่อนไหวเป็นระยะเวลาหนึ่ง (90 วินาทีโดยค่าเริ่มต้น) โหมดค้าปลีก แสดงกล่องโต้ตอบของระบบเพื่อแจ้งให้ผู้ใช้ออกจากเซสชันหรือดำเนินการต่อ หากผู้ใช้เลือกที่จะออกหรือไม่มีการตอบสนองเป็นเวลา 5 วินาที ให้ขายปลีก โหมดนี้จะนำผู้ใช้สาธิตปัจจุบันออก สลับไปเป็นผู้ใช้สาธิตใหม่ และ วนซ้ำวิดีโอต้นฉบับอีกครั้ง หากหน้าจอปิดอยู่โดยใช้ ปุ่มเปิด/ปิด ปุ่มนี้จะกลับมาปรากฏโดยอัตโนมัติหลังจากผ่านไป 2-3 วินาที
หลังจากออกจากเซสชันสาธิต อุปกรณ์จะปิดเสียงตัวเองและรีเซ็ตส่วนกลางบางส่วน ซึ่งรวมถึงการตั้งค่าต่อไปนี้
- ความสว่าง
- การหมุนอัตโนมัติ
- ไฟฉาย
- ภาษา
- การช่วยเหลือพิเศษ
ออกจากโหมดสาธิตสำหรับร้านค้าปลีก
หากต้องการออกจากโหมดค้าปลีก พนักงานขายปลีกต้องตรวจสอบว่าอุปกรณ์สาธิต ไม่ได้ลงทะเบียนภายใต้การจัดการอุปกรณ์และรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้นจาก Boot Loader