Fuchsia 無障礙功能架構

總覽

每個新式作業系統都會實作不同的架構來支援輔助技術 (例如 Windows 上的 IAccessible、OS X 上的 NSAccessibility、Linux 上的 ATK、Android 的 AccessibilityNodeInfo)。螢幕閱讀器等特定無障礙功能是以這些架構為基礎建構而成。這些架構通常負責透過語意樹狀結構瞭解特定時間的畫面,並提供 API 中介裝置的輸入和輸出內容,讓無障礙服務可以實作不同的 UI 導覽模式。您可以參閱 Chromium 公開文件,進一步瞭解相關資訊。

無障礙功能的範例包括:螢幕閱讀器、切換控制功能、點字裝置、放大、高對比模式、色彩校正、減少動態效果、隱藏式輔助字幕等。

Fuchsia 的無障礙架構主要是在無障礙功能管理工具中實作。且支援下列無障礙功能:

無障礙管理員

無障礙管理員負責以下工作:

  • 管理無障礙設定
  • 實作語意 API
  • 整合 Scenic (系列圖像轉譯器和觸控處理常式) 可修改顯示畫面,以支援放大等無障礙功能
  • 瞭解美景畫面和客戶 (例如 Flutter) 之間的關係
  • 視無障礙服務的需求,中介輸入和輸出 (例如觸控、音訊)
  • 中介存取無障礙功能所需的系統服務 (例如 TTS) 存取權

無障礙管理員是 Fuchsia 平台的一部分,可在任何有螢幕的 Fachsia 產品上執行。它與 Scenic 緊密整合。

無障礙管理員程式碼位於 /src/ui/a11y/bin/a11y_manager/

設定

您可以透過 SetUI 管理無障礙設定,它負責將設定儲存在本機,並在設定變更時通知無障礙管理員。您可以透過 fuchsia.settings.accessibility API 執行上述作業。無障礙管理員會負責通知其他系統元件發生變更 (例如風景顯示、flutter/chromium 執行階段)。

詳情請參閱無障礙設定

語意樹狀資料

Fuchsia UI 由檢視畫面 (由「風景」繪製) 組成,檢視畫面位於檢視畫面樹狀結構中。每個檢視畫面都有一個負責檢視畫面內容的用戶端,通常是 Flutter 或 Chromium。每個用戶端都知道如何提供與使用者目前檢視或互動元素相對應的語意樹狀結構。這通常是簡化版目前圖形算繪樹狀結構的簡化版本,其中包含的元素在語意上具有實質意義,但會排除緩衝區空間和定界框等項目。

您可以在 fuchsia.accessibility.semantics 中取得這個 API。這個 API 可讓執行階段向 Accessibility Manager 註冊,提供語意更新,然後呼叫 Update、Delete 和 Commit 方法,傳送語意相關資訊。Accessibility Manager 負責實作語意 API 的伺服器端。

詳情請參閱「無障礙功能語意」一文。

無障礙檢視畫面

無障礙管理員在 Fuchsia 檢視畫面樹狀結構中擁有檢視畫面。此檢視畫面可讓無障礙工具攔截手勢、變更圖形、插入輸入及參與焦點變更。

詳情請參閱「無障礙功能檢視」。

輸入和輸出

觸控和鍵盤事件

無障礙功能管理工具會在啟用相關無障礙功能的情況下,以精美的方式攔截使用者輸入事件,並實作手勢空間來處理使用者手勢。

詳情請參閱「無障礙輸入」。

焦點管理

無障礙功能管理員採用「無障礙焦點」的概念,或是目前有效的語意節點。無障礙管理工具是節點具有無障礙焦點的可靠資料來源。詳情請參閱「無障礙焦點」。

重點特色

無障礙功能管理工具會配合檢視畫面,在目前聚焦的節點周圍繪製「醒目顯示」。詳情請參閱「無障礙功能重點」。

文字轉語音

無障礙管理員將為無障礙服務提供 API,用於觸發語音事件。

詳情請參閱「TTS」一文。

測試無障礙架構

無障礙功能測試位於 src/ui/a11y/lib/testing/