Java Code Examples for com.android.datetimepicker.Utils#tryAccessibilityAnnounce()

The following examples show how to use com.android.datetimepicker.Utils#tryAccessibilityAnnounce() . These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
/**
 * Called by the picker for updating the header display.
 */
@Override
public void onValueSelected(int pickerIndex, int newValue, boolean autoAdvance) {
    if (pickerIndex == HOUR_INDEX) {
        setHour(newValue, false);
        String announcement = String.format("%d", newValue);
        if (mAllowAutoAdvance && autoAdvance) {
            setCurrentItemShowing(MINUTE_INDEX, true, true, false);
            announcement += ". " + mSelectMinutes;
        } else {
            mTimePicker.setContentDescription(mHourPickerDescription + ": " + newValue);
        }

        Utils.tryAccessibilityAnnounce(mTimePicker, announcement);
    } else if (pickerIndex == MINUTE_INDEX){
        setMinute(newValue);
        mTimePicker.setContentDescription(mMinutePickerDescription + ": " + newValue);
    } else if (pickerIndex == AMPM_INDEX) {
        updateAmPmDisplay(newValue);
    } else if (pickerIndex == ENABLE_PICKER_INDEX) {
        if (!isTypedTimeFullyLegal()) {
            mTypedTimes.clear();
        }
        finishKbMode(true);
    }
}
 
Example 2
private void setHour(int value, boolean announce) {
    String format;
    if (mIs24HourMode) {
        format = "%02d";
    } else {
        format = "%d";
        value = value % 12;
        if (value == 0) {
            value = 12;
        }
    }

    CharSequence text = String.format(format, value);
    mHourView.setText(text);
    mHourSpaceView.setText(text);
    if (announce) {
        Utils.tryAccessibilityAnnounce(mTimePicker, text);
    }
}
 
Example 3
Source Project: cathode   File: TimePickerDialog.java    License: Apache License 2.0 6 votes vote down vote up
/**
 * Called by the picker for updating the header display.
 */
@Override public void onValueSelected(int pickerIndex, int newValue, boolean autoAdvance) {
  if (pickerIndex == HOUR_INDEX) {
    setHour(newValue, false);
    String announcement = String.format("%d", newValue);
    if (mAllowAutoAdvance && autoAdvance) {
      setCurrentItemShowing(MINUTE_INDEX, true, true, false);
      announcement += ". " + mSelectMinutes;
    } else {
      mTimePicker.setContentDescription(mHourPickerDescription + ": " + newValue);
    }

    Utils.tryAccessibilityAnnounce(mTimePicker, announcement);
  } else if (pickerIndex == MINUTE_INDEX) {
    setMinute(newValue);
    mTimePicker.setContentDescription(mMinutePickerDescription + ": " + newValue);
  } else if (pickerIndex == AMPM_INDEX) {
    updateAmPmDisplay(newValue);
  } else if (pickerIndex == ENABLE_PICKER_INDEX) {
    if (!isTypedTimeFullyLegal()) {
      mTypedTimes.clear();
    }
    finishKbMode(true);
  }
}
 
Example 4
private void updateDisplay(boolean announce) {
    if (mDayOfWeekView != null) {
        mDayOfWeekView.setText(mCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG,
                Locale.getDefault()).toUpperCase(Locale.getDefault()));
    }

    mSelectedMonthTextView.setText(mCalendar.getDisplayName(Calendar.MONTH, Calendar.SHORT,
            Locale.getDefault()).toUpperCase(Locale.getDefault()));
    mSelectedDayTextView.setText(DAY_FORMAT.format(mCalendar.getTime()));
    mYearView.setText(YEAR_FORMAT.format(mCalendar.getTime()));

    // Accessibility.
    long millis = mCalendar.getTimeInMillis();
    mAnimator.setDateMillis(millis);
    int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR;
    String monthAndDayText = DateUtils.formatDateTime(getActivity(), millis, flags);
    mMonthAndDayView.setContentDescription(monthAndDayText);

    if (announce) {
        flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR;
        String fullDateText = DateUtils.formatDateTime(getActivity(), millis, flags);
        Utils.tryAccessibilityAnnounce(mAnimator, fullDateText);
    }
}
 
