《Android編程權威指南》之Android輔助功能

《Android編程權威指南》第18 章惋嚎,本章會接觸到 TalkBack 輔助工具杠氢,讓視力障礙用戶也能方便地使用 CriminalIntent 應用。

一另伍、TalkBack

Google 開發(fā)的 Android 屏幕閱讀器鼻百,它實際是一個輔助服務,用戶可以操作它摆尝,讀出屏幕上的內容温艇。??

先下載 Android AccessibilitySuite ,由于我的手機沒有安裝 google play堕汞,emmm~ 然后從網頁上直接下載了 apk 文件安裝到手機上勺爱。

TalkBack

然后進入設置 -> 輔助功能 -> 無障礙 -> 其他「已安裝的服務」-> 開啟 Talkback。

開啟

然后就可以聽到手機喋喋不休的聲音了臼朗,提示點到了哪里這類邻寿,然后有視覺障礙用戶就可以根據提示玩轉手機了。雙指按住屏幕三秒以上即可關閉這個功能视哑。

只要啟用了TalkBack绣否,點擊瀏覽(Explore by Touch)功能也會開啟。點擊某UI元素挡毅,設備就會讀出相關信息蒜撮。可以自行嘗試一下的啦。

在物理設備上段磨,需要兩根手指按住屏幕上下滾動才能滾動列表取逾。

TalkBack 有線性瀏覽功能。向右滑屏苹支,輔助焦點移動到下一個UI元素砾隅;向左滑屏,移動到上一個UI元素债蜜。這樣就可以不用盲目的劃屏了晴埂。

二、實現非文字型元素可讀

添加內容描述

像應用中拍照按鈕沒有文字描述寻定,TalkBack 只能默認告訴用戶連擊兩次激活儒洛,這就很雞肋了,用戶并不知道在干嘛狼速,我們可以給像 ImageButton 這類控件添加內容描述琅锻,TalkBack 就有內容可讀了。

內容描述是一段針對控件的文字說明向胡,供 TalkBack 朗讀恼蓬。

Android 提供了給控件添加描述的屬性,可在 xml 中給看控件添加 android:contentDescription 或者是在代碼里給控件設置 someView.setContentDescription("xxx")捷枯,然后 TalkBack 會朗讀給用戶聽了滚秩。

打開 string.xml ,添加描述內容淮捆,中文英文都要添加噢:

    <string name="crime_photo_btn_des">陋習現場拍照按鈕</string>
    <string name="crime_photo_no_image">陋習現場照片(未拍照)</string>
    <string name="crime_photo_image_description">陋習現場照片(已拍照)</string>

    <string name="crime_photo_btn_des">Take photo of crime scene</string>
    <string name="crime_photo_no_image">Crime scene photo</string>
    <string name="crime_photo_image_description">crime scene photo</string>

然后再去給控件添加屬性描述啦郁油。

實現部件可聚焦

像 ImageView 控件默認是沒有聚焦的。有些控件攀痊,比如 Button桐腌,默認是可聚焦的,所以 ImageView 這樣的控件需要手動聚焦苟径。設置 android:focusable 屬性值為 true 或使用監(jiān)聽器都可以讓這些控件可聚焦案站。

        <ImageView
            android:id="@+id/img_crime_photo"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@android:color/darker_gray"
            android:contentDescription="@string/crime_photo_no_image"
            android:cropToPadding="true"
            android:scaleType="centerInside" />

這樣一來,TalkBack 就可以在點到 ImageView 的時候給用戶讀取描述了棘街。

三蟆盐、提升輔助體驗

一些控件,比如 ImageView遭殉,雖會給用戶提供一些信息石挂,但沒有文字性內容。應給這些部件添加內容描述险污。如果某個控件提供不了任何有意義的說明痹愚,更應該把它的內容描述設置為 null富岳,讓 TalkBack 直接忽略它。這樣能提升用戶體驗拯腮。

這里給 ImageView 添加個動態(tài)的提示窖式,有照片提示有照片,無照片提示無照片需要拍照动壤。更新下 updatePhotoView() 函數萝喘。

    private fun updatePhotoView(width: Int, height: Int) {
        if (photoFile.exists()) {
            val bitmap = PictureUtil.getScaledBitmap(photoFile.path, width, height)
            mBinding.imgCrimePhoto.setImageBitmap(bitmap)
            mBinding.imgCrimePhoto.contentDescription = getString(R.string.crime_photo_image_description)
        } else {
            mBinding.imgCrimePhoto.setImageDrawable(null)
            mBinding.imgCrimePhoto.contentDescription = getString(R.string.crime_photo_no_image)
        }
    }

