diff --git a/core/java/android/widget/RadialTimePickerView.java b/core/java/android/widget/RadialTimePickerView.java index 24d2c8ee8fe6f..8c8d38f188750 100644 --- a/core/java/android/widget/RadialTimePickerView.java +++ b/core/java/android/widget/RadialTimePickerView.java @@ -563,10 +563,23 @@ public class RadialTimePickerView extends View { return minute * DEGREES_FOR_ONE_MINUTE; } - public void setAmOrPm(int val) { - mAmOrPm = (val % 2); + /** + * Sets whether the picker is showing AM or PM hours. Has no effect when + * in 24-hour mode. + * + * @param amOrPm {@link #AM} or {@link #PM} + * @return {@code true} if the value changed from what was previously set, + * or {@code false} otherwise + */ + public boolean setAmOrPm(int amOrPm) { + if (mAmOrPm == amOrPm || mIs24HourMode) { + return false; + } + + mAmOrPm = amOrPm; invalidate(); mTouchHelper.invalidateRoot(); + return true; } public int getAmOrPm() { diff --git a/core/java/android/widget/TimePickerClockDelegate.java b/core/java/android/widget/TimePickerClockDelegate.java index 0c3892d36aadd..b6200a14abca0 100644 --- a/core/java/android/widget/TimePickerClockDelegate.java +++ b/core/java/android/widget/TimePickerClockDelegate.java @@ -701,7 +701,10 @@ class TimePickerClockDelegate extends TimePicker.AbstractTimePickerDelegate impl private void setAmOrPm(int amOrPm) { updateAmPmLabelStates(amOrPm); - mRadialTimePickerView.setAmOrPm(amOrPm); + + if (mRadialTimePickerView.setAmOrPm(amOrPm) && mOnTimeChangedListener != null) { + mOnTimeChangedListener.onTimeChanged(mDelegator, getHour(), getMinute()); + } } private final OnValueChangedListener mDigitEnteredListener = new OnValueChangedListener() {