Example 5
/**
 * Called by the picker for updating the header display.
 */
@Override
public void onValueSelected(int pickerIndex, int newValue, boolean autoAdvance) {
    if (pickerIndex == HOUR_INDEX) {
        setHour(newValue, false);
        String announcement = String.format("%d", newValue);
        if (mAllowAutoAdvance && autoAdvance) {
            setCurrentItemShowing(MINUTE_INDEX, true, true, false);
            announcement += ". " + mSelectMinutes;
        } else {
            mTimePicker.setContentDescription(mHourPickerDescription + ": " + newValue);
        }

        Utils.tryAccessibilityAnnounce(mTimePicker, announcement);
    } else if (pickerIndex == MINUTE_INDEX){
        setMinute(newValue);
        mTimePicker.setContentDescription(mMinutePickerDescription + ": " + newValue);
    } else if (pickerIndex == AMPM_INDEX) {
        updateAmPmDisplay(newValue);
    } else if (pickerIndex == ENABLE_PICKER_INDEX) {
        if (!isTypedTimeFullyLegal()) {
            mTypedTimes.clear();
        }
        finishKbMode(true);
    }
}
 
Example 6
private void setHour(int value, boolean announce) {
    String format;
    if (mIs24HourMode) {
        format = "%02d";
    } else {
        format = "%d";
        value = value % 12;
        if (value == 0) {
            value = 12;
        }
    }

    CharSequence text = String.format(format, value);
    mHourView.setText(text);
    mHourSpaceView.setText(text);
    if (announce) {
        Utils.tryAccessibilityAnnounce(mTimePicker, text);
    }
}
 
Example 7
Source Project: cathode   File: DatePickerDialog.java    License: Apache License 2.0 6 votes vote down vote up
private void updateDisplay(boolean announce) {
  if (mDayOfWeekView != null) {
    mDayOfWeekView.setText(
        mCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault())
            .toUpperCase(Locale.getDefault()));
  }

  mSelectedMonthTextView.setText(
      mCalendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault())
          .toUpperCase(Locale.getDefault()));
  mSelectedDayTextView.setText(DAY_FORMAT.format(mCalendar.getTime()));
  mYearView.setText(YEAR_FORMAT.format(mCalendar.getTime()));

  // Accessibility.
  long millis = mCalendar.getTimeInMillis();
  mAnimator.setDateMillis(millis);
  int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR;
  String monthAndDayText = DateUtils.formatDateTime(getActivity(), millis, flags);
  mMonthAndDayView.setContentDescription(monthAndDayText);

  if (announce) {
    flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR;
    String fullDateText = DateUtils.formatDateTime(getActivity(), millis, flags);
    Utils.tryAccessibilityAnnounce(mAnimator, fullDateText);
  }
}
 
Example 8
private void updateDisplay(boolean announce) {
    if (mDayOfWeekView != null) {
        mDayOfWeekView.setText(mCalendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG,
                Locale.getDefault()).toUpperCase(Locale.getDefault()));
    }

    mSelectedMonthTextView.setText(mCalendar.getDisplayName(Calendar.MONTH, Calendar.SHORT,
            Locale.getDefault()).toUpperCase(Locale.getDefault()));
    mSelectedDayTextView.setText(DAY_FORMAT.format(mCalendar.getTime()));
    mYearView.setText(YEAR_FORMAT.format(mCalendar.getTime()));

    // Accessibility.
    long millis = mCalendar.getTimeInMillis();
    mAnimator.setDateMillis(millis);
    int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR;
    String monthAndDayText = DateUtils.formatDateTime(getActivity(), millis, flags);
    mMonthAndDayView.setContentDescription(monthAndDayText);

    if (announce) {
        flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR;
        String fullDateText = DateUtils.formatDateTime(getActivity(), millis, flags);
        Utils.tryAccessibilityAnnounce(mAnimator, fullDateText);
    }
}
 
