Android Digital Clock App and Widget with Roman Numeral Display
RomanDigital is a digital clock app that displays the current time in Roman numerals. It can be used to repurpose an old Android device that's sitting around collecting dust, or to provide a clock of unique style on a current phone or tablet.
Further, RomanDigital includes a widget that can be added to a device's Home screen.
RomanDigital includes several common clock app features, including:
- Choice of 12 or 24 hour display
- Centered display
- Option to keep display on when app is in foreground
- Display in either portrait or landscape
- Tap on screen displays app and system controls:
RomanDigital further includes features believed to be unique over other known Roman digital clock Android apps, including:
- Choice between centered display and display aligned with a fixed divider
- AM/PM indicator integrated into the time display, such that the divider is displayed as "·" for AM and ":" for PM:
- Option to only keep display on when device is charging
- Adaptive display providing the largest possible monospace text for the device screen width (excepting a narrow margin)
- A widget for providing a Roman digital clock display on a device's Home screen, where the display mirrors the settings of the app clock display:
- And... RomanDigital is Apache-2.0-licensed open source 🙂
RomanDigital requires Android 5.0 or greater and is designed to run on a phone or tablet.
When the widget is added to the Home screen, an activity is displayed to allow selection of settings. This activity can be accessed later in one of two ways depending on the Android version. On Android 11 and earlier, a tap on the widget brings up the activity. On Android 12 and later, the activity is accessed by a long press on the widget and a tap on the settings or reconfigure button in the normal manner for the particular Android version.
The USE_EXACT_ALARM permission is set by this app. This permission is necessary on Android 13 and greater to enable the widget to provide an accurate time display without inconveniencing the user by asking for the permission. It cannot be disabled without modifying the source code.
The SCHEDULE_EXACT_ALARM permission is also set by this app and is necessary on Android 12 for the same reason as the USE_EXACT_ALARM permission discussed above. This permission can be disabled in the Alarms & Reminders section of the system settings. Disabling this permission will cause inaccuracy in the widget's time display.
Android versions 11 and lower allow setting of exact alarms by default.
In addition, net.diffengine.romandigitalclock.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION is set by this app. This was set during the app build process by use of a particular Android library required to enable the app to function as expected on versions of Android 12 and earlier (i.e. prior to API 33). It cannot be disabled without modifying the source code. As noted in an fdroidserver commit, "it's basically just an internal hack, rather than a real permission." For a more technical explanation of this "permission", see the full commit message at https://gitlab.com/fdroid/fdroidserver/-/merge_requests/1336/diffs?commit_id=71697f9c88ec73980f63be5955f36cdc3ba7a02c
After updating the app, a widget that had previously been added to the home screen may stop updating. It may be 'kickstarted' by simply opening and then closing the widget's settings screen. For a bit more info on this, see the first FAQ question below.
The 'Align to Divider' option does not correctly align the display when a variable width font is used.
The RomanDigital app will run on a 5th Generation Amazon Kindle Fire, which is based on Android 5.1, but the widget will not. RomanDigital has not been tested on other Fire versions.
Q: "I just updated RomanDigital, and now the widget doesn't work! What happened?"
A: The widget "ticks" are scheduled in advance for technical reasons, and the widget that's part of the updated app may not receive "ticks" previously scheduled for the widget's earlier version. In such a case, it stops 🙁 The workaround right now to get the widget going again is to "kickstart" it by simply opening and then closing a settings screen from either the widget or the app. I hope to make post-update widget restart either more elegant or entirely automatic at some point.
Q: "Why does the position of the divider change when 'Align to Divider' is selected? Isn't it supposed to stay in one place?"
A: Yes, it's supposed to stay in one place, but the positioning was designed with the expectation of using a monospace font (shortsighted of me, I know). If you've changed a device setting effecting the font used, e.g. your system-wide font, to something that doesn't provide for monospace, then the calculated display position based on expected equal-width characters, and thus the divider position, will unfortunately be off.
Q: "There's no alarm feature, so why the need to set exact alarms? What's this got to do with an accurate time display?"
A: Android doesn't enable widgets to receive the ACTION_TIME_TICK intent broadcast through the system each minute. Setting an alarm for the exact time of each next minute at the end of a minute is the only straightforward way (that I know of) for the app's widget to know when to update the time display.
Q: "Will there ever be an alarm feature?"
A: Maybe, but it's quite low on the priority list at this point.
Q: "Why can't I change the font/text color/background color/widget corner curvature/etc?"
A: Haven't gotten to them yet.
Q: "Why no seconds?"
A: They would crowd the display and look inelegant. Besides, most people (myself included) would likely have trouble reading a lengthy Roman numeral within a second.
Q: "Why no date?"
A: Because it's just a simple clock. At least for now.
Q: "Can I put the widget on my phone's lock screen?"
A: Maybe. I was able to on my Samsung Galaxy A14 5G by purchasing the awkwardly-named Lockscreen Widgets and Drawer app for the low, low price of $1.49. YMMV. Here's what my lock screen looks like:
Note:
- I get nothing if you click on the "Lock Screen Widgets and Drawer" link and/or buy the app, and my purchase and use of it are not meant as an endorsement. There may be other such apps that would work as well or better.
Q: "Why no version specifically for a watch?"
A: Because I don't have one to test on. Yet. I'd rather not rely entirely on virtual devices for testing.
Q: "Will it work on a watch or a TV?"
A: It might — haven't tried — but if it did, it would likely result in a time display that's "unoptimized for the given device's screen size." In other words, "too large" or "too small".
Q: "Can the app and widgets be set to different time zones?"
A: Not at this point because only one global set of preferences is used. But providing independent preferences for the app and each widget is something I'd like to get to pretty soon.