Skip to content

Repository files navigation

Banner image : RomanDigital clock displayed on a phone resting horizontally on a black Lego stand to the left of a Lego Botanicals bonsai tree

RomanDigital

Android Digital Clock App and Widget with Roman Numeral Display

Get it on F-Droid
F-Droid Version


Get it at IzzyOnDroid
IzzyOnDroid Version


Get the latest apk on GitHub
GitHub Release

Description

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. RomanDigital also includes a widget that can be added to a device's Home screen.

Two landscape screenshots of phone showing RomanDigital app, one displaying time horizontally as II:XXXV and the other vertically with hour II above minute XXXV    Portrait screenshot of a phone Home page including four different-sized RomanDigital widgets showing horizontal and vertical layouts of the time IV:XIV (12hr-format) or XVI:XIV (24hr-format)    

Features

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:

Landscape screenshot of phone showing system bars and RomanDigital app displaying time as IV:XIV with toolbar containing gear and info icons

RomanDigital further includes:

  • Choice between centered display and display aligned with a fixed divider (only applies to horizontal time display layout)
  • AM/PM indicator integrated into the time display, such that the divider is displayed as "·" for AM and ":" for PM (only applies to horizontal time display layout):

Landscape screenshot of phone showing RomanDigital app displaying time as XI·XXXIV

  • 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)
  • Choice of app clock display color by selecting RGB values or by entering a hex code:

Portrait screenshot of phone cropped to show a Time Color dialog enabling setting of app display color by 6-character hex code or by setting red, green, and blue sliders, and including a clock display preview

  • Choice of app and widget horizontal or vertical time display layouts
  • Choice of app and widget clock display typefaces between monospace, sans-serif, and serif:

Three partial phone home screen diagonally-overlapping screenshots, each including a RomanDigital widget showing the time XII:LVIII in different one of monospace, sans-serif, or serif typeface

  • Widget time displays are automatically sized to fit the widget dimensions rather than number of screen cells the widget occupies.

  • Independent setting of widget background transparency, time zone, and other settings:

Portrait screenshot of a second phone Home screen showing four RomanDigital widgets with center-aligned Continental U.S. time zone times, time zone labels below times, and different transparency backgrounds Portrait screenshot of a third phone Home screen showing six RomanDigital widgets with fixed-divider-aligned international location time zone times and time zone labels above times

  • And... RomanDigital is Apache-2.0-licensed open source 🙂

Requirements

RomanDigital requires Android 5.0 or greater and is designed to run on a phone or tablet.

Widget Settings

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.

Permissions

The FOREGROUND_SERVICE and FOREGROUND_SERVICE_SPECIAL_USE permissions are set by this app. These permissions are required to enable running the TimeTickRelay foreground service that prompts the widgets to update each minute in response to receipt of Android's ACTION_TIME_TICK intent, which the widgets are unable to receive directly.

The POST_NOTIFICATIONS permission is set by this app. This permission is necessary for Android 13 and later to allow the TimeTickRelay service to display a notification indicating that it is running if the user so chooses in the system settings; unless the user so chooses, the notification will not be displayed on these Android versions.

The RECEIVE_BOOT_COMPLETED permission is set by this app. This permission is necessary for the app to restart the service on receipt of notification that the device has just finished booting.

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 that library's 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

Known Issues

Widgets may stop running after an update because the update stops the TimeTickRelay service (see Permissions above). They can be restarted easily by just opening the main app or any widget settings activity, which may be closed at any time thereafter.

After rebooting a device, the widget(s) will not start running until the app finishes restarting the relay service and then receives an ACTION_TIME_TICK from the system, which may be a couple of minutes. This delay is normal.

Text of a widget may appear incorrectly sized until the next widget update if the device configuration changes between portrait and landscape where the device allows home screen rotation. This issue is planned to be addressed in the next release.

The clock provided on the Time Color dialog allowing preview of the selected color currently has a horizontal time display layout regardless of the app's display layout setting. Nevertheless, the selected color will be applied to the app's clock display even if set to a vertical time display layout.

On Android 5.0, the widget(s) typeface cannot be changed.

The 'Align to Divider' option does not correctly align the display when a variable width font is used.

FAQ (Foremost Anticipated Questions)

Q: "I just updated RomanDigital and now the widget doesn't work! How do I get it running again?"

A: Open the main app or any widget settings activity to restart the relay service and thereby restart the widgets.

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, and implementation for variable width fonts would be really hard. In particular, if you've changed your system-wide font to something that's not monospace and you've set the typeface to "default", then the calculated display position is based on expected equal-width characters, which causes the divider position to be incorrect.

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: App text color can be changed; widget background transparency can be changed, with background fully white/black for 100% opacity in light/dark mode; and both app and widget(s) clock display typeface can be changed. As for other stylistic changes, I 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 intended to be a clock, and a date would crowd the display and look inelegant. But maybe an option someday? Maybe.

Q: "I want to change widget time zone labels to particular place names. Is there any way to do this?"

A: Not right now, but it should be added at some point since I'd like having that option myself and it should be easy to implement.

Q: "Can I put the widget on my phone's lock screen?"Portrait screenshot of phone lock screen showing RomanDigital widget

A: Maybe. I was able to on my Samsung Galaxy A14 5G by purchasing the excellent Widgets Anywhere app (formerly entitled "Lockscreen Widgets and Drawer") for the low, low price of $1.49. YMMV. Here's what my lock screen looks like:

Notes:

  • I get nothing if you click on the "Widgets Anywhere" 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.
  • Widgets Anywhere is also freely available as an APK from the Widgets Anywhere GitHub site. And it's MIT-licensed FOSS.
  • RomanDigital 2.x didn't work so well when on the lock screen on Android 15 with its more aggressive power management 🙁 But with RomanDigital 3.0.0's overhauled widget updating code, it works great. 🙂
  • The default lock screen clock's font color is set to transparent to completely hide it, since it couldn't be removed, so that RomanDigital could be used in its place. Something similar may be necessary on other devices as well.
  • Please note that I cannot provide support with regard to any problems resulting from placing a RomanDigital widget on your lock screen unless your device natively supports such placement.

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".

About

Android Digital Clock App and Widget with Roman Numeral Display

Topics

Resources

Stars

19 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Contributors

Languages