Example 9
private void updateAmPmDisplay(int amOrPm) {
    if (amOrPm == AM) {
        mAmPmTextView.setText(mAmText);
        Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
        mAmPmHitspace.setContentDescription(mAmText);
    } else if (amOrPm == PM){
        mAmPmTextView.setText(mPmText);
        Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
        mAmPmHitspace.setContentDescription(mPmText);
    } else {
        mAmPmTextView.setText(mDoublePlaceholderText);
    }
}
 
Example 10
private void setMinute(int value) {
    if (value == 60) {
        value = 0;
    }
    CharSequence text = String.format(Locale.getDefault(), "%02d", value);
    Utils.tryAccessibilityAnnounce(mTimePicker, text);
    mMinuteView.setText(text);
    mMinuteSpaceView.setText(text);
}
 
Example 11
private void setCurrentItemShowing(int index, boolean animateCircle, boolean delayLabelAnimate,
        boolean announce) {
    mTimePicker.setCurrentItemShowing(index, animateCircle);

    TextView labelToAnimate;
    if (index == HOUR_INDEX) {
        int hours = mTimePicker.getHours();
        if (!mIs24HourMode) {
            hours = hours % 12;
        }
        mTimePicker.setContentDescription(mHourPickerDescription + ": " + hours);
        if (announce) {
            Utils.tryAccessibilityAnnounce(mTimePicker, mSelectHours);
        }
        labelToAnimate = mHourView;
    } else {
        int minutes = mTimePicker.getMinutes();
        mTimePicker.setContentDescription(mMinutePickerDescription + ": " + minutes);
        if (announce) {
            Utils.tryAccessibilityAnnounce(mTimePicker, mSelectMinutes);
        }
        labelToAnimate = mMinuteView;
    }

    int hourColor = (index == HOUR_INDEX)? mSelectedColor : mUnselectedColor;
    int minuteColor = (index == MINUTE_INDEX)? mSelectedColor : mUnselectedColor;
    mHourView.setTextColor(hourColor);
    mMinuteView.setTextColor(minuteColor);

    ObjectAnimator pulseAnimator = Utils.getPulseAnimator(labelToAnimate, 0.85f, 1.1f);
    if (delayLabelAnimate) {
        pulseAnimator.setStartDelay(PULSE_ANIMATOR_DELAY);
    }
    pulseAnimator.start();
}
 
Example 12
private boolean addKeyIfLegal(int keyCode) {
    // If we're in 24hour mode, we'll need to check if the input is full. If in AM/PM mode,
    // we'll need to see if AM/PM have been typed.
    if ((mIs24HourMode && mTypedTimes.size() == 4) ||
            (!mIs24HourMode && isTypedTimeFullyLegal())) {
        return false;
    }

    mTypedTimes.add(keyCode);
    if (!isTypedTimeLegalSoFar()) {
        deleteLastTypedKey();
        return false;
    }

    int val = getValFromKeyCode(keyCode);
    Utils.tryAccessibilityAnnounce(mTimePicker, String.format("%d", val));
    // Automatically fill in 0's if AM or PM was legally entered.
    if (isTypedTimeFullyLegal()) {
        if (!mIs24HourMode && mTypedTimes.size() <= 3) {
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
        }
        mDoneButton.setEnabled(true);
    }

    return true;
}
 
Example 13
private void updateAmPmDisplay(int amOrPm) {
    if (amOrPm == AM) {
        mAmPmTextView.setText(mAmText);
        Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
        mAmPmHitspace.setContentDescription(mAmText);
    } else if (amOrPm == PM){
        mAmPmTextView.setText(mPmText);
        Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
        mAmPmHitspace.setContentDescription(mPmText);
    } else {
        mAmPmTextView.setText(mDoublePlaceholderText);
    }
}
 
