總覽
本文件會說明 語意 API 和相關基礎架構, Fuchsia 的無障礙功能設計。是無障礙管理員的一部分 會收集 Fuchsia 用戶端檢視畫面中的 UI 元素相關資訊, 無障礙服務 (例如螢幕閱讀器) 提供的資訊。
背景
連結
- Flutter 語意說明文件
檢視 - 對應特定區域的場景視圖 裝置上顯示的程式碼由 UI 架構繪製。
UI 架構:本文目的為「UI 架構」是東西 可繪製使用者可見的 Fuchsia 檢視畫面通常是 Flutter Chromium 檢視畫面。
設計
語意樹
語意樹是對應 UI 元素的節點非循環圖。於 語意樹代表目前可用的 第一種是使用無代碼解決方案 AutoML 透過使用者介面建立機器學習模型這是無障礙架構中廣泛使用的概念,例如 Chrome、Windows、iOS、Flutter 等。
Fuchsia 的 UI 可由多種 View 檢視畫面組成, 無障礙架構會追蹤個別檢視區塊的語意樹狀結構 。下圖顯示包含多個語意樹狀結構的 UI 範例。
Flutter 和 Chromium 在內部都能產生語意樹 用於轉譯的使用者介面Fuchsia 無障礙功能 Framework 會提供 API 至執行階段,讓檢視畫面 就能將語意樹狀結構公開給 OS
語意 API
您可以在 fuchsia.accessibility.semantics 中取得 語意 API。 這個 API 可讓 UI 架構向無障礙功能管理工具註冊,以便 提供語意更新,然後呼叫 UpdateSemanticNodes DeleteSemanticNodes 和 CommitUpdates 方法,傳送其相關資訊 語意
語意樹狀結構更新順序
由於語意樹可能相當龐大 (例如在複雜網站上),因此 語意樹狀結構中的變更可能會由 UI 拆分為多個呼叫 這個架構的重點在於無障礙管理員會儲存這些更新,直到 UI 架構為止 呼叫「Commit」然後變更本機樹狀結構並執行驗證。這個 可讓無障礙管理員保持一致 date) 就能查看可在本機存取的語意。
UI 架構合約
凡是在 Fuchsia 上啟動資料檢視的使用者,都需要註冊 SemanticsManager 通訊協定,並提供 SemanticListener。一般而言,資料檢視擁有者 使用 Flutter 或 chromium 等 UI 架構建立檢視畫面 架構的 Fuchsia 整合負責實作 Fuchsia 專屬 詳細資料。架構整合還提供 ViewRef,這是核心物件 ,專門用於識別檢視區塊。
SemanticsManager 通訊協定如下所示:
[Discoverable]
protocol SemanticsManager {
RegisterViewForSemantics(fuchsia.ui.views.ViewRef view_ref,
SemanticListener listener,
request<SemanticTree> semantic_tree_request);
};
語意事件監聽器可讓無障礙功能管理工具啟用或停用 更新語意,並執行命中測試等動作。實務上 由 Flutter 和 Chromium UI 架構整合處理 美景。
實作 UI 架構時,應維持此 FIDL 連線, 整個檢視畫面的生命週期 (即使語意已停用)。
如果 UI 架構發出無效更新,無障礙管理員將 關閉管道。如未提交更新,系統會將其視為無效 由形成完善的迴旋樹包括參照 子節點不存在或缺少根節點。
UI 架構負責重新建立該資料的註冊 (如果錯誤可以復原) 或當機/重新啟動 (如果無法復原的話)。關注 ,以免重複嘗試 並連接無效的語意樹狀結構
命中測試
命中測試是指將畫面上某個位置轉譯成特定網址的過程 語意節點這個架構必須解決兩個 問題
- 找到與位置對應的檢視
- 找到位於該位置的檢視區塊內的節點
無障礙管理員會從風景區接收指標事件 (詳情請參閱 無障礙功能輸入說明文件)。每個指標都有註解 事件的 KOID (核心物件 ID) 與 viewRef 相關聯 內含的檢視畫面這可讓螢幕閱讀器將觸控手勢對應至 並轉送到正確的 SemanticListener 命中測試命中測試動作的說明如下。
語意事件監聽器動作
UI 架構提供的語意事件監聽器 在用戶端檢視畫面中執行動作的架構。這些元件可提供 納入資訊架構 (例如使用命中測試 使用者輕觸的節點),或是在用戶端檢視畫面進行變更 ( 例如使用預設動作點選按鈕)。以下是 支援的事件監聽器動作 (請參閱「Action」 列舉):
- 命中測試 - 使用檢視 - 本地 (x,y) 座標的架構查詢,以及 用戶端檢視畫面會傳回該位置的節點 ID,以及 (選用) 從樹狀結構的根層級到該節點的路徑。
- 預設動作 - 使用節點 ID 做為輸入值。輕觸這邏輯 或是點選按鈕
- 顯示在螢幕上 - 使用節點 ID 做為輸入內容。捲動 UI 以顯示 位於檢視畫面中用戶端檢視畫面負責 執行這項工作
- 遞增/遞減 - 調整滑桿目前的值。
樹狀導覽與訂購
無障礙架構提供用來瀏覽檢視區塊的基本公用程式 尋找語意樹狀結構中的下一個或上一個節點。如此一來 透過 UI 進行線性導覽導覽動作是 提供深度優先課程
呼叫端可能會為下一個/上一個函式提供篩選函式, 疊代所有特定類型的節點 (例如:標頭、連結、 等)。這也可用來略過非「可定義」的節點根據 對指定指標做貢獻