List of usage examples for android.view.accessibility AccessibilityEvent TYPE_VIEW_CLICKED
int TYPE_VIEW_CLICKED
To view the source code for android.view.accessibility AccessibilityEvent TYPE_VIEW_CLICKED.
Click Source Link
From source file:com.android.talkback.eventprocessor.ProcessorAccessibilityHints.java
@Override public void onAccessibilityEvent(AccessibilityEvent event) { if (!areHintsEnabled()) { return;// www. j a va2 s . c o m } // Clear hints that were generated before a click or in an old window configuration. final int eventType = event.getEventType(); if (eventType == AccessibilityEvent.TYPE_VIEW_CLICKED || eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED || eventType == AccessibilityEvent.TYPE_WINDOWS_CHANGED) { cancelA11yHint(); return; } if (eventType == AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED) { EventState eventState = EventState.getInstance(); if (eventState.checkAndClearRecentEvent(EventState.EVENT_SKIP_HINT_AFTER_GRANULARITY_MOVE)) { return; } if (eventState.checkAndClearRecentEvent(EventState.EVENT_SKIP_HINT_AFTER_CURSOR_CONTROL)) { return; } AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); AccessibilityNodeInfoCompat source = record.getSource(); if (source != null) { postA11yHintRunnable(source); // DO NOT RECYCLE. postA11yHintRunnable will save the node. } } }
From source file:com.android.utils.AccessibilityEventUtils.java
public static int[] getAllEventTypes() { return new int[] { AccessibilityEvent.TYPE_ANNOUNCEMENT, AccessibilityEvent.TYPE_ASSIST_READING_CONTEXT, AccessibilityEvent.TYPE_GESTURE_DETECTION_END, AccessibilityEvent.TYPE_GESTURE_DETECTION_START, AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED, AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END, AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START, AccessibilityEvent.TYPE_TOUCH_INTERACTION_END, AccessibilityEvent.TYPE_TOUCH_INTERACTION_START, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED, AccessibilityEvent.TYPE_VIEW_CLICKED, AccessibilityEvent.TYPE_VIEW_CONTEXT_CLICKED, AccessibilityEvent.TYPE_VIEW_FOCUSED, AccessibilityEvent.TYPE_VIEW_HOVER_ENTER, AccessibilityEvent.TYPE_VIEW_HOVER_EXIT, AccessibilityEvent.TYPE_VIEW_LONG_CLICKED, AccessibilityEvent.TYPE_VIEW_SCROLLED, AccessibilityEvent.TYPE_VIEW_SELECTED, AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED, AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED, AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY, AccessibilityEvent.TYPE_WINDOWS_CHANGED, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED, AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED }; }
From source file:com.android.settings.widget.LabeledSeekBar.java
private void sendClickEventForAccessibility(int progress) { mAccessHelper.invalidateRoot(); mAccessHelper.sendEventForVirtualView(progress, AccessibilityEvent.TYPE_VIEW_CLICKED); }
From source file:com.android.screenspeak.formatter.CheckableClickedFormatter.java
@Override public boolean accept(AccessibilityEvent event, ScreenSpeakService context) { int type = event.getEventType(); if (type == AccessibilityEvent.TYPE_VIEW_CLICKED) { mClickedNode = null;//ww w . jav a 2 s.c om mClickedTime = -1; if (event.isChecked()) { return true; } AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); AccessibilityNodeInfoCompat source = record.getSource(); if (source != null) { if (source.isCheckable()) { return true; } // it is bug in settings application that does not include clicked state on node // so we need to restore it later from TYPE_WINDOW_CONTENT_CHANGED event if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mClickedNode = source; mClickedTime = System.currentTimeMillis(); } } return false; } if (type == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return false; if (mClickedTime == -1 || mClickedNode == null) return false; long now = System.currentTimeMillis(); if ((mClickedTime + 1000) < now) { mClickedTime = -1; if (mClickedNode != null) { mClickedNode.recycle(); mClickedNode = null; } return false; } AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); AccessibilityNodeInfoCompat source = record.getSource(); return findClickedCheckableNode(source); } return false; }
From source file:com.android.talkback.formatter.CheckableClickedFormatter.java
@Override public boolean accept(AccessibilityEvent event, TalkBackService context) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) return false; int type = event.getEventType(); if (type == AccessibilityEvent.TYPE_VIEW_CLICKED) { mClickedNode = null;/* ww w. j a va 2 s . c o m*/ mClickedTime = -1; if (event.isChecked()) { return true; } AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); AccessibilityNodeInfoCompat source = record.getSource(); if (source != null) { if (source.isCheckable()) { return true; } // it is bug in settings application that does not include clicked state on node // so we need to restore it later from TYPE_WINDOW_CONTENT_CHANGED event if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mClickedNode = source; mClickedTime = System.currentTimeMillis(); } } return false; } if (type == AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return false; if (mClickedTime == -1 || mClickedNode == null) return false; long now = System.currentTimeMillis(); if ((mClickedTime + 1000) < now) { mClickedTime = -1; if (mClickedNode != null) { mClickedNode.recycle(); mClickedNode = null; } return false; } AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); AccessibilityNodeInfoCompat source = record.getSource(); return findClickedCheckableNode(source); } return false; }
From source file:com.android.screenspeak.eventprocessor.ProcessorAccessibilityHints.java
@Override public void onAccessibilityEvent(AccessibilityEvent event) { final int eventType = event.getEventType(); if (eventType == AccessibilityEvent.TYPE_VIEW_HOVER_ENTER || eventType == AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START) { mIsTouchExploring = true;//from www .java2 s. com } if (eventType == AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END || eventType == AccessibilityEvent.TYPE_VIEW_CLICKED) { mIsTouchExploring = false; cacheEnteredNode(null); cancelA11yHint(); return; } if (!mIsTouchExploring || ((eventType != AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED) && (eventType != AccessibilityEvent.TYPE_VIEW_HOVER_EXIT))) { return; } final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); final AccessibilityNodeInfoCompat source = record.getSource(); if (source == null) { return; } if (eventType == AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED) { cacheEnteredNode(source); String hint = getHintFromEvent(event); if (hint != null) { postA11yHintRunnable(hint); } } else if (eventType == AccessibilityEventCompat.TYPE_VIEW_HOVER_EXIT) { if (source.equals(mWaitingForExit)) { cancelA11yHint(); } } source.recycle(); }
From source file:com.hrs.filltheform.dialog.FillTheFormDialog.java
private int getModelEventType(int accessibilityEventType) { switch (accessibilityEventType) { case AccessibilityEvent.TYPE_VIEW_LONG_CLICKED: return FillTheFormDialogModel.EVENT_TYPE_VIEW_LONG_CLICKED; case AccessibilityEvent.TYPE_VIEW_CLICKED: return FillTheFormDialogModel.EVENT_TYPE_VIEW_CLICKED; case AccessibilityEvent.TYPE_VIEW_FOCUSED: return FillTheFormDialogModel.EVENT_TYPE_VIEW_FOCUSED; default://from w ww . j a v a2 s . c o m return FillTheFormDialogModel.EVENT_TYPE_UNKNOWN; } }
From source file:com.myStress.handlers.NotificationHandlerService.java
/** * Called when an accessibility event occurs - here, we check the particular component packages that fired the event, filtering out the ones we support * @param event Reference to the fired {android.view.accessibility.AccessibilityEvent} * @see android.accessibilityservice.AccessibilityService#onAccessibilityEvent(android.view.accessibility.AccessibilityEvent) */// ww w .j a v a2s. c om @Override public void onAccessibilityEvent(AccessibilityEvent event) { try { int eventType = event.getEventType(); String packageName = event.getPackageName().toString(); String className = event.getClassName().toString(); if (eventType == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) { processNotification(event); } else if (eventType == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) { if (event.isPassword()) return; String text = event.getText().toString(); String beforeText = ""; if (event.getBeforeText() != null) beforeText = event.getBeforeText().toString(); text = text.substring(1, text.length() - 1); if (packageName.equals("com.whatsapp")) { if (wasending1 && text.length() == 1) { wasending2 = true; sendButtonClicked(packageName); } } // else if(packageName.equals("com.facebook.orca")){ // wasending1 = false; // } // else if(packageName.equals("com.facebook.katana")){ // wasending1 = false; // } // else if(packageName.equals("com.android.email")){ // wasending1=false; // } else { wasending1 = false; // if(text.length() == 0){ // sending = true; // sendButtonClicked(packageName); // } } boolean del; int length_diff = text.length() - beforeText.length(); typedText = text; if (length_diff == 1 && text.length() == 1) { typingStartTime = (double) System.currentTimeMillis(); typingEndTime = typingStartTime; } else { typingEndTime = (double) System.currentTimeMillis(); } if (text.length() < beforeText.length()) { del = true; length_diff = -length_diff; } else { del = false; } if (del == true) { Intent intent = new Intent("com.myStress.accessibility"); intent.putExtra("KeyLogger", packageName + ":" + length_diff); sendBroadcast(intent); } } else if (eventType == AccessibilityEvent.TYPE_VIEW_CLICKED) { if (packageName.equals("com.whatsapp")) { if (className.equals("android.widget.ImageButton")) { wasending1 = true; } else if (className.equals("com.whatsapp.EmojiPicker$EmojiImageView")) { wasending1 = false; wasending2 = false; } else if (className.equals("android.widget.ListView") || className.equals("android.widget.ImageView")) ; else { if (wasending1) wasending2 = true; sendButtonClicked(packageName); } } else { if (wasending1) { wasending2 = true; sendButtonClicked(packageName); } else if (packageName.equals("com.facebook.orca")) { if (event.getContentDescription() != null) { if (event.getContentDescription().toString().toLowerCase().contains("send")) { sending = true; sendButtonClicked(packageName); } } else { if (className.equals("com.facebook.orca.compose.ComposerButton")) { sending = true; sendButtonClicked(packageName); } } } else if (packageName.equals("com.facebook.katana")) { if (event.getContentDescription() != null) { if (event.getContentDescription().toString().toLowerCase().contains("post")) { sending = true; sendButtonClicked(packageName); } } else { if (className.equals("com.facebook.widget.text.SimpleVariableTextLayoutView")) { sending = true; sendButtonClicked(packageName); } } } else if (packageName.toLowerCase().contains("mail")) { if (event.getContentDescription() != null) { if (event.getContentDescription().toString().toLowerCase().contains("send")) { sending = true; sendButtonClicked(packageName); } } else { if (className.equals("android.widget.ImageButton")) { if (!event.getText().toString().equals("")) { sending = true; sendButtonClicked(packageName); } } } } } } else if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { if (wasending1) { wasending2 = true; sendButtonClicked(packageName); } if (packageName.equals("com.android.mms")) { if (className.equals("android.app.ProgressDialog")) { sending = true; sendButtonClicked(packageName); } } } //reset variables sending = false; } catch (Exception e) { } }
From source file:com.google.android.marvin.mytalkback.ProcessorFocusAndSingleTap.java
@Override public void onAccessibilityEvent(AccessibilityEvent event) { if (!mAccessibilityManager.isTouchExplorationEnabled()) { // Don't manage focus when touch exploration is disabled. return;//from w ww .jav a 2 s .c om } final AccessibilityRecordCompat record = new AccessibilityRecordCompat(event); switch (event.getEventType()) { case AccessibilityEvent.TYPE_VIEW_CLICKED: // Prevent conflicts between lift-to-type and single tap. This // is only necessary when a CLICKED event occurs during a touch // interaction sequence (e.g. before an INTERACTION_END event), // but it isn't harmful to call more often. cancelSingleTap(); break; case AccessibilityEvent.TYPE_VIEW_FOCUSED: setFocusFromViewFocused(event, record); break; case AccessibilityEvent.TYPE_VIEW_SELECTED: setFocusFromViewSelected(event, record); break; case AccessibilityEvent.TYPE_VIEW_HOVER_ENTER: setFocusFromViewHoverEnter(record); break; case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED: handleWindowStateChange(event); break; case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: handleWindowContentChanged(record); break; case AccessibilityEvent.TYPE_VIEW_SCROLLED: handleViewScrolled(event, record); break; case AccessibilityEventCompat.TYPE_TOUCH_INTERACTION_START: // This event type only exists on API 17+ (JB MR1). handleTouchInteractionStart(event); break; case AccessibilityEventCompat.TYPE_TOUCH_INTERACTION_END: // This event type only exists on API 17+ (JB MR1). handleTouchInteractionEnd(event); break; } }
From source file:com.google.android.marvin.talkback.ProcessorFocusAndSingleTap.java
@Override public void onAccessibilityEvent(AccessibilityEvent event) { if (!mAccessibilityManager.isTouchExplorationEnabled()) { // Don't manage focus when touch exploration is disabled. return;// ww w . j a va 2 s. c o m } final AccessibilityRecordCompat record = new AccessibilityRecordCompat(event); switch (event.getEventType()) { case AccessibilityEvent.TYPE_VIEW_CLICKED: // Prevent conflicts between lift-to-type and single tap. This // is only necessary when a CLICKED event occurs during a touch // interaction sequence (e.g. before an INTERACTION_END event), // but it isn't harmful to call more often. cancelSingleTap(); break; case AccessibilityEvent.TYPE_VIEW_FOCUSED: setFocusFromViewFocused(event, record); break; case AccessibilityEvent.TYPE_VIEW_SELECTED: setFocusFromViewSelected(event, record); break; case AccessibilityEvent.TYPE_VIEW_HOVER_ENTER: final AccessibilityNodeInfoCompat touchedNode = record.getSource(); try { if ((touchedNode != null) && !setFocusFromViewHoverEnter(touchedNode) && FEATURE_FLAG_EMPTY_SPACE) { mHandler.sendEmptyTouchAreaFeedbackDelayed(touchedNode); } } finally { AccessibilityNodeInfoUtils.recycleNodes(touchedNode); } break; case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED: mHandler.cancelEmptyTouchAreaFeedback(); break; case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED: handleWindowStateChange(event); break; case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: handleWindowContentChanged(record); break; case AccessibilityEvent.TYPE_VIEW_SCROLLED: handleViewScrolled(event, record); break; case AccessibilityEventCompat.TYPE_TOUCH_INTERACTION_START: // This event type only exists on API 17+ (JB MR1). handleTouchInteractionStart(event); break; case AccessibilityEventCompat.TYPE_TOUCH_INTERACTION_END: // This event type only exists on API 17+ (JB MR1). handleTouchInteractionEnd(event); break; } }