支持輔助功能并不難,作為開發(fā)人員琼懊,開發(fā) app 的時候應該更為友好的為一些障礙人員服務蜒灰,讓 app 更為友善。也算是一種貢獻啦肩碟。

四、深入學習:使用輔助功能掃描器

Google提供了一個輔助功能掃描器凸椿。它能評估應用在輔助功能方面做得如何并給出改進意見削祈。

下載 Accessibility Scanner ,可以選擇網上下載 apk 文件脑漫,再安裝到手機上髓抑,然后開啟給它授權。

1

授權完畢后會看到手機最上層有個圈圈里面有個勾勾优幸,然后打開 CriminalIntent app 吨拍,點下這個勾勾,會看到下圖网杆,點擊允許羹饰。

2

然后就能看到 Accessibility Scanner 給 CriminalIntent 的建議了。

3

要關閉輔助功能掃描器的話碳却,就去設置->輔助功能->無障礙->其他(已安裝的服務->無障礙功能掃描儀队秩,點擊關閉即可。

五昼浦、挑戰(zhàn)練習:優(yōu)化列表項

給手銬圖標添加內容描述馍资,別忘記兼容語言。再為屏幕上的每條記錄都動態(tài)添加一個待讀數據的匯總內容描述关噪。

    <ImageView
        android:id="@+id/img_item_crime_isSolved"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/crime_is_solved"
        android:src="@drawable/ic_solved"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

六鸟蟹、挑戰(zhàn)練習:補全上下文信息

這里主要學習 android:labelFor 屬性,它指明 View 應該用作其他 View 的內容標簽使兔。把一個視圖和別的視圖關聯起來建钥,

比如,為時間按鈕添加個 TextView 顯示時間火诸,將它兩關聯起來锦针,TextView 應該顯示點擊了選擇時間按鈕后的內容。

    <TextView
        android:id="@+id/tv_crime_date_lable"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:labelFor="@+id/btn_crime_date"
        tools:text="Date" />

    <Button
        android:id="@+id/btn_crime_date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:text="Wed Nov 14" />

參考:

https://support.google.com/accessibility/android/answer/7158690?hl=zh-Hans

這都是為障礙用戶提供的無障礙功能,挺不錯的奈搜。

七悉盆、挑戰(zhàn)練習:事件主動通知

研究下 View.announceForAccessibility(...) 函數,讓 TalkBack 用戶在相機關閉時就能掌握照片更新情況馋吗。記得要測試一把焕盟。

八、其他

在安裝了 TalkBack 的時候宏粤,我注意手機設置中的無障礙功能脚翘,里面其實自帶了屏幕朗讀功能,跟 TalkBack 類型绍哎,現在的手機供應商基本上在系統(tǒng)層面就已經內置了功能為一些特殊人群服務的来农。平時我都沒注意到,真的挺贊的崇堰,功能很友好沃于。讓人感受到了一絲溫暖。??

CriminalIntent 項目 Demo 地址:

https://github.com/visiongem/AndroidGuideApp/tree/master/CriminalIntent

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末海诲,一起剝皮案震驚了整個濱河市繁莹,隨后出現的幾起案子,更是在濱河造成了極大的恐慌特幔,老刑警劉巖咨演,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異蚯斯,居然都是意外死亡薄风,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門拍嵌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來村刨,“玉大人,你說我怎么就攤上這事撰茎∏段” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵龄糊,是天一觀的道長逆粹。 經常有香客問我,道長炫惩,這世上最難降的妖魔是什么僻弹? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮他嚷,結果婚禮上蹋绽,老公的妹妹穿的比我還像新娘芭毙。我一直安慰自己,他們只是感情好卸耘,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布退敦。 她就那樣靜靜地躺著,像睡著了一般蚣抗。 火紅的嫁衣襯著肌膚如雪侈百。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天翰铡,我揣著相機與錄音钝域,去河邊找鬼。 笑死锭魔,一個胖子當著我的面吹牛例证,可吹牛的內容都是我干的。 我是一名探鬼主播迷捧,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼战虏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了党涕?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤巡社,失蹤者是張志新(化名)和其女友劉穎膛堤,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體晌该,經...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡肥荔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了朝群。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燕耿。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姜胖,靈堂內的尸體忽然破棺而出誉帅,到底是詐尸還是另有隱情,我是刑警寧澤右莱,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布蚜锨,位于F島的核電站,受9級特大地震影響慢蜓,放射性物質發(fā)生泄漏亚再。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一晨抡、第九天 我趴在偏房一處隱蔽的房頂上張望氛悬。 院中可真熱鬧则剃,春花似錦、人聲如沸如捅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伪朽。三九已至轴咱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烈涮,已是汗流浹背朴肺。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坚洽,地道東北人戈稿。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像讶舰,于是被迫代替她去往敵國和親鞍盗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內容