การตั้งค่า Android Kiosk: ควรทำอย่างไรเมื่อผู้เป็นเจ้าของอุปกรณ์ล็อกคุณออกจากการตั้งค่า
เอ แท็บเล็ตแอนดรอยด์ขนาด 10.1 นิ้ว ถูกตั้งค่าให้ใช้งานในโหมดคิออสก์โดยใช้ ADB ผู้เปิดใช้งานแบบกำหนดเอง และสถานะเจ้าของอุปกรณ์ (Device Owner) หลังจากรีบูต แอปพลิเคชันเริ่มทำงานตามที่คาดไว้ แต่อุปกรณ์ไม่สามารถเข้าถึงอินเทอร์เฟซการตั้งค่าแอนดรอยด์แบบปกติได้อีกต่อไป
สิ่งนี้ก่อให้เกิดความท้าทายทั่วไปในการติดตั้งระบบคิออสก์: เมื่อการนำทางระบบและการควบคุมการจัดการอุปกรณ์ถูกจำกัดแล้ว จะนำแท็บเล็ตกลับมาใช้งานเพื่อการทดสอบเพิ่มเติมได้อย่างไร? และหากแอปพลิเคชันจำเป็นต้องเปิดใช้งาน Wi-Fi หรือฟังก์ชันระบบอื่น ๆ แล้ว Intent ของแอนดรอยด์ใดยังสามารถใช้งานได้?
ลูกค้าเริ่มต้นด้วยการใช้คำสั่ง ADB เพื่อปรับเปลี่ยนพฤติกรรมของ UI ระบบ:
adb shell settings put system hide_navbar 1
adb shell settings put system statusbar_disp 1
adb shell settings put system swipe_show_nav_bar 0
adb shell settings put system power_button_show 0
จากนั้นตั้งค่าแอปพลิเคชันให้เป็นหน้าจอโฮมเริ่มต้นค่าเริ่มต้น แล้วจึงตั้งค่าแอปพลิเคชันให้เป็น เจ้าของอุปกรณ์ เพื่อเปิดใช้งานฟังก์ชันการจัดการอุปกรณ์ที่จำเป็น
หลังจากรีบูตแล้ว แท็บเล็ตแอนดรอยด์แบบคิออสก์ เข้าสู่แอปพลิเคชันโดยอัตโนมัติตามที่คาดไว้ อย่างไรก็ตาม ลูกค้าไม่สามารถออกจากหน้าจอหลักของแอปพลิเคชันเพื่อเข้าถึงการตั้งค่าแอนดรอยด์หรือฟังก์ชันระบบอื่นๆ ได้อีกต่อไป ปุ่มการตั้งค่าและปุ่มไวไฟที่ฝังอยู่ภายในแอปพลิเคชันก็หยุดทำงานในการเปิดหน้าการตั้งค่าระบบที่เกี่ยวข้องเช่นกัน
คำถามที่เร่งด่วนในขณะนั้นไม่ใช่แค่การหาวิธีออกจากแอปพลิเคชันเท่านั้น แต่ลูกค้าต้องการวิธีที่เชื่อถือได้ในการกู้คืน แท็บเล็ตแอนดรอยด์ เพื่อการทดสอบเพิ่มเติม และยังต้องการทราบว่า Intent ระบบใดบ้างที่แอปพลิเคชันของตนสามารถใช้งานได้
เหตุใดแท็บเล็ตแอนดรอยด์จึงเข้าถึงได้ยากขึ้น
ปัญหานี้เกิดจากหลายระดับของการควบคุมอุปกรณ์ที่ถูกนำไปใช้พร้อมกัน
ตัวเปิดใช้งานแบบกำหนดเองกำหนดว่าแอปพลิเคชันใดจะปรากฏเป็นหน้าจอหลัก (Home screen) ขณะที่สิทธิ์ Device Owner มอบการควบคุมนโยบายอุปกรณ์ให้แอปพลิเคชันนั้นอย่างกว้างขวางยิ่งขึ้น Android มีเอกสารเฉพาะสำหรับอุปกรณ์เฉพาะทางซึ่งรองรับการตั้งค่าประเภทนี้สำหรับการใช้งานแบบ kiosk และอุปกรณ์ที่จัดการ รวมถึงการควบคุมแอปพลิเคชันเริ่มต้นสำหรับหน้าจอหลัก (Home application) และการจำกัดการเข้าถึงฟังก์ชันระบบ
คำสั่ง ADB เพิ่มชั้นการควบคุมอีกระดับโดยเปลี่ยนพฤติกรรมของระบบ UI การตั้งค่าเหล่านี้ขึ้นอยู่กับอุปกรณ์หรือเฟิร์มแวร์เป็นหลัก ไม่ใช่ API มาตรฐานทั่วไปของ Android ดังนั้นผลลัพธ์ที่แน่นอนจึงขึ้นอยู่กับว่าเฟิร์มแวร์ของแท็บเล็ตดำเนินการตามการตั้งค่านั้นอย่างไร
สิ่งนี้หมายความว่า แท็บเล็ต Android ที่ใช้เป็นอุปกรณ์แบบ kiosk อาจกลายเป็นอุปกรณ์ที่กู้คืนกลับมาใช้งานได้ยากมาก เมื่อมีการปรับเปลี่ยนตัวเปิดใช้งาน (launcher) การตั้งค่า Device Owner ข้อจำกัดของระบบ UI และการนำทางภายในแอปพลิเคชันพร้อมกันทั้งหมด
การที่ปุ่มการตั้งค่าหรือปุ่มไวไฟของแอปพลิเคชันไม่ทำงานอีกต่อไป ไม่ได้หมายความว่า Intent นั้นผิดพลาดจำเป็นต้องเป็นเช่นนั้นเสมอไป กิจกรรม (Activity) การตั้งค่าเป้าหมายอาจไม่พร้อมใช้งาน ถูกจำกัดสิทธิ์ หรือเข้าถึงไม่ได้ภายใต้การกำหนดค่าอุปกรณ์ในปัจจุบัน นอกจากนี้ แอนดรอยด์ยังแนะนำให้ตรวจสอบก่อนว่า Intent นั้นสามารถแก้ไข (resolve) ได้หรือไม่ ก่อนจะพยายามเริ่มต้นใช้งาน