Example 14
Source Project: cathode   File: TimePickerDialog.java    License: Apache License 2.0 5 votes vote down vote up
private void updateAmPmDisplay(int amOrPm) {
  if (amOrPm == AM) {
    mAmPmTextView.setText(mAmText);
    Utils.tryAccessibilityAnnounce(mTimePicker, mAmText);
    mAmPmHitspace.setContentDescription(mAmText);
  } else if (amOrPm == PM) {
    mAmPmTextView.setText(mPmText);
    Utils.tryAccessibilityAnnounce(mTimePicker, mPmText);
    mAmPmHitspace.setContentDescription(mPmText);
  } else {
    mAmPmTextView.setText(mDoublePlaceholderText);
  }
}
 
Example 15
private void setCurrentItemShowing(int index, boolean animateCircle, boolean delayLabelAnimate,
        boolean announce) {
    mTimePicker.setCurrentItemShowing(index, animateCircle);

    TextView labelToAnimate;
    if (index == HOUR_INDEX) {
        int hours = mTimePicker.getHours();
        if (!mIs24HourMode) {
            hours = hours % 12;
        }
        mTimePicker.setContentDescription(mHourPickerDescription + ": " + hours);
        if (announce) {
            Utils.tryAccessibilityAnnounce(mTimePicker, mSelectHours);
        }
        labelToAnimate = mHourView;
    } else {
        int minutes = mTimePicker.getMinutes();
        mTimePicker.setContentDescription(mMinutePickerDescription + ": " + minutes);
        if (announce) {
            Utils.tryAccessibilityAnnounce(mTimePicker, mSelectMinutes);
        }
        labelToAnimate = mMinuteView;
    }

    mHourView.setSelected(index == HOUR_INDEX);
    mMinuteView.setSelected(index == MINUTE_INDEX);

    ObjectAnimator pulseAnimator = Utils.getPulseAnimator(labelToAnimate, 0.85f, 1.1f);
    if (delayLabelAnimate) {
        pulseAnimator.setStartDelay(PULSE_ANIMATOR_DELAY);
    }
    pulseAnimator.start();
}
 
Example 16
private boolean addKeyIfLegal(int keyCode) {
    // If we're in 24hour mode, we'll need to check if the input is full. If in AM/PM mode,
    // we'll need to see if AM/PM have been typed.
    if ((mIs24HourMode && mTypedTimes.size() == 4) ||
            (!mIs24HourMode && isTypedTimeFullyLegal())) {
        return false;
    }

    mTypedTimes.add(keyCode);
    if (!isTypedTimeLegalSoFar()) {
        deleteLastTypedKey();
        return false;
    }

    int val = getValFromKeyCode(keyCode);
    Utils.tryAccessibilityAnnounce(mTimePicker, String.format("%d", val));
    // Automatically fill in 0's if AM or PM was legally entered.
    if (isTypedTimeFullyLegal()) {
        if (!mIs24HourMode && mTypedTimes.size() <= 3) {
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
            mTypedTimes.add(mTypedTimes.size() - 1, KeyEvent.KEYCODE_0);
        }
        mDoneButton.setEnabled(true);
    }

    return true;
}
 
Example 17
Source Project: narrate-android   File: DayPickerView.java    License: Apache License 2.0 4 votes vote down vote up
/**
 * When scroll forward/backward events are received, announce the newly scrolled-to month.
 */
