เครื่องมือวัดความเป็นส่วนตัว

สิทธิ์รันไทม์ใน Android 6 ขึ้นไปช่วยให้ผู้ใช้ควบคุมได้ว่าจะอนุญาตให้บันทึกเสียงจากไมโครโฟนของอุปกรณ์หรือวิดีโอจากกล้องของอุปกรณ์เมื่อใด ก่อนที่แอปจะบันทึกได้ ผู้ใช้ต้องให้หรือปฏิเสธ สิทธิ์ผ่านกล่องโต้ตอบที่ระบบแสดง

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

App-op จะติดตามทั้งสถานะกิจกรรมและจํานวนการเรียก API แต่ละรายการ และโต้ตอบกับสัญญาณบอกสถานะไมโครโฟนและกล้องถ่ายรูปใน Android 12 เพื่อแสดงให้ผู้ใช้เห็นเมื่อแอปเข้าถึงข้อมูลเสียงและกล้องถ่ายรูปในอุปกรณ์ เมื่อผู้ใช้คลิกสัญญาณบอกสถานะไมโครโฟนหรือกล้อง ผู้ใช้จะเห็นว่าแอปใด เข้าถึงข้อมูลของตน ฟีเจอร์นี้เป็นฟีเจอร์ที่จำเป็นสำหรับ OEM ทุกราย

ข้อกำหนดในการแสดงตัวบ่งชี้

ข้อกำหนดสำหรับตัวบ่งชี้ไมโครโฟนและกล้องในอุปกรณ์ที่ใช้ Android 12 ขึ้นไปมีดังนี้

  • โดยตัวบ่งชี้ต้องปรากฏในแถบสถานะและคงลำดับความสำคัญสูงสุดของภาพ (เช่น อยู่ที่ตำแหน่งขวาสุดในมุมขวาบน)
  • โดยตัวบ่งชี้ต้องอยู่ในตำแหน่งเดียวกันอย่างสม่ำเสมอ และแอปต้องไม่บล็อกตัวบ่งชี้เมื่อเปิดตัว
  • โดยตัวบ่งชี้ทั้ง 2 รายการต้องเป็นสีเขียว (หรือสีเขียวเฉดต่างๆ)
  • การคลิกตัวบ่งชี้อย่างน้อย 1 รายการต้องแสดงการแจ้งเตือนความสามารถในการระบุแหล่งที่มาของแอปที่ทำสิ่งต่อไปนี้
    • แสดงชื่อแอปที่ใช้ไมโครโฟนและ (หรือ) กล้อง
    • แสดงชื่อแอปที่ใช้ไมโครโฟนและ (หรือ) กล้องภายใน 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 ซึ่งจะสร้างบันทึกการดำเนินการของแอปในเซิร์ฟเวอร์ระบบ
  2. UI ของระบบจะรอรับการดำเนินการของแอปใหม่โดยใช้เครื่องมือฟัง AppOpsManager.OnOpActiveChangedInternalListener และ OnOpNotedListener เมื่อมีการใช้งานใหม่ (ผ่านการเรียกใช้ startOp หรือ noteOp) UI ของระบบจะยืนยันว่าการใช้งานนั้นมาจากแอปของระบบ
  3. หาก UI ของระบบยืนยันการใช้งานแอปของระบบ และหากการใช้งานนั้นเป็นของ ไมโครโฟน UI ของระบบจะตรวจสอบว่าไมโครโฟนปิดเสียงอยู่หรือไม่
  4. หาก UI ของระบบยืนยันการใช้งานแอปที่ไม่ใช่ระบบ (และสำหรับการใช้งานไมโครโฟน ว่าไมโครโฟนไม่ได้ปิดเสียงอยู่ สำหรับการใช้งานกล้องว่ากล้องเปิดอยู่) ระบบจะแสดงไอคอนที่แสดงถึงการใช้งานดังกล่าว

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

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

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

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