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