android 官方说明文档,Android官方文档翻译-Accessibility
標(biāo)簽元素
向用戶提供解釋每個可互動元素的意義和目的有用且形象的標(biāo)簽是非常重要的。這些標(biāo)簽允許屏幕閱讀者(比如 TalkBack )正確向用戶解釋每個控制器的功能。
你可以使用一下兩個方法提供元素的標(biāo)簽:
當(dāng)展示在 Activity 的整個生命周期中都不會改變樣式的靜態(tài)元素時,在 layout 資源文件中添加一個 xml 元素。
當(dāng)展示在 Activity 生命周期中會改變樣式的動態(tài)元素時,在改變元素樣式的動態(tài)邏輯中設(shè)置元素標(biāo)簽。
適用于元素標(biāo)簽的實(shí)際屬性和方法取決于元素的類型:
圖形元素,比如 ImageView , ImageButton ,使用 android:contentDescription XML 屬性設(shè)置靜態(tài)元素 或 setContentDescription() 方法設(shè)置動態(tài)元素。
對于簡單裝飾的圖形元素,設(shè)置各自的 android:contentDescription XML 屬性為 “@null”。如果你的應(yīng)用只支持 Android 4.1 及以上的設(shè)備,你可以設(shè)置 Android:isImportantForAccessibility XML 元素為 “no”。
可編輯元素,比如 EditText , 使用hint XML屬性設(shè)置靜態(tài)元素或 setHint() 方法設(shè)置動態(tài)屬性。
如果你的應(yīng)用在 Android 4.2 及以上的設(shè)備上安裝,對于充當(dāng)正文標(biāo)簽的 View 對象,使用 android:labelFor 屬性。
Accessibility 服務(wù)自動捕獲 TextView 中的文字,所以你通常不需要標(biāo)記這些元素
以下示例中,提供分享功能的靜態(tài) ImageButton 對象使用一個 “share” 標(biāo)簽:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:contentDescription="@string/share"
android:src="@drawable/ic_share" />
許多 Accessibility 服務(wù),比如 TalkBack , BrailleBack ,在聲明標(biāo)簽后自動聲明元素類型,所以你不應(yīng)改在標(biāo)簽中包括元素類型。
以下例子展示了如何在 Activity 中更新一個顯示播放或暫停按鈕的動態(tài)的 ImageView 對象:
ImageView playPauseImageView = new ImageView();
boolean mediaCurrentlyPlaying = true;
...
private void updateImageButton() {
if (mediaCurrentlyPlaying) {
playPauseImageView.setImageResource(R.drawable.ic_pause);
// In res/values/strings.xml, "pause" contains a value of "Pause".
playPauseImageView.setContentDescription(getString(R.string.pause));
} else {
playPauseImageView.setImageResource(R.drawable.ic_play);
// In res/values/strings.xml, "play" contains a value of "Play".
playPauseImageView.setContentDescription(getString(R.string.play));
}
}
翻譯到這里發(fā)現(xiàn)并沒有什么用==以下翻譯內(nèi)容才是我想要的
建立一個 Accessibility Service
Manifest 聲明和權(quán)限
提供 Accessibility Services 的應(yīng)用必須在應(yīng)用的 mainfest 文件中包括制定的聲明告訴系統(tǒng)這是個 Accessibility Services 。
Accessibility Service 聲明
為了適配 Android 4.1 及以上設(shè)備, mainfest 文件必須通過添加 BIND_ACCESSIBILITY_SERVICE 權(quán)限包含一個 Accessibility Services 的意圖過濾器保證只有系統(tǒng)可以綁定。
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
android:label="@string/accessibility_service_label">
這些聲明在 Android 1.6 及以上都需要。
Accessibility Service 配置
Accessibility Services 必須提供指定服務(wù)處理處理事件的類型和服務(wù)額外信息的配置。這個配置被包含在 AccessibilityServiceInfo 類中。你的服務(wù)可以在運(yùn)行時通過生成實(shí)例類并使用 setServiceInfo() 配置信息。但是不是所有的配置選項(xiàng)都可以通過這個方法配置。
Android 4.0 開始,你可以個通過 元素引用一個可以設(shè)置服務(wù)全部選項(xiàng)的配置文件:
...
android:name="android.accessibilityservice"
android:resource="@xml/accessibility_service_config" />
xml :
android:description="@string/accessibility_service_description"
android:packageNames="com.example.android.apis"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"
/>
注冊 Accessibility 事件
服務(wù)配置參數(shù)一個最重要的功能就是制定你的服務(wù)可以處理何種事件。制定服務(wù)信息可以是服務(wù)相互合作,并允許開發(fā)者靈活的制定應(yīng)用和事件類型:
包名: 指定服務(wù)想要處理的應(yīng)用包名。如果這個參數(shù)被省略,你的服務(wù)將被認(rèn)為處理所有應(yīng)用的事件。這個參數(shù)可以通過配置文件的 android:packageNames 設(shè)置以逗號分隔的列表,或者使用 AccessibilityServiceInfo.packagenames 設(shè)置。
事件類型:指定服務(wù)處理事件的類型。這個參數(shù)可以通過配置文件中的 android:accessibilityEventTypes 設(shè)置以 | 為分隔的list ,或者使用 AccessibilityServiceInfo.eventTypes 設(shè)置。
Accessibility Services 方法
onServiceConnected() - (可選) 當(dāng)系統(tǒng)連接服務(wù)成功時回調(diào)。使用這個方法完成服務(wù)的一次性操作,包括連接用戶反饋系統(tǒng)服務(wù),比如音頻管理器或者震動器。如果你想在運(yùn)行時修改服務(wù)配置或者進(jìn)行調(diào)整,在這個地方使用 serServiceInfo() 方法。
onAccessibilityEvent() -(必選)當(dāng)服務(wù)檢測到一個 Accessibility 事件滿足了之前你設(shè)置的服務(wù)類型,系統(tǒng)將會回調(diào)此方法。比如,當(dāng)用戶點(diǎn)擊一個按鈕或者聚焦在 UI 界面時。當(dāng)這發(fā)生時,系統(tǒng)調(diào)用這個方法,通過 AccessibilityEvent() 向用戶提供反饋。這個方法在整個生命周期中可以被多次調(diào)用。
onInterrupt() -(必選) 當(dāng)系統(tǒng)想要中斷服務(wù)提供的反饋,通常時作為用戶的操作的回應(yīng)比如移動焦點(diǎn)時調(diào)用這個方法。這個方法將在生命周期期間多次調(diào)用。
onUnbind() - (可選) 系統(tǒng)將要關(guān)閉服務(wù)時調(diào)用方法。使用這個方法做一些關(guān)閉程序,包括釋放用戶反饋系統(tǒng)服務(wù),比如音頻管理器或者振動器。
獲取事件細(xì)節(jié)
AccessibilityEvent.getRecordCount() and getRecord(int) - 這些方法允許你取回 AccessibilityRecord 對象的 set 列表。
AccessibilityEvent.getSource() - 這個方法返回一個 AccessibilityNodeInfo 對象。這個對象可以獲得 View 的布局層次(父布局和子布局)。因此,服務(wù)必須通過在配置 XML 文件中添加 canRetrieveWindowContent 屬性為 true 來獲取權(quán)限。否則調(diào)用失敗。
為用戶采取操作
監(jiān)聽手勢
在Android 4.1 以后可以監(jiān)聽指定手勢。這個特性需要設(shè)置 AccessibilityServiceInfo 的flags 為 FLAG_REQUEST_TOUCH_EXPLORATION_MODE:
public class MyAccessibilityService extends AccessibilityService {
@Override
public void onCreate() {
getServiceInfo().flags = AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE;
}
...
}
使用可訪問行動
public class MyAccessibilityService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
// get the source node of the event
AccessibilityNodeInfo nodeInfo = event.getSource();
// Use the event and node information to determine
// what action to take
// take action on behalf of the user
nodeInfo.performAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD);
// recycle the nodeInfo object
nodeInfo.recycle();
}
...
}
performAction() 方法允許你在應(yīng)用中采取行動。如果需要采取一個全局行動,比如返回值 Home 屏,按下返回按鈕,打開通知屏或最近應(yīng)用列表,使用 performGlobalAction() 方法。
使用焦點(diǎn)類型
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的android 官方说明文档,Android官方文档翻译-Accessibility的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实战 Flutter 象棋从零到上架
- 下一篇: android控件使用大全,Androi