Loading java/com/android/dialer/app/MainComponent.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,6 @@ public class MainComponent { } private static String getComponentName() { return "com.android.dialer.main.impl.MainActivity"; return "com.android.dialer.app.DialtactsActivity"; } } java/com/android/dialer/dialpadview/DialpadFragment.java +8 −1 Original line number Diff line number Diff line Loading @@ -1050,9 +1050,15 @@ public class DialpadFragment extends Fragment digits.clear(); return true; } else if (id == R.id.one) { if (isDigitsEmpty() || TextUtils.equals(this.digits.getText(), "1")) { // For non-talkback users: check for empty // For linear navigation users: check for "1" // For explore by touch users: check for "11" if (isDigitsEmpty() || TextUtils.equals(this.digits.getText(), "1") || TextUtils.equals(this.digits.getText(), "11")) { // We'll try to initiate voicemail and thus we want to remove irrelevant string. removePreviousDigitIfPossible('1'); removePreviousDigitIfPossible('1'); List<PhoneAccountHandle> subscriptionAccountHandles = TelecomUtil.getSubscriptionPhoneAccounts(getActivity()); Loading Loading @@ -1094,6 +1100,7 @@ public class DialpadFragment extends Fragment // (and not via other means like certain accessibility input methods). // Remove the '0' that was input when the key was first pressed. removePreviousDigitIfPossible('0'); removePreviousDigitIfPossible('0'); } keyPressed(KeyEvent.KEYCODE_PLUS); stopTone(); Loading java/com/android/dialer/dialpadview/DialpadKeyButton.java +14 −62 Original line number Diff line number Diff line Loading @@ -19,13 +19,14 @@ package com.android.dialer.dialpadview; import android.content.Context; import android.graphics.RectF; import android.os.Bundle; import android.text.TextUtils; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.widget.FrameLayout; /** Loading @@ -45,33 +46,21 @@ import android.widget.FrameLayout; */ public class DialpadKeyButton extends FrameLayout { /** Timeout before switching to long-click accessibility mode. */ private static final int LONG_HOVER_TIMEOUT = ViewConfiguration.getLongPressTimeout() * 2; /** Accessibility manager instance used to check touch exploration state. */ private AccessibilityManager accessibilityManager; /** Bounds used to filter HOVER_EXIT events. */ private RectF hoverBounds = new RectF(); /** Whether this view is currently in the long-hover state. */ private boolean longHovered; /** Alternate content description for long-hover state. */ private CharSequence longHoverContentDesc; /** Backup of standard content description. Used for accessibility. */ private CharSequence backupContentDesc; /** Backup of clickable property. Used for accessibility. */ private boolean wasClickable; /** Backup of long-clickable property. Used for accessibility. */ private boolean wasLongClickable; /** Runnable used to trigger long-click mode for accessibility. */ private Runnable longHoverRunnable; private OnPressedListener onPressedListener; public DialpadKeyButton(Context context, AttributeSet attrs) { Loading @@ -95,19 +84,6 @@ public class DialpadKeyButton extends FrameLayout { public void setLongHoverContentDescription(CharSequence contentDescription) { longHoverContentDesc = contentDescription; if (longHovered) { super.setContentDescription(longHoverContentDesc); } } @Override public void setContentDescription(CharSequence contentDescription) { if (longHovered) { backupContentDesc = contentDescription; } else { super.setContentDescription(contentDescription); } } @Override Loading Loading @@ -138,6 +114,18 @@ public class DialpadKeyButton extends FrameLayout { return super.performAccessibilityAction(action, arguments); } @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); // If the button has a long hover description, ask talkback to announce the action follow by // the description (for example "double tap and hold to call voicemail"). if (!TextUtils.isEmpty(longHoverContentDesc)) { AccessibilityAction longClickAction = new AccessibilityAction(AccessibilityNodeInfo.ACTION_LONG_CLICK, longHoverContentDesc); info.addAction(longClickAction); } } @Override public boolean onHoverEvent(MotionEvent event) { // When touch exploration is turned on, lifting a finger while inside Loading @@ -148,20 +136,6 @@ public class DialpadKeyButton extends FrameLayout { // Lift-to-type temporarily disables double-tap activation. wasClickable = isClickable(); wasLongClickable = isLongClickable(); if (wasLongClickable && longHoverContentDesc != null) { if (longHoverRunnable == null) { longHoverRunnable = new Runnable() { @Override public void run() { setLongHovered(true); announceForAccessibility(longHoverContentDesc); } }; } postDelayed(longHoverRunnable, LONG_HOVER_TIMEOUT); } setClickable(false); setLongClickable(false); break; Loading @@ -170,7 +144,6 @@ public class DialpadKeyButton extends FrameLayout { simulateClickForAccessibility(); } cancelLongHover(); setClickable(wasClickable); setLongClickable(wasLongClickable); break; Loading Loading @@ -201,27 +174,6 @@ public class DialpadKeyButton extends FrameLayout { setPressed(false); } private void setLongHovered(boolean enabled) { if (longHovered != enabled) { longHovered = enabled; // Switch between normal and alternate description, if available. if (enabled) { backupContentDesc = getContentDescription(); super.setContentDescription(longHoverContentDesc); } else { super.setContentDescription(backupContentDesc); } } } private void cancelLongHover() { if (longHoverRunnable != null) { removeCallbacks(longHoverRunnable); } setLongHovered(false); } public interface OnPressedListener { void onPressed(View view, boolean pressed); Loading java/com/android/dialer/dialpadview/DialpadView.java +3 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,9 @@ public class DialpadView extends LinearLayout { } else if (BUTTON_IDS[i] == R.id.star) { numberString = resources.getString(R.string.dialpad_star_number); numberContentDescription = numberString; } else if (BUTTON_IDS[i] == R.id.zero) { numberString = numberFormat.format(i); numberContentDescription = numberString; } else { numberString = numberFormat.format(i); // The content description is used for Talkback key presses. The number is Loading java/com/android/dialer/dialpadview/res/values/strings.xml +2 −2 Original line number Diff line number Diff line Loading @@ -30,12 +30,12 @@ <string name="description_delete_button">backspace</string> <!-- String describing the button used to add a plus (+) symbol to the dialpad --> <string name="description_image_button_plus">plus</string> <string name="description_image_button_plus">dial plus</string> <!-- String describing the Voicemail ImageButton. Used by AccessibilityService to announce the purpose of the button. --> <string name="description_voicemail_button">voicemail</string> <string name="description_voicemail_button">call voicemail</string> <!-- String describing the Dial ImageButton Loading Loading
java/com/android/dialer/app/MainComponent.java +1 −1 Original line number Diff line number Diff line Loading @@ -56,6 +56,6 @@ public class MainComponent { } private static String getComponentName() { return "com.android.dialer.main.impl.MainActivity"; return "com.android.dialer.app.DialtactsActivity"; } }
java/com/android/dialer/dialpadview/DialpadFragment.java +8 −1 Original line number Diff line number Diff line Loading @@ -1050,9 +1050,15 @@ public class DialpadFragment extends Fragment digits.clear(); return true; } else if (id == R.id.one) { if (isDigitsEmpty() || TextUtils.equals(this.digits.getText(), "1")) { // For non-talkback users: check for empty // For linear navigation users: check for "1" // For explore by touch users: check for "11" if (isDigitsEmpty() || TextUtils.equals(this.digits.getText(), "1") || TextUtils.equals(this.digits.getText(), "11")) { // We'll try to initiate voicemail and thus we want to remove irrelevant string. removePreviousDigitIfPossible('1'); removePreviousDigitIfPossible('1'); List<PhoneAccountHandle> subscriptionAccountHandles = TelecomUtil.getSubscriptionPhoneAccounts(getActivity()); Loading Loading @@ -1094,6 +1100,7 @@ public class DialpadFragment extends Fragment // (and not via other means like certain accessibility input methods). // Remove the '0' that was input when the key was first pressed. removePreviousDigitIfPossible('0'); removePreviousDigitIfPossible('0'); } keyPressed(KeyEvent.KEYCODE_PLUS); stopTone(); Loading
java/com/android/dialer/dialpadview/DialpadKeyButton.java +14 −62 Original line number Diff line number Diff line Loading @@ -19,13 +19,14 @@ package com.android.dialer.dialpadview; import android.content.Context; import android.graphics.RectF; import android.os.Bundle; import android.text.TextUtils; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.widget.FrameLayout; /** Loading @@ -45,33 +46,21 @@ import android.widget.FrameLayout; */ public class DialpadKeyButton extends FrameLayout { /** Timeout before switching to long-click accessibility mode. */ private static final int LONG_HOVER_TIMEOUT = ViewConfiguration.getLongPressTimeout() * 2; /** Accessibility manager instance used to check touch exploration state. */ private AccessibilityManager accessibilityManager; /** Bounds used to filter HOVER_EXIT events. */ private RectF hoverBounds = new RectF(); /** Whether this view is currently in the long-hover state. */ private boolean longHovered; /** Alternate content description for long-hover state. */ private CharSequence longHoverContentDesc; /** Backup of standard content description. Used for accessibility. */ private CharSequence backupContentDesc; /** Backup of clickable property. Used for accessibility. */ private boolean wasClickable; /** Backup of long-clickable property. Used for accessibility. */ private boolean wasLongClickable; /** Runnable used to trigger long-click mode for accessibility. */ private Runnable longHoverRunnable; private OnPressedListener onPressedListener; public DialpadKeyButton(Context context, AttributeSet attrs) { Loading @@ -95,19 +84,6 @@ public class DialpadKeyButton extends FrameLayout { public void setLongHoverContentDescription(CharSequence contentDescription) { longHoverContentDesc = contentDescription; if (longHovered) { super.setContentDescription(longHoverContentDesc); } } @Override public void setContentDescription(CharSequence contentDescription) { if (longHovered) { backupContentDesc = contentDescription; } else { super.setContentDescription(contentDescription); } } @Override Loading Loading @@ -138,6 +114,18 @@ public class DialpadKeyButton extends FrameLayout { return super.performAccessibilityAction(action, arguments); } @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); // If the button has a long hover description, ask talkback to announce the action follow by // the description (for example "double tap and hold to call voicemail"). if (!TextUtils.isEmpty(longHoverContentDesc)) { AccessibilityAction longClickAction = new AccessibilityAction(AccessibilityNodeInfo.ACTION_LONG_CLICK, longHoverContentDesc); info.addAction(longClickAction); } } @Override public boolean onHoverEvent(MotionEvent event) { // When touch exploration is turned on, lifting a finger while inside Loading @@ -148,20 +136,6 @@ public class DialpadKeyButton extends FrameLayout { // Lift-to-type temporarily disables double-tap activation. wasClickable = isClickable(); wasLongClickable = isLongClickable(); if (wasLongClickable && longHoverContentDesc != null) { if (longHoverRunnable == null) { longHoverRunnable = new Runnable() { @Override public void run() { setLongHovered(true); announceForAccessibility(longHoverContentDesc); } }; } postDelayed(longHoverRunnable, LONG_HOVER_TIMEOUT); } setClickable(false); setLongClickable(false); break; Loading @@ -170,7 +144,6 @@ public class DialpadKeyButton extends FrameLayout { simulateClickForAccessibility(); } cancelLongHover(); setClickable(wasClickable); setLongClickable(wasLongClickable); break; Loading Loading @@ -201,27 +174,6 @@ public class DialpadKeyButton extends FrameLayout { setPressed(false); } private void setLongHovered(boolean enabled) { if (longHovered != enabled) { longHovered = enabled; // Switch between normal and alternate description, if available. if (enabled) { backupContentDesc = getContentDescription(); super.setContentDescription(longHoverContentDesc); } else { super.setContentDescription(backupContentDesc); } } } private void cancelLongHover() { if (longHoverRunnable != null) { removeCallbacks(longHoverRunnable); } setLongHovered(false); } public interface OnPressedListener { void onPressed(View view, boolean pressed); Loading
java/com/android/dialer/dialpadview/DialpadView.java +3 −0 Original line number Diff line number Diff line Loading @@ -171,6 +171,9 @@ public class DialpadView extends LinearLayout { } else if (BUTTON_IDS[i] == R.id.star) { numberString = resources.getString(R.string.dialpad_star_number); numberContentDescription = numberString; } else if (BUTTON_IDS[i] == R.id.zero) { numberString = numberFormat.format(i); numberContentDescription = numberString; } else { numberString = numberFormat.format(i); // The content description is used for Talkback key presses. The number is Loading
java/com/android/dialer/dialpadview/res/values/strings.xml +2 −2 Original line number Diff line number Diff line Loading @@ -30,12 +30,12 @@ <string name="description_delete_button">backspace</string> <!-- String describing the button used to add a plus (+) symbol to the dialpad --> <string name="description_image_button_plus">plus</string> <string name="description_image_button_plus">dial plus</string> <!-- String describing the Voicemail ImageButton. Used by AccessibilityService to announce the purpose of the button. --> <string name="description_voicemail_button">voicemail</string> <string name="description_voicemail_button">call voicemail</string> <!-- String describing the Dial ImageButton Loading