Skip to content

Commit

Permalink
Merge pull request #810 from forrestguice/develop
Browse files Browse the repository at this point in the history
develop
  • Loading branch information
forrestguice authored Jul 31, 2024
2 parents 3231c5a + 490512f commit 61f3988
Show file tree
Hide file tree
Showing 550 changed files with 32,503 additions and 3,075 deletions.
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
### ~

### develop
* adds "sidebar navigation", and an option to change the "launcher activity" (#505).
* adds support for custom events based on "shadow length" (#331).
* adds support for customizing the app color scheme; override map, graph, and highlight colors.
* adds "light graph" dialog (of sunlight over the year) (#735), "earliest/latest sunrise/sunset" info (#753), and a 3x2 graph widget (to sun position widgets).
* adds "use app location" option to alarms; reschedules alarms automatically when the location is changed (#768, #808).
* adds "bedtime mode" to alarms; helps schedule do-not-disturb during sleep hours (#425).
* adds "high brightness" option (#741) and swipeable buttons (#738) to the alarm screen.
* adds "next alarm" quick settings tile, and 2x2 and 3x2 "next alarm" widgets (#766).
* adds support for notification channels (api26+).
* adds permission `USE_FULL_SCREEN_INTENT` (needed for alarms over the lock screen) [PERMISSION]; fixes bug "alarms fail to display over lock screen" (#802).
* adds permission `FOREGROUND_SERVICE` (needed for alarms and notifications) [PERMISSION].
* adds permission `ACCESS_NOTIFICATION_POLICY` (needed to enable do-not-disturb at bedtime) [PERMISSION].
* fixes navigation bugs when using D-pad within alarm screens (Android TV).
* fixes incorrect default places coordinates (3 places updated).
* updates default app and widget themes, and adds additional default widget actions.
* updates Time4A dependency from 4.4.2-2019c to 4.8-2021a.
* updates constraint-layout dependency from 1.0.2 to 2.0.4.
* updates targetSdkVersion (25 -> 26 -> 28) (#725), and build tools to 28.0.3.
* increments minSdkVersion (10 -> 14) (#122); building for api10 remains possible for now by reverting changes in `build.gradle`.


### v0.15.16 (2024-06-17)
* adds "online help" links to existing help dialogs (#797).
* fixes bug where "moon phase alarm time is incorrect" (#803).
Expand Down
22 changes: 21 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,11 @@ The app:
* displays the sunrise and sunset, blue and golden hour, and twilight times (civil / nautical / astronomical).
* displays the current moon phase, illumination, moonrise, moonset, lunar noon, lunar midnight, apogee, perigee, and major phase dates.
* displays the current sunlight and moonlight projected over a world map (basic equirectangular, blue marble, or azimuthal maps).
* displays the total amount of sunlight over the year, and earliest/latest sunrise and sunset times.
* displays the solstices, equinoxes, and cross-quarter days, and notes the time until the next event.
* displays the sun's current position, and its position at sunrise, sunset, and noon.
* displays the moon's current position, and its position at moonrise and moonset.
* includes support for custom rising/setting events; the time when the sun is at a given angle, or an object casts a shadow of given length.
* includes an Alarm Clock that can set a repeating alarm or notification for the next sunrise or sunset (or other rising/setting event).
* includes a "Quick Settings" tile that displays information as part of the settings tray.
* can display the configured location on a map (requires a map application) and configure the location from a map (using geo intent).
Expand All @@ -51,6 +53,12 @@ The app:
* *does not* require GPS. The location is manually specified by default (and optionally obtained from GPS).
* *does not* require network connectivity (or other unnecessary permissions). All calculations are performed locally on the device.

The alarm clock:
* supports different types; schedule "alarms", "notifications", or "quick notifications".
* supports astronomical events (in addition to ordinary alarms), and repeating alarms that are rescheduled as event times change throughout the year.
* includes features for heavy sleepers; challenges to dismiss alarms ("easy math"), snooze limits, and bright fullscreen alarms.
* includes a bedtime mode that schedules alarms using sleep cycles, and manages do-not-disturb during sleep hours.

Widgets are (re)configurable:
* location (latitude, longitude, elevation).
* time zone (system / custom), sidereal time (lmst, gmst), or solar time (local mean time, apparent solar time).
Expand All @@ -67,6 +75,11 @@ Widgets are resizable and include...
**Clock widgets:**
* 1x1 digital clock widget that displays solar time (or a given timezone).

**Alarm widgets:**
* 1x1 alarm widget that displays the time of the next alarm.
* 2x2 alarm widget that displays a basic list of upcoming alarms.
* 3x2 alarm widget that displays a detailed list of upcoming alarms.

**Date widgets:**
* 1x1 date widget that displays the date with a given calendars (Chinese, Coptic, Ethiopian, Gregorian, Hebrew, Indian, Japanese, Julian, Korean, Minguo, Solar Hijiri, Thai Solar, or Vietnamese).

Expand All @@ -93,7 +106,11 @@ Widgets are resizable and include...
* 3x1 sun position widget that displays the lightmap graph, and tracks the sun's altitude and azimuth (current, sunrise/sunset, and at noon).
* 3x2 sun position widget that displays current sunlight and moonlight projected over a world map.
* 3x2 sun position widget that displays the sun's altitude as a line graph.
* 3x2 sun position widget that displays sunlight over the year.

<img width="128px" src="https://github.com/forrestguice/SuntimesWidget/blob/master/app/src/main/res/drawable-nodpi/alarmwidget_1x1_preview.png" align="center"></img>
<img width="128px" src="https://github.com/forrestguice/SuntimesWidget/blob/master/app/src/main/res/drawable-nodpi/alarmwidget_2x2_preview.png" align="center"></img>
<img width="128px" src="https://github.com/forrestguice/SuntimesWidget/blob/master/app/src/main/res/drawable-nodpi/alarmwidget_3x2_preview.png" align="center"></img>
<img width="128px" src="https://github.com/forrestguice/SuntimesWidget/blob/master/app/src/main/res/drawable-nodpi/clockwidget_1x1_preview.png" align="center"></img>
<img width="128px" src="https://github.com/forrestguice/SuntimesWidget/blob/master/app/src/main/res/drawable-nodpi/widget1_preview.png" align="center"></img>
<img width="128px" src="https://github.com/forrestguice/SuntimesWidget/blob/master/app/src/main/res/drawable-nodpi/widget0_1x1_preview.png" align="center"></img>
Expand Down Expand Up @@ -121,11 +138,14 @@ The app benefits from the following permissions...
|---|---|---|
|ACCESS_COARSE_LOCATION|To get current location.|v0.1.0|
|ACCESS_FINE_LOCATION|To get current location (GPS).|v0.1.0|
|ACCESS_NOTIFICATION_POLICY|To enable do-not-disturb at bedtime.|v0.16.0|
|BOOT_COMPLETED|To restore active alarms when the device boots.|v0.11.0|
|FOREGROUND_SERVICE|To display alarms and notifications.|v0.16.0|
|POWER_OFF_ALARM|To wake the device from the power off state.|v0.14.0|
|READ_EXTERNAL_STORAGE|To play alarm sounds located on the SD card.|v0.11.5, v0.13.8 (api&le;18)|
|SET_ALARM|To interact with the system AlarmClock app.|v0.1.0|
|REQUEST_IGNORE_BATTERY_OPTIMIZATIONS|To help ensure reliable delivery of alarms.|v0.14.11|
|SET_ALARM|To interact with the system AlarmClock app.|v0.1.0|
|USE_FULL_SCREEN_INTENT|To display alarms over the lock screen.|v0.16.0|
|WRITE_EXTERNAL_STORAGE|To export data (places, themes, etc.) to file.|v0.2.2 (api&le;18)|

Version `v0.13.8` removed READ_EXTERNAL_STORAGE for api&ge;19 (replaced with persistent URI permissions).
Expand Down
28 changes: 16 additions & 12 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apply plugin: 'com.android.application'

android
{
compileSdkVersion 25
buildToolsVersion '27.0.3'
compileSdkVersion 28
buildToolsVersion '28.0.3'

sourceSets
{
Expand All @@ -20,9 +20,9 @@ android
{
applicationId "com.forrestguice.suntimeswidget"
//noinspection MinSdkTooLow
minSdkVersion 10
minSdkVersion 14
//noinspection ExpiredTargetSdkVersion,OldTargetApi
targetSdkVersion 25
targetSdkVersion 28
versionCode 113
versionName "0.15.16"

Expand All @@ -43,27 +43,31 @@ android

lintOptions
{
disable 'MissingTranslation','WrongRegion'
disable 'MissingTranslation','WrongRegion','ObsoleteSdkInt'
}

useLibrary 'android.test.runner'
useLibrary 'android.test.base'
useLibrary 'android.test.mock'
}

dependencies
{
implementation 'com.android.support:design:25.4.0'
implementation 'com.android.support:appcompat-v7:25.4.0'
implementation 'com.android.support:recyclerview-v7:25.4.0'
implementation 'com.android.support:cardview-v7:25.4.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'

implementation 'com.github.forrestguice:sunrisesunsetlib-java:SunriseSunsetCalculator-1.2-p0-fixdst'
implementation 'com.github.caarmen.SunriseSunset:lib-sunrise-sunset:1.1.0'
implementation group: 'net.time4j', name: 'time4j-android', version: '4.4.2-2019c'
implementation group: 'net.time4j', name: 'time4j-android', version: '4.8-2021a'

implementation 'com.github.forrestguice:colorpicker:0.0.13post1'

testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.jraska:falcon:1.0.4'
androidTestImplementation 'com.android.support:support-annotations:25.4.0'
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
androidTestImplementation 'com.android.support.test:runner:0.5'
androidTestImplementation 'com.android.support.test:rules:0.5'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'
Expand Down
30 changes: 22 additions & 8 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -24,29 +24,43 @@
public <init>();
}

# keep SuntimesTheme constructors
-keepclassmembers class * extends com.forrestguice.suntimeswidget.themes.SuntimesTheme {
public <init>(android.content.Context);
}

# keep classes from support library
-keep class android.support.v7.widget.SearchView { *; }

# keep descriptor classes
-keep,includedescriptorclasses class com.flask.colorpicker.renderer.ColorWheelRenderer
-keep,includedescriptorclasses class com.flask.colorpicker.slider.OnValueChangedListener
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.settings.WidgetSettings$TrackingMode
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.settings.WidgetSettings$SolsticeEquinoxMode
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.EquinoxView$EquinoxViewListener
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.calculator.SuntimesRiseSetDataset
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.LightMapView$LightMapTaskListener
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.LocationConfigView$LocationViewMode
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.LocationConfigView$LocationConfigViewListener

-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.calculator.SuntimesData
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.settings.WidgetSettings$TrackingMode
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.calculator.SuntimesRiseSetDataset

-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.equinox.EquinoxView$EquinoxViewListener

-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.getfix.LocationConfigView$LocationViewMode
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.getfix.LocationConfigView$LocationConfigViewListener

-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.graph.LightMapView$LightMapTaskListener
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.graph.LightGraphView$LightGraphTaskListener
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.graph.LineGraphView$LineGraphTaskListener

-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.map.WorldMapTask$WorldMapOptions
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.map.WorldMapTask$WorldMapTaskListener

-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.moon.MoonApsisView$MoonApsisViewListener
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.moon.MoonPhasesView1$MoonPhasesViewListener
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.moon.MoonRiseSetView1$MoonRiseSetViewListener

-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.notes.NoteViewFlipper$ViewFlipperListener

-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.settings.WidgetSettings$TrackingMode
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.settings.WidgetSettings$SolsticeEquinoxMode
-keep,includedescriptorclasses class com.forrestguice.suntimeswidget.settings.WidgetSettings$TrackingMode

#-keep class **.SPX
#-keepclassmembers class * implements java.io.Serializable {
# static final long serialVersionUID;
Expand Down
Loading

0 comments on commit 61f3988

Please sign in to comment.