我想創建一個Android應用程序,將「掃描」等applications'layouts,並找出是否有按鈕等 一些應用程序,例如WhatsApp,不允許第三部分移動到應用程序,所以我雖然認爲使用可訪問性可能是解決方案。 現在的問題是,我從來沒有用過輔助,所以你有人能請告訴我如何「掃描」應用程序的佈局找到按鈕? 非常感謝使用輔助
Q
使用輔助
0
A
回答
0
什麼你要找的是一項輔助服務。配置無障礙服務有點複雜。我已成立的無障礙樣板代碼庫,設置了該記錄的節點層次結構,以logcat的一個AccessibilityService,並具有默認項目設置活動設置爲它設置的活動。這裏有一些亮點,因爲我不喜歡只發布github回購作爲答案。請注意,我使用了很多自己的庫。 CLog是一個日誌庫,AndroidAccessibilityUtils通過一些常用的實用功能來包裝節點信息。你可以找到在底部的GitHub庫中的build.gradle文件中的依賴引用。以下是一些代碼亮點。
你manifest.xml文件將是從活動顯著不同,應該包含這樣一個條目在您的應用程序元素:
<application .... >
...
<service
android:name="com.moba11y.basicaccessibilityservice.BasicAccessibilityService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/service_config" />
</service>
...
</application>
首先,你需要創建無障礙服務的一個子類:
public class BasicAccessibilityService extends AccessibilityService {
static {
CLog.initialize(BasicAccessibilityService.class.getSimpleName(), BuildConfig.DEBUG);
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
CLog.d(event.toString());
switch (event.getEventType()) {
//On Gesture events print out the entire view heirarchy!
case AccessibilityEvent.TYPE_GESTURE_DETECTION_START:
CLog.d(A11yNodeInfo.wrap(getRootInActiveWindow()).toViewHeirarchy());
default: {
//If the event has a source, let's print it out separately.
if (event.getSource() != null) {
CLog.d(A11yNodeInfo.wrap(event.getSource()).toViewHeirarchy());
}
}
}
}
@Override
public void onInterrupt() {
CLog.e("Service Interrupted: Have never actually had this happen.");
}
}
這是其中的亮點大頭。您還應該擁有帶有屬性的「service_config」XML,如清單XML文件更改中所引用的那樣。更多細節和合理的觀點可以在GitHub上的開源回購中找到。
https://github.com/chriscm2006/Android-Accessibility-Service-Boilerplate
相關問題
- 1. Html.TextBox輔助使用
- 2. 使用rails輔助方法
- 3. .htaccess使用-org輔助域名vs使用.com輔助域名的問題
- 4. 用於輔助類使用EJB接口
- 5. HTML輔助TextBoxFor
- 6. HTML輔助
- 7. 鍵盤輔助
- 8. 與輔助性
- 9. 與HTML輔助
- 10. dropzone.js輔助
- 11. 輔助對焦
- 12. 當使用模型或輔助
- 13. 爲什麼foldr使用輔助函數?
- 14. 添加HTML輔助使用jQuery(剃刀)
- 15. 笨使用朗>線的輔助
- 16. 從輔助角色使用Azure Cmdlet
- 17. 輔助排序使用Apache Spark 1.6
- 18. Haskell中使用輔助功能
- 19. 使用輔助功能服務Android
- 20. 如何使用輔助方法從options_from_collection_for_select
- 21. 如何使用ContextProvider.EntityConnection創建輔助DbContext?
- 22. 標籤使用ASP.NET HTML輔助
- 23. 使用輔助bean值在JavaScript
- 24. 何時使用輔助DNS服務器?
- 25. ASP.NET MVC形式不使用輔助
- 26. 從輔助線程使用AVCaptureDevice
- 27. 使用webdriver測試輔助功能
- 28. 使用in_groups_of rails輔助方法
- 29. 在.net中使用輔助USB鍵盤
- 30. 輔助功能:使用ARIA活
我不明白爲什麼會被關閉。在我看來,任何投票結束這個問題的人都會誤解這個問題。 Android可訪問性服務樣板代碼是一個很好的問題!我會回答一個問題。我一直想用一些A11y服務樣板文件發佈github回購。給我24小時!並且不要關閉這個問題,只是因爲你不瞭解它! – ChrisCM