11

मैं गैर-केंद्रित रीसाइक्लिंग बच्चों (आइटम) के पाठ को कैसे देख सकता हूं?अभिगम्यता सेवा के साथ (फेसबुक) रीसाइक्लर व्यू से पाठ पढ़ना

मेरी पहुंच सेवा को स्क्रीन से टेक्स्ट पढ़ने के लिए माना जाता है जिसमें कीवर्ड होते हैं। यह ज्यादातर स्थितियों में अच्छी तरह से काम करता है, सिवाय इसके कि मैं रीसाइक्लिंग व्यू से निपट रहा हूं, खासकर फेसबुक एप्लिकेशन में।

दोनों फेसबुक फ़ीड और टिप्पणियां स्क्रीन रीसाइक्लिंग व्यू पर आधारित हैं और न ही मुझे उन तक पहुंच के साथ प्रदान करने लगती हैं जो मुझे उनकी पहुंच-योग्यता घटनाओं से चाहिए।

मैं क्या कोशिश की है:

public void onAccessibilityEvent(AccessibilityEvent event) { 

    //I've tried looping through event.getText() and it does not contain the text entries 

    //I've also tried the following (with various null checks) 
    AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); 
    AccessibilityNodeInfoCompat source = record.getSource(); 
    List<AccessibilityNodeInfoCompat> nodes = source.findAccessibilityNodeInfosByText("..."); 
    //(and loop through the entries) 

    //I've also tried limiting to the class name "android.support.v7.widget.RecyclerView" 
    //and looking at parcelableData 

    //In the facebook app, the following is always null too 
    source.findFocus(AccessibilityNodeInfoCompat.FOCUS_ACCESSIBILITY); 

} 

कहीं डेटा की आवश्यकता को रोकने के लिए लगता है।

: एक उदाहरण के रूप में जब एक पोस्ट से एक टिप्पणी स्क्रीन/ओवरले खोलने, मैं घटना के विवरण की टिप्पणी से खुद को छोड़कर सभी पाठ सामग्री (जो recycler दृश्य के अंदर कर रहे हैं)

लॉग्स कि मैं देख सकता हूँ देख सकते हैं

यहाँ है कि मैं क्या एक भी टिप्पणी

Event: EventType: TYPE_WINDOW_CONTENT_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: android.support.v7.widget.RecyclerView; Text: []; ContentDescription: null; ItemCount: 100; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: true; BeforeText: null; FromIndex: 13; ToIndex: 24; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_STATE_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: X.BGT; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: true; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_CONTENT_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: android.support.v7.widget.RecyclerView; Text: []; ContentDescription: null; ItemCount: 1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: 0; ToIndex: 0; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_CONTENT_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: android.view.ViewGroup; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_CONTENT_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: android.widget.FrameLayout; Text: []; ContentDescription: Photo; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_CONTENT_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: android.widget.FrameLayout; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_CONTENT_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: android.widget.ImageButton; Text: []; ContentDescription: Stickers; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: false; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_CONTENT_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: android.widget.FrameLayout; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_CONTENT_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: android.widget.TextView; Text: []; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: false; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 
Event: EventType: TYPE_WINDOW_STATE_CHANGED; PackageName: com.facebook.katana; MovementGranularity: 0; Action: 0 [ ClassName: X.BGT; Text: [Be the first to like this., Like Button, Photo Comment, Write a comment…, Open GIF search, Stickers]; ContentDescription: null; ItemCount: -1; CurrentItemIndex: -1; IsEnabled: true; IsPassword: false; IsChecked: false; IsFullScreen: true; Scrollable: false; BeforeText: null; FromIndex: -1; ToIndex: -1; ScrollX: -1; ScrollY: -1; MaxScrollX: -1; MaxScrollY: -1; AddedCount: -1; RemovedCount: -1; ParcelableData: null ]; recordCount: 0 

मैं भी स्रोत के बच्चों की खोज की कोशिश की है के साथ एक पोस्ट पर टिप्पणियों ओवरले के लिए देखते है, लेकिन केवल ViewGroups पाठ के साथ प्रस्तुत कर रहे हैं (कोई दृश्य) और हमेशा शून्य

