History log of /packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
5239f09fa7309686c66d1fc70c6eacf7bdab0ab8 16-Feb-2016 Justin Klaassen <justinklaassen@google.com> Refactoring SharedPreferences to common location. - DO NOT MERGE

Bug: 25860525
Change-Id: I20a012be5aadcd743a03481a72fea7f3d4750fdd
(cherry picked from commit 942b3a3956221969c77f9abc447444505eea6929)
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
b76aa50f9e13e71e81b9d02cc3ebebaa73188d3e 14-Jan-2016 James Lemieux <jplemieux@google.com> Fix alarm not firing in memory-pressure situations

Bug: 25846551

The original form of the code that fires an alarm is:
AlarmManager -> BroadcastReceiver -> Service.

The new form of the code that fires an alarm is:
AlarmManager -> Service.

Evidence exists that the system lowmemorykiller may elect to kill the
clock app after BroadcastReceiver.onReceive(...) completes but before
Service.onStartCommand(...) begins. When this occurs, the results are
disastrous as the clock fails to fire at the appropriate time.

To remove this possibility, all alarm state changes are delivered to the
Service. The methods that manipulate database state within
BroadcastReceiver have been made public and static and are called
directly from the Service to perform the same work as before. If the
alarm state transition is to the FIRING state, the AlarmService also
performs the work of posting the firing notification in the foreground.
All of this occurs during the handling of a single Intent on the same
thread within the service which should no longer provide
lowmemorykiller with any opportunities to prevent the firing of an alarm
by killing the clock app.

Change-Id: I3629a5b725a758f680f41611939a5bbeec23238a
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
0dd0cac610cd59762c8b604da6c437b18a29246b 09-Jan-2016 James Lemieux <jplemieux@google.com> Promote TimerService to the foreground while expired timers exist

Bug: 26471891

This makes the clock app unlikely to be killed in memory pressure
situations while expired timers are ringing.

Change-Id: I89f141a835e3de67a58671d6c5b381de52be5c18
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
437da3b08ce9ce1b32f4e544816cb3431ceb8d4e 13-Nov-2015 James Lemieux <jplemieux@google.com> Simplify HandleDeskClockApiCalls, TimerService and StopwatchService

HandleDeskClockApiCalls used to pass through all timer and stopwatch
mutations to the corresponding Service to complete. This complicated
the logging of the corresponding event unnecessarily.

After this change:

- StopwatchService is only invoked from stopwatch notifications and may
now assume the event label

- TimerService is only invoked from timer notifications and AlarmManager
and may now assume the event label

- HandleDeskClockApiCalls.EXTRA_FROM_NOTIFICATION has been replaced
with HandleDeskClockApiCalls.EXTRA_EVENT_LABEL which explicitly
identifies the label of the event

Change-Id: Ic9796c43e826f82138ee431d3abb02524c0146ba
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
6d603b7c62bb38d763a681a8bf20fadb1442e833 07-Nov-2015 James Lemieux <jplemieux@google.com> Refactor Timers to use new unified DataModel

Bug: 24816218
Bug: 25494722

This refactoring introduces a Timer domain object. Instances of these
domain objects are fetched via a DataModel class that is the single point
of reference for all timer data. This allows the data to be shared across
the entire application. In particular, the timer notifications, TimerFragment
and ExpiredTimersActivity all draw upon the same model to determine
what the state of the timers are.

IMPORTANT: The public intent com.android.deskclock.action.STOP_TIMER
has been renamed to com.android.deskclock.action.PAUSE_TIMER to be
more accurate.

Change-Id: Ib904e80a25c6de1861de2b395bec27db16ff0e66
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
f8faca1961278db2797d122351885ce6e32e4f3d 01-Sep-2015 James Lemieux <jplemieux@google.com> Simplify code that adds None as a valid timer ringtone

- None option is added to picker by default, remove code that
manually added it
- Replace NO_RINGTONE_URI constant in TimerRingtonePreference
with test method: DataModel.isSilentTimerRingtoneUri(uri)

Bug: 23499698
Change-Id: Id45a24bee607edd8295c2a31785e55d67b44e8b0
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
32efff252246b90ae870600a7b8db3a62c1ebdc8 26-Aug-2015 Annie Chin <afchin@google.com> Allow "Silent" to be set as a Timer ringtone.

Bug: 23499698

Add "None" option to Timer ringtone selection. Summary will show up
as "Silent." This is consistent with Alarm ringtone selection.

Change-Id: I4dc87f3258a3223a2bcddcf29076944cd9637df4
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
bd9eae10b13e015d1997d06f13e9abe06a7f306b 21-Aug-2015 James Lemieux <jplemieux@google.com> Present Clock's timer beep as the default ringtone

A "settings" package was introduced as a byproduct of this CL.

When choosing the preferred ringtone for timers, the default
selection should play timer_expired.ogg which ships with the
application. This is the only sound played on all prior version of
the application.

Known Issue: the dialog will label the default as
"Default alarm sound". This will be fixed in a later CL.

Change-Id: I4e9c6663c597038ec273b699cdda3a036b376350
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java
856483e7e18d5f042a338f7b3d472e28a386c4ad 18-Aug-2015 James Lemieux <jplemieux@google.com> remove requests for READ_EXTERNAL_STORAGE permission

Very late in the M release, a change was made to no longer
require the READ_EXTERNAL_STORAGE permission to view
the titles of external ring tones. Consequently, we no longer
have a reason to acquire this permission in the application.

As well, the storage of the ringtone to play for expired timers
has been moved from Utils into the DataModel.

Bug: 22919062
Change-Id: I9209cd3e6efaee1063c1c04bca15b0ea61ffc4d8
/packages/apps/DeskClock/src/com/android/deskclock/data/TimerModel.java