Home | Android |     Share This Page
CarpeTempus

An Android-based alarm/timer program

Copyright © 2019, Paul LutusMessage Page

Current CarpeTempus Version: ย dateย 

Most recent update to this page:

Introduction | Getting CarpeTempus | Details, Instructions | Pay it Forward | User Feedback | Copyright, Source, Version History


CarpeTempus in operation

CarpeTempus is free, open-source and is licensed under the GPL. And there are no ads.

Get CarpeTempus at the Android Market
(more secure and automatically checks for device compatibility)


"It's about time!"

CarpeTempus download QR code

Direct download link

Introduction

NOTE: Recent changes in Android are making Carpe Tempus (and all similar programs) less useful — they must be in the foreground to be able to raise an alert dialog. I'm sorry about this, but there's no remedy — Carpe Tempus has to be the focus of the Android user interface to work at all. Again, this is now true for all similar alerting programs.

  • The Program

    • CarpeTempus is a complete, powerful Android alarm/timer application.
    • CarpeTempus requires Android version 3.2, API 13, or newer.
    • CarpeTempus will accept any number of alarms (particular time of day, and day of week, month, year, etc.) or timers (durations in seconds. minutes. hours, etc.).
    • When it's time for CarpeTempus to alert you, it will speak the message you choose, or play an alarm ringtone, or play a piece of music you choose.
    • The CarpeTempus alarm scheduler is very sophisticated — you can choose a time of day, one or more days of the week, one or more days of the month, or a particular day of the year — or any combination of these.
    • CarpeTempus timers are much like alarms, except they're meant for time durations, not times of day. You can set time durations from one second to 100 hours. When the time arrives, all the features of the alarm scheduler are available — spoken messages, ringtones or user-selected music.
    • Once you have programmed some alarms and timers, you can put your Android device in standby mode. Then, when it's time for an alarm, the CarpeTempus service daemon will wake up, turn on the display, and alert you.
    • It's not necessary to type reminder messages. If you have installed the Google Keyboard, to program a CarpeTempus message, you can speak the message instead of typing it.
    • CarpeTempus is free and open-source, and is licensed under the GPL.
    • One more thing — CarpeTempus has no ads, no tricks and no strings attached. CarpeTempus is exactly what it appears to be — a nice, free application.
  • The Programmer

    Hello — I'm Paul Lutus, author of CarpeTempus. I've been writing software for about 35 years and have written some very well-known titles (Apple Writer, Arachnophilia). CarpeTempus is one of my first Android applications — I wrote it because (as before) there were no Android programs that could give me what I needed. Existing programs were missing features that I regarded as essential, like a mixture of alarms and timers in one program, the ability to speak a reminder message, the ability to play any music I wanted as an alarm sound, and the ability to set timer durations to the second.

    I hope you like CarpeTempus. And stay tuned — I'll be writing more Android programs in the future.

Getting CarpeTempus
  • The easiest way to get CarpeTempus is to visit the Google Play Store's CarpeTempus page โ€” this method is secure and it checks for compatibility with your Android device.
  • The next-easiest way to get CarpeTempus from a camera-equipped Android device is to take a picture of the QR code at the top of this page and download the result.
  • The next-next-easiest way is to click the download link that appears below the QR code. This only works if you are browsing with your Android device.
  • Another way is to use another computer to download the CarpeTempus file, then download it onto your Android device.
  • Programmers: CarpeTempus is open-source and licensed under the GPL. Click here to download the source archive.