เส้นทางการกู้คืนสำหรับแท็บเล็ตแอนดรอยด์แบบคิออสก์ที่ถูกล็อก
หากแอปพลิเคชันได้รับการกำหนดค่าให้เป็น Device Owner แล้ว ควรพิจารณาการกู้คืนด้วยซอฟต์แวร์เป็นลำดับแรก
แอนดรอยด์ DevicePolicyManager ให้ฟังก์ชันการจัดการอุปกรณ์ที่สามารถใช้งานได้โดย Device Owner ขึ้นอยู่กับเวอร์ชันของแอนดรอยด์และการกำหนดค่าของแอปพลิเคชัน แอปพลิเคชัน Device Owner อาจใช้กลไกการล้างข้อมูลอุปกรณ์ที่เหมาะสมเพื่อคืนค่าแท็บเล็ตให้อยู่ในสถานะที่สะอาดสำหรับการทดสอบ wipeData() เป็น API ที่ใช้กันทั่วไปสำหรับการล้างข้อมูลผู้ใช้ ในขณะที่แอนดรอยด์เวอร์ชันใหม่กว่านั้นมีฟังก์ชันการล้างข้อมูลอุปกรณ์เพิ่มเติม
API ที่ถูกยกเลิกแล้ว clearDeviceOwnerApp() วิธีนี้ไม่ควรใช้เป็นวิธีกู้คืนการผลิตทั่วไป ระบบแอนดรอยด์ระบุไว้ในเอกสารว่าเป็น API ที่ออกแบบมาเพื่อการทดสอบเท่านั้น และแนะนำให้ใช้การรีเซ็ตจากโรงงานเป็นวิธีปกติในการลบความสัมพันธ์ของ Device Owner
ADB ยังให้คำสั่งจัดการนโยบายอุปกรณ์ แต่มีข้อจำกัดบางประการ เช่น adb shell dpm remove-active-admin ไม่ใช่วิธีทั่วไปในการลบ Device Owner อย่างแท้จริง เอกสารประกอบ ADB ของแอนดรอยด์ระบุเงื่อนไขเฉพาะ เช่น การประกาศคุณสมบัติ testOnly ของแอปพลิเคชัน
หากการกู้คืนด้วยซอฟต์แวร์ไม่สามารถทำได้เนื่องจากแอปพลิเคชันไม่สามารถดำเนินการที่จำเป็นได้ ทางเลือกที่เหลือคือ การรีเซ็ตจากโรงงานแบบฮาร์ดแวร์ หรือขั้นตอนการกู้คืนของแอนดรอยด์ .
ไม่ควรคาดเดาชุดปุ่มที่ต้องกดเพื่อเข้าสู่โหมดกู้คืนจากโมเดลแท็บเล็ตแอนดรอยด์รุ่นอื่น เพราะพฤติกรรมของโหมดกู้คืนขึ้นอยู่กับเฟิร์มแวร์และโครงสร้างฮาร์ดแวร์ของแท็บเล็ตนั้น ๆ โดยตรง ดังนั้น สำหรับโครงการแท็บเล็ตแอนดรอยด์ที่ปรับแต่งเอง จึงจำเป็นต้องยืนยันขั้นตอนการกู้คืนที่เหมาะสมกับรุ่นและเฟิร์มแวร์จริงก่อนนำไปใช้งาน
สำหรับประเภทนี้ แท็บเล็ตแอนดรอยด์แบบคิออสก์ , การมีวิธีการกู้คืนที่ชัดเจนนั้นมีประโยชน์อย่างยิ่งในระหว่างการทดสอบการรวมระบบ เนื่องจากการกำหนดค่าระดับระบบอาจถูกนำออกโดยเจตนา ทำให้การนำทางของผู้ใช้ตามปกติไม่สามารถใช้งานได้
การทดสอบเป้าหมายการตั้งค่าและฟังก์ชันระบบบนแท็บเล็ตแอนดรอยด์
คำถามข้อที่สองของลูกค้าคือ แอปพลิเคชันสามารถเริ่มต้นฟังก์ชันระบบ เช่น การตั้งค่า (Settings) และไวไฟ (Wi-Fi) ได้โดยตรงหรือไม่
แอนดรอยด์จัดเตรียมการกระทำการตั้งค่ามาตรฐานสำหรับฟังก์ชันเหล่านี้ ตัวอย่างเช่น:
|
หน้าที่ |
การกระทำอินเทนต์มาตรฐานของแอนดรอยด์ |
|
การตั้งค่าหลัก |
Settings.ACTION_SETTINGS |
|
การตั้งค่าไวไฟ |
Settings.ACTION_WIFI_SETTINGS |
|
การตั้งค่าระบบไร้สาย |
Settings.ACTION_WIRELESS_SETTINGS |
|
การตั้งค่าบลูทูธ |
Settings.ACTION_BLUETOOTH_SETTINGS |
|
การตั้งค่าการแสดงผล |
Settings.ACTION_DISPLAY_SETTINGS |
|
การตั้งค่าตำแหน่งที่ตั้ง |
Settings.ACTION_LOCATION_SOURCE_SETTINGS |
|
การตั้งค่าเสียง |
Settings.ACTION_SOUND_SETTINGS |
|
การตั้งค่าความปลอดภัย |
Settings.ACTION_SECURITY_SETTINGS |
|
การตั้งค่าแอปพลิเคชัน |
การตั้งค่า.ACTION_APPLICATION_SETTINGS |
|
การตั้งค่าเฉพาะแอปพลิเคชัน |
การตั้งค่า.ACTION_APPLICATION_DETAILS_SETTINGS |
สิ่งเหล่านี้คือการกระทำมาตรฐานของ Android Settings ไม่ใช่อินเทอร์เฟซที่ออกแบบมาเฉพาะสำหรับ ผู้ผลิตแท็บเล็ตแอนดรอยด์รายหนึ่ง อย่างไรก็ตาม การมี Intent อยู่ไม่ได้รับประกันว่าจะสามารถเปิดใช้งานได้สำเร็จบนอุปกรณ์ทุกเครื่อง หรือภายใต้การกำหนดค่าโหมดคิออสก์ทุกรูปแบบ แอนดรอยด์แนะนำให้ตรวจสอบ Intent ด้วย resolveActivity() ก่อนเริ่มใช้งาน
ดังนั้น สำหรับแท็บเล็ตแอนดรอยด์ที่ผสานรวมเข้ากับระบบแล้ว ควรดำเนินการทดสอบ Intent บนเฟิร์มแวร์และเวอร์ชันแอนดรอยด์ที่ใช้งานจริงในการปรับใช้งาน โดยการทดสอบนี้ต้องยืนยันไม่เพียงแต่ว่า Intent มีอยู่จริงเท่านั้น แต่ยังต้องยืนยันด้วยว่า Activity ที่เกี่ยวข้องสามารถเรียกใช้งานได้หลังจากที่มีการใช้ข้อจำกัดต่าง ๆ แล้ว เช่น Device Owner, ตัวเริ่มต้น (launcher) และข้อจำกัดของระบบ UI
หากท่านกำลังดำเนินโครงการแท็บเล็ตแบบคิออสก์บนระบบแอนดรอยด์ หรือโครงการผสานรวมระบบ และต้องการความช่วยเหลือเกี่ยวกับการกู้คืนสถานะ Device Owner การเรียกใช้ Settings Intents หรือปัญหาการกำหนดค่าที่เกี่ยวข้อง โปรดติดต่อเราพร้อมแจ้งรุ่นแท็บเล็ตและเวอร์ชันแอนดรอยด์ที่ท่านใช้งาน เราสามารถหารือเกี่ยวกับตัวเลือกการสนับสนุนทางเทคนิคและการปรับแต่งที่มีให้
หลักการเดียวกันนี้ใช้ได้กับฟังก์ชันระบบอื่น ๆ ด้วย อาจมี API มาตรฐานของแอนดรอยด์อยู่จริง แต่พฤติกรรมที่แท้จริงของแท็บเล็ตที่ถูกปรับแต่งแล้วจะขึ้นอยู่กับเวอร์ชันแอนดรอยด์ โครงสร้างเฟิร์มแวร์ และนโยบายการจัดการอุปกรณ์
แล้วคำขอปลุกหน้าจอ (Wake Requests) ล่ะ
คำถามของลูกค้าเกี่ยวกับ 'คำขอปลุกหน้าจอ' นั้นมีลักษณะต่างออกไปเล็กน้อยเมื่อเทียบกับการเปิดหน้า Settings
Intent.ACTION_SCREEN_ON เป็นการกระจายสัญญาณระบบ (system broadcast) ที่ระบุว่าหน้าจอได้เข้าสู่สถานะโต้ตอบได้แล้ว ซึ่งเป็นสัญญาณระบบแบบมีการป้องกัน ดังนั้นแอปพลิเคชันจึงไม่ควรจัดการมันในฐานะ Intent ทั่วไปที่สามารถส่งเพื่อปลุกแท็บเล็ตได้โดยตรง
หากความต้องการคือ ปลุกหน้าจอ รักษาสถานะหน้าจอให้เปิดอยู่ หรือควบคุมพฤติกรรมการเปิดหน้าจอ , กลไกที่เหมาะสมขึ้นอยู่กับความต้องการเฉพาะของแอปพลิเคชัน แอนดรอยด์ให้ API สำหรับการจัดการพลังงานและหน้าต่าง/กิจกรรมเพื่อใช้ในสถานการณ์เหล่านี้ รวมถึง PowerManager และฟังก์ชันการล็อกการตื่น (wake-lock) เมื่อจำเป็น
ความแตกต่างนี้มีความสำคัญอย่างยิ่งเมื่อพัฒนาแอปพลิเคชันสำหรับ แท็บเล็ตแอนดรอยด์แบบคิออสก์ . การ ‘เริ่มต้นฟังก์ชันระบบ’ กับการ ‘ควบคุมสถานะพลังงานของอุปกรณ์’ เป็นการดำเนินการระบบคนละประเภทกัน และควรจัดการผ่าน API ที่ต่างกัน

