สิทธิ์รันไทม์ใน Android 6 ขึ้นไปช่วยให้ผู้ใช้ควบคุมได้ว่าจะอนุญาตให้บันทึกเสียงจากไมโครโฟนของอุปกรณ์หรือวิดีโอจากกล้องของอุปกรณ์เมื่อใด ก่อนที่แอปจะบันทึกได้ ผู้ใช้ต้องให้หรือปฏิเสธการอนุญาตผ่านกล่องโต้ตอบที่ระบบนำเสนอ
Android 12 ให้ความโปร่งใสแก่ผู้ใช้โดยการแสดงตัวบ่งชี้เมื่อแอปใช้แหล่งข้อมูล ส่วนตัว ผ่านกล้องและ การอนุญาตแอป ไมโครโฟน บันทึก App-ops เข้าถึง 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- ระบบตรวจสอบการอนุญาต หากอนุญาต ระบบจะแจ้งผู้ให้บริการข้อมูลและบันทึกการใช้งานในแอพ-ops
3- ผู้ให้บริการข้อมูลให้ข้อมูลแก่แอป
4-5 ผู้ใช้คลิกที่ไอคอน UI ของระบบร้องขอข้อมูลจาก PermissionManager
และแสดงกล่องโต้ตอบต่อผู้ใช้
รายละเอียดกระบวนการ
- แอปใช้ไมโครโฟนและกล้องเรียก
AppOpsManager.startOp
,stopOp
และ (หรือ)noteOp
สิ่งนี้จะสร้างเรคคอร์ด app-op ในเซิร์ฟเวอร์ระบบ - UI ของระบบคอยฟัง App-ops ใหม่โดยใช้ตัวฟัง
AppOpsManager.OnOpActiveChangedInternalListener
และOnOpNotedListener
เมื่อมีการใช้งานใหม่เข้ามา (ผ่านการเรียกstartOp
หรือnoteOp
) System UI จะตรวจสอบว่าการใช้งานนั้นมาจากแอประบบ - หาก System UI ตรวจสอบการใช้งานแอประบบ และหากเป็นการใช้งานสำหรับไมโครโฟน System UI จะตรวจสอบว่าไมโครโฟนปิดเสียงอยู่หรือไม่
- หาก UI ของระบบตรวจสอบการใช้งานแอปที่ไม่ใช่ของระบบ (และสำหรับการใช้ไมโครโฟน ไมโครโฟนถูกเปิดเสียง สำหรับการใช้งานกล้อง ว่ากล้องเปิดอยู่) จะแสดงไอคอนที่แสดงถึงการใช้งานดังกล่าว
หาก System UI ได้รับ noteOp
ซึ่งไม่มีระยะเวลา มันจะแสดงไอคอนอย่างน้อย 5 วินาที มิฉะนั้น ไอคอนจะแสดงขึ้นจนกว่าจะได้รับ stopOp
หรือเป็นเวลา 5 วินาที แล้วแต่ว่าเวลาใดจะนานกว่า ผู้ใช้ที่คลิกไอคอนจะเริ่มต้นความตั้งใจที่จะไปที่ PermissionController
เพื่อเริ่มไดอะล็อก
PermissionController
โหลดการใช้งานล่าสุดทั้งหมดสำหรับไมโครโฟนและกล้อง จะตรวจสอบว่าสิ่งใดที่กำลังทำงานอยู่หรือกำลังทำงานภายในกรอบเวลาที่กำหนดโดย UI ของระบบ หากพบรายการที่ตรงกัน จะแสดงชื่อแอปที่ใช้สิทธิ์และสิทธิ์ที่แอปใช้
เนื่องจากการเปลี่ยนแปลงนี้ใน Android 12 ขึ้นไป บางแอปจึงต้องเปลี่ยนลักษณะการทำงานหรือใช้ลักษณะการทำงานพิเศษ
โทรศัพท์ต้องใช้การอนุญาต (เพื่อบัญชีสำหรับกองไมโครโฟนแยกต่างหากที่ใช้ในการโทร) ในขณะที่ทำงานกับแอป Android Google Search (AGSA) และ Google Mobile Services (GMS)