Details, Instructions
  • CarpeTempus is designed to be easy to use:

    • To create a new timer, press "New Timer".
    • To create a new alarm, press "New Alarm".
    • For each timer/alarm:
      • To change the time, press its time display.
      • To change an alarm's date, press its date display.
      • To show the setup dialog, press the message at the right (see "Setup Dialog" below for details).
      • To activate the alarm/timer, press "Activate."
    • When activated, timers begin counting down, so you see how much time remains.
    • To deactivate a timer/alarm, press "Activate" again.
  • Setup Dialog:


    Figure 2: CarpeTempus setup dialog
    • To edit an existing message, press the message to show the soft keyboard.
    • To create a new message, press "New" to erase the existing message and show the soft keyboard.
    • While the keyboard is displayed, to speak your message instead of typing it, press the microphone icon at the lower right.
    • To set a different time, press the time display.
    • To make the alarm a daily event, press "Recurring."
    • To choose the number of repetitions of the alarm message, press "Repetitions."
    • If you just want a time-of-day alarm, you're done — press "Accept", then press "Activate."
    • To choose a specific date, press "Specific Date," then click the date to make your choice.
    • To choose days of the week, click "Days of Week" and pick any combination.
    • To choose days of the month, click "Days of Month" and pick any combination.
    • If you enable both days of the week and month, CarpeTempus will only sound an alarm when both are true — the right day of the week and month. This would only be useful if you wanted to sound an alarm every Friday the 13th.
    • At alarm time CarpeTempus normally speaks your message, but if you prefer a tone or music, disable "Voice Prompt" and enable "Tone Prompt".
    • Press "Choose Tone" to choose a specific ringtone.
    • To add your own music to the "Choose Tone" list, simply place the desired music files on your Android device in the /sdcard/Ringtones directory.
    • If you don't have a way to add music files to your Android device, you may want to get another of my Android programs: "SSHelper".
    • If you want to preserve your changes as well as make a copy of the present timer or alarm, press "Copy."
    • To accept your changes, press "Accept."
    • To cancel your changes, press "Cancel."
    • To delete an alarm or timer, press "Delete."
  • Operation and Details:

    • Remember to "Activate" the alarms you want to sound.
    • CarpeTempus doesn't need to be visible to provide alarm services.
    • If your android device is in standby mode when an alarm time arrives, CarpeTempus will wake it up and sound your chosen alarm.
    • If you don't want a particular alarm to sound, just deactivate it (press "Activate") and CarpeTempus willl preserve it in a disabled state.
    • If you want to delete an alarm or timer, press its message to make the setup dialog appear, then press "Delete."
    • To have a silent alarm — an alarm dialog with no sound — disable both "Voice Prompt" and "Tone Prompt".
    • If you prefer a 24-hour clock instead of AM/PM, set this in the Android "Settings" applet, and CarpeTempus will show 24-hour clock times too.
    • The "Digital Alert" option in the setup dialog shows a digital instead of analog clock in the alarm dialog.
    • If you aren't using any alarms or timers and you want to prevent CarpeTempus from using system resources to monitor the time of day, just disable all alarms and timers — this will make CarpeTempus dormant until you reactivate an alarm or timer.
Pay it Forward

CarpeTempus is free, it doesn't show ads, it's not crippleware or shareware, and I don't want your money. I just thought I would make that clear up front.

