【问题标题】:How to use an android accessibility service to detect which view the user touched?如何使用 android 无障碍服务来检测用户触摸了哪个视图?
【发布时间】:2022-06-18 16:06:42
【问题描述】:

Android TalkBack 可以做一些我也想做的事情。具体来说,它是识别用户触摸的视图。到目前为止我做到了:

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_CLICKED) {

        //This only shows the package of the activity that the view is in, I want to identify the view itself
        Toast.makeText(this, "" + event.getSource().getPackageName(), Toast.LENGTH_LONG).show();
    }
}

【问题讨论】:

    标签: java android accessibility accessibilityservice


    【解决方案1】:

    这个问题不清楚,但也许这会对你有所帮助:-

    @Override 
    public void onAccessibilityEvent(AccessibilityEvent event) {
        AccessibilityNodeInfo source = event.getSource(); 
    
        if (source == null) {
            return; 
        } 
        List<AccessibilityNodeInfo> findAccessibilityNodeInfosByViewId = source.findAccessibilityNodeInfosByViewId("YOUR PACKAGE NAME:id/RESOURCE ID FROM WHERE YOU WANT DATA"); 
    
        if (findAccessibilityNodeInfosByViewId.size() > 0) {
            AccessibilityNodeInfo parent = (AccessibilityNodeInfo) findAccessibilityNodeInfosByViewId.get(0);
            // You can also traverse the list if required data is deep in view hierarchy. 
            String requiredText = parent.getText().toString();
            Log.i("Required Text", requiredText);
        }
    }
    

    也读过这个tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2014-08-19
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多