You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Update README.md and CHANGELOG.md
- Update About activity:
- Improve display of 'what's new' info
- Add thanks to the FreeDroidWarn project
- Make sundry improvements in wording
- Update fastlane info:
- Add new fastlane changelog
- Update full description
- Update versionName in the build configuration
Copy file name to clipboardExpand all lines: CHANGELOG.md
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,6 +8,36 @@ This project aims to adhere to [Semantic Versioning](https://server.org).
8
8
9
9
Regarding project commits: As of 2024-08-23, this project aims to adhere to the [Conventional Commits](https://www.conventionalcommits.org) standard. While the standard makes recommendations, it does not limit commit type or scope; consequently, neither type nor scope is limited to those recommendations in the project commits.
10
10
11
+
## [3.0.0] - 2026-02-28
12
+
13
+
### Added
14
+
* A service that relays a custom intent to the widget(s) on receipt of Intent.ACTION_TIME_TICK from the Android system (which is sent by the system each minute), thereby initiating update of the widget(s) time display each minute and providing improved widget update reliability.
15
+
* Relay service start on:
16
+
* first widget addition to home screen.
17
+
* on device boot if one or more widgets have already been added.
18
+
* on main app start and widget settings start if one or more widgets have already been added to provide a simply way for the user to restart the service after updating the app or if the service has been otherwise stopped (e.g. by force stop of the app).
19
+
* Relay service stop on last widget removal.
20
+
* Independent selection of typeface between monospace, sans-serif, and serif of the main app's and each widget's time display.
21
+
* The main app display also includes a 'device default' typeface option. The typeface for this selection is either hardcoded into the device or determined by the user's selection in system settings, depending on the device's particular Android implementation.
22
+
* Disabling of the clock display alignment preference and forcing 'Align to Center' on selection of sans-serif or serif typeface since non-monospace typefaces don't properly align the time display when using 'Align to Divider'.
23
+
* Display after install or upgrade of a simple dialog on start of either the main or widget settings activity asking the user whether to show what's new in the latest version. The About activity, containing the "what's new" info above the fold, is started on clicking 'Yes'; clicking either 'Yes' or 'No' updates a preference that prevents the dialog's display until the next upgrade.
24
+
* Initially-collapsed text blocks in the About activity with expand/collapse functionality that contain sizable chunks of license info.
25
+
26
+
### Added (Technical)
27
+
* Internal support facilitating future addition of new fonts for display by the main app clock. See commits f255f747 and d850fffb for particular points relating to adding new fonts.
28
+
* A main app toolbar menu button (R.id.item_reset_setting) that is only enabled and visible if `BuildConfig.DEBUG` is true; the button can be used to, for example, reset one or more preferences during debugging by providing code in the toolbar's `onMenuItemClick` handler.
29
+
* TextViewEC, a simple, reusable custom view extended from AppCompatTextView that provides the expand/collapse functionality in the About activity. It automatically stores its state in SharedPreferences private to the activity in which it is used, with a preference key equal to the id name specified in the activity's layout. It has one custom boolean attribute, initCollapsed, for specifying its initial state.
30
+
31
+
### Changed
32
+
* Target and compile SDK from 34 to 35.
33
+
* Java source and target compatibility from 8 to 21.
34
+
35
+
### Fixed
36
+
* Various UI/UX issues.
37
+
38
+
### Removed
39
+
* Less reliable updating of widget time displays by setting of successive exact alarms that deliver a custom intent to the widget(s) each minute to thereby initiate update.
Copy file name to clipboardExpand all lines: README.md
+21-26Lines changed: 21 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,7 +25,7 @@ a current phone or tablet.
25
25
26
26

27
27
28
-
Further, RomanDigital includes a widget that can be added to a device's Home screen.
28
+
RomanDigital also includes a widget that can be added to a device's Home screen.
29
29
30
30

31
31
@@ -54,7 +54,9 @@ RomanDigital further includes:
54
54
55
55

56
56
57
-
* A widget for providing a Roman digital clock display on a device's Home screen, with display text automatically sized to fit the widget's dimensions:
57
+
* Choice of clock display typefaces between monospace, sans-serif, and serif.
58
+
59
+
* The widget provides a Roman digital clock display on a device's Home screen, with display text automatically sized to fit the widget's dimensions (sizing improved in Version 3.0.0):
58
60
59
61

60
62
@@ -78,18 +80,11 @@ in the normal manner for the particular Android version.
78
80
79
81
## Permissions
80
82
81
-
The USE_EXACT_ALARM permission is set by this app. This permission is
82
-
necessary on Android 13 and greater to enable the widget to provide an
83
-
accurate time display without inconveniencing the user by asking for the permission.
84
-
It cannot be disabled without modifying the source code.
83
+
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.
85
84
86
-
The SCHEDULE_EXACT_ALARM permission is also set by this app and is
87
-
necessary on Android 12 for the same reason as the USE_EXACT_ALARM
88
-
permission discussed above. This permission can be disabled in the
89
-
_Alarms & Reminders_ section of the system settings. Disabling this
90
-
permission will cause inaccuracy in the widget's time display.
85
+
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.
91
86
92
-
Android versions 11 and lower allow setting of exact alarms by default.
87
+
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.
93
88
94
89
In addition, net.diffengine.romandigitalclock.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
95
90
is set by this app. This was set during the app build process by use of a particular Android
As widget updating is currently implemented, text of a widget rotated between portrait and landscape may not be automatically resized until the next widget update, which may be up to a minute after the rotation. This is not an issue for devices that do not support home screen rotation or that are set not to rotate the home screen. It is also not an issue for any device having a UI/launcher rendering the device's home screen on which the widget is installed that notifies widgets when the device is rotated (e.g. Samsung One UI 6.1 and 7.0).
99
+
Widgets will likely 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.
105
100
106
-
After building and updating the app in Android Studio, 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.
101
+
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.
107
102
108
-
The 'Align to Divider' option does not correctly align the display when a variable width font is used.
103
+
Text of a widget rotated between portrait and landscape may not be incorrectly sized until the next widget update, which may be up to a minute after the rotation. This is not an issue for devices that do not support home screen rotation or that are set not to rotate the home screen. It is also not an issue for any device having a UI/launcher rendering the device's home screen on which the widget is installed that notifies widgets when the device is rotated (e.g. Samsung One UI 6.1 and 7.0).
109
104
110
-
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.
105
+
Also, text of a widget may appear incorrectly sized until the next widget update if a widget's settings screen is open while the device is rotated and closed after rotation.
106
+
107
+
On Android 5.0, the widget(s) typeface cannot be changed.
108
+
109
+
The 'Align to Divider' option does not correctly align the display when a variable width font is used.
111
110
112
111
## FAQ (Foremost Anticipated Questions)
113
112
114
-
> Q: "I just updated RomanDigital / updated Android / restarted my device, and now the widget doesn't work! How do I get it running again?"
113
+
> Q: "I just updated RomanDigital and now the widget doesn't work! How do I get it running again?"
115
114
>
116
-
> A: As of version 2.0.1, this should only happen when running RomanDigital on a device through Android Studio. The workaround to get the widget going again is to "kickstart" it by simply opening and then canceling a settings screen from any widget or from the app.
115
+
> A: Open the main app or any widget settings activity to restart the relay service and thereby restart the widgets.
117
116
118
117
> Q: "Why does the position of the divider change when 'Align to Divider' is selected? Isn't it supposed to stay in one place?"
119
118
>
120
119
> 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, but implementation for variable width fonts would be _really hard_. 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.
121
120
122
-
> 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?"
123
-
>
124
-
> 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.
125
-
126
121
> Q: "Will there ever be an alarm feature?"
127
122
>
128
123
> A: Maybe, but it's quite low on the priority list at this point.
129
124
130
125
> Q: "Why can't I change the font/text color/background color/widget corner curvature/etc?"
131
126
>
132
-
> A: App text color can now be changed, as noted in the **Features** above. Also, background _transparency_ can be changed, with background fully white/black for 100% opacity in light/dark mode. As for other stylistic changes, I haven't gotten to them yet.
127
+
> 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.
133
128
134
129
> Q: "Why no seconds?"
135
130
>
136
131
> 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.
137
132
138
133
> Q: "Why no date?"
139
134
>
140
-
> A: Because it's just a simple clock. At least for now.
135
+
> 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.
141
136
142
137
> Q: "I want to change widget time zone labels to particular place names. Is there any way to do this?"
143
138
>
144
-
> A: Not right now, but it should be added pretty soon since I want that option myself and it should be easy to implement.
139
+
> 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.
145
140
146
141
> Q: "Can I put the widget on my phone's lock screen?"
147
142
>
@@ -152,7 +147,7 @@ The RomanDigital app will run on a 5th Generation Amazon Kindle Fire, which is b
152
147
> Note:
153
148
>
154
149
> * 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.
155
-
> * This doesn't work so well after my Galaxy A14 was updated from Android 14 to 15 and from One UI 6.1 to 7.0. The power management of Android 15 is understood to be more aggressive and apparently stops apps, including the widget on the lock screen, after a much shorter period when the phone is locked. :slightly_frowning_face:
150
+
> * This didn't work so well with RomanDigital 2.x on Android 15 and its more aggressive power management :slightly_frowning_face: But with RomanDigital 3.0.0's overhauled widget updating code, it works great. :slightly_smiling_face:
0 commit comments