@SuppressLint("NewApi")
@Override
public boolean performAccessibilityAction(int action, Bundle arguments) {
    if (action != AccessibilityNodeInfo.ACTION_SCROLL_FORWARD &&
            action != AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD) {
        return super.performAccessibilityAction(action, arguments);
    }

    // Figure out what month is showing.
    int firstVisiblePosition = getFirstVisiblePosition();
    int month = firstVisiblePosition % 12;
    int year = firstVisiblePosition / 12 + mController.getMinYear();
    CalendarDay day = new CalendarDay(year, month, 1);

    // Scroll either forward or backward one month.
    if (action == AccessibilityNodeInfo.ACTION_SCROLL_FORWARD) {
        day.month++;
        if (day.month == 12) {
            day.month = 0;
            day.year++;
        }
    } else if (action == AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD) {
        View firstVisibleView = getChildAt(0);
        // If the view is fully visible, jump one month back. Otherwise, we'll just jump
        // to the first day of first visible month.
        if (firstVisibleView != null && firstVisibleView.getTop() >= -1) {
            // There's an off-by-one somewhere, so the top of the first visible item will
            // actually be -1 when it's at the exact top.
            day.month--;
            if (day.month == -1) {
                day.month = 11;
                day.year--;
            }
        }
    }

    // Go to that month.
    Utils.tryAccessibilityAnnounce(this, getMonthAndYearString(day));
    goTo(day, true, false, true);
    mPerformingScroll = true;
    return true;
}
 
Example 18
private void setCurrentView(final int viewIndex) {
    long millis = mCalendar.getTimeInMillis();

    switch (viewIndex) {
        case MONTH_AND_DAY_VIEW:
            ObjectAnimator pulseAnimator = Utils.getPulseAnimator(mMonthAndDayView, 0.9f,
                    1.05f);
            if (mDelayAnimation) {
                pulseAnimator.setStartDelay(ANIMATION_DELAY);
                mDelayAnimation = false;
            }
            mDayPickerView.onDateChanged();
            if (mCurrentView != viewIndex) {
                mMonthAndDayView.setSelected(true);
                mYearView.setSelected(false);
                mAnimator.setDisplayedChild(MONTH_AND_DAY_VIEW);
                mCurrentView = viewIndex;
            }
            pulseAnimator.start();

            int flags = DateUtils.FORMAT_SHOW_DATE;
            String dayString = DateUtils.formatDateTime(getActivity(), millis, flags);
            mAnimator.setContentDescription(mDayPickerDescription+": "+dayString);
            Utils.tryAccessibilityAnnounce(mAnimator, mSelectDay);
            break;
        case YEAR_VIEW:
            pulseAnimator = Utils.getPulseAnimator(mYearView, 0.85f, 1.1f);
            if (mDelayAnimation) {
                pulseAnimator.setStartDelay(ANIMATION_DELAY);
                mDelayAnimation = false;
            }
            mYearPickerView.onDateChanged();
            if (mCurrentView != viewIndex) {
                mMonthAndDayView.setSelected(false);
                mYearView.setSelected(true);
                mAnimator.setDisplayedChild(YEAR_VIEW);
                mCurrentView = viewIndex;
            }
            pulseAnimator.start();

            CharSequence yearString = YEAR_FORMAT.format(millis);
            mAnimator.setContentDescription(mYearPickerDescription+": "+yearString);
            Utils.tryAccessibilityAnnounce(mAnimator, mSelectYear);
            break;
    }
}
 
Example 19
/**
 * For keyboard mode, processes key events.
 * @param keyCode the pressed key.
 * @return true if the key was successfully processed, false otherwise.
 */
