什麼是政策?
Fuchsia Settings API 通訊協定相當靜態,其行為無法 。部分介面提供參數可在 建構時間,但您無法動態調整任何值。
Fuchsia 設定透過政策的概念提供這項功能。政策 在執行階段修改 Fuchsia 設定的行為。既然調整 政策都是透過 FIDL API 修改
凡是含有適當政策的用戶端,都能讀取及寫入 Policy API 政策權限。控管政策的權限屬於獨立權限 因為政策 API 用戶端可能會影響所有 Fuchsia Settings API 的行為 例如設定最低和最高亮度值 這些值。
Policy API 剖析
政策是根據「轉換」定義,用來修改已傳送的要求 Fuchsia Settings API 將新加入的 SDK。轉換的範例包括最小值 。
亮度設定很簡單,而且只需要設定一個亮度值 假設裝置有多個螢幕,且每個螢幕都有各自的螢幕 亮度值。在這種情況下,Policy API 的用戶端必須指定 螢幕會顯示最低亮度限制Policy API 將此 ID 稱為「目標」,並指定設定切面。
Policy API 範例
library fuchsia.settings.policy;
alias PolicyId = uint32;
@discoverable
protocol VolumePolicyController {
GetProperties() -> (struct {
properties vector<Property>:MAX;
});
AddPolicy(struct {
target Target;
parameters PolicyParameters;
}) -> (struct {
policy_id PolicyId;
}) error Error;
RemovePolicy(struct {
policy_id PolicyId;
}) -> () error Error;
};
type Property = table {
1: target Target;
2: available_transforms vector<Transform>:MAX;
3: active_policies vector<Policy>:MAX;
};
type Target = strict union {
1: stream fuchsia.media.AudioRenderUsage;
};
type Transform = strict enum : uint8 {
MAX = 1;
MIN = 2;
};
type Policy = table {
1: policy_id PolicyId;
2: parameters PolicyParameters;
};
type PolicyParameters = strict union {
1: min Volume;
2: max Volume;
};
type Volume = table {
1: volume float32;
};
Policy API 與 Fuchsia Settings API 相似,不過 明顯的差異
新增及移除,而非組合
政策 API 不會提供單一的 Set 方法,而是提供 AddPolicy
的組合
和 RemovePolicy
。Fuchsia Settings API 僅提供 Set
,因為設定
值一律會存在例如一律有預設值
調整亮度。因此客戶不必
「移除」亮度,或是只修改亮度。相較之下
對 Fuchsia Settings API 的輸入動作進行操作,
指定特定目標的有效政策數量,包括無。
從手錶改用新版
Fuchsia Settings API 會透過實作
政策僅提供簡單的GetProperties
方法,提供政策目標相關資訊,包括可能
轉換和有效政策Policy API 用戶端不必回應
變更政策,因此不需要等待。客戶只需要
才能嘗試新增或移除政策。
每項政策新增時都會產生一組專屬 ID,您可以 以便稍後移除若要新增政策,客戶需要提供目標 政策及其規範。
不同的命名空間
Policy API 位於 fuchsia.settings.policy
命名空間,而非
Fuchsia Settings API 所屬的 fuchsia.settings
命名空間。使用
用戶端都必須擁有其他權限
使用 Fuchsia Settings API 時,不會自動授予
使用 Policy API
在磁碟區範例政策介面中,任何用戶端 可對任何目標套用最大數量限制這樣一來 套用到同一個目標,可能來自同一位客戶或來自多個客戶。 所有新增的政策都會視為有效,除非發生邏輯錯誤 (例如 也就是高於上限)。
Policy API 會嘗試遵循所有有效政策,並套用 政策交集在這種情況下,最嚴格的磁碟區限制 為有效政策中的最低音量。如果 系統會移除目前最低的音量限制,並依次下限套用政策 效果。
政策概念定義
以下是政策 API 概念的回顧:
目標:設定可控制部分的專屬 ID。
例如,音量政策中的目標為個別音訊串流
轉換:對設定目標值的運算作業。
政策用戶端可以指定轉換的可自訂參數,例如:最大 音量限制
政策:用戶端指定的轉換及其參數。
每個政策都有可用於識別的全域專屬 ID
資源:政策目標相關資訊的集合。
屬性包含關於指定可轉換之資訊的資訊 以及目前使用的政策