การสนับสนุนทางเทคนิคสำหรับการผสานรวมแท็บเล็ตแอนดรอยด์
กรณีนี้ยังแสดงให้เห็นว่าการปรับใช้แบบคิออสก์อาจต้องการมากกว่าการกำหนดค่าฮาร์ดแวร์พื้นฐานของแท็บเล็ตแอนดรอยด์
เมื่อมีการผสานแท็บเล็ตเข้ากับแอปพลิเคชันเฉพาะทาง ระบบจุดขาย (POS) คิออสก์ ระบบอุตสาหกรรม หรืออุปกรณ์ที่จัดการอย่างเป็นทางการ อัตราการกำหนดค่าซอฟต์แวร์อาจเกี่ยวข้องพร้อมกันหลายด้าน ได้แก่ โปรแกรมเริ่มต้น (launcher), ผู้ครอบครองอุปกรณ์ (Device Owner), ระบบอินเทอร์เฟซผู้ใช้ (system UI), สิทธิ์การใช้งานแอปพลิเคชัน, การเรียกใช้การตั้งค่าผ่าน Intent (Settings Intents) และพฤติกรรมการกู้คืน (recovery behavior)
สำหรับโครงการที่ต้องการ แท็บเล็ตแอนดรอยด์ที่ปรับแต่งเฉพาะ การกำหนดค่า ข้อกำหนดเหล่านี้ควรประเมินร่วมกับการกำหนดค่าฮาร์ดแวร์และระบบแอนดรอยด์ แทนที่จะถือว่าเป็นปัญหาแยกต่างหากในระหว่างการทดสอบขั้นสุดท้าย
วิธีแก้ไขที่เหมาะสมขึ้นอยู่กับเวอร์ชันแอนดรอยด์ ไฟร์มแวร์แท็บเล็ต การกำหนดค่าแอปพลิเคชัน และฟังก์ชันที่ผู้รวมระบบที่ต้องควบคุม เอกสารทางเทคนิคสามารถจัดทำขึ้นได้โดยอิงตามอินเทอร์เฟซระบบ คำสั่ง Intents ที่รองรับ สิทธิ์การใช้งาน และข้อจำกัดเฉพาะอุปกรณ์ที่มีอยู่
หากคุณกำลังทดสอบ แท็บเล็ตแอนดรอยด์ สำหรับการใช้งานแบบคิออสก์หรือการรวมระบบ และพบปัญหาที่คล้ายคลึงกันกับ เจ้าของอุปกรณ์ (Device Owner), โปรแกรมเริ่มต้นแบบปรับแต่ง, โหมดคิออสก์, คำสั่ง Settings Intents, การจำกัดอินเทอร์เฟซระบบผู้ใช้ หรือการกู้คืนอุปกรณ์ , โปรด ติดต่อเรา เพื่อขอความช่วยเหลือทางเทคนิค .
คุณสามารถให้รุ่นแท็บเล็ต เวอร์ชันแอนดรอยด์ การกำหนดค่าการใช้งานจริง และฟังก์ชันเฉพาะที่คุณพยายามนำเข้ามาใช้งาน เราจะสามารถพูดคุยเกี่ยวกับตัวเลือก การปรับแต่งแท็บเล็ตแอนดรอยด์และการสนับสนุนทางเทคนิค ตัวเลือกสำหรับโครงการของคุณ