├── .gitignore ├── README.md ├── android-timer-test ├── .classpath ├── .launch │ └── android-timer-tests.launch ├── .project ├── .settings │ └── org.eclipse.jdt.core.prefs └── README ├── android-timer ├── .classpath ├── .project ├── AndroidManifest.xml ├── README ├── TODO.TXT ├── art │ ├── _pre_production │ │ ├── cc_logo_background.png │ │ ├── cc_logo_background.xcf │ │ ├── cc_logo_cmyk_w_out_claim.png │ │ ├── cc_logo_cut.png │ │ ├── countdown.png │ │ ├── countdown_2.png │ │ ├── ic_launcher_timer_countdown_432.xcf │ │ ├── ic_launcher_timer_countdown_432_merged.xcf │ │ ├── ic_stat_notify_alarm_ringing_192.xcf │ │ └── ic_stat_notify_alarm_ringing_192_merged.xcf │ ├── _shared │ │ ├── cc_logo_background.png │ │ └── ic_launcher_timer_countdown_old.png │ ├── hdpi │ │ ├── ic_launcher_timer_countdown.png │ │ └── ic_stat_notify_alarm_ringing.png │ ├── ldpi │ │ ├── ic_launcher_timer_countdown.png │ │ └── ic_stat_notify_alarm_ringing.png │ ├── mdpi │ │ ├── ic_launcher_timer_countdown.png │ │ └── ic_stat_notify_alarm_ringing.png │ └── xhdpi │ │ ├── ic_launcher_timer_countdown.png │ │ └── ic_stat_notify_alarm_ringing.png ├── misc │ └── media │ │ └── audio │ │ └── notifications │ │ ├── fallbackring.ogg │ │ ├── ns.mp3 │ │ └── plop_2.mp3 ├── proguard-project.txt ├── project.properties ├── release │ └── android-timer.apk ├── res │ ├── drawable-hdpi │ │ ├── ic_launcher_timer_countdown.png │ │ └── ic_stat_notify_alarm_ringing.png │ ├── drawable-ldpi │ │ ├── ic_launcher_timer_countdown.png │ │ └── ic_stat_notify_alarm_ringing.png │ ├── drawable-mdpi │ │ ├── ic_launcher_timer_countdown.png │ │ └── ic_stat_notify_alarm_ringing.png │ ├── drawable-xhdpi │ │ ├── ic_launcher_timer_countdown.png │ │ └── ic_stat_notify_alarm_ringing.png │ ├── drawable │ │ └── cc_logo_background.png │ ├── layout │ │ ├── save_timer.xml │ │ ├── set_timer_text_fields.xml │ │ ├── set_timer_wheels.xml │ │ ├── show_alarm.xml │ │ ├── show_countdown.xml │ │ └── startup.xml │ ├── values │ │ ├── arrays.xml │ │ ├── keys_values.xml │ │ └── strings.xml │ └── xml │ │ ├── menu.xml │ │ └── preferences.xml ├── src │ └── de │ │ └── codecentric │ │ └── android │ │ └── timer │ │ ├── activity │ │ ├── AbstractSetTimerActivity.java │ │ ├── CountdownServiceClient.java │ │ ├── ManageFavoritesActivity.java │ │ ├── Navigation.java │ │ ├── RequestCode.java │ │ ├── SaveAsFavoriteActivity.java │ │ ├── SetTimerTextFieldsActivity.java │ │ ├── SetTimerWheelsActivity.java │ │ ├── ShowAlarmActivity.java │ │ ├── ShowCountdownActivity.java │ │ ├── StartupActivity.java │ │ ├── TimeDisplayHelper.java │ │ └── TimerPreferencesActivity.java │ │ ├── persistence │ │ ├── DatabaseAction.java │ │ ├── Db.java │ │ ├── DbAccess.java │ │ ├── Timer.java │ │ ├── TimerDatabaseOpenHelper.java │ │ └── TimerRepository.java │ │ ├── service │ │ ├── CountdownService.java │ │ ├── CountdownServiceBinder.java │ │ ├── ServiceState.java │ │ └── SoundGizmo.java │ │ ├── util │ │ ├── PreferencesKeysValues.java │ │ ├── TimePartType.java │ │ └── TimeParts.java │ │ └── view │ │ ├── DirectedNumericWheelAdapter.java │ │ └── PieChartView.java └── unit-tests │ ├── README │ └── de │ └── codecentric │ └── android │ └── timer │ ├── ActionForServiceState.java │ ├── ServiceStateIterator.java │ ├── TimerWhitebox.java │ ├── activity │ ├── AbstractCountdownServiceClientTest.java │ ├── CountdownServiceClientDummyTest.java │ ├── ShowAlarmActivityTest.java │ ├── ShowCountdownActivityTest.java │ ├── StartupActivityTest.java │ └── TimeDisplayHelperTest.java │ ├── persistence │ └── TimerRepositoryTest.java │ ├── service │ └── CountdownServiceTest.java │ └── util │ ├── TimePartsPrettyPrintTest.java │ └── TimePartsRoundingUpTest.java └── wheel ├── .classpath ├── .project ├── AndroidManifest.xml ├── README ├── project.properties ├── res └── drawable │ ├── wheel_bg.xml │ └── wheel_val.xml └── src └── kankan └── wheel └── widget ├── ItemsRange.java ├── OnWheelChangedListener.java ├── OnWheelClickedListener.java ├── OnWheelLongClickedListener.java ├── OnWheelScrollListener.java ├── WheelAdapter.java ├── WheelRecycle.java ├── WheelScroller.java ├── WheelView.java └── adapters ├── AbstractWheelAdapter.java ├── AbstractWheelTextAdapter.java ├── AdapterWheel.java ├── ArrayWheelAdapter.java ├── NumericWheelAdapter.java └── WheelViewAdapter.java /.gitignore: -------------------------------------------------------------------------------- 1 | # built application files 2 | *.apk 3 | *.ap_ 4 | release/ 5 | 6 | # files for the dex VM 7 | *.dex 8 | 9 | # Java class files 10 | *.class 11 | 12 | # generated files 13 | bin/ 14 | gen/ 15 | 16 | # Local configuration file (sdk path, etc) 17 | local.properties 18 | 19 | .svn 20 | tmp/ 21 | *.bak 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | codecentric android timer 2 | ========================= 3 | 4 | This Android app is a simple countdown timer. You can set the timer (hours, minutes & seconds) and kick it off. Once started the timer will count down. When the timer reaches zero, it will start beeping. That's it, mostly. 5 | 6 | In detail, the app offers a few more features: 7 | 8 | * Two different styles to set the timer: 9 | * simple text fields or 10 | * wheels (similar to slot machine reels, credit goes to the [android-wheel project](http://code.google.com/p/android-wheel/)) 11 | * Two different visualizations for a running countdown: 12 | * display remaining time like a digital clock, 13 | * visualize remaining time versus total time as a pie chart or 14 | * combine both of the above 15 | * Option to keep the display turned on during the whole countdown 16 | 17 | Download 18 | -------- 19 | 20 | Currently, this app is not available on Google's Play Store, but you can download the [latest version](https://github.com/codecentric/android-timer/raw/master/android-timer/release/android-timer.apk) from the [release directory](https://github.com/codecentric/android-timer/tree/master/android-timer/release) in the repository. 21 | 22 | Contributing 23 | ------------ 24 | 25 | To work on this project, you need to have Eclipse and the Android Development 26 | Toolkit installed. You also need to have cloned the full repository from github 27 | (git@github.com:codecentric/android-timer.git, see 28 | https://github.com/codecentric/android-timer). 29 | 30 | This includes three projects: 31 | * android-timer 32 | * android-timer-test 33 | * wheel 34 | 35 | All three projects need to be imported into your Eclipse workspace. 36 | .poject and .classpath files are provided. 37 | 38 | Some class path variables need to be set up: 39 | 40 | * ANDROID_SDK 41 | * should point to the root directory of your android SDK 42 | * needs to contain platform level 7 43 | * ROBOLECTRIC 44 | * should point to a directory where the robolectric jars reside 45 | * needs to contain files named 46 | * robolectric-1.2-SNAPSHOT-jar-with-dependencies.jar 47 | * robolectric-1.2-SNAPSHOT-sources.jar 48 | * JUNIT 49 | * HAMCREST-CORE 50 | * HAMCREST-LIBRARY 51 | * MOCKITO-ALL 52 | 53 | *** Building the APK 54 | 55 | You need a keystore with a developer certificate to sign the APK. 56 | 57 | In Eclipse: 58 | * File - Export - Android - Export Android Application 59 | * Project: android-timer 60 | * Configure the keystore to use 61 | * Destination APK file: /android-timer/release/android-timer.apk 62 | * Finish 63 | -------------------------------------------------------------------------------- /android-timer-test/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /android-timer-test/.launch/android-timer-tests.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /android-timer-test/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | android-timer-test 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | 19 | unit-tests 20 | 2 21 | $%7BPARENT-1-PROJECT_LOC%7D/android-timer/unit-tests 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /android-timer-test/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | #Sun Jun 10 22:18:37 CEST 2012 2 | eclipse.preferences.version=1 3 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 6 | org.eclipse.jdt.core.compiler.compliance=1.6 7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 11 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 12 | org.eclipse.jdt.core.compiler.source=1.6 13 | -------------------------------------------------------------------------------- /android-timer-test/README: -------------------------------------------------------------------------------- 1 | This folder contains unit tests for the android timer app, based on the 2 | robolectric project (http://pivotal.github.com/robolectric/index.html). 3 | 4 | This folder resides in the project android-timer but is also referenced as a 5 | linked resource in the project android-timer-test. The content of this folder 6 | should only be edited through the project android-timer-test, never through 7 | android-timer. See 8 | http://pivotal.github.com/robolectric/eclipse-quick-start.html. -------------------------------------------------------------------------------- /android-timer/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android-timer/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | android-timer 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /android-timer/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 30 | 31 | 34 | 35 | 38 | 39 | 42 | 43 | 46 | 47 | 50 | 51 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /android-timer/README: -------------------------------------------------------------------------------- 1 | = README = 2 | 3 | == Project Setup == 4 | 5 | To work on this project, you need to have Eclipse and the Android Development 6 | Toolkit installed. You also need to have cloned the full repository from 7 | github (git@github.com:codecentric/android-timer.git, see 8 | https://github.com/codecentric/android-timer) including this project 9 | (android-timer) and the supporting project named "wheel". Finally, there is a 10 | project called "android-timer-test" which is used to run the robolectric unit 11 | tests for this project. All three projects need to be imported into your 12 | Eclipse workspace as Android projects. For more details regarding the project 13 | setup, refer to the section Contributing in the file README.md in the parent 14 | directory of the git repository. 15 | 16 | == How to use notification sounds and ringtones in the Android emulator == 17 | 18 | The emulator for Android comes without any notification sounds and ringtones. 19 | To enable sounds in the emulator you have to copy them to the virtual device 20 | first. 21 | 22 | * Start the emulator 23 | * Go to the DDMS perspective 24 | * Open the File Explorer tab 25 | * Use the green plus symbol repeatedly to create the following directory structure in /sdcard: 26 | 27 | /sdcard 28 | media 29 | audio 30 | alarms 31 | notifications 32 | ringtones 33 | 34 | * Use the push symbol (arrow pointing towards mobile phone) to push some of the 35 | files from misc/media/audio/notifications into the notifications folder 36 | on the virtual device's sdcard. 37 | * In the emulator go to 38 | Menu -> Settings -> SD card & phone storage and click "Unmount SD card" 39 | (maybe not neccessary, don't know) 40 | * Restart emulator (this also remounts the SD card) 41 | * Menu -> Settings -> Sound & display -> Notification ringtone 42 | * The new sounds should be there. Switch from "silent" to a different sound. -------------------------------------------------------------------------------- /android-timer/TODO.TXT: -------------------------------------------------------------------------------- 1 | ==RETEST== 2 | 3 | * Make tap anywhere for ShowCountdown configurable, if enabled, hide button. 4 | Default is false. 5 | * Display the word "PAUSED" when the countdown is paused. 6 | * [BUG] When set timer method preference is changed from ShowCountdownAct (or 7 | probably also from ShowCountdownAct.) the new setting is not applied when 8 | going back to SetTimerAct. 9 | * Additional button in wheel view to reset a time part to zero 10 | * Alarm rings for 5 min max. Configurable. 11 | * [Bug] Change values in SetTimerActivity 12 | -> Go to Preferences 13 | -> Go back 14 | -> Edits are lost 15 | * Configure multiple timers and save them 16 | - Long click for context menu in manage timers view: 17 | - Rename 18 | - Delete timer 19 | - Load timers 20 | - Save timers 21 | - Bug: Change timer -> Menu -> Save as Favorite: Timer is correctly saved but 22 | SetTimerActivtiy has old values when returning from SaveTimerView. 23 | - BUG: Change timer -> Menu -> Favorites -> Return: SetTimerActivtiy has old values 24 | when returning from SaveTimerView. 25 | - Create sample entries only once, save boolean flag to preferences and never 26 | do it again. 27 | - Inserting/updating multiple timers with same name. 28 | - !!!! 29 | Use de.codecentric.android.timer.persistence.Timer value object in all activities 30 | (at least SetTimerActivity) 31 | !!!! 32 | 33 | ==IN PROGRESS== 34 | 35 | 36 | ==TODO== 37 | 38 | * Once a timer has been loaded from favorites, its db id is remembered forever. 39 | "Save as Favorite" will always use this db id and update/overwrite this very 40 | timer. We need some way to save it as a new timer OR update the existing timer. 41 | * TODO Create sample db entries only once, save boolean flag to preferences and never 42 | do it again. 43 | * Migrate app to roboguice (dependency injection for Android) to increase 44 | testability. Robolectric claims to work nicely with roboguice. 45 | http://code.google.com/p/roboguice/ 46 | http://pivotal.github.com/robolectric/roboguice.html 47 | * Convert to Maven or Gradle project 48 | 49 | === FEATURES NEEDED BEFORE PUBLISHING ON GOOGLE PLAY STORE === 50 | 51 | * Change configuration of time fields to use so that it is not possible to 52 | show hours and seconds but not minutes (which makes no sense). Use an option 53 | list with the following options: 54 | - minutes only 55 | - minutes and seconds 56 | - hours and minutes 57 | - hours, minutes and seconds 58 | - Days and hours 59 | - Days, hours and minutes 60 | - Days, hours, minutes and seconds 61 | * Select alarm sound from: 62 | + Phone alarm tones and ringtones 63 | + Custom MP3 file 64 | * License? 65 | 66 | === OTHER FEATURES (LATER) === 67 | 68 | * Unit Tests for AbstractSetTimerActivity/SetTimerXxxActivity 69 | * Make supressLeadingZeroOnHighestNonNullTimePart for ShowCountdownActivity 70 | configurable. 71 | * Optional notification while counting down (default = ?) 72 | * Optional notification that an alarm has been stopped because max duration was reached (default = true) 73 | 74 | * User hints (things that may not be obvious) - how can we tell the user 75 | about these features? 76 | + A toast when an activity is started (toasts can be disabled in options) 77 | + Fixed text area on top/bottom of each activity? (Also possible to disable) 78 | + ... 79 | Suggestions: 80 | - User menu key -> Options to configure this app 81 | - You can disable help messages in the Options menu 82 | - Tap anywhere in ShowCountDownActivity to pause/continue, not just on the 83 | button 84 | - Canceling a timer is effectively a reset 85 | - Double tap a wheel to reset it to zero 86 | 87 | * Long tap a wheel to reset it to zero 88 | * Nicer visualization for ShowAlarm activity (ringing bell or something similar) 89 | 90 | * StartupActivity does not really need to connect to the service, does it? 91 | 92 | * [BUG] When changing used time fields from set timer acitivity, the timer is resetted 93 | to the last timer that was actually started. It would be nicer to keep the current 94 | value (adapted to missing fields) 95 | 96 | * Integration tests and/or UATs 97 | See http://developer.android.com/guide/topics/testing/testing_android.html 98 | - http://code.google.com/p/robotium/ - Black box testing framework 99 | - https://github.com/calabash/calabash-android (cucumber for Android, needs ruby) 100 | 101 | * Configure warning sounds when x minutes/seconds are left 102 | 103 | * ? Reset button: I don't think we need one - when returning to SetTimerActivity, 104 | the time the user entered is there implicitly 105 | 106 | * Test all possible workflows in all three activities: 107 | - Home button, then start app again: 108 | + SetTimerActivity: Should keep configured time 109 | + ShowCountdownActivity: Countdown should have continued while app was in 110 | background 111 | + ShowAlarm: Should stop alarm, on restart it should return to 112 | SetTimerActivity 113 | - Back button, then start app again 114 | + SetTimerActivity: Should keep configured time 115 | + ShowCountdownActivity: Countdown should have stopped on back button, on 116 | restart it should return to SetTimerActivity 117 | + ShowAlarm: Should stop alarm, on restart it should return to 118 | SetTimerActivity 119 | - Rotate phone (calls onCreate(), that's why it is important to test it) 120 | + SetTimerActivity: Should keep configured time 121 | + ShowCountdownActivity: Countdown should continued 122 | + ShowAlarm: Beeping should continue 123 | 124 | * Third alternative for countdown visualization: something like an analog clock 125 | with three hands (hours, minutes, seconds), but only show hands that are 126 | used. 127 | 128 | == RELEASE NOTES == 129 | 130 | = 2012-04-?? = 131 | * [BUG] Button label Pause/Continue is set to "Pause" when device is rotated, 132 | even if state is PAUSED and label should be "Continue" 133 | * [FEATURE] Persist last manually entered time for countdown in 134 | SetTimerActivity when starting countdown and read this on app startup 135 | and use it instead of default time 136 | * Set default time to 15 minutes 137 | * codecentric branding! (Background image) 138 | * [FEATURE] Nicer input to set time (like HTC timer input - slot machine reel): 139 | * [FEATURE] Hide hour input fields by default 140 | * [FEATURE] Configure, which time parts are shown/used (Enable/disable each of hour, 141 | minute, second) 142 | 143 | = 2012-05-14 = 144 | * [FEATURE] Hide unused ( = 00 ) TextViews in ShowCountdownActivity, when all 145 | fields of larger magnitude are also hidden/00. 146 | * Wheels should run the other way round. Or make that configurable. 147 | * Wheels should display numbers below ten with two digits/leading zero. 148 | * Show countdown activity should not format numbers below ten with two digits/ 149 | leading zeroes, when larger fields are hidden. 150 | * !!! Service should start alarm sound, SoundGizmo should be a collaborator of service, 151 | not of ShowAlarmActivity !! 152 | * Refactor navigation/onAfterServiceConnected: 153 | Subclasses tell superclass which states they handle themselves and which not 154 | For not-handled states, navigation occurs. For handled states, control is delegated 155 | to subclass. 156 | * Put a persisten notification in the notificationbar when alarm is ringing. This links to 157 | our app/ShowAlarmActivity. It will be removed when alarm is stopped. 158 | * Introduce new StartupActivity 159 | * [FEATURE] Configure, which activity is used to set the timer, SetTimerTextFields 160 | or SetTimerWheels - and save value to preferences. 161 | - Use StartupActivity to delegate to the correct SetTimer activity subclass 162 | * New app icon with branding 163 | * Pause countdown by tapping anywhere (except cancel button), resume on second tap 164 | * Configure wheel direction 165 | * Change set timer method without restart 166 | * option to keep the display on - prevent auto display off 167 | * Add pie chart to ShowCountdown 168 | * Show fraction of remaining time as pie chart 169 | * Make ShowCountdown view configurable: Pie Chart & Time, Pie Chart only, Time only 170 | * Delay start alarm for CountdownService#UPDATE_INTERVALL to give 171 | ShowCountdownActivity a chance to show zero (0 and empty pie chart)? 172 | * Touch anywhere also for ShowAlarm? Or make "Stop Alarm" button BIG! -------------------------------------------------------------------------------- /android-timer/art/_pre_production/cc_logo_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/cc_logo_background.png -------------------------------------------------------------------------------- /android-timer/art/_pre_production/cc_logo_background.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/cc_logo_background.xcf -------------------------------------------------------------------------------- /android-timer/art/_pre_production/cc_logo_cmyk_w_out_claim.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/cc_logo_cmyk_w_out_claim.png -------------------------------------------------------------------------------- /android-timer/art/_pre_production/cc_logo_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/cc_logo_cut.png -------------------------------------------------------------------------------- /android-timer/art/_pre_production/countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/countdown.png -------------------------------------------------------------------------------- /android-timer/art/_pre_production/countdown_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/countdown_2.png -------------------------------------------------------------------------------- /android-timer/art/_pre_production/ic_launcher_timer_countdown_432.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/ic_launcher_timer_countdown_432.xcf -------------------------------------------------------------------------------- /android-timer/art/_pre_production/ic_launcher_timer_countdown_432_merged.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/ic_launcher_timer_countdown_432_merged.xcf -------------------------------------------------------------------------------- /android-timer/art/_pre_production/ic_stat_notify_alarm_ringing_192.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/ic_stat_notify_alarm_ringing_192.xcf -------------------------------------------------------------------------------- /android-timer/art/_pre_production/ic_stat_notify_alarm_ringing_192_merged.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_pre_production/ic_stat_notify_alarm_ringing_192_merged.xcf -------------------------------------------------------------------------------- /android-timer/art/_shared/cc_logo_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_shared/cc_logo_background.png -------------------------------------------------------------------------------- /android-timer/art/_shared/ic_launcher_timer_countdown_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/_shared/ic_launcher_timer_countdown_old.png -------------------------------------------------------------------------------- /android-timer/art/hdpi/ic_launcher_timer_countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/hdpi/ic_launcher_timer_countdown.png -------------------------------------------------------------------------------- /android-timer/art/hdpi/ic_stat_notify_alarm_ringing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/hdpi/ic_stat_notify_alarm_ringing.png -------------------------------------------------------------------------------- /android-timer/art/ldpi/ic_launcher_timer_countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/ldpi/ic_launcher_timer_countdown.png -------------------------------------------------------------------------------- /android-timer/art/ldpi/ic_stat_notify_alarm_ringing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/ldpi/ic_stat_notify_alarm_ringing.png -------------------------------------------------------------------------------- /android-timer/art/mdpi/ic_launcher_timer_countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/mdpi/ic_launcher_timer_countdown.png -------------------------------------------------------------------------------- /android-timer/art/mdpi/ic_stat_notify_alarm_ringing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/mdpi/ic_stat_notify_alarm_ringing.png -------------------------------------------------------------------------------- /android-timer/art/xhdpi/ic_launcher_timer_countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/xhdpi/ic_launcher_timer_countdown.png -------------------------------------------------------------------------------- /android-timer/art/xhdpi/ic_stat_notify_alarm_ringing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/art/xhdpi/ic_stat_notify_alarm_ringing.png -------------------------------------------------------------------------------- /android-timer/misc/media/audio/notifications/fallbackring.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/misc/media/audio/notifications/fallbackring.ogg -------------------------------------------------------------------------------- /android-timer/misc/media/audio/notifications/ns.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/misc/media/audio/notifications/ns.mp3 -------------------------------------------------------------------------------- /android-timer/misc/media/audio/notifications/plop_2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/misc/media/audio/notifications/plop_2.mp3 -------------------------------------------------------------------------------- /android-timer/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /android-timer/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}\tools\proguard\proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-7 15 | android.library.reference.1=../wheel 16 | -------------------------------------------------------------------------------- /android-timer/release/android-timer.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/release/android-timer.apk -------------------------------------------------------------------------------- /android-timer/res/drawable-hdpi/ic_launcher_timer_countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable-hdpi/ic_launcher_timer_countdown.png -------------------------------------------------------------------------------- /android-timer/res/drawable-hdpi/ic_stat_notify_alarm_ringing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable-hdpi/ic_stat_notify_alarm_ringing.png -------------------------------------------------------------------------------- /android-timer/res/drawable-ldpi/ic_launcher_timer_countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable-ldpi/ic_launcher_timer_countdown.png -------------------------------------------------------------------------------- /android-timer/res/drawable-ldpi/ic_stat_notify_alarm_ringing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable-ldpi/ic_stat_notify_alarm_ringing.png -------------------------------------------------------------------------------- /android-timer/res/drawable-mdpi/ic_launcher_timer_countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable-mdpi/ic_launcher_timer_countdown.png -------------------------------------------------------------------------------- /android-timer/res/drawable-mdpi/ic_stat_notify_alarm_ringing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable-mdpi/ic_stat_notify_alarm_ringing.png -------------------------------------------------------------------------------- /android-timer/res/drawable-xhdpi/ic_launcher_timer_countdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable-xhdpi/ic_launcher_timer_countdown.png -------------------------------------------------------------------------------- /android-timer/res/drawable-xhdpi/ic_stat_notify_alarm_ringing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable-xhdpi/ic_stat_notify_alarm_ringing.png -------------------------------------------------------------------------------- /android-timer/res/drawable/cc_logo_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/codecentric/android-timer/fc860e7f98ee3a058dad82f98ba72facfbe09be8/android-timer/res/drawable/cc_logo_background.png -------------------------------------------------------------------------------- /android-timer/res/layout/save_timer.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 23 | 24 | 31 | 32 | 33 | 41 | 42 | 49 | 50 | 51 | 52 | 58 | 59 |