public boolean IsAccessibilityServiceEnabled(@NonNull String serviceId) { Logger.getInstance().Debug(TAG, String.format(Locale.getDefault(), "IsAccessibilityServiceEnabled for serviceId %s", serviceId)); AccessibilityManager accessibilityManager = (AccessibilityManager) _context.getSystemService(Context.ACCESSIBILITY_SERVICE); if (accessibilityManager == null) { Logger.getInstance().Error(TAG, "accessibilityManager is null!"); return false; } List<AccessibilityServiceInfo> runningServices = accessibilityManager.getEnabledAccessibilityServiceList(AccessibilityEvent.TYPES_ALL_MASK); for (AccessibilityServiceInfo service : runningServices) { Logger.getInstance().Debug(TAG, String.format(Locale.getDefault(), "Found active service %s", service.getId())); if (serviceId.equals(service.getId())) { return true; } } return false; }
public ValueAnimator createHotseatAlphaAnimator(float finalValue) { if (Float.compare(finalValue, mHotseatAlpha[HOTSEAT_STATE_ALPHA_INDEX]) == 0) { // Return a dummy animator to avoid null checks. return ValueAnimator.ofFloat(0, 0); } else { ValueAnimator animator = ValueAnimator .ofFloat(mHotseatAlpha[HOTSEAT_STATE_ALPHA_INDEX], finalValue); animator.addUpdateListener(new AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { float value = (Float) valueAnimator.getAnimatedValue(); setHotseatAlphaAtIndex(value, HOTSEAT_STATE_ALPHA_INDEX); } }); AccessibilityManager am = (AccessibilityManager) mLauncher.getSystemService(Context.ACCESSIBILITY_SERVICE); final boolean accessibilityEnabled = am.isEnabled(); animator.addUpdateListener( new AlphaUpdateListener(mLauncher.getHotseat(), accessibilityEnabled)); animator.addUpdateListener( new AlphaUpdateListener(mPageIndicator, accessibilityEnabled)); return animator; } }
@Override public boolean onHoverEvent(MotionEvent event) { if (((AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE)).isTouchExplorationEnabled()) { final int action = event.getAction(); switch (action) { case MotionEvent.ACTION_HOVER_ENTER: event.setAction(MotionEvent.ACTION_DOWN); break; case MotionEvent.ACTION_HOVER_MOVE: event.setAction(MotionEvent.ACTION_MOVE); break; case MotionEvent.ACTION_HOVER_EXIT: event.setAction(MotionEvent.ACTION_UP); break; } onTouchEvent(event); event.setAction(action); } super.onHoverEvent(event); return true; }
private void sendScrollAccessibilityEvent() { AccessibilityManager am = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (am.isEnabled()) { if (mCurrentPage != getNextPage()) { AccessibilityEvent ev = AccessibilityEvent.obtain(AccessibilityEvent.TYPE_VIEW_SCROLLED); ev.setScrollable(true); ev.setScrollX(getScrollX()); ev.setScrollY(getScrollY()); ev.setMaxScrollX(mMaxScrollX); ev.setMaxScrollY(0); sendAccessibilityEventUnchecked(ev); } } }
@TargetApi(16) public AdapterView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); this.mFirstPosition = 0; this.mSyncColId = Long.MIN_VALUE; this.mNeedSync = false; this.mInLayout = false; this.mNextSelectedPosition = -1; this.mNextSelectedColId = Long.MIN_VALUE; this.mSelectedPosition = -1; this.mSelectedColId = Long.MIN_VALUE; this.mOldSelectedPosition = -1; this.mOldSelectedColId = Long.MIN_VALUE; this.mBlockLayoutRequests = false; if (VERSION.SDK_INT >= 16 && getImportantForAccessibility() == 0) { setImportantForAccessibility(1); } if (!isInEditMode()) { this.mAccessibilityManager = (AccessibilityManager) getContext().getSystemService("accessibility"); } }
@Override protected void onFinishInflate() { setupKeypad(); mDigits = (EditText) findViewById(R.id.digits); mDelete = (ImageButton) findViewById(R.id.deleteButton); mOverflowMenuButton = findViewById(R.id.dialpad_overflow); mRateContainer = (ViewGroup) findViewById(R.id.rate_container); mIldCountry = (TextView) mRateContainer.findViewById(R.id.ild_country); mIldRate = (TextView) mRateContainer.findViewById(R.id.ild_rate); AccessibilityManager accessibilityManager = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (accessibilityManager.isEnabled()) { // The text view must be selected to send accessibility events. mDigits.setSelected(true); } }
public void aktivitetOnCreate(Basisaktivitet ctx) { ctx.getResources().updateConfiguration(App.sprogKonfig, null); // Forgrundsinitialisering der skal ske før app'en bliver synlig første gang // - muligvis aldrig hvis app'en kun betjenes via levende ikon, eller kun er aktiv i baggrunden if (App.color!=null) return; // initialisering allerede sket App.color = new DRFarver(); accessibilityManager = (AccessibilityManager) ctx.getSystemService(Context.ACCESSIBILITY_SERVICE); // tager tid i test skrift_gibson = Typeface.DEFAULT; skrift_gibson_fed = Typeface.DEFAULT_BOLD; skrift_georgia = Typeface.SERIF; skrift_gibson_fed_span = new EgenTypefaceSpan("Gibson fed", App.skrift_gibson_fed); AppOpdatering.APK_URL = res.getString(R.string.AppOpdatering_APK_URL); if (!EMULATOR) AppOpdatering.tjekForNyAPK(ctx); Log.d("onCreate tog " + (System.currentTimeMillis() - TIDSSTEMPEL_VED_OPSTART) + " ms"); }
@Override public boolean onHoverEvent(MotionEvent event) { if (Build.VERSION.SDK_INT >= 11) { if (((AccessibilityManager) getContext().getSystemService( Context.ACCESSIBILITY_SERVICE)).isTouchExplorationEnabled()) { final int action = event.getAction(); switch (action) { case MotionEvent.ACTION_HOVER_ENTER: event.setAction(MotionEvent.ACTION_DOWN); break; case MotionEvent.ACTION_HOVER_MOVE: event.setAction(MotionEvent.ACTION_MOVE); break; case MotionEvent.ACTION_HOVER_EXIT: event.setAction(MotionEvent.ACTION_UP); break; } onTouchEvent(event); event.setAction(action); } } return super.onHoverEvent(event); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //CrashReport.initCrashReport(getApplicationContext(), "900019352", false); Bugly.init(getApplicationContext(), "900019352", false); setContentView(R.layout.activity_main); pluginStatusText = (TextView) findViewById(R.id.layout_control_accessibility_text); pluginStatusIcon = (ImageView) findViewById(R.id.layout_control_accessibility_icon); handleMaterialStatusBar(); explicitlyLoadPreferences(); //监听AccessibilityService 变化 accessibilityManager = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE); accessibilityManager.addAccessibilityStateChangeListener(this); updateServiceStatus(); }
public static boolean isTouchExplorationEnabled(AccessibilityManager accessibilityManager) { if (Build.VERSION.SDK_INT >= 14) { return accessibilityManager.isTouchExplorationEnabled(); } else { return false; } }
@Override public void onDestroy() { super.onDestroy(); mWorkspace.removeCallbacks(mBuildLayersRunnable); mWorkspace.removeFolderListeners(); // Stop callbacks from LauncherModel // It's possible to receive onDestroy after a new Launcher activity has // been created. In this case, don't interfere with the new Launcher. if (mModel.isCurrentCallbacks(this)) { mModel.stopLoader(); LauncherAppState.getInstance(this).setLauncher(null); } if (mRotationPrefChangeHandler != null) { mSharedPrefs.unregisterOnSharedPreferenceChangeListener(mRotationPrefChangeHandler); } try { mAppWidgetHost.stopListening(); } catch (NullPointerException ex) { ex.printStackTrace(); } mAppWidgetHost = null; TextKeyListener.getInstance().release(); ((AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE)) .removeAccessibilityStateChangeListener(this); LauncherAnimUtils.onDestroyActivity(); if (mLauncherCallbacks != null) { mLauncherCallbacks.onDestroy(); } }
public AnimatorSet getAnimationToState(Workspace.State fromState, Workspace.State toState, boolean animated, AnimationLayerSet layerViews) { AccessibilityManager am = (AccessibilityManager) mLauncher.getSystemService(Context.ACCESSIBILITY_SERVICE); final boolean accessibilityEnabled = am.isEnabled(); TransitionStates states = new TransitionStates(fromState, toState); int workspaceDuration = getAnimationDuration(states); animateWorkspace(states, animated, workspaceDuration, layerViews, accessibilityEnabled); animateBackgroundGradient(states, animated, BACKGROUND_FADE_OUT_DURATION); return mStateAnimator; }
public void setup(Launcher launcher, DragController dragController, AllAppsTransitionController allAppsTransitionController) { mLauncher = launcher; mDragController = dragController; mAllAppsController = allAppsTransitionController; boolean isAccessibilityEnabled = ((AccessibilityManager) mLauncher.getSystemService( Context.ACCESSIBILITY_SERVICE)).isEnabled(); onAccessibilityStateChanged(isAccessibilityEnabled); }
public static DragViewStateAnnouncer createFor(View v) { if (((AccessibilityManager) v.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE)) .isEnabled()) { return new DragViewStateAnnouncer(v); } else { return null; } }
@Override public void run() { AccessibilityManager am = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); boolean accessibilityEnabled = am.isEnabled(); AlphaUpdateListener.updateVisibility(DropTargetBar.this, accessibilityEnabled); }
public AccessibilityInfoModule(ReactApplicationContext context) { super(context); mAccessibilityManager = (AccessibilityManager) getReactApplicationContext() .getSystemService(Context.ACCESSIBILITY_SERVICE); mEnabled = mAccessibilityManager.isTouchExplorationEnabled(); if (Build.VERSION.SDK_INT >= 19) { mTouchExplorationStateChangeListener = new ReactTouchExplorationStateChangeListener(); } }
protected boolean computeScrollHelper(boolean shouldInvalidate) { if (mScroller.computeScrollOffset()) { // Don't bother scrolling if the page does not need to be moved if (getUnboundedScrollX() != mScroller.getCurrX() || getScrollY() != mScroller.getCurrY()) { float scaleX = mFreeScroll ? getScaleX() : 1f; int scrollX = (int) (mScroller.getCurrX() * (1 / scaleX)); scrollTo(scrollX, mScroller.getCurrY()); } if (shouldInvalidate) { invalidate(); } return true; } else if (mNextPage != INVALID_PAGE && shouldInvalidate) { sendScrollAccessibilityEvent(); mCurrentPage = validateNewPage(mNextPage); mNextPage = INVALID_PAGE; notifyPageSwitchListener(); // We don't want to trigger a page end moving unless the page has settled // and the user has stopped scrolling if (mTouchState == TOUCH_STATE_REST) { pageEndTransition(); } onPostReorderingAnimationCompleted(); AccessibilityManager am = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (am.isEnabled()) { // Notify the user when the page changes announceForAccessibility(getCurrentPageDescription()); } return true; } return false; }
protected boolean computeScrollHelper(boolean shouldInvalidate) { if (mScroller.computeScrollOffset()) { // Don't bother scrolling if the page does not need to be moved if (getScrollX() != mScroller.getCurrX() || getScrollY() != mScroller.getCurrY()) { float scaleX = mFreeScroll ? getScaleX() : 1f; int scrollX = (int) (mScroller.getCurrX() * (1 / scaleX)); scrollTo(scrollX, mScroller.getCurrY()); } if (shouldInvalidate) { invalidate(); } return true; } else if (mNextPage != INVALID_PAGE && shouldInvalidate) { sendScrollAccessibilityEvent(); mCurrentPage = validateNewPage(mNextPage); mNextPage = INVALID_PAGE; notifyPageSwitchListener(); // We don't want to trigger a page end moving unless the page has settled // and the user has stopped scrolling if (mTouchState == TOUCH_STATE_REST) { pageEndMoving(); } onPostReorderingAnimationCompleted(); AccessibilityManager am = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (am.isEnabled()) { // Notify the user when the page changes announceForAccessibility(getCurrentPageDescription()); } return true; } return false; }
public MultiStateAlphaController(View view, int stateCount) { mTargetView = view; mAlphas = new float[stateCount]; Arrays.fill(mAlphas, 1); mAm = (AccessibilityManager) view.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); }
public RecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setScrollContainer(true); setFocusableInTouchMode(true); final int version = Build.VERSION.SDK_INT; mPostUpdatesOnAnimation = version >= 16; final ViewConfiguration vc = ViewConfiguration.get(context); mTouchSlop = vc.getScaledTouchSlop(); mMinFlingVelocity = vc.getScaledMinimumFlingVelocity(); mMaxFlingVelocity = vc.getScaledMaximumFlingVelocity(); setWillNotDraw(ViewCompat.getOverScrollMode(this) == ViewCompat.OVER_SCROLL_NEVER); mItemAnimator.setListener(mItemAnimatorListener); initAdapterManager(); initChildrenHelper(); // If not explicitly specified this view is important for accessibility. if (ViewCompat.getImportantForAccessibility(this) == ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_AUTO) { ViewCompat.setImportantForAccessibility(this, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_YES); } mAccessibilityManager = (AccessibilityManager) getContext() .getSystemService(Context.ACCESSIBILITY_SERVICE); setAccessibilityDelegateCompat(new RecyclerViewAccessibilityDelegate(this)); // Create the layoutManager if specified. // Re-set whether nested scrolling is enabled so that it is set on all API levels setNestedScrollingEnabled(true); }
private void setAccessibilityEnabled(boolean enabled) { AccessibilityManager am = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); try { Method setAccessibilityState = am.getClass().getDeclaredMethod("setAccessibilityState", boolean.class); setAccessibilityState.setAccessible(true); setAccessibilityState.invoke(am, enabled); setAccessibilityState.setAccessible(false); } catch (Throwable e) { if (LogUtils.isDebug()) { LogUtils.e(TAG, "setAccessibilityEnabled", e); } } }
public boolean isGroupReplyServiceEnabled(Context context) { AccessibilityManager accessibilityManager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); List<AccessibilityServiceInfo> accessibilityServices = accessibilityManager.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_GENERIC); for (AccessibilityServiceInfo info : accessibilityServices) { // if (info.getId().equals(getPackageName() + "/.WeChatGroupSendService")) { if (info.getId().equals(context.getPackageName() + "/.access.WeChatAccessService")) { return true; } } return false; }
private void sendAccessibilityEventForVirtualButton(int virtualViewId, int eventType, String text) { if (((AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE)).isEnabled()) { AccessibilityEvent event = AccessibilityEvent.obtain(eventType); event.setClassName(Button.class.getName()); event.setPackageName(getContext().getPackageName()); event.getText().add(text); event.setEnabled(NumberPicker.this.isEnabled()); event.setSource(NumberPicker.this, virtualViewId); requestSendAccessibilityEvent(NumberPicker.this, event); } }
public static boolean checkAccessibilityPermission(Context context) { AccessibilityManager accessibilityManager = (AccessibilityManager)context.getSystemService(Context.ACCESSIBILITY_SERVICE); List<AccessibilityServiceInfo> list = accessibilityManager.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_GENERIC); for (AccessibilityServiceInfo info : list) { if (info.getResolveInfo().serviceInfo.packageName.equals(context.getPackageName())) { return true; } } return false; }
private void sendAccessibilityEventForVirtualText(int eventType) { AccessibilityManager accessibilityManager = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (accessibilityManager.isEnabled()) { AccessibilityEvent event = AccessibilityEvent.obtain(eventType); AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); ViewCompat.onInitializeAccessibilityEvent(getInputText(), event); ViewCompat.onPopulateAccessibilityEvent(getInputText(), event); record.setSource(mNumberPicker, VIRTUAL_VIEW_ID_INPUT); ViewParentCompat.requestSendAccessibilityEvent(mNumberPicker, mNumberPicker, event); } }
private void sendAccessibilityEventForVirtualButton(int virtualViewId, int eventType, String text) { AccessibilityManager accessibilityManager = (AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (accessibilityManager.isEnabled()) { AccessibilityEvent event = AccessibilityEvent.obtain(eventType); AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); event.setPackageName(getContext().getPackageName()); record.setClassName(Button.class.getName()); record.getText().add(text); record.setEnabled(isEnabled()); record.setSource(mNumberPicker, virtualViewId); ViewParentCompat.requestSendAccessibilityEvent(mNumberPicker, mNumberPicker, event); } }
/** * Checks to see that this device has accessibility and touch exploration enabled. * @param context A {@link Context} instance. * @return Whether or not accessibility and touch exploration are enabled. */ @CalledByNative public static boolean isAccessibilityEnabled(Context context) { AccessibilityManager manager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); return manager != null && manager.isEnabled() && manager.isTouchExplorationEnabled(); }
/** * Checks to see if an old version of TalkBack is running that Chrome doesn't support, * and if so, shows an alert dialog prompting the user to update the app. * @param context A {@link Context} instance. * @return True if the dialog was shown. */ public static boolean showWarningIfOldTalkbackRunning(Context context) { AccessibilityManager manager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); if (manager == null) return false; boolean isTalkbackRunning = false; try { List<AccessibilityServiceInfo> services = manager.getEnabledAccessibilityServiceList( AccessibilityServiceInfo.FEEDBACK_SPOKEN); for (AccessibilityServiceInfo service : services) { if (service.getId().contains(TALKBACK_PACKAGE_NAME)) isTalkbackRunning = true; } } catch (NullPointerException e) { // getEnabledAccessibilityServiceList() can throw an NPE due to a bad // AccessibilityService. } if (!isTalkbackRunning) return false; if (PackageUtils.getPackageVersion(context, TALKBACK_PACKAGE_NAME) < MIN_TALKBACK_VERSION && !sOldTalkBackVersionAlertShown) { showOldTalkbackVersionAlertOnce(context); return true; } return false; }
public static void sendCustomAccessibilityEvent(View target, int type, String text) { AccessibilityManager accessibilityManager = (AccessibilityManager) target.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE); if (accessibilityManager.isEnabled()) { AccessibilityEvent event = AccessibilityEvent.obtain(type); target.onInitializeAccessibilityEvent(event); event.getText().add(text); accessibilityManager.sendAccessibilityEvent(event); } }
public ExploreByTouchHelper(View forView) { if (forView == null) { throw new IllegalArgumentException("View may not be null"); } this.mView = forView; this.mManager = (AccessibilityManager) forView.getContext().getSystemService("accessibility"); }
@TargetApi(16) public AdapterView( Context context, AttributeSet attrs, int defStyle ) { super( context, attrs, defStyle ); if( android.os.Build.VERSION.SDK_INT >= 16 ) { // If not explicitly specified this view is important for accessibility. if ( getImportantForAccessibility() == IMPORTANT_FOR_ACCESSIBILITY_AUTO ) { setImportantForAccessibility( IMPORTANT_FOR_ACCESSIBILITY_YES ); } } if( ! isInEditMode() ) { mAccessibilityManager = (AccessibilityManager) getContext().getSystemService( Context.ACCESSIBILITY_SERVICE ); } }
private void sendAccessibilityEventForVirtualText(int eventType) { if (((AccessibilityManager) getContext().getSystemService(Context.ACCESSIBILITY_SERVICE)).isEnabled()) { AccessibilityEvent event = AccessibilityEvent.obtain(eventType); mInputText.onInitializeAccessibilityEvent(event); mInputText.onPopulateAccessibilityEvent(event); event.setSource(NumberPicker.this, VIRTUAL_VIEW_ID_INPUT); requestSendAccessibilityEvent(NumberPicker.this, event); } }