Example usage for android.support.v4.view.accessibility AccessibilityRecordCompat getSource

List of usage examples for android.support.v4.view.accessibility AccessibilityRecordCompat getSource

Introduction

In this page you can find the example usage for android.support.v4.view.accessibility AccessibilityRecordCompat getSource.

Prototype

public AccessibilityNodeInfoCompat getSource() 

Source Link

Document

Gets the android.view.accessibility.AccessibilityNodeInfo of the event source.

Usage

From source file:com.google.android.marvin.mytalkback.formatter.ImageViewFormatter.java

@Override
public boolean format(AccessibilityEvent event, TalkBackService context, Utterance utterance) {
    final AccessibilityRecordCompat record = new AccessibilityRecordCompat(event);
    final AccessibilityNodeInfoCompat source = record.getSource();
    final CharSequence text = ruleNonTextViews.format(context, source, event);
    utterance.addSpoken(text);/*from w  ww  . ja v a 2 s  .com*/
    return true;
}

From source file:com.android.screenspeak.formatter.ImageViewFormatter.java

@Override
public boolean format(AccessibilityEvent event, ScreenSpeakService context, Utterance utterance) {
    final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
    final AccessibilityNodeInfoCompat source = record.getSource();
    final CharSequence text = ruleNonTextViews.format(context, source, event);
    utterance.addSpoken(text);/*from   ww  w  .ja  v a 2  s .  co m*/
    return true;
}

From source file:com.android.talkback.formatter.ImageViewFormatter.java

@Override
public boolean format(AccessibilityEvent event, TalkBackService context, Utterance utterance) {
    final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
    final AccessibilityNodeInfoCompat source = record.getSource();
    final CharSequence text = ruleNonTextViews.format(context, source, event);
    utterance.addSpoken(text);//w w w  .j a  va  2s  .co  m
    return true;
}

From source file:com.android.screenspeak.formatter.ProgressBarFormatter.java

private boolean shouldDropEvent(AccessibilityEvent event) {
    final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
    final AccessibilityNodeInfoCompat source = record.getSource();

    // Don't drop if we're on pre-ICS or the event was generated (e.g.
    // missing a node).
    if (source == null) {
        return false;
    }/*w w w.  ja va 2  s. co m*/

    // Don't drop if the node is currently focused or accessibility focused.
    if (source.isFocused() || source.isAccessibilityFocused()) {
        return false;
    }

    // Don't drop if the node was recently explored.
    return true;
}

From source file:com.android.talkback.formatter.LiveViewFormatter.java

@Override
public boolean accept(AccessibilityEvent event, TalkBackService context) {
    if (event.getEventType() != AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED)
        return false;

    AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
    AccessibilityNodeInfoCompat node = record.getSource();
    if (node == null) {
        return false;
    }//from www .jav a  2s  .c  o  m

    int liveRegion = node.getLiveRegion();
    node.recycle();

    switch (liveRegion) {
    case View.ACCESSIBILITY_LIVE_REGION_POLITE:
        return true;
    case View.ACCESSIBILITY_LIVE_REGION_ASSERTIVE:
        return true;
    case View.ACCESSIBILITY_LIVE_REGION_NONE:
        return false;
    default:
        return false;
    }
}

From source file:com.android.screenspeak.speechrules.RuleSeekBar.java

@Override
public boolean format(AccessibilityEvent event, ScreenSpeakService context, Utterance utterance) {
    final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
    final AccessibilityNodeInfoCompat source = record.getSource();
    if (source == null)
        return false;

    CharSequence text = format(context, source, event);
    if (TextUtils.isEmpty(text))
        return false;

    utterance.addSpoken(text);/*  w w  w .  ja  v a  2  s.  co m*/
    utterance.getMetadata().putInt(Utterance.KEY_UTTERANCE_GROUP,
            SpeechController.UTTERANCE_GROUP_SEEK_PROGRESS);
    utterance.addSpokenFlag(FeedbackItem.FLAG_CLEAR_QUEUED_UTTERANCES_WITH_SAME_UTTERANCE_GROUP);
    utterance.getMetadata().putInt(Utterance.KEY_METADATA_QUEUING, SpeechController.QUEUE_MODE_UNINTERRUPTIBLE);
    return true;
}

From source file:com.android.talkback.speechrules.RuleSeekBar.java

