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>2022-03-22 19:41:01 +0300
committerAlexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com>2022-03-22 19:41:01 +0300
commit49312400590200ef591a8e53123c3a5cca052f66 (patch)
tree070616bd7b80bc2283885e10457e2e52f83c9341
parent749fc6a5ceebb7f686334767595b33fc8f75df77 (diff)
Minor fixes and refactoring
-rw-r--r--app/build.gradle2
-rw-r--r--app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java158
2 files changed, 87 insertions, 73 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 923d451..baa5558 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,7 +9,7 @@ android {
applicationId "com.clusterrr.hexeditorwatchface"
minSdk 23
targetSdk 32
- versionCode 10
+ versionCode 14
versionName "1.4"
}
diff --git a/app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java b/app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java
index f95d251..362b0e0 100644
--- a/app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java
+++ b/app/src/main/java/com/clusterrr/hexeditorwatchface/HexWatchFace.java
@@ -38,7 +38,7 @@ import java.util.concurrent.TimeUnit;
public class HexWatchFace extends CanvasWatchFaceService {
public static String TAG = "hex_watchface";
private static final long INTERACTIVE_UPDATE_RATE = TimeUnit.SECONDS.toMillis(1);
- private static final long MAX_HEART_RATE_AGE = TimeUnit.SECONDS.toMillis(30);
+ private static final long MAX_HEART_RATE_AGE = TimeUnit.SECONDS.toMillis(10);
private static final long TOUCH_TIME = TimeUnit.SECONDS.toMillis(3);
private static final long ANTI_BURN_OUT_TIME = TimeUnit.SECONDS.toMillis(3);
private static final long ANTI_BURN_OUT_TIME_MIN_PERIOD = TimeUnit.SECONDS.toMillis(58);
@@ -134,6 +134,7 @@ public class HexWatchFace extends CanvasWatchFaceService {
@Override
public void onTimeTick() {
super.onTimeTick();
+ //Log.d(TAG, "Tick");
invalidate();
}
@@ -141,30 +142,19 @@ public class HexWatchFace extends CanvasWatchFaceService {
public void onAmbientModeChanged(boolean inAmbientMode) {
super.onAmbientModeChanged(inAmbientMode);
mAmbient = inAmbientMode;
+ Log.d(TAG, "mAmbient: " + mAmbient);
mTouchTS = 0;
+ updateSensors();
updateTimer();
}
- /**
- * Captures tap event (and tap type). The {@link WatchFaceService#TAP_TYPE_TAP} case can be
- * used for implementing specific logic to handle the gesture.
- */
@Override
public void onTapCommand(int tapType, int x, int y, long eventTime) {
- switch (tapType) {
- case TAP_TYPE_TOUCH:
- // The user has started touching the screen.
- //Log.d(TAG, "Touched");
- mTouchTS = System.currentTimeMillis();
- invalidate();
- break;
- case TAP_TYPE_TOUCH_CANCEL:
- // The user has started a different gesture or otherwise cancelled the tap.
- //Log.d(TAG, "Touch cancel");
- break;
- case TAP_TYPE_TAP:
- //Log.d(TAG, "Tap");
- break;
+ if (tapType == TAP_TYPE_TOUCH) {
+ // The user has started touching the screen.
+ Log.d(TAG, "Touched");
+ mTouchTS = System.currentTimeMillis();
+ invalidate();
}
}
@@ -183,44 +173,6 @@ public class HexWatchFace extends CanvasWatchFaceService {
if (mBackgroundMinY == 0) mBackgroundMinY = -canvas.getWidth() / 2 / NUMBER_V_INTERVAL - 1;
if (mBackgroundMaxY == 0) mBackgroundMaxY = canvas.getWidth() / 2 / NUMBER_V_INTERVAL + 2;
- if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.BODY_SENSORS) == PackageManager.PERMISSION_GRANTED) {
- // Enable heart rate sensor if need
- if (mHeartRateSensor == null) {
- mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
- mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
- }
- if ((mHeartRateTS + MAX_HEART_RATE_AGE < now) && (mHeartRate != 0)) {
- mHeartRate = 0;
- Log.d(TAG, "Heart rate is reset to 0");
- }
- }
-
- int todaySteps = 0;
- if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_GRANTED) {
- // Enable step sensor if need
- if (mStepCountSensor == null) {
- mStepCountSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
- mSensorManager.registerListener(this, mStepCountSensor, SensorManager.SENSOR_DELAY_NORMAL);
- }
-
- // It's a bit tricky because we can get steps since reboot only
- int todayStepStart = prefs.getInt(getString(R.string.pref_today_step_start), 0);
- if (mStepCounter >= 0 && (
- // Check if it's new day
- (mCalendar.get(Calendar.DAY_OF_MONTH) != prefs.getInt(getString(R.string.pref_steps_day), 0))
- || (mStepCounter < todayStepStart)) // or value reset
- ) {
- // Store new day values
- prefs.edit()
- .putInt(getString(R.string.pref_steps_day), mCalendar.get(Calendar.DAY_OF_MONTH))
- .putInt(getString(R.string.pref_today_step_start), mStepCounter)
- .apply();
- todayStepStart = mStepCounter;
- }
- // Calculate today steps
- todaySteps = Math.max(mStepCounter - todayStepStart, 0);
- }
-
// Read battery state
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryIntent = getApplicationContext().registerReceiver(null, filter);
@@ -229,13 +181,6 @@ public class HexWatchFace extends CanvasWatchFaceService {
// Check if screen was tapped recently
boolean tapped = mTouchTS + TOUCH_TIME >= now;
- // Endianness
- int endianness =
- (prefs.getInt(getString(R.string.pref_endianness), SettingsActivity.PREF_DEFAULT_ENDIANNESS)
- == SettingsActivity.PREF_VALUE_ENDIANNESS_LITTLE_ENDIAN)
- ? ENDIANNESS_LITTLE_ENDIAN
- : ENDIANNESS_BIG_ENDIAN;
-
// Calculate current hour - 12 or 24 format
int hour;
if (prefs.getInt(getString(R.string.pref_time_format), SettingsActivity.PREF_DEFAULT_TIME_FORMAT)
@@ -261,6 +206,13 @@ public class HexWatchFace extends CanvasWatchFaceService {
if (!mAmbient) {
// Interactive mode
+ // Endianness
+ int endianness =
+ (prefs.getInt(getString(R.string.pref_endianness), SettingsActivity.PREF_DEFAULT_ENDIANNESS)
+ == SettingsActivity.PREF_VALUE_ENDIANNESS_LITTLE_ENDIAN)
+ ? ENDIANNESS_LITTLE_ENDIAN
+ : ENDIANNESS_BIG_ENDIAN;
+
// Draw blue background
canvas.drawBitmap(mBackgroundBitmap,
canvas.getWidth() / 2 - mBackgroundBitmap.getWidth() / 2,
@@ -322,6 +274,7 @@ public class HexWatchFace extends CanvasWatchFaceService {
drawNumber(canvas, mCalendar.get(Calendar.YEAR), dateSystem, 1, HexNumbers.COLORS_CYAN, 1, -1);
}
+ // Draw day of the week
int dayOfTheWeekMode = prefs.getInt(getString(R.string.pref_day_week), SettingsActivity.PREF_DEFAULT_DAY_OF_THE_WEEK);
if (dayOfTheWeekMode != SettingsActivity.PREF_VALUE_HIDE) {
int dayOfTheWeek = mCalendar.get(Calendar.DAY_OF_WEEK) - 1;
@@ -329,7 +282,6 @@ public class HexWatchFace extends CanvasWatchFaceService {
drawNumber(canvas, dayOfTheWeek, ENDIANNESS_FAKE_HEX, 1, HexNumbers.COLORS_CYAN, 1, 1);
}
-
// Draw battery if enabled
int batterySystem = prefs.getInt(getString(R.string.pref_battery), SettingsActivity.PREF_DEFAULT_BATTERY);
if (batterySystem != SettingsActivity.PREF_VALUE_HIDE) {
@@ -364,6 +316,10 @@ public class HexWatchFace extends CanvasWatchFaceService {
// Draw heart rate if enabled
int heartRateSystem = prefs.getInt(getString(R.string.pref_heart_rate), SettingsActivity.PREF_DEFAULT_HEART_RATE);
if (heartRateSystem != SettingsActivity.PREF_VALUE_HIDE) {
+ if ((mHeartRateTS + MAX_HEART_RATE_AGE < now) && (mHeartRate != 0)) {
+ mHeartRate = 0;
+ Log.i(TAG, "Heart rate is reset to 0");
+ }
if (heartRateSystem == SettingsActivity.PREF_VALUE_COMMON_DEC_ON_TAP)
heartRateSystem = tapped
? SettingsActivity.PREF_VALUE_COMMON_DEC
@@ -391,10 +347,10 @@ public class HexWatchFace extends CanvasWatchFaceService {
switch (stepsSystem) {
default:
case SettingsActivity.PREF_VALUE_COMMON_DEC:
- drawNumber(canvas, todaySteps, ENDIANNESS_FAKE_HEX, 3, HexNumbers.COLORS_CYAN, -2, 1);
+ drawNumber(canvas, mStepCounter, ENDIANNESS_FAKE_HEX, 3, HexNumbers.COLORS_CYAN, -2, 1);
break;
case SettingsActivity.PREF_VALUE_COMMON_HEX:
- drawNumber(canvas, todaySteps, endianness, 2, HexNumbers.COLORS_CYAN, -1, 1);
+ drawNumber(canvas, mStepCounter, endianness, 2, HexNumbers.COLORS_CYAN, -1, 1);
break;
}
}
@@ -460,7 +416,6 @@ public class HexWatchFace extends CanvasWatchFaceService {
}
}
-
private void drawNumber(Canvas canvas, int number, int endianness, int size, int numberColor,
float left, float top)
{
@@ -490,8 +445,8 @@ public class HexWatchFace extends CanvasWatchFaceService {
float left, float top)
{
drawDigitAtPoint(canvas, number, numberColor,
- canvas.getWidth()/2 + (left - 1) * NUMBER_WIDTH,
- canvas.getHeight()/2 + top * NUMBER_V_INTERVAL - 24);
+ canvas.getWidth() / 2 + (left - 1) * NUMBER_WIDTH,
+ canvas.getHeight() / 2 + top * NUMBER_V_INTERVAL - 24);
}
private void drawDigitAtPoint(Canvas canvas, int number, int numberColor,
@@ -508,6 +463,7 @@ public class HexWatchFace extends CanvasWatchFaceService {
registerReceiver();
/* Update time zone in case it changed while we weren"t visible. */
mCalendar.setTimeZone(TimeZone.getDefault());
+ updateSensors();
invalidate();
} else {
unregisterReceiver();
@@ -565,6 +521,47 @@ public class HexWatchFace extends CanvasWatchFaceService {
}
}
+
+ private void updateSensors()
+ {
+ // 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) &&
+ (prefs.getInt(getString(R.string.pref_heart_rate), SettingsActivity.PREF_DEFAULT_HEART_RATE) != SettingsActivity.PREF_VALUE_HIDE)
+ /* && !mAmbient && isVisible() */) {
+ // Enable heart rate sensor if need
+ if (mHeartRateSensor == null) {
+ mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
+ mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
+ Log.i(TAG, "Heart rate sensor enabled");
+ }
+ } else if (mHeartRateSensor != null) {
+ mSensorManager.unregisterListener(this, mHeartRateSensor);
+ mHeartRateSensor = null;
+ mHeartRate = 0;
+ Log.i(TAG, "Heart rate sensor disabled");
+ }
+
+ if ((ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_GRANTED) &&
+ (prefs.getInt(getString(R.string.pref_steps), SettingsActivity.PREF_DEFAULT_STEPS) != SettingsActivity.PREF_VALUE_HIDE)
+ /* && !mAmbient && isVisible() */)
+ {
+ // Enable step sensor if need
+ if (mStepCountSensor == null) {
+ mStepCountSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
+ mSensorManager.registerListener(this, mStepCountSensor, SensorManager.SENSOR_DELAY_NORMAL);
+ Log.i(TAG, "Step sensor enabled");
+ }
+ } else if (mStepCountSensor != null)
+ {
+ // Disable step sensor
+ mSensorManager.unregisterListener(this, mStepCountSensor);
+ mStepCountSensor = null;
+ Log.i(TAG, "Step sensor Disabled");
+ }
+ }
+
@Override
public void onSensorChanged(SensorEvent event) {
//Log.d(TAG, "New sensor data: " + event.sensor.getType());
@@ -577,8 +574,25 @@ public class HexWatchFace extends CanvasWatchFaceService {
}
break;
case Sensor.TYPE_STEP_COUNTER:
- mStepCounter = (int)event.values[0];
- //Log.d(TAG, "Steps: " + mStepCounter);
+ SharedPreferences prefs = getApplicationContext().getSharedPreferences(getString(R.string.app_name), MODE_PRIVATE);
+ int steps = (int)event.values[0];
+ // It's a bit tricky because we can get steps since reboot only
+ int todayStepStart = prefs.getInt(getString(R.string.pref_today_step_start), 0);
+ if (steps >= 0 && (
+ // Check if it's new day
+ (mCalendar.get(Calendar.DAY_OF_MONTH) != prefs.getInt(getString(R.string.pref_steps_day), 0))
+ || (steps < todayStepStart)) // or value reset
+ ) {
+ // Store new day values
+ prefs.edit()
+ .putInt(getString(R.string.pref_steps_day), mCalendar.get(Calendar.DAY_OF_MONTH))
+ .putInt(getString(R.string.pref_today_step_start), steps)
+ .apply();
+ todayStepStart = steps;
+ }
+ // Calculate today steps
+ mStepCounter = Math.max(steps - todayStepStart, 0);
+ Log.d(TAG, "Steps: " + steps + ", today: " + mStepCounter);
break;
}
}