ตัวบ่งชี้ความเป็นส่วนตัว

สิทธิ์รันไทม์ใน 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 คันแยกกัน ดังนี้
    1. ส่ง
    2. เปิดใช้
  • UI ของระบบต้องไม่ขัดข้องหากเมธอดใน PermissionManager ให้ข้อมูลที่จำเป็นไม่ได้

ขั้นตอนกระบวนการ

ฟังก์ชันการทำงานของตัวบ่งชี้สิทธิ์ประกอบด้วย 3 ส่วนหลักๆ ดังนี้

  • แอป
  • ตัวบ่งชี้ (จัดการโดย SystemUI)
  • วิธีระบุว่าแอปใดใช้ข้อมูล

PermissionController มีกลไกในการระบุแอปที่ใช้ข้อมูล SystemUI จะคอยฟังหาแอปที่ใช้ข้อมูลส่วนตัว SystemUI จะแสดงไอคอนในแถบนำทางด้านบนซึ่งสอดคล้องกับสิทธิ์ที่ใช้ PermissionController จะแสดงข้อมูลเกี่ยวกับการใช้งานเมื่อผู้ใช้คลิกไอคอน

ขั้นตอนการทำงานสำหรับฟังก์ชันตัวบ่งชี้สิทธิ์

รูปที่ 3 คอมโพเนนต์ของระบบและขั้นตอนการเปลี่ยน (UI)

การเปลี่ยนหมายเลขในรูปที่ 3 มีคำอธิบายดังนี้

1- แอปขอข้อมูลส่วนตัวจากระบบ

2- ระบบจะตรวจสอบสิทธิ์ หากมีการอนุญาตสิทธิ์ ระบบจะแจ้งให้ผู้ให้บริการข้อมูลทราบและบันทึกการใช้งานไว้ใน App Ops

3- ผู้ให้บริการข้อมูลให้ข้อมูลแก่แอป

4-5 ผู้ใช้คลิกไอคอน UI ของระบบจะขอข้อมูลจาก PermissionManager และแสดงกล่องโต้ตอบต่อผู้ใช้

รายละเอียดกระบวนการ

  1. แอปใช้ไมโครโฟนและกล้อง โดยเรียกใช้AppOpsManager.startOp stopOp และ (หรือ) noteOp ซึ่งจะสร้างระเบียน App-Op ในเซิร์ฟเวอร์ระบบ
  2. UI ของระบบจะคอยฟังหาการดำเนินการของแอปใหม่โดยใช้ตัวรับฟัง AppOpsManager.OnOpActiveChangedInternalListener และ OnOpNotedListener เมื่อมีการใช้งานใหม่ (ผ่านการเรียกใช้ startOp หรือ noteOp) UI ของระบบจะยืนยันว่าการใช้งานนั้นมาจากแอประบบ
  3. หาก UI ของระบบยืนยันการใช้งานแอประบบ และการใช้งานนั้นเกี่ยวข้องกับไมโครโฟน UI ของระบบจะตรวจสอบว่าไมโครโฟนปิดอยู่หรือไม่
  4. หาก UI ของระบบยืนยันการใช้งานแอปที่ไม่ใช่ระบบ (และสำหรับการใช้งานไมโครโฟน ว่ามีการเลิกปิดเสียงไมโครโฟนแล้ว สำหรับการใช้งานกล้อง ว่ามีการเปิดกล้องแล้ว) ระบบจะแสดงไอคอนที่แสดงถึงการใช้งานดังกล่าว

หาก UI ของระบบได้รับ noteOp ซึ่งไม่มีระยะเวลา ระบบจะแสดงไอคอนอย่างน้อย 5 วินาที มิเช่นนั้น ไอคอนจะแสดงจนกว่าจะได้รับ stopOp หรือเป็นเวลา 5 วินาที แล้วแต่ว่าระยะเวลาใดจะนานกว่า ผู้ใช้คลิกไอคอนเพื่อเริ่มความตั้งใจที่จะไปที่ PermissionController เพื่อเริ่มกล่องโต้ตอบ

PermissionController จะโหลดการใช้งานไมโครโฟนและกล้องครั้งล่าสุดทั้งหมด โดยจะตรวจสอบว่ารายการใดกำลังทำงานอยู่หรือทำงานภายในกรอบเวลาที่กำหนดโดย UI ของระบบ หากพบรายการที่ตรงกัน ระบบจะแสดงชื่อแอปที่ใช้สิทธิ์และสิทธิ์ที่แอปใช้

การเปลี่ยนแปลงนี้ใน Android 12 ขึ้นไปทำให้แอปบางแอปต้องเปลี่ยนลักษณะการทำงานหรือใช้ลักษณะการทำงานพิเศษ

โทรศัพท์ต้องใช้งานสิทธิ์ (เพื่อพิจารณาสแต็กไมโครโฟนแยกต่างหากที่ใช้ในการโทร) ขณะทํางานร่วมกับแอป Google Search ของ Android (AGSA) และ Google Mobile Services (GMS)