Years ago, in connection with my software development activities, I came up with an idea I called CareWare. But as the years went by I became somewhat disenchanted with the original idea and I now find it somewhat overheated (even though it's my idea).

So lately, moved as I am by conflicting forces — on one hand wanting to change the world, but on the other not wanting to even appear disrespectful of other people's choices — I've decided to just say pay it forward if you want. But there's no obligation to do that.

User Feedback
Carpe Tempus stops functioning unless it's in the foreground
Hi, Paul ... Sorry to bother. First of all, Carpe Tempus is a great tool, but I'm having a bit of trouble under Android 11. I'm having the same problem, and unfortunately it's insoluble — please read on. I can't seem to get it to display an alarm unless my phone is unlocked and active, and Carpe Tempus is open and displayed on the screen. Yes — over the years the Android environment has become much more restrictive, mostly because of bad actors who exploited its earlier form. When I first wrote Carpe Tempus I would set an alarm or timer, and when it was time for an alert, my program would push a user dialog into the foreground, and users would accept this intrusion in exchange for being notified of things they needed to know about.

In those bygone days the Android device could be asleep or running some other program, and Carpe Tempus would wake it up and show an alert, temporarily appearing on top of whatever had been on display before.

But since then, hackers have figured increasingly devious ways to craft dialogs that would take over the user's display and (for example) look exactly like the user's banking application or another trusted interface, and steal user information and sometimes money.

So after aggrieved user feedback and some public relations catastrophes, Google has disallowed the earlier scheme in which a dialog could pop up from a program running in the background, period, no exceptions (including their own programs).

I still use Carpe Tempus, but it's severely handicapped by the new prohibitions, so I keep it running on a spare Android device that only runs it and nothing else (most of the time, anyway) so Carpe Tempus can be in the foreground all the time, ready to alert me.
I create the alarm, accept the edit, and make sure it's activated. Then I exit to the home screen, leaving Carpe Tempus running in the background and put my phone in standby mode, activating the lock screen and putting the phone in standby, with a dark screen.

At the appointed time, no alarm sounds. When I look at the lock screen, there is a notification: "Carpe Tempus is running. Touch for more information or to stop the app." When I unlock the phone, there is no alarm unless I actually display the app screen, even though it is running in the background. When I open Carpe Tempus, the alarm triggers, already in progress.

I have given the app high priority, made sure Android 11 is not optimizing the battery for the app, etc.
I have done all this as well, if only to be sure my program can function at all. But as with your experience, if I forget and allow it to lose focus, it stops functioning. If I could get it to work, Carpe Tempus would be exactly what I'm looking for. I just want to set alarms to remind me to take my meds at various times of the day, no matter what I'm doing on my phone, and whether or not the phone is locked and in standby mode. Ideally, I could create the alarms, close the app, and forget about it. This was possible with my ancient Blackberry ... I can create any number of alarms and reminders using the clock app, completely close the app, and the alarms would work as expected until further notice ... but Android does not seem to make this possible.

Just as a footnote, I did find an app that works (as long as I leave it running and don't swipe it away), but I hate the ads.
Yes. Just like Carpe Tempus, but with ads ( ๐Ÿ˜ ). There's a word people use that has no English equivalent — "schadenfreude" (https://en.wikipedia.org/wiki/Schadenfreude) — it means taking pleasure in the discomfort of others. I'm glad to hear other people's alarm programs are having the same problems Carpe Tempus has ... that's schadenfreude ๐Ÿ™‚. The on-board Android clock that came installed on the phone does not seem to be reliable. Yes. Not our topic, but over the years and decades I've come to the realization that Google's in-house software products are often very badly designed. They seem rushed and half-thought-out, and many of them disappear much faster than they would, had they been created by a private party, as Google seemingly rushes after the latest and greatest way to engage users. Thanks in advance for any insight you can provide, and again, sorry to bother. Please let me know if I can provide more detail. You're welcome, and I'm sorry about the present state of Carpe Tempus, whose function and methods have now collided with Android's new restricted form. But there's no remedy — it's an existential program bug.

I'll have to explain this issue on the Carpe Tempus home page (https://arachnoid.com/android/CarpeTempus/), since I can't create a meaningful solution.

Thanks for writing!
Copyright, Source, Version History
  • CarpeTempus is Copyright 2019, P. Lutus and is released under the GPL.

  • Here is a source archive for CarpeTempus, organized as an Android Studio project.

  • Version History (reverse chronological order)

    • 08.25.2020 Version 5.1. Mandatory retargeting to Android 10 (API 29).

    • 10.08.2019 Version 5.0. Created a new, multi-tiered approach to generating and executing alarms based on the client device's Android version — newer Android versions are more accurate and reliable.

      This update has greatly improved CarpeTempus' behavior, especially on newer Android versions. Unlike earlier versions it now sounds its alarms with high reliability and time accuracy — Android can no longer ignore it.
    • 10.01.2019 Version 4.9. Corrected an error resulting from this recent major overhaul.
    • 10.01.2019 Version 4.8. Added code to accommodate newer Android versions, fixed a bug that sometimes rendered the wrong text/voice message.
    • 08.06.2018 Version 4.7. Solved an issue that prevented the updated CarpeTempus from functioning on pre - 8.0 Android versions.
    • 08.04.2018 Version 4.6. Fixed a bug that deleted user alarm data in some circumstances.
    • 08.04.2018 Version 4.5. Revised code to allow autostart on Android 8.0+ versions.
    • 08.02.2018 Version 4.4. Changed target SDK to 26, a recent Google requirement.
    • 04.23.2014 Version 4.3. Added hint text to sometimes-empty entries, prevented a problem caused by an empty string.
    • 03.16.2014 Version 4.2. Fixed a bug that caused a program exception in some circumstances.
    • 03.13.2014 Version 4.1. Revised layout for easier use, added confirmation dialog for event deletion, changed date dialog to permit "Cancel" in all Android versions.
    • 03.10.2014 Version 4.0. Recoded the daylight time management routines to address a rather complex standard/daylight time transition problem.
    • 11.06.2013 Version 3.9. Fixed a problem with the text-to-speech feature.
    • 11.05.2013 Version 3.8. Added a periodic timer to check for time zone change and reset alarms as required.
    • 07.27.2013 Version 3.7. Changed screen wake protocol on alarm to allow screen timeout after user dismisses dialog.
    • 07.10.2013 Version 3.6. Redesigned user interface for more usability and consistency with typical Android apps.
    • 06.06.2013 Version 3.5. Increased alarm/timer color brightness and contrast to more easily distinguish them on dark displays.
    • 04.14.2013 Version 3.4. Fixed a bug that prevented some date / day of month / day of week alarms from functioning in some time zones.
    • 03.11.2013 Version 3.3. Fixed a bug that sometimes prevented correct alarm updates when timezone was changed or daylight time began or ended.
    • 12.07.2012 Version 3.2. Fixed a bug that prevented copying timer duration to time setting dialog.
    • 11.11.2012 Version 3.1. Another approach to guard against Android killing off my timers.
    • 11.10.2012 Version 3.0. Recoded the alarm timer/service routines to resist Android's efforts to kill off my timers.
    • 11.09.2012 Version 2.9. Fixed an occasional missed-alarm issue.
    • 11.06.2012 Version 2.8. Corrected a daylight-time related anomaly.
    • 08.08.2012 Version 2.7. Aded an option to allow recurring timers. Pre-version 2.7 users will find that already-defined timers are in recurring mode — these users should simply choose non-recurring mode. New timers will default to non-recurring mode.
    • 07.12.2012 Version 2.6. Refactored alarm activation code for more robustness and less resource consumption, changed new-alarm default to active.
    • 07.04.2012 Version 2.5. Fixed a bug that sometimes caused an alarm to be skipped.
    • 04.28.2012 Version 2.4. Detected and fixed a subtle bug that might have waited years to appear in normal use.
    • 04.26.2012 Version 2.3. Fixed a bug that sometimes prevented restarting of the next-alarm timer.
    • 03.25.2012 Version 2.2. Fixed a bug that crept in during last revision.
    • 03.25.2012 Version 2.1. Improved the alarm timer behavior to better conserve device battery life.
    • 03.16.2012 Version 2.0. Adjusted the new time monitoring code for more robustness.
    • 03.15.2012 Version 1.9. Changed how the application monitors the time of day.
    • 03.12.2012 Version 1.8. Added an option checkbox to hide the status notification icon.
    • 11.29.2011 Version 1.7. Fixed a minor bug that prevented correct sorting of the alarm event list, and another having to do with canceling an alarm.
    • 11.20.2011 Version 1.6. Fixed a bug in the day-of-month and day-of-week testing code.
    • 11.19.2011 Version 1.5. Cleaned up class instantiation code, added the ability to make a copy of an existing timer or alarm.
    • 11.18.2011 Version 1.4. Added the ability to choose the number of repetitions of the alarm message before giving up.
    • 11.16.2011 Version 1.3. Fixed a bug in the service initialization code.
    • 11.15.2011 Version 1.2. Rewrote the alarm timing code to accommodate the fact that the operating system doesn't provide a time slice every second.
    • 11.15.2011 Version 1.1. Fixed occasional fail wake-from-standby issue.
    • 11.13.2011 Version 1.0. Initial Public Release.
 

Home | Android |     Share This Page