Search in sources :

Example 51 with AccessibilityEvent

use of android.view.accessibility.AccessibilityEvent in project platform_frameworks_base by android.

the class EventsCommand method run.

@Override
public void run(String[] args) {
    UiAutomationShellWrapper automationWrapper = new UiAutomationShellWrapper();
    automationWrapper.connect();
    automationWrapper.getUiAutomation().setOnAccessibilityEventListener(new OnAccessibilityEventListener() {

        @Override
        public void onAccessibilityEvent(AccessibilityEvent event) {
            SimpleDateFormat formatter = new SimpleDateFormat("MM-dd HH:mm:ss.SSS");
            System.out.println(String.format("%s %s", formatter.format(new Date()), event.toString()));
        }
    });
    // for user to press Ctrl+C
    synchronized (mQuitLock) {
        try {
            mQuitLock.wait();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    automationWrapper.disconnect();
}
Also used : OnAccessibilityEventListener(android.app.UiAutomation.OnAccessibilityEventListener) AccessibilityEvent(android.view.accessibility.AccessibilityEvent) SimpleDateFormat(java.text.SimpleDateFormat) Date(java.util.Date) UiAutomationShellWrapper(com.android.uiautomator.core.UiAutomationShellWrapper)

Example 52 with AccessibilityEvent

use of android.view.accessibility.AccessibilityEvent in project platform_frameworks_base by android.

the class KeyboardView method sendAccessibilityEventForUnicodeCharacter.

private void sendAccessibilityEventForUnicodeCharacter(int eventType, int code) {
    if (mAccessibilityManager.isEnabled()) {
        AccessibilityEvent event = AccessibilityEvent.obtain(eventType);
        onInitializeAccessibilityEvent(event);
        String text = null;
        // This is very efficient since the properties are cached.
        final boolean speakPassword = Settings.Secure.getIntForUser(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SPEAK_PASSWORD, 0, UserHandle.USER_CURRENT_OR_SELF) != 0;
        // used to avoid leaking passwords.
        if (speakPassword || mAudioManager.isBluetoothA2dpOn() || mAudioManager.isWiredHeadsetOn()) {
            switch(code) {
                case Keyboard.KEYCODE_ALT:
                    text = mContext.getString(R.string.keyboardview_keycode_alt);
                    break;
                case Keyboard.KEYCODE_CANCEL:
                    text = mContext.getString(R.string.keyboardview_keycode_cancel);
                    break;
                case Keyboard.KEYCODE_DELETE:
                    text = mContext.getString(R.string.keyboardview_keycode_delete);
                    break;
                case Keyboard.KEYCODE_DONE:
                    text = mContext.getString(R.string.keyboardview_keycode_done);
                    break;
                case Keyboard.KEYCODE_MODE_CHANGE:
                    text = mContext.getString(R.string.keyboardview_keycode_mode_change);
                    break;
                case Keyboard.KEYCODE_SHIFT:
                    text = mContext.getString(R.string.keyboardview_keycode_shift);
                    break;
                case '\n':
                    text = mContext.getString(R.string.keyboardview_keycode_enter);
                    break;
                default:
                    text = String.valueOf((char) code);
            }
        } else if (!mHeadsetRequiredToHearPasswordsAnnounced) {
            // hover enter and hover exit event, so set the flag after the exit.
            if (eventType == AccessibilityEvent.TYPE_VIEW_HOVER_EXIT) {
                mHeadsetRequiredToHearPasswordsAnnounced = true;
            }
            text = mContext.getString(R.string.keyboard_headset_required_to_hear_password);
        } else {
            text = mContext.getString(R.string.keyboard_password_character_no_headset);
        }
        event.getText().add(text);
        mAccessibilityManager.sendAccessibilityEvent(event);
    }
}
Also used : AccessibilityEvent(android.view.accessibility.AccessibilityEvent)

Example 53 with AccessibilityEvent

use of android.view.accessibility.AccessibilityEvent in project platform_frameworks_base by android.

the class PasswordTextView method sendAccessibilityEventTypeViewTextChanged.

void sendAccessibilityEventTypeViewTextChanged(String beforeText, int fromIndex, int removedCount, int addedCount) {
    if (AccessibilityManager.getInstance(mContext).isEnabled() && (isFocused() || isSelected() && isShown())) {
        if (!shouldSpeakPasswordsForAccessibility()) {
            beforeText = null;
        }
        AccessibilityEvent event = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED);
        event.setFromIndex(fromIndex);
        event.setRemovedCount(removedCount);
        event.setAddedCount(addedCount);
        event.setBeforeText(beforeText);
        event.setPassword(true);
        sendAccessibilityEventUnchecked(event);
    }
}
Also used : AccessibilityEvent(android.view.accessibility.AccessibilityEvent)

Example 54 with AccessibilityEvent

use of android.view.accessibility.AccessibilityEvent in project platform_frameworks_base by android.

the class PhoneStatusBarView method onRequestSendAccessibilityEventInternal.

@Override
public boolean onRequestSendAccessibilityEventInternal(View child, AccessibilityEvent event) {
    if (super.onRequestSendAccessibilityEventInternal(child, event)) {
        // The status bar is very small so augment the view that the user is touching
        // with the content of the status bar a whole. This way an accessibility service
        // may announce the current item as well as the entire content if appropriate.
        AccessibilityEvent record = AccessibilityEvent.obtain();
        onInitializeAccessibilityEvent(record);
        dispatchPopulateAccessibilityEvent(record);
        event.appendRecord(record);
        return true;
    }
    return false;
}
Also used : AccessibilityEvent(android.view.accessibility.AccessibilityEvent)

Example 55 with AccessibilityEvent

use of android.view.accessibility.AccessibilityEvent in project platform_frameworks_base by android.

the class MockAccessibilityService method onAccessibilityEvent.

@Override
public void onAccessibilityEvent(AccessibilityEvent receivedEvent) {
    if (!mReplaying) {
        return;
    }
    if (mExpectedEvents.isEmpty()) {
        throw new IllegalStateException("Unexpected event: " + receivedEvent);
    }
    AccessibilityEvent expectedEvent = mExpectedEvents.poll();
    assertEqualsAccessiblityEvent(expectedEvent, receivedEvent);
}
Also used : AccessibilityEvent(android.view.accessibility.AccessibilityEvent)

Aggregations

AccessibilityEvent (android.view.accessibility.AccessibilityEvent)241 AccessibilityManager (android.view.accessibility.AccessibilityManager)49 LargeTest (android.test.suitebuilder.annotation.LargeTest)40 AccessibilityServiceInfo (android.accessibilityservice.AccessibilityServiceInfo)20 ViewParent (android.view.ViewParent)13 TimeoutException (java.util.concurrent.TimeoutException)11 MediumTest (android.test.suitebuilder.annotation.MediumTest)10 IAccessibilityManager (android.view.accessibility.IAccessibilityManager)10 Notification (android.app.Notification)7 ITransientNotification (android.app.ITransientNotification)6 Context (android.content.Context)6 RemoteException (android.os.RemoteException)6 StatusBarNotification (android.service.notification.StatusBarNotification)6 AccessibilityRecordCompat (android.support.v4.view.accessibility.AccessibilityRecordCompat)6 ViewGroup (android.view.ViewGroup)6 Test (org.junit.Test)6 SuppressLint (android.annotation.SuppressLint)5 AccessibilityEventFilter (android.app.UiAutomation.AccessibilityEventFilter)5 OnAccessibilityEventListener (android.app.UiAutomation.OnAccessibilityEventListener)5 UiAutomationShellWrapper (com.android.uiautomator.core.UiAutomationShellWrapper)5