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