diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2023-08-13 12:13:24 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2023-08-13 12:13:24 +0300 |
commit | 232a5af1d00d9f09dc716ffc649f319c4e39e434 (patch) | |
tree | 2b82504d3a129c3e9d2747ed0e2a8f040a66bc53 | |
parent | 0f632f84971a4d749092741d96672b8b8336d034 (diff) |
Refactoring
-rw-r--r-- | app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java | 161 | ||||
-rw-r--r-- | app/src/main/java/com/clusterrr/hexeditorwatchface/SettingsActivity.java | 2 | ||||
-rw-r--r-- | app/src/main/res/drawable-nodpi/bg.png | bin | 28432 -> 0 bytes | |||
-rw-r--r-- | app/src/main/res/drawable-nodpi/menu_background.png | bin | 5369 -> 0 bytes | |||
-rw-r--r-- | app/src/main/res/values/arrays.xml | 8 | ||||
-rw-r--r-- | app/src/main/res/values/dimens.xml | 7 | ||||
-rw-r--r-- | app/src/main/res/values/strings.xml | 4 | ||||
-rw-r--r-- | app/src/main/res/xml/watch_face_info.xml | 5 |
8 files changed, 76 insertions, 111 deletions
diff --git a/app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java b/app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java index 14c01cc..914c183 100644 --- a/app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java +++ b/app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java @@ -1,7 +1,5 @@ package com.clusterrr.hexeditorwatchface; -import static kotlin.jvm.internal.Reflection.createKotlinClass; - import android.Manifest; import android.content.BroadcastReceiver; import android.content.Context; @@ -19,49 +17,37 @@ import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; -import android.health.connect.HealthConnectException; -import android.health.connect.ReadRecordsResponse; import android.os.BatteryManager; import android.os.Handler; import android.os.Message; +import android.os.SystemClock; +import android.support.wearable.watchface.CanvasWatchFaceService; +import android.support.wearable.watchface.WatchFaceStyle; +import android.util.Log; +import android.view.SurfaceHolder; import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; import androidx.health.services.client.HealthServices; import androidx.health.services.client.HealthServicesClient; import androidx.health.services.client.PassiveListenerCallback; import androidx.health.services.client.PassiveMonitoringClient; -import androidx.health.services.client.data.DataPoint; import androidx.health.services.client.data.DataPointContainer; import androidx.health.services.client.data.DataType; -import androidx.health.services.client.data.DeltaDataType; -import androidx.health.services.client.data.ExerciseType; import androidx.health.services.client.data.IntervalDataPoint; import androidx.health.services.client.data.PassiveListenerConfig; -import androidx.health.services.client.data.PassiveMonitoringCapabilities; -import androidx.health.services.client.data.UserActivityInfo; -import androidx.health.services.client.data.UserActivityState; - -import android.os.SystemClock; -import android.support.wearable.watchface.CanvasWatchFaceService; -import android.support.wearable.watchface.WatchFaceStyle; -import android.util.Log; -import android.view.SurfaceHolder; - -import androidx.core.content.ContextCompat; - -import com.google.common.util.concurrent.ListenableFuture; import java.lang.ref.WeakReference; import java.time.Instant; import java.util.Arrays; import java.util.Calendar; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.TimeZone; import java.util.concurrent.TimeUnit; +@SuppressWarnings("deprecation") public class HexWatchFace extends CanvasWatchFaceService { public static String TAG = "hex_watchface"; private static final long INTERACTIVE_UPDATE_RATE = TimeUnit.SECONDS.toMillis(1); @@ -77,7 +63,6 @@ public class HexWatchFace extends CanvasWatchFaceService { private static final int ENDIANNESS_LITTLE_ENDIAN = 0; private static final int ENDIANNESS_BIG_ENDIAN = 1; private static final int ENDIANNESS_FAKE_HEX = 2; - private static final int STEPS_SAVE_INTERVAL = 10; /** * Handler message id for updating the time periodically in interactive mode. @@ -98,13 +83,13 @@ public class HexWatchFace extends CanvasWatchFaceService { } @Override - public void handleMessage(Message msg) { + public void handleMessage(@NonNull Message msg) { HexWatchFace.Engine engine = mWeakReference.get(); if (engine != null) engine.handleUpdateTimeMessage(); } } - private class Engine extends CanvasWatchFaceService.Engine implements SensorEventListener, PassiveListenerCallback { + private class Engine extends CanvasWatchFaceService.Engine { /* Handler to update the time once a second in interactive mode. */ private final Handler mUpdateTimeHandler = new EngineHandler(this); private Calendar mCalendar; @@ -152,7 +137,6 @@ public class HexWatchFace extends CanvasWatchFaceService { super.onCreate(holder); Resources res = getResources(); - SharedPreferences prefs = getApplicationContext().getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE); setWatchFaceStyle(new WatchFaceStyle.Builder(HexWatchFace.this) .setAcceptsTapEvents(true) @@ -229,9 +213,11 @@ public class HexWatchFace extends CanvasWatchFaceService { if (mBackgroundMaxY == 0) mBackgroundMaxY = canvas.getWidth() / 2 / NUMBER_V_INTERVAL + 2; // Read battery state + int battery = 0; IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryIntent = getApplicationContext().registerReceiver(null, filter); - int battery = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); + if (batteryIntent != null) + battery = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); // Check if screen was tapped recently boolean tappedDec = mTouchTS + TOUCH_DEC_DURATION >= now; @@ -508,8 +494,6 @@ public class HexWatchFace extends CanvasWatchFaceService { x = (int) (Math.round(Math.random() * Math.max(1,mBackgroundMaxX - 2))); // from edge to edge else if ((y > -(mBackgroundMaxY - 3) && (y < mBackgroundMaxY - 3))) x = (int) (Math.round(Math.random())); // from -1 to 1 - else - x = 0; // center only if (Math.round(Math.random()) == 0) x *= -1; Log.d(TAG, "mBackgroundMaxX="+mBackgroundMaxX+", anti_burn_in_x=" + x); mLastAmbientUpdateX = x; @@ -521,8 +505,8 @@ public class HexWatchFace extends CanvasWatchFaceService { } } // Draw hours and minutes - drawNumber(canvas, hour, timeSystem, 1, HexNumbers.COLORS_DARK, 0 + x, 0 + y); - drawNumber(canvas, mCalendar.get(Calendar.MINUTE), timeSystem, 1, HexNumbers.COLORS_DARK, 1 + x, 0 + y); + drawNumber(canvas, hour, timeSystem, 1, HexNumbers.COLORS_DARK, x, y); + drawNumber(canvas, mCalendar.get(Calendar.MINUTE), timeSystem, 1, HexNumbers.COLORS_DARK, 1 + x, y); } } @@ -571,7 +555,7 @@ public class HexWatchFace extends CanvasWatchFaceService { if (visible) { registerReceiver(); - /* Update time zone in case it changed while we weren"t visible. */ + /* Update time zone in case it changed while we weren't visible. */ mCalendar.setTimeZone(TimeZone.getDefault()); updateSensors(); invalidate(); @@ -631,10 +615,9 @@ public class HexWatchFace extends CanvasWatchFaceService { } } - private void updateSensors() { - // Enable disable sensors + // Enable/disable sensors SharedPreferences prefs = getApplicationContext().getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE); if ((ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.BODY_SENSORS) == PackageManager.PERMISSION_GRANTED) && @@ -643,11 +626,11 @@ public class HexWatchFace extends CanvasWatchFaceService { // Enable heart rate sensor if need if (mHeartRateSensor == null) { mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE); - mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL); + mSensorManager.registerListener(mHeartRateListener, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL); Log.i(TAG, "Heart rate sensor enabled"); } } else if (mHeartRateSensor != null) { - mSensorManager.unregisterListener(this, mHeartRateSensor); + mSensorManager.unregisterListener(mHeartRateListener, mHeartRateSensor); mHeartRateSensor = null; mHeartRate = 0; Log.i(TAG, "Heart rate sensor disabled"); @@ -668,7 +651,7 @@ public class HexWatchFace extends CanvasWatchFaceService { //.setShouldUserActivityInfoBeRequested(true) .setDataTypes(dataTypes) .build(); - mStepPassiveMonitoringClient.setPassiveListenerCallback(passiveListenerConfig, this); + mStepPassiveMonitoringClient.setPassiveListenerCallback(passiveListenerConfig, mStepListener); Log.i(TAG, "Step sensor enabled"); } } else if (mStepPassiveMonitoringClient != null) @@ -676,75 +659,79 @@ public class HexWatchFace extends CanvasWatchFaceService { // Disable step sensor mStepPassiveMonitoringClient.clearPassiveListenerCallbackAsync(); mStepPassiveMonitoringClient = null; - Log.i(TAG, "Step sensor Disabled"); + Log.i(TAG, "Step sensor disabled"); } } - // Heart rate receiver - @Override - public void onSensorChanged(SensorEvent event) { - //Log.d(TAG, "New sensor data: " + event.sensor.getType()); - switch (event.sensor.getType()) { - case Sensor.TYPE_HEART_RATE: - if ((int)event.values[0] != 0) { + /* Heart rate listener */ + private final SensorEventListener mHeartRateListener = new SensorEventListener() + { + @Override + public void onSensorChanged(SensorEvent event) { + if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) { + if ((int) event.values[0] != 0) { mHeartRate = (int) event.values[0]; mHeartRateTS = System.currentTimeMillis(); //Log.d(TAG, "Heart rate: " + mHeartRate); } - break; + } } - } - @Override - public void onAccuracyChanged(Sensor sensor, int i) { - // unused - } + @Override + public void onAccuracyChanged(Sensor sensor, int accuracy) { + // unused for heart rate + } + }; - // Steps receiver - @Override - public void onNewDataPointsReceived(@NonNull DataPointContainer dataPoints) { - PassiveListenerCallback.super.onNewDataPointsReceived(dataPoints); + /* Step counter listener */ + private final PassiveListenerCallback mStepListener = new PassiveListenerCallback() + { + @Override + public void onNewDataPointsReceived(@NonNull DataPointContainer dataPoints) { + PassiveListenerCallback.super.onNewDataPointsReceived(dataPoints); - List<IntervalDataPoint<Long>> dps = dataPoints.getData(DataType.STEPS_DAILY); - Instant bootInstant = Instant.ofEpochMilli(System.currentTimeMillis() - SystemClock.elapsedRealtime()); + List<IntervalDataPoint<Long>> dps = dataPoints.getData(DataType.STEPS_DAILY); + Instant bootInstant = Instant.ofEpochMilli(System.currentTimeMillis() - SystemClock.elapsedRealtime()); - long ts = 0; - long steps = 0; + long ts = 0; + long steps = 0; - if (!dps.isEmpty()) { - for (IntervalDataPoint<Long> dp : dps) - { - Instant endTime = dp.getEndInstant(bootInstant); - if (endTime.toEpochMilli() > ts) + if (!dps.isEmpty()) { + /* Search for last record */ + for (IntervalDataPoint<Long> dp : dps) { - ts = endTime.toEpochMilli(); - steps = dp.getValue(); + Instant endTime = dp.getEndInstant(bootInstant); + if (endTime.toEpochMilli() > ts) + { + ts = endTime.toEpochMilli(); + steps = dp.getValue(); + } } } - } - mStepCounter = (int)steps; - Log.d(TAG, "Today steps: " + mStepCounter); - } + mStepCounter = (int)steps; + // Log.d(TAG, "Today steps: " + mStepCounter); + } - @Override - public void onRegistered() { - PassiveListenerCallback.super.onRegistered(); - Log.d(TAG, "Step counter sensor registered"); - } + @Override + public void onRegistered() { + PassiveListenerCallback.super.onRegistered(); + Log.d(TAG, "Step counter sensor registered"); + } - @Override - public void onPermissionLost() { - PassiveListenerCallback.super.onPermissionLost(); - mStepPassiveMonitoringClient = null; - Log.e(TAG, "Step counter permission lost"); - } + @Override + public void onPermissionLost() { + PassiveListenerCallback.super.onPermissionLost(); + mStepPassiveMonitoringClient = null; + Log.e(TAG, "Step counter permission lost"); + } - @Override - public void onRegistrationFailed(@NonNull Throwable throwable) { - PassiveListenerCallback.super.onRegistrationFailed(throwable); - mStepPassiveMonitoringClient = null; - Log.d(TAG, "Step counter sensor unregistered"); - } - } + @Override + public void onRegistrationFailed(@NonNull Throwable throwable) { + PassiveListenerCallback.super.onRegistrationFailed(throwable); + mStepPassiveMonitoringClient = null; + Log.d(TAG, "Step counter sensor unregistered"); + } + }; + } }
\ No newline at end of file diff --git a/app/src/main/java/com/clusterrr/hexeditorwatchface/SettingsActivity.java b/app/src/main/java/com/clusterrr/hexeditorwatchface/SettingsActivity.java index ad2ca98..05aa327 100644 --- a/app/src/main/java/com/clusterrr/hexeditorwatchface/SettingsActivity.java +++ b/app/src/main/java/com/clusterrr/hexeditorwatchface/SettingsActivity.java @@ -77,7 +77,7 @@ public class SettingsActivity extends AppCompatActivity { public static final int PREF_DEFAULT_BACKGROUND = PREF_VALUE_BACKGROUND_ZEROS; public static final int PREF_DEFAULT_BARS = PREF_VALUE_BARS_SHOW; //public static final int PREF_DEFAULT_VIGNETTING = PREF_VALUE_ENABLED; - public static final int PREF_DEFAULT_ANTI_BURN_IN = PREF_VALUE_DISABLED;; + public static final int PREF_DEFAULT_ANTI_BURN_IN = PREF_VALUE_DISABLED; private Setting[] mSettings; SettingsMenuAdapter mSettingsMenuAdapter; diff --git a/app/src/main/res/drawable-nodpi/bg.png b/app/src/main/res/drawable-nodpi/bg.png Binary files differdeleted file mode 100644 index e8f93d7..0000000 --- a/app/src/main/res/drawable-nodpi/bg.png +++ /dev/null diff --git a/app/src/main/res/drawable-nodpi/menu_background.png b/app/src/main/res/drawable-nodpi/menu_background.png Binary files differdeleted file mode 100644 index 4b4b97e..0000000 --- a/app/src/main/res/drawable-nodpi/menu_background.png +++ /dev/null diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 6cf9ed4..a082d2e 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -1,12 +1,4 @@ <resources> <!-- Reply Preference --> - <string-array name="reply_entries"> - <item>Reply</item> - <item>Reply to all</item> - </string-array> - <string-array name="reply_values"> - <item>reply</item> - <item>reply_all</item> - </string-array> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index eaffc85..a6b3dae 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,7 +1,2 @@ <?xml version="1.0" encoding="utf-8"?> -<resources> - <dimen name="header_start_padding">36dp</dimen> - <dimen name="header_end_padding">22dp</dimen> - <dimen name="list_start_padding">36dp</dimen> - <dimen name="list_end_padding">22dp</dimen> -</resources>
\ No newline at end of file +<resources></resources>
\ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 15afd4c..e3fbf25 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,10 +1,6 @@ <resources> <string name="app_name">Hex Editor</string> - <string name="title_activity_settings">SettingsActivity</string> - <string name="pref_today_step_start">today_step_start</string> - <string name="pref_today_step_last">today_step_last</string> - <string name="pref_steps_day">steps_day</string> <string name="pref_time_format">time_format</string> <string name="pref_time_system">time_system</string> <string name="pref_date">date</string> diff --git a/app/src/main/res/xml/watch_face_info.xml b/app/src/main/res/xml/watch_face_info.xml deleted file mode 100644 index d3d363c..0000000 --- a/app/src/main/res/xml/watch_face_info.xml +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<WatchFaceInfo xmlns:android="http://schemas.android.com/apk/res/android"> - <Preview android:value="@drawable/preview_notround" /> - <Editable android:value="true" /> -</WatchFaceInfo>
\ No newline at end of file |