สิทธิ์รันไทม์ใน Android 6 ขึ้นไปช่วยให้ผู้ใช้ควบคุมได้ว่าจะให้บันทึกเสียงจากไมโครโฟนของอุปกรณ์หรือวิดีโอจากกล้องของอุปกรณ์หรือไม่ ก่อนที่แอปจะบันทึกได้ ผู้ใช้ต้องให้หรือปฏิเสธสิทธิ์ผ่านกล่องโต้ตอบที่ระบบแสดง
Android 12 ให้ความโปร่งใสแก่ผู้ใช้ด้วยการแสดงตัวบ่งชี้เมื่อแอปใช้แหล่งข้อมูลส่วนตัวผ่านสิทธิ์การดําเนินการของแอปกล้องและไมโครโฟน App-ops จะบันทึกการเข้าถึง API ที่ปกป้องด้วยสิทธิ์รันไทม์
App-op จะติดตามทั้งสถานะกิจกรรมและจํานวนการเรียก API แต่ละรายการ รวมถึงโต้ตอบกับสัญญาณบอกสถานะไมโครโฟนและกล้องใน Android 12 เพื่อแสดงให้ผู้ใช้ทราบเมื่อแอปเข้าถึงข้อมูลเสียงและกล้องในอุปกรณ์ เมื่อคลิกที่สัญญาณบอกสถานะไมโครโฟนหรือกล้อง ผู้ใช้จะเห็นแอปที่เข้าถึงข้อมูลของตน ฟีเจอร์นี้เป็นฟีเจอร์ที่จำเป็นสำหรับ OEM ทั้งหมด
ข้อกำหนดเกี่ยวกับการแสดงผลของไฟบอกสถานะ
ข้อกำหนดสำหรับไฟบอกสถานะไมโครโฟนและกล้องในอุปกรณ์ที่ใช้ Android 12 ขึ้นไปมีดังนี้
- ตัวบ่งชี้ต้องปรากฏในแถบสถานะและคงลำดับความสำคัญสูงสุดของภาพ (เช่น อยู่ทางด้านขวาสุดที่มุมขวาบน)
- ตัวบ่งชี้ต้องอยู่ในตำแหน่งเดียวกันเสมอ และต้องไม่ถูกบล็อกโดยแอปเมื่อเปิดใช้งาน
- ตัวบ่งชี้ทั้ง 2 รายการต้องเป็นสีเขียว (หรือสีเขียวเฉดต่างๆ)
- การคลิกตัวบ่งชี้อย่างน้อย 1 รายการต้องแสดงการแจ้งเตือนการระบุแหล่งที่มาของแอปซึ่งเป็นการแจ้งเตือนที่พร้อมใช้งาน (Affordance) ดังต่อไปนี้
- แสดงชื่อแอปที่ใช้ไมโครโฟนและ (หรือ) กล้อง
- แสดงชื่อแอปที่ใช้ไมโครโฟนและ (หรือ) กล้องในช่วง 15 วินาทีที่ผ่านมา
- นำผู้ใช้ไปยังหน้าสิทธิ์ของแอปในการตั้งค่า
การใช้งานและฟีเจอร์
ใน Android 12 UI จะแยกระหว่างการใช้งานที่กำลังดำเนินอยู่และการใช้งานล่าสุด ระบบจะถือว่าการใช้งานเป็นแบบ "ใช้งานอยู่" หากระบบทำเครื่องหมายว่าใช้งานอยู่ หรือการใช้งานนั้นเกิดขึ้นไม่ถึง 5 วินาที
- ไอคอนในแถบสถานะจะแสดงทุกครั้งที่แอปมีสิทธิ์เข้าถึงไมโครโฟนหรือกล้องที่ละเอียดอ่อนต่อผู้ใช้อย่างต่อเนื่อง
- ผู้ใช้สามารถคลิกไอคอนเหล่านี้เพื่อดูว่าแอปใดกำลังเข้าถึงไมโครโฟน กล้อง หรือทั้ง 2 อย่าง
รูปที่ 1 สัญญาณบอกสถานะไมโครโฟนและกล้องที่ใช้งานอยู่ซึ่งแสดงการเข้าถึงที่ใช้งานอยู่ (มุมขวาบน)
ระบบจะถือว่าการเข้าถึงใช้งานได้ตราบใดที่ไฟบอกสถานะยังแสดงอยู่ ไอคอนจะแสดงขึ้นก่อน จากนั้นเปลี่ยนเป็นจุดที่แสดงอยู่จนกว่าแอปจะปิดหรือถูกปิด
เมื่อผู้ใช้เปิดการตั้งค่าด่วนแล้วแตะตัวบ่งชี้ กล่องโต้ตอบจะปรากฏขึ้นเพื่อระบุว่าแอปกำลังใช้กล้อง ไมโครโฟน หรือทั้ง 2 อย่าง
รูปที่ 2 ตัวบ่งชี้การเข้าถึงล่าสุดและที่ใช้งานอยู่
รูปภาพในรูปที่ 2 แสดงตัวบ่งชี้การเข้าถึงที่ใช้งานอยู่เมื่อแอปที่ทำงานอยู่เข้าถึงข้อมูลในช่วง 5 วินาทีที่ผ่านมา
ตัวบ่งชี้การเข้าถึงล่าสุดแสดงให้เห็นว่าแอปเข้าถึงข้อมูลในช่วง 15 วินาทีก่อนหน้า แต่แอปไม่ได้ทำงานอยู่ แอปที่ใช้งานอยู่ทั้งหมดจะแสดงในกล่องโต้ตอบ แต่จะมีเพียงแอปเดียวที่แสดงเป็นแหล่งที่มาของการเข้าถึงล่าสุด แม้ว่าจะมีแอปมากกว่า 1 แอปที่เข้าถึงข้อมูลภายในกรอบเวลา 15 วินาทีก่อนหน้า มุมมองการเข้าถึงจะยังคงค้างไว้จนกว่าผู้ใช้จะปิดกล่องโต้ตอบการแจ้งเตือน
ส่งและเปิดใช้
คลาส PermissionManager
มีวิธีการป้อนข้อมูลในกล่องโต้ตอบซึ่งอยู่ใน UI ของระบบ
- UI ของระบบจะตอบสนองต่อสวิตช์การกำหนดค่าอุปกรณ์ ดังนี้
privacy/mic_camera_indicators_enabled
- จำเป็นต้องเปลี่ยนเนื่องจากมียานพาหนะนำส่ง 2 คันแยกกัน ดังนี้
- ส่ง
- เปิดใช้
- UI ของระบบต้องไม่ขัดข้องหากเมธอดใน
PermissionManager
ให้ข้อมูลที่จำเป็นไม่ได้
ขั้นตอนกระบวนการ
ฟังก์ชันการทำงานของตัวบ่งชี้สิทธิ์ประกอบด้วย 3 ส่วนหลักๆ ดังนี้
- แอป
- ตัวบ่งชี้ (จัดการโดย SystemUI)
- วิธีระบุว่าแอปใดใช้ข้อมูล
PermissionController
มีกลไกในการระบุแอปที่ใช้ข้อมูล SystemUI จะคอยฟังหาแอปที่ใช้ข้อมูลส่วนตัว SystemUI จะแสดงไอคอนในแถบนำทางด้านบนซึ่งสอดคล้องกับสิทธิ์ที่ใช้ PermissionController
จะแสดงข้อมูลเกี่ยวกับการใช้งานเมื่อผู้ใช้คลิกไอคอน
รูปที่ 3 คอมโพเนนต์ของระบบและขั้นตอนการเปลี่ยน (UI)
การเปลี่ยนหมายเลขในรูปที่ 3 มีคำอธิบายดังนี้
1- แอปขอข้อมูลส่วนตัวจากระบบ
2- ระบบจะตรวจสอบสิทธิ์ หากมีการอนุญาตสิทธิ์ ระบบจะแจ้งให้ผู้ให้บริการข้อมูลทราบและบันทึกการใช้งานไว้ใน App Ops
3- ผู้ให้บริการข้อมูลให้ข้อมูลแก่แอป
4-5 ผู้ใช้คลิกไอคอน UI ของระบบจะขอข้อมูลจาก PermissionManager
และแสดงกล่องโต้ตอบต่อผู้ใช้
รายละเอียดกระบวนการ
- แอปใช้ไมโครโฟนและกล้อง โดยเรียกใช้
AppOpsManager.startOp
stopOp
และ (หรือ)noteOp
ซึ่งจะสร้างระเบียน App-Op ในเซิร์ฟเวอร์ระบบ - UI ของระบบจะคอยฟังหาการดำเนินการของแอปใหม่โดยใช้ตัวรับฟัง
AppOpsManager.OnOpActiveChangedInternalListener
และOnOpNotedListener
เมื่อมีการใช้งานใหม่ (ผ่านการเรียกใช้startOp
หรือnoteOp
) UI ของระบบจะยืนยันว่าการใช้งานนั้นมาจากแอประบบ - หาก UI ของระบบยืนยันการใช้งานแอประบบ และการใช้งานนั้นเกี่ยวข้องกับไมโครโฟน UI ของระบบจะตรวจสอบว่าไมโครโฟนปิดอยู่หรือไม่
- หาก UI ของระบบยืนยันการใช้งานแอปที่ไม่ใช่ระบบ (และสำหรับการใช้งานไมโครโฟน ว่ามีการเลิกปิดเสียงไมโครโฟนแล้ว สำหรับการใช้งานกล้อง ว่ามีการเปิดกล้องแล้ว) ระบบจะแสดงไอคอนที่แสดงถึงการใช้งานดังกล่าว
หาก UI ของระบบได้รับ noteOp
ซึ่งไม่มีระยะเวลา ระบบจะแสดงไอคอนอย่างน้อย 5 วินาที มิเช่นนั้น ไอคอนจะแสดงจนกว่าจะได้รับ stopOp
หรือเป็นเวลา 5 วินาที แล้วแต่ว่าระยะเวลาใดจะนานกว่า ผู้ใช้คลิกไอคอนเพื่อเริ่มความตั้งใจที่จะไปที่ PermissionController
เพื่อเริ่มกล่องโต้ตอบ
PermissionController
จะโหลดการใช้งานไมโครโฟนและกล้องครั้งล่าสุดทั้งหมด โดยจะตรวจสอบว่ารายการใดกำลังทำงานอยู่หรือทำงานภายในกรอบเวลาที่กำหนดโดย UI ของระบบ หากพบรายการที่ตรงกัน ระบบจะแสดงชื่อแอปที่ใช้สิทธิ์และสิทธิ์ที่แอปใช้
การเปลี่ยนแปลงนี้ใน Android 12 ขึ้นไปทำให้แอปบางแอปต้องเปลี่ยนลักษณะการทำงานหรือใช้ลักษณะการทำงานพิเศษ
โทรศัพท์ต้องใช้งานสิทธิ์ (เพื่อพิจารณาสแต็กไมโครโฟนแยกต่างหากที่ใช้ในการโทร) ขณะทํางานร่วมกับแอป Google Search ของ Android (AGSA) และ Google Mobile Services (GMS)