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