@Override
public boolean format(AccessibilityEvent event, TalkBackService context, Utterance utterance) {
    final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
    final AccessibilityNodeInfoCompat source = record.getSource();
    if (source == null)
        return false;

    CharSequence text = format(context, source, event);
    if (TextUtils.isEmpty(text))
        return false;

    utterance.addSpoken(text);/*www.jav  a  2s  .co  m*/
    utterance.getMetadata().putInt(Utterance.KEY_UTTERANCE_GROUP,
            SpeechController.UTTERANCE_GROUP_SEEK_PROGRESS);
    utterance.addSpokenFlag(FeedbackItem.FLAG_CLEAR_QUEUED_UTTERANCES_WITH_SAME_UTTERANCE_GROUP);
    utterance.getMetadata().putInt(Utterance.KEY_METADATA_QUEUING, SpeechController.QUEUE_MODE_UNINTERRUPTIBLE);
    return true;
}

From source file:com.google.android.marvin.mytalkback.formatter.ProgressBarFormatter.java

private boolean shouldDropEvent(AccessibilityEvent event) {
    final AccessibilityRecordCompat record = new AccessibilityRecordCompat(event);
    final AccessibilityNodeInfoCompat source = record.getSource();

    // Don't drop if we're on pre-ICS or the event was generated (e.g.
    // missing a node).
    if (source == null) {
        return false;
    }//from  w  w  w.  ja  v a  2 s.c o  m

    // Don't drop if the node is currently focused or accessibility focused.
    if (source.isFocused() || source.isAccessibilityFocused()) {
        return false;
    }

    // Don't drop if the node was recently explored.
    if (source.equals(sRecentlyExplored)) {
        return false;
    }

    return true;
}

From source file:com.android.talkback.formatter.ClickFormatter.java

@Override
public boolean format(AccessibilityEvent event, TalkBackService context, Utterance utterance) {
    AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
    AccessibilityNodeInfoCompat source = record.getSource();
    AccessibilityNodeInfoCompat refreshedSource = AccessibilityNodeInfoUtils.refreshNode(source);

    try {/*from  ww w  .  j  a  va2s .  c  o m*/
        if (refreshedSource == null) {
            // Node no longer exists.
            return false;
        }

        // Is source directly checkable?
        if (refreshedSource.isCheckable()) {
            utterance.addSpoken(getStateText(refreshedSource, context));
            return true;
        }

        // Does source contain non-focusable checkable child?
        if (refreshedSource.isAccessibilityFocused() || refreshedSource.isFocused()) {
            AccessibilityNodeInfoCompat checkableChild = findCheckableChild(refreshedSource);
            if (checkableChild != null) {
                utterance.addSpoken(getStateText(checkableChild, context));
                checkableChild.recycle();
                return true;
            }
        }
    } finally {
        AccessibilityNodeInfoUtils.recycleNodes(source, refreshedSource);
    }

    utterance.addSpokenFlag(FeedbackItem.FLAG_NO_SPEECH);
    return true;
}

From source file:com.android.talkback.eventprocessor.ProcessorWebContent.java

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
    // Only announce relevant events
    if (!AccessibilityEventUtils.eventMatchesAnyType(event, MASK_ACCEPTED_EVENT_TYPES)) {
        return;/*from  ww w .  j a v a2  s  .  co  m*/
    }

    final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event);
    final AccessibilityNodeInfoCompat source = record.getSource();

    // Drop consecutive qualifying events from the same node.
    if (mLastNode != null && mLastNode.equals(source)) {
        return;
    } else {
        if (mLastNode != null) {
            mLastNode.recycle();
        }
        mLastNode = source;
    }

    // Only announce nodes that have legacy web content.
    if (!WebInterfaceUtils.hasLegacyWebContent(source)) {
        return;
    }

    if (WebInterfaceUtils.isScriptInjectionEnabled(mService)) {
        // Instruct accessibility script to announce the page title as long
        // as continuous reading isn't active.
        final FullScreenReadController fullScreen = mService.getFullScreenReadController();
        if (fullScreen.isReadingLegacyWebContent()) {
            // Reset the state for full screen reading now that we've moved
            // into web content.
            fullScreen.interrupt();
        } else {
            WebInterfaceUtils.performSpecialAction(source, WebInterfaceUtils.ACTION_READ_PAGE_TITLE_ELEMENT);
        }
    } else if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        // On versions that include a script injection preference, inform
        // the user that script injection is disabled.
        final String preferenceName = AutomationUtils.getPackageString(mService, PACKAGE_SETTINGS,
                RES_NAME_SCRIPT_INJECTION_TITLE);
        if (preferenceName != null) {
            final CharSequence announcement = mService.getString(R.string.hint_script_injection,
                    preferenceName);
            mService.getSpeechController().speak(announcement, SpeechController.QUEUE_MODE_INTERRUPT, 0, null);
        }
    }
}