Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/wear-os-hex-editor-watchface.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2023-08-13 12:13:24 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2023-08-13 12:13:24 +0300
commit232a5af1d00d9f09dc716ffc649f319c4e39e434 (patch)
tree2b82504d3a129c3e9d2747ed0e2a8f040a66bc53
parent0f632f84971a4d749092741d96672b8b8336d034 (diff)
Refactoring
-rw-r--r--app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java161
-rw-r--r--app/src/main/java/com/clusterrr/hexeditorwatchface/SettingsActivity.java2
-rw-r--r--app/src/main/res/drawable-nodpi/bg.pngbin28432 -> 0 bytes
-rw-r--r--app/src/main/res/drawable-nodpi/menu_background.pngbin5369 -> 0 bytes
-rw-r--r--app/src/main/res/values/arrays.xml8
-rw-r--r--app/src/main/res/values/dimens.xml7
-rw-r--r--app/src/main/res/values/strings.xml4
-rw-r--r--app/src/main/res/xml/watch_face_info.xml5
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
deleted file mode 100644
index e8f93d7..0000000
--- a/app/src/main/res/drawable-nodpi/bg.png
+++ /dev/null
Binary files differ
diff --git a/app/src/main/res/drawable-nodpi/menu_background.png b/app/src/main/res/drawable-nodpi/menu_background.png
deleted file mode 100644
index 4b4b97e..0000000
--- a/app/src/main/res/drawable-nodpi/menu_background.png
+++ /dev/null
Binary files differ
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