| package com.android.ex.photo.util; |
| |
| import android.content.Context; |
| import android.os.Build; |
| import android.support.v4.view.accessibility.AccessibilityEventCompat; |
| import android.support.v4.view.accessibility.AccessibilityRecordCompat; |
| import android.view.View; |
| import android.view.accessibility.AccessibilityEvent; |
| import android.view.accessibility.AccessibilityManager; |
| |
| public class Util { |
| public static boolean isTouchExplorationEnabled(AccessibilityManager accessibilityManager) { |
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { |
| return accessibilityManager.isTouchExplorationEnabled(); |
| } else { |
| return false; |
| } |
| } |
| |
| /** |
| * Make an announcement which is related to some sort of a context change. Also see |
| * {@link android.view.View#announceForAccessibility} |
| * @param view The view that triggered the announcement |
| * @param accessibilityManager AccessibilityManager instance. If it is null, the method can |
| * obtain an instance itself. |
| * @param text The announcement text |
| */ |
| public static void announceForAccessibility( |
| final View view, AccessibilityManager accessibilityManager, |
| final CharSequence text) { |
| // Jelly Bean added support for speaking text verbatim |
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { |
| view.announceForAccessibility(text); |
| return; |
| } |
| |
| final Context context = view.getContext().getApplicationContext(); |
| if (accessibilityManager == null) { |
| accessibilityManager = (AccessibilityManager) context.getSystemService( |
| Context.ACCESSIBILITY_SERVICE); |
| } |
| |
| if (!accessibilityManager.isEnabled()) { |
| return; |
| } |
| |
| final int eventType = AccessibilityEvent.TYPE_VIEW_FOCUSED; |
| |
| // Construct an accessibility event with the minimum recommended |
| // attributes. An event without a class name or package may be dropped. |
| final AccessibilityEvent event = AccessibilityEvent.obtain(eventType); |
| event.getText().add(text); |
| event.setEnabled(view.isEnabled()); |
| event.setClassName(view.getClass().getName()); |
| event.setPackageName(context.getPackageName()); |
| |
| // JellyBean MR1 requires a source view to set the window ID. |
| final AccessibilityRecordCompat record = AccessibilityEventCompat.asRecord(event); |
| record.setSource(view); |
| |
| if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { |
| view.getParent().requestSendAccessibilityEvent(view, event); |
| } else { |
| // Sends the event directly through the accessibility manager. |
| accessibilityManager.sendAccessibilityEvent(event); |
| } |
| } |
| } |