隱私指標

Android 6 及更高版本中的運行時權限讓用戶可以控制何時允許錄製來自設備麥克風的音頻或來自設備攝像頭的視頻。在應用程序可以錄製之前,用戶必須通過系統顯示的對話框授予或拒絕它的權限。

機器人12通過當一個應用程序使用通過所述攝像機和麥克風的私人數據源顯示指標為用戶提供了透明度應用-OP權限。 App-ops 記錄對運行時權限保護 API 的訪問。

App-op 跟踪活動狀態和單個 API 調用的數量,並與 Android 12 中的麥克風和攝像頭指示器進行交互,以在應用訪問其設備上的音頻和攝像頭數據時向用戶顯示。當用戶單擊麥克風或攝像頭指示器時,他們會看到哪些應用訪問了他們的數據。此功能對所有 OEM 都是強制性的。

指標可見性要求

以下是對運行 Android 12 或更高版本的設備上的麥克風和攝像頭指示燈的要求:

  • 指示器必須出現在狀態欄中,並保留最高的視覺優先級(例如,位於右上角的最右側位置)。
  • 指示器必須始終位於同一位置,並且在啟動時不得被應用程序阻止。
  • 這兩個指標必須是彩色的綠色(或綠色的變化)。
  • 點擊一個或兩個指標必須使申請歸屬啟示通知執行以下操作:
    • 顯示正在使用麥克風和(或)攝像頭的應用程序的名稱
    • 顯示最近 15 秒內使用麥克風和(或)攝像頭的應用程序名稱
    • 需要用戶在設置應用程序的權限頁面

用途和特點

在 Android 12 中,UI 會區分正在運行的使用情況和最近的使用情況。如果使用被系統標記為“正在運行”或不到 5 秒,則它們被視為“活動”。

  • 每次應用程序具有持續的用戶敏感麥克風或相機訪問權限時,都會顯示狀態欄圖標。
  • 用戶可以單擊這些圖標並查看哪些應用程序正在訪問麥克風、攝像頭或兩者。

Microphone and camera in-use indicators showing that access is active

圖1.麥克風和照相機中使用的指標表示活動接入(右上角)

只要指標顯示,訪問就被認為是活動的。首先顯示一個圖標,然後過渡到一個點,該點一直存在,直到應用程序被關閉或關閉。

當用戶點擊指示器時,會展開一個對話框,顯示應用程序當前正在使用相機、麥克風或兩者。

Indicators for both active and recent access, and whether the access was from camera or microphone

圖2.活動和最近訪問指標

當數據已在過去的5秒一個正在運行的應用被訪問圖2中示出了活性的接入指示的圖像。

最近的訪問指標顯示應用程序在前 15 秒內訪問了數據,但該應用程序未處於活動狀態。所有活動的應用程序都顯示在對話框中,但只有一個應用程序顯示為最近訪問的來源,即使在之前的 15 秒時間範圍內有 1 個以上的應用程序訪問了數據。訪問視圖保持凍結狀態,直到用戶關閉通知對話框。

交付和啟用

所述PermissionManager類提供來填充對話,它駐留在系統界面的方法。

  • 系統UI反應設備配置開關: privacy/mic_camera_indicators_enabled
  • 切換是必要的,因為有兩個單獨的交付工具,按以下順序:
    1. 遞送。
    2. 使能夠。
  • 系統UI不能崩潰,如果該方法PermissionManager不能提供所需的數據。

工藝流程

權限指示器功能包含三個主要部分:

  • 應用程序
  • 指標(由 SystemUI 處理)
  • 一種確定哪些應用程序正在使用數據的方法

所述PermissionController提供機制,以確定哪些應用正在使用的數據。 SystemUI 使用私有數據偵聽應用程序。 SystemUI 在頂部導航欄中顯示一個與所使用權限相對應的圖標。所述PermissionController關於當用戶點擊圖標用途顯示數據。

Process flow for Permission Indicator functions

圖3.系統部件和(UI)的過渡流

圖3中的編號的轉換描述如下:

1-一個應用程序從系統請求私人數據。

2-系統檢查權限。如果權限允許,系統會通知數據提供者,並在app-ops中記錄使用情況

3-數據提供給數據提供給應用程序。

4-5用戶點擊的圖標。系統UI從請求數據PermissionManager並提出了對話給用戶。

流程詳情

  1. 應用程序使用麥克風和相機,主叫AppOpsManager.startOpstopOp ,和(或) noteOp 。這會在系統服務器中創建 app-op 記錄。
  2. 系統UI監聽使用新的應用程序-OPS AppOpsManager.OnOpActiveChangedInternalListenerOnOpNotedListener聽眾。當一個新的使用進來(通過要么調用startOpnoteOp ),系統UI驗證的使用是由系統的應用程序。
  3. 如果系統 UI 驗證系統應用程序使用情況,並且使用情況是麥克風,則係統 UI 會檢查麥克風是否已靜音。
  4. 如果系統 UI 驗證非系統應用程序使用情況(並且,對於麥克風使用,麥克風未靜音;對於相機使用,相機已打開),它會顯示一個反映此類使用情況的圖標。

如果系統界面接收noteOp ,不具有持續時間,它示出了用於至少5秒的圖標。否則,該圖標顯示任一,直到它接收一個stopOp ,或5秒,以較長者為準。點擊一個圖標的用戶發起的意圖是去到PermissionController開始對話。

PermissionController加載所有近期的麥克風和攝像頭使用。它會檢查其中是否有任何當前正在運行,或者是否在系統 UI 設置的時間範圍內運行。如果找到匹配項,它會顯示使用該權限的應用程序的名稱以及該應用程序使用的權限。

由於 Android 12 及更高版本中的這一更改,某些應用必須更改其行為或實施特殊行為。

電話必須實現權限使用(考慮電話中使用的單獨麥克風堆棧),同時與 Android 谷歌搜索應用程序 (AGSA) 和谷歌移動服務 (GMS) 一起使用。