private boolean processKeyUp(int keyCode) {
    if (keyCode == KeyEvent.KEYCODE_ESCAPE || keyCode == KeyEvent.KEYCODE_BACK) {
        dismiss();
        return true;
    } else if (keyCode == KeyEvent.KEYCODE_TAB) {
        if(mInKbMode) {
            if (isTypedTimeFullyLegal()) {
                finishKbMode(true);
            }
            return true;
        }
    } else if (keyCode == KeyEvent.KEYCODE_ENTER) {
        if (mInKbMode) {
            if (!isTypedTimeFullyLegal()) {
                return true;
            }
            finishKbMode(false);
        }
        if (mCallback != null) {
            mCallback.onTimeSet(mTimePicker,
                    mTimePicker.getHours(), mTimePicker.getMinutes());
        }
        dismiss();
        return true;
    } else if (keyCode == KeyEvent.KEYCODE_DEL) {
        if (mInKbMode) {
            if (!mTypedTimes.isEmpty()) {
                int deleted = deleteLastTypedKey();
                String deletedKeyStr;
                if (deleted == getAmOrPmKeyCode(AM)) {
                    deletedKeyStr = mAmText;
                } else if (deleted == getAmOrPmKeyCode(PM)) {
                    deletedKeyStr = mPmText;
                } else {
                    deletedKeyStr = String.format("%d", getValFromKeyCode(deleted));
                }
                Utils.tryAccessibilityAnnounce(mTimePicker,
                        String.format(mDeletedKeyFormat, deletedKeyStr));
                updateDisplay(true);
            }
        }
    } else if (keyCode == KeyEvent.KEYCODE_0 || keyCode == KeyEvent.KEYCODE_1
            || keyCode == KeyEvent.KEYCODE_2 || keyCode == KeyEvent.KEYCODE_3
            || keyCode == KeyEvent.KEYCODE_4 || keyCode == KeyEvent.KEYCODE_5
            || keyCode == KeyEvent.KEYCODE_6 || keyCode == KeyEvent.KEYCODE_7
            || keyCode == KeyEvent.KEYCODE_8 || keyCode == KeyEvent.KEYCODE_9
            || (!mIs24HourMode &&
                    (keyCode == getAmOrPmKeyCode(AM) || keyCode == getAmOrPmKeyCode(PM)))) {
        if (!mInKbMode) {
            if (mTimePicker == null) {
                // Something's wrong, because time picker should definitely not be null.
                Log.e(TAG, "Unable to initiate keyboard mode, TimePicker was null.");
                return true;
            }
            mTypedTimes.clear();
            tryStartingKbMode(keyCode);
            return true;
        }
        // We're already in keyboard mode.
        if (addKeyIfLegal(keyCode)) {
            updateDisplay(false);
        }
        return true;
    }
    return false;
}
 
Example 20
private void setCurrentView(final int viewIndex) {
    long millis = mCalendar.getTimeInMillis();

    switch (viewIndex) {
        case MONTH_AND_DAY_VIEW:
            ObjectAnimator pulseAnimator = Utils.getPulseAnimator(mMonthAndDayView, 0.9f,
                    1.05f);
            if (mDelayAnimation) {
                pulseAnimator.setStartDelay(ANIMATION_DELAY);
                mDelayAnimation = false;
            }
            mDayPickerView.onDateChanged();
            if (mCurrentView != viewIndex) {
                mMonthAndDayView.setSelected(true);
                mYearView.setSelected(false);
                mAnimator.setDisplayedChild(MONTH_AND_DAY_VIEW);
                mCurrentView = viewIndex;
            }
            pulseAnimator.start();

            int flags = DateUtils.FORMAT_SHOW_DATE;
            String dayString = DateUtils.formatDateTime(getActivity(), millis, flags);
            mAnimator.setContentDescription(mDayPickerDescription+": "+dayString);
            Utils.tryAccessibilityAnnounce(mAnimator, mSelectDay);
            break;
        case YEAR_VIEW:
            pulseAnimator = Utils.getPulseAnimator(mYearView, 0.85f, 1.1f);
            if (mDelayAnimation) {
                pulseAnimator.setStartDelay(ANIMATION_DELAY);
                mDelayAnimation = false;
            }
            mYearPickerView.onDateChanged();
            if (mCurrentView != viewIndex) {
                mMonthAndDayView.setSelected(false);
                mYearView.setSelected(true);
                mAnimator.setDisplayedChild(YEAR_VIEW);
                mCurrentView = viewIndex;
            }
            pulseAnimator.start();

            CharSequence yearString = YEAR_FORMAT.format(millis);
            mAnimator.setContentDescription(mYearPickerDescription+": "+yearString);
            Utils.tryAccessibilityAnnounce(mAnimator, mSelectYear);
            break;
    }
}