Skip to content

Commit c984e0d

Browse files
committed
Build158
- Added altitude data as measurement parameter for clock data - Refactor
1 parent f363cd6 commit c984e0d

File tree

4 files changed

+74
-84
lines changed

4 files changed

+74
-84
lines changed

app/src/main/java/app/simple/positional/decorations/views/PhysicalRotationImageView.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public class PhysicalRotationImageView extends androidx.appcompat.widget.AppComp
1919
static final public float TIME_DELTA_THRESHOLD = 0.25f; // maximum time difference between iterations, s
2020
static final public float ANGLE_DELTA_THRESHOLD = 0.1f; // minimum rotation change to be redrawn, deg
2121

22-
static final public float INERTIA_MOMENT_DEFAULT = 0.1f; // default physical properties
22+
// default physical properties
23+
static final public float INERTIA_MOMENT_DEFAULT = 0.1f;
2324
static final public float ALPHA_DEFAULT = 10f;
2425
static final public float MB_DEFAULT = 1000f;
2526

@@ -129,7 +130,6 @@ public void rotationUpdate(final float angleNew, final boolean animate) {
129130
* @return if there is a need to redraw rotation
130131
*/
131132
protected boolean angleRecalculate(final long timeNew) {
132-
133133
// recalculate angle using simple numerical integration of motion equation
134134
float deltaT1 = (timeNew - time1) / 1000f;
135135
if (deltaT1 > TIME_DELTA_THRESHOLD) {
@@ -176,6 +176,7 @@ protected boolean angleRecalculate(final long timeNew) {
176176
*/
177177
@Override
178178
public void clearAnimation() {
179+
time1 = time2 = 0;
179180
rotationUpdate(getRotation(), false);
180181
super.clearAnimation();
181182
}

app/src/main/java/app/simple/positional/preferences/MainPreferences.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ object MainPreferences {
3030
const val accentColor = "app_accent_color"
3131
const val lastLatitude = "last_latitude"
3232
const val lastLongitude = "last_longitude"
33+
const val lastAltitude = "last_altitude"
3334

3435
//--------------------------------------------------------------------------------------------------//
3536

@@ -171,6 +172,16 @@ object MainPreferences {
171172

172173
//--------------------------------------------------------------------------------------------------//
173174

175+
fun setLastAltitude(value: Float) {
176+
getSharedPreferences().edit().putFloat(lastAltitude, value).apply()
177+
}
178+
179+
fun getLastAltitude(): Float {
180+
return getSharedPreferences().getFloat(lastAltitude, 0F)
181+
}
182+
183+
//--------------------------------------------------------------------------------------------------//
184+
174185
fun setAddress(@NotNull value: String) {
175186
getSharedPreferences().edit().putString(address, value).apply()
176187
}

app/src/main/java/app/simple/positional/ui/panels/Clock.kt

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ class Clock : ScopedFragment() {
182182
minutes.setPhysical(0.5F, 8F, 5000F)
183183

184184
calculateAndUpdateData(MainPreferences.getLastCoordinates()[0].toDouble(),
185-
MainPreferences.getLastCoordinates()[1].toDouble())
185+
MainPreferences.getLastCoordinates()[1].toDouble(),
186+
MainPreferences.getLastAltitude().toDouble())
186187

187188
if (BuildConfig.FLAVOR == "lite") {
188189
timezoneButton.gone()
@@ -203,7 +204,7 @@ class Clock : ScopedFragment() {
203204

204205
locationViewModel.location.observe(viewLifecycleOwner) {
205206
if (isCustomCoordinate) return@observe
206-
calculateAndUpdateData(it.latitude, it.longitude)
207+
calculateAndUpdateData(it.latitude, it.longitude, it.altitude)
207208
}
208209

209210
bottomSheetBehavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() {
@@ -350,7 +351,7 @@ class Clock : ScopedFragment() {
350351
}
351352
private val customDataUpdater = object : Runnable {
352353
override fun run() {
353-
calculateAndUpdateData(customLatitude, customLongitude)
354+
calculateAndUpdateData(customLatitude, customLongitude, 0.0)
354355
handler.postDelayed(this, 2500)
355356
}
356357
}
@@ -398,7 +399,7 @@ class Clock : ScopedFragment() {
398399
handler.post(clock)
399400
}
400401

401-
private fun calculateAndUpdateData(latitude: Double, longitude: Double) {
402+
private fun calculateAndUpdateData(latitude: Double, longitude: Double, altitude: Double) {
402403
viewLifecycleOwner.lifecycleScope.launch {
403404

404405
var sunTimeData: Spanned
@@ -427,21 +428,21 @@ class Clock : ScopedFragment() {
427428
}
428429

429430
sunTimeData =
430-
with(SunTimes.compute().timezone(timezone).on(Instant.now()).latitude(latitude).longitude(longitude).execute()) {
431+
with(SunTimes.compute().timezone(timezone).on(Instant.now()).latitude(latitude).longitude(longitude).height(altitude).execute()) {
431432
fromHtml("<b>${getString(R.string.sun_sunrise)}</b> ${pattern.format(rise)}<br>" +
432433
"<b>${getString(R.string.sun_sunset)}</b> ${pattern.format(set)}<br>" +
433434
"<b>${getString(R.string.sun_noon)}</b> ${pattern.format(noon)}<br>" +
434435
"<b>${getString(R.string.sun_nadir)}</b> ${pattern.format(nadir)}")
435436
}
436437

437438
moonTimeData =
438-
with(MoonTimes.compute().on(Instant.now()).timezone(timezone).latitude(latitude).longitude(longitude).execute()) {
439+
with(MoonTimes.compute().on(Instant.now()).timezone(timezone).latitude(latitude).longitude(longitude).height(altitude).execute()) {
439440
fromHtml("<b>${getString(R.string.moon_moonrise)}</b> ${pattern.format(rise)}<br>" +
440441
"<b>${getString(R.string.moon_moonset)}</b> ${pattern.format(set)}")
441442
}
442443

443444
twilightData =
444-
with(SunTimes.compute().timezone(timezone).on(Instant.now()).latitude(latitude).longitude(longitude)) {
445+
with(SunTimes.compute().timezone(timezone).on(Instant.now()).latitude(latitude).longitude(longitude).height(altitude)) {
445446
fromHtml("<b>${getString(R.string.twilight_astronomical_dawn)}</b> ${pattern.format(twilight(SunTimes.Twilight.ASTRONOMICAL).execute().rise)}<br>" +
446447
"<b>${getString(R.string.twilight_nautical_dawn)}</b> ${pattern.format(twilight(SunTimes.Twilight.NAUTICAL).execute().rise)}<br>" +
447448
"<b>${getString(R.string.twilight_civil_dawn)}</b> ${pattern.format(twilight(SunTimes.Twilight.CIVIL).execute().rise)}<br>" +
@@ -451,7 +452,7 @@ class Clock : ScopedFragment() {
451452
}
452453

453454
sunPositionData =
454-
with(SunPosition.compute().timezone(timezone).on(Instant.now()).at(latitude, longitude).execute()) {
455+
with(SunPosition.compute().timezone(timezone).on(Instant.now()).at(latitude, longitude).height(altitude).execute()) {
455456
fromHtml("<b>${getString(R.string.sun_azimuth)}</b> ${round(azimuth, 2)}° ${getDirectionCodeFromAzimuth(requireContext(), azimuth)}<br>" +
456457
"<b>${getString(R.string.sun_altitude)}</b> ${round(trueAltitude, 2)}°<br>" +
457458
if (isMetric) {
@@ -462,7 +463,7 @@ class Clock : ScopedFragment() {
462463
}
463464

464465
moonPositionData =
465-
with(MoonPosition.compute().timezone(timezone).on(Instant.now()).latitude(latitude).longitude(longitude).execute()) {
466+
with(MoonPosition.compute().timezone(timezone).on(Instant.now()).latitude(latitude).longitude(longitude).height(altitude).execute()) {
466467
fromHtml("<b>${getString(R.string.moon_azimuth)}</b> ${round(azimuth, 2)}° ${getDirectionCodeFromAzimuth(requireContext(), azimuth)}<br>" +
467468
"<b>${getString(R.string.moon_altitude)}</b> ${round(altitude, 2)}°<br>" +
468469
(if (isMetric) {

0 commit comments

Comments
 (0)