Ancestor for 0 = [email protected]; boundsInParent: Rect(0, 0 - 1056, 236); boundsInScreen: Rect(12, 244 - 1068, 480); packageName: com.facebook.katana; className: android.view.ViewGroup; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: false; longClickable: false; contextClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null] 
Ancestor for 0, 0 = [email protected]; boundsInParent: Rect(0, 0 - 1056, 236); boundsInScreen: Rect(12, 244 - 1068, 480); packageName: com.facebook.katana; className: android.view.ViewGroup; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: false; longClickable: true; contextClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_LONG_CLICK - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null] 
Ancestor for 0, 0, 0 = [email protected]; boundsInParent: Rect(0, 0 - 828, 58); boundsInScreen: Rect(204, 262 - 1032, 320); packageName: com.facebook.katana; className: android.view.ViewGroup; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: true; longClickable: true; contextClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_CLICK - null, AccessibilityAction: ACTION_LONG_CLICK - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null] 
Ancestor for 0, 0, 0, 0 = [email protected]; boundsInParent: Rect(0, 0 - 268, 58); boundsInScreen: Rect(204, 262 - 472, 320); packageName: com.facebook.katana; className: android.view.ViewGroup; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: true; longClickable: false; contextClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_CLICK - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null] 
Ancestor for 0, 0, 1 = [email protected]; boundsInParent: Rect(0, 0 - 828, 48); boundsInScreen: Rect(204, 320 - 1032, 368); packageName: com.facebook.katana; className: android.view.ViewGroup; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: true; longClickable: true; contextClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_CLICK - null, AccessibilityAction: ACTION_LONG_CLICK - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null] 
Ancestor for 0, 0, 2 = [email protected]; boundsInParent: Rect(0, 0 - 828, 80); boundsInScreen: Rect(204, 382 - 1032, 462); packageName: com.facebook.katana; className: android.view.ViewGroup; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: false; longClickable: false; contextClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null] 
Ancestor for 0, 0, 2, 0 = [email protected]; boundsInParent: Rect(0, 0 - 93, 44); boundsInScreen: Rect(507, 394 - 600, 438); packageName: com.facebook.katana; className: android.view.ViewGroup; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: true; longClickable: false; contextClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_CLICK - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null] 
Ancestor for 0, 0, 2, 1 = [email protected]; boundsInParent: Rect(0, 0 - 114, 44); boundsInScreen: Rect(632, 394 - 746, 438); packageName: com.facebook.katana; className: android.view.ViewGroup; text: null; error: null; maxTextLength: -1; contentDescription: null; viewIdResName: null; checkable: false; checked: false; focusable: false; focused: false; selected: false; clickable: true; longClickable: false; contextClickable: false; enabled: true; password: false; scrollable: false; actions: [AccessibilityAction: ACTION_SELECT - null, AccessibilityAction: ACTION_CLEAR_SELECTION - null, AccessibilityAction: ACTION_CLICK - null, AccessibilityAction: ACTION_ACCESSIBILITY_FOCUS - null, AccessibilityAction: ACTION_SHOW_ON_SCREEN - null] 

मुझे यकीन नहीं है कि यह निश्चित रूप से संभव है या मैं पूरी तरह से गलत दृष्टिकोण ले रहा हूं। मैंने टॉकबैक मोड में देखा है कि उपयोगकर्ता को रीसाइक्लर के अलग-अलग तत्वों को क्लिक करने/ध्यान केंद्रित करने से पहले बच्चे को क्लिक करना चाहिए, जो मेरी सेवा के लिए एक विकल्प नहीं है (जो कि ब्याज की वस्तुओं को ढूंढना है)

+0

मेरे पास इस प्रश्न पर बक्षीस देने के लिए 23 घंटे शेष हैं। अगर किसी के पास भी एक अस्पष्ट विचार है जो मदद कर सकता है, तो मुझे इसे देखना अच्छा लगेगा –

+0

क्या आप समाधान के संबंध में कहीं भी पहुंचे थे? – ashishdhiman2007

+0

मुझे नहीं, खेद है –

उत्तर

1

मुझे सामना करना पड़ा नेस्टेड स्क्रॉल दृश्यों के साथ समस्या, सभी विचारों को दोबारा खोजने के साथ हल किया गया, मुझे लगता है कि, आपने पहले ही यह कोशिश की है। यहां मेरे मामले में समाधान काम करता है, आप कोशिश कर सकते हैं कि यह आपके लिए भी काम कर सके।

private AccessibilityNodeInfo accessbiltyContent(AccessibilityNodeInfo parentView,String strAddress) throws Exception { 

    int childCount = parentView.getChildCount(); 


    for (int i = 0; i < childCount; ++i) { 
     AccessibilityNodeInfo child = parentView.getChild(i); 
     // child=null; 
     if (child != null) { 

      String strToAddress=strAddress+" > "+child.getClassName().toString(); 
      String nodeText=""; 

      if(child.getText() != null) 
       nodeText=child.getText().toString(); 


      Log.v(TAG,"values =" +child.getClassName().toString(),nodeText,strToAddress)); 
      accessbiltyContent(child,strToAddress); 

     } 
     else { 
      return null; 
     } 
    } 

    return null; 


} 

यह माता पिता के सारे विचारों को बढ़ावा देते हैं और उन्हें प्रिंट को खोजने के लिए होगा।

+1

हाँ, यह कुछ भी नहीं करता है - टेक्स्ट नोड्स सभी शून्य हो जाएंगे।यह मूल रूप से वही कोड है जिसने –

+0

@Mamidi अनिल कुमार में लॉग के आखिरी सेट का उत्पादन किया: क्या आपने एक्सेसिबिलिटी एपीआई का उपयोग करके एफबी से पोस्ट प्राप्त करने का प्रयास किया था, क्या आप पोस्ट टेक्स्ट लाने में सक्षम थे? – ashishdhiman2007

संबंधित मुद्दे