From b4b927ba84a29f042c5d62bb146ebd261b56fa8e Mon Sep 17 00:00:00 2001 From: MacPara Date: Thu, 3 May 2018 12:13:28 -0700 Subject: [PATCH 01/11] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0d8889ba..f4b0a7f0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ # WheelLogAndroid -One more try to make it working with Inmotion V8 +Updated Gradle configuration to compile with Gradle 4.4, still a few deprecated statements in there -Added support for Samsung Gear Tizen based watches +Fixed the Gotway 84V indication issue, the preference change was not processed + +Moved the MCM ratio fix for newer MCMs from MainActivity to preference-change processing + +Inmotion V8 comms might still be broken, I have no wheel to try it Pebble app code From adec02c1ea0a947e9b3546f598f2363595569e58 Mon Sep 17 00:00:00 2001 From: Torsten Leibold Date: Thu, 3 May 2018 12:45:26 -0700 Subject: [PATCH 02/11] Fixed Gotway 84V issue moved MCM useRatio processing from MainActivity to Preferences OnChange processing Updated Gradle configuration to compile with Gradle 4.4, still a few deprecated statements in there Inmotion V8 comms might still be broken, I have no wheel to try it --- app/build.gradle | 10 +-- .../com/cooper/wheellog/MainActivity.java | 2 - .../cooper/wheellog/PreferencesFragment.java | 8 +++ app/src/main/res/xml/preferences_gotway.xml | 8 +-- build.gradle | 3 +- gradlew | 72 +++++++++++-------- gradlew.bat | 14 ++-- 7 files changed, 66 insertions(+), 51 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fe30395d..bae65eb8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 25 - buildToolsVersion "25.0.0" + //buildToolsVersion "25.0.0" lintOptions { abortOnError false @@ -10,10 +10,11 @@ android { defaultConfig { applicationId "com.cooper.wheellog" + vectorDrawables.useSupportLibrary = true minSdkVersion 18 targetSdkVersion 25 versionCode 34 - versionName "2.0.5" + versionName "2.0.6" } buildTypes { release { @@ -23,7 +24,7 @@ android { } } -apply plugin: 'android-apt' +//apply plugin: 'android-apt' dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) @@ -36,5 +37,6 @@ dependencies { compile 'com.pavelsikun:material-seekbar-preference:2.3.0+' compile 'com.github.PhilJay:MPAndroidChart:v3.0.0' compile "com.github.hotchemi:permissionsdispatcher:2.2.0" - apt "com.github.hotchemi:permissionsdispatcher-processor:2.2.0" + annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.2.0' + //apt "com.github.hotchemi:permissionsdispatcher-processor:2.2.0" } diff --git a/app/src/main/java/com/cooper/wheellog/MainActivity.java b/app/src/main/java/com/cooper/wheellog/MainActivity.java index ca60c21a..0fea74e5 100644 --- a/app/src/main/java/com/cooper/wheellog/MainActivity.java +++ b/app/src/main/java/com/cooper/wheellog/MainActivity.java @@ -902,8 +902,6 @@ private void loadPreferences() { wheelView.invalidate(); boolean alarms_enabled = sharedPreferences.getBoolean(getString(R.string.alarms_enabled), false); - boolean use_ratio = sharedPreferences.getBoolean(getString(R.string.use_ratio), false); - WheelData.getInstance().setUseRatio(use_ratio); WheelData.getInstance().setAlarmsEnabled(alarms_enabled); if (alarms_enabled) { diff --git a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java index 2ef5f76c..da2ab630 100644 --- a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java +++ b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java @@ -171,6 +171,14 @@ public void onClick(DialogInterface dialog, int which) { int led_mode = Integer.parseInt(sharedPreferences.getString(getString(R.string.led_mode), "0")); WheelData.getInstance().updateLedMode(led_mode); break; + case "use_ratio": + boolean use_ratio = sharedPreferences.getBoolean(getString(R.string.use_ratio), false); + WheelData.getInstance().setUseRatio(use_ratio); + break; + case "gotway_84v": + boolean g84v_enabled = sharedPreferences.getBoolean(getString(R.string.gotway_84v), false); + WheelData.getInstance().setGotway84V(g84v_enabled); + break; // case "reset_user_trip": // WheelData.getInstance().resetUserDistance(); // break; diff --git a/app/src/main/res/xml/preferences_gotway.xml b/app/src/main/res/xml/preferences_gotway.xml index fa27614f..95a4365a 100644 --- a/app/src/main/res/xml/preferences_gotway.xml +++ b/app/src/main/res/xml/preferences_gotway.xml @@ -51,12 +51,12 @@ + android:title="My Wheel is a Gotway MCM " + android:summary="If your wheel is Gotway MCM, and it shows wrong speed, distance and others parameters, it should make them normal" /> + android:title="My Wheel is a Gotway with 84V battery" + android:summary="If your wheel is Gotway with 20S (84V) battery" /> \ No newline at end of file diff --git a/build.gradle b/build.gradle index a5183e8e..8f591075 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,10 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.1.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong diff --git a/gradlew b/gradlew index 9d82f789..cccdd3d5 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,20 +6,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,26 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -85,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -150,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282a..f9553162 100755 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line From 806453462b77a2ed2e3c1c8d77326d4d3525f825 Mon Sep 17 00:00:00 2001 From: Torsten Leibold Date: Thu, 3 May 2018 13:03:56 -0700 Subject: [PATCH 03/11] fixed descriptions for correct grammar --- app/src/main/res/xml/preferences_gotway.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/xml/preferences_gotway.xml b/app/src/main/res/xml/preferences_gotway.xml index 95a4365a..5f35a0b2 100644 --- a/app/src/main/res/xml/preferences_gotway.xml +++ b/app/src/main/res/xml/preferences_gotway.xml @@ -52,11 +52,11 @@ + android:summary="If your wheel is a Gotway MCM, and it shows wrong speed, distance and others parameters, it should make them normal" /> + android:summary="If your wheel is a Gotway with 20S (84V) battery" /> \ No newline at end of file From 6149cb5a38c21b348e0be14a86b41cdb744d8b5f Mon Sep 17 00:00:00 2001 From: Torsten Leibold Date: Mon, 14 May 2018 07:43:24 -0700 Subject: [PATCH 04/11] V2.0.6a: 84v preference on start-up bug fixed, native wheel beep feature upon pressing volume keys when in focus or via Pebble watch Select button. --- README.md | 10 +++++++- app/build.gradle | 2 +- .../cooper/wheellog/BluetoothLeService.java | 5 ++++ .../com/cooper/wheellog/MainActivity.java | 25 ++++++++++++++++++- .../cooper/wheellog/PreferencesFragment.java | 15 +++++++++-- .../java/com/cooper/wheellog/WheelData.java | 23 +++++++++++++++++ app/src/main/res/values/arrays.xml | 2 +- app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/preferences.xml | 4 +++ 9 files changed, 81 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f4b0a7f0..7d513492 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# WheelLogAndroid +# WheelLogAndroid V2.0.6 Updated Gradle configuration to compile with Gradle 4.4, still a few deprecated statements in there @@ -8,6 +8,14 @@ Moved the MCM ratio fix for newer MCMs from MainActivity to preference-change pr Inmotion V8 comms might still be broken, I have no wheel to try it +Revision (A): + Bug fixed: + - The 84V flag was not honored upon Wheellog restart + + New features: + - When the app is in focus, pressing the volume up or down keys will trigger the native wheel beep (KingSong and Gotway) + - Pressing the Select button on a connected Pebble watch will trigger the native wheel beep (KingSong and Gotway), if enabled in preferences + This feature might work with a Tizen watch as well, please provide feedback as I don't have access to one Pebble app code diff --git a/app/build.gradle b/app/build.gradle index bae65eb8..bdfda64d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,7 +14,7 @@ android { minSdkVersion 18 targetSdkVersion 25 versionCode 34 - versionName "2.0.6" + versionName "2.0.6a" } buildTypes { release { diff --git a/app/src/main/java/com/cooper/wheellog/BluetoothLeService.java b/app/src/main/java/com/cooper/wheellog/BluetoothLeService.java index 9e84078e..d7e1c101 100644 --- a/app/src/main/java/com/cooper/wheellog/BluetoothLeService.java +++ b/app/src/main/java/com/cooper/wheellog/BluetoothLeService.java @@ -100,6 +100,10 @@ public void onReceive(Context context, Intent intent) { } break; case Constants.ACTION_REQUEST_KINGSONG_HORN: + WheelData.getInstance().makeWheelBeep(); + /* this is type-specific wheel beep code that has been moved to WheelData::makeWheelBeep(). + type-specific code has been implemented there. + if (WheelData.getInstance().getWheelType() == WHEEL_TYPE.KINGSONG) { byte[] data = new byte[20]; data[0] = (byte) -86; @@ -110,6 +114,7 @@ public void onReceive(Context context, Intent intent) { data[19] = (byte) 90; writeBluetoothGattCharacteristic(data); } + */ break; case Constants.ACTION_REQUEST_CONNECTION_TOGGLE: if (mConnectionState == STATE_DISCONNECTED) diff --git a/app/src/main/java/com/cooper/wheellog/MainActivity.java b/app/src/main/java/com/cooper/wheellog/MainActivity.java index 0fea74e5..91ac5054 100644 --- a/app/src/main/java/com/cooper/wheellog/MainActivity.java +++ b/app/src/main/java/com/cooper/wheellog/MainActivity.java @@ -3,6 +3,8 @@ import android.Manifest; import android.app.Fragment; import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothGattCharacteristic; +import android.bluetooth.BluetoothGattService; import android.bluetooth.BluetoothManager; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -59,12 +61,14 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Locale; +import java.util.UUID; import permissions.dispatcher.NeedsPermission; import permissions.dispatcher.OnPermissionDenied; import permissions.dispatcher.RuntimePermissions; import timber.log.Timber; +import static com.cooper.wheellog.utils.Constants.ACTION_REQUEST_KINGSONG_HORN; import static com.cooper.wheellog.utils.MathsUtil.kmToMiles; @@ -880,10 +884,26 @@ public void run() { } return true; default: - return super.onKeyDown(keyCode, event); + return super.onKeyDown(keyCode, event); // should this not be super.OnKeyUp() instead? *MacPara 20180504 } } + + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) || + (keyCode == KeyEvent.KEYCODE_VOLUME_UP)) + { + // Add code to sound the alarm here... + WheelData.getInstance().makeWheelBeep(); + return true; + } + else + return super.onKeyDown(keyCode, event); + + } + + ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener(){ @Override public void onPageSelected(int position) { @@ -899,6 +919,9 @@ private void loadPreferences() { int max_speed = sharedPreferences.getInt(getString(R.string.max_speed), 30) * 10; wheelView.setMaxSpeed(max_speed); wheelView.setUseMPH(use_mph); + WheelData.getInstance().setUseRatio(sharedPreferences.getBoolean(getString(R.string.use_ratio), false)); + WheelData.getInstance().setGotway84V(sharedPreferences.getBoolean(getString(R.string.gotway_84v), false)); + wheelView.invalidate(); boolean alarms_enabled = sharedPreferences.getBoolean(getString(R.string.alarms_enabled), false); diff --git a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java index da2ab630..f095d396 100644 --- a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java +++ b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java @@ -3,6 +3,8 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.Preference; @@ -16,8 +18,6 @@ import com.cooper.wheellog.utils.SettingsUtil; import com.pavelsikun.seekbarpreference.SeekBarPreference; -import timber.log.Timber; - public class PreferencesFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { enum SettingsScreen { @@ -39,8 +39,19 @@ enum SettingsScreen { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); + /* + Preference pref = findPreference( "@string/VersionTag" ); + try { + PackageInfo pInfo = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0); + String version = pInfo.versionName; + pref.setTitle("V"+version); + } + catch (PackageManager.NameNotFoundException e) + { ; } + */ } @Override diff --git a/app/src/main/java/com/cooper/wheellog/WheelData.java b/app/src/main/java/com/cooper/wheellog/WheelData.java index 4629e4d4..f673fd69 100644 --- a/app/src/main/java/com/cooper/wheellog/WheelData.java +++ b/app/src/main/java/com/cooper/wheellog/WheelData.java @@ -675,6 +675,29 @@ else if (mAlarm3Speed > 0 && mAlarm3Battery > 0 && } + public void makeWheelBeep() + { + switch (mWheelType) + { + case GOTWAY: + mBluetoothLeService.writeBluetoothGattCharacteristic("b".getBytes()); + break; + case INMOTION: break; + case KINGSONG: + byte[] data = new byte[20]; + data[0] = (byte) 0xaa; + data[1] = (byte)0x55; + data[16] = (byte) 0x88; + data[17] = 0x14; + data[18] = 0x5a; + data[19] = 0x5a; + mBluetoothLeService.writeBluetoothGattCharacteristic(data); + break; + case NINEBOT: break; + default: + } + } + private void raiseAlarm(ALARM_TYPE alarmType, Context mContext) { Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); long[] pattern = {0}; diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 9fa7e08d..113958e7 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -7,7 +7,7 @@ Disabled - On-board (KingSong) + Built-In (KS/GW) via bluetooth audio diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e9823961..8257f324 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -87,6 +87,7 @@ watch_preferences wheel_settings trip_settings + VersionTag // ALARM PREFERENCES diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 436a669e..66041bf7 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -37,5 +37,9 @@ android:key="@string/reset_user_distance" android:enabled="true" android:title="Reset user distance" /> + \ No newline at end of file From 7ee6b65ebfc8d10d9fbb3d15488ba049a210c2d0 Mon Sep 17 00:00:00 2001 From: Torsten Leibold Date: Mon, 14 May 2018 08:32:21 -0700 Subject: [PATCH 05/11] merging palachzzz' changes to 2.0.7 --- app/build.gradle | 22 +++++++++---------- .../com/cooper/wheellog/MainActivity.java | 4 ++-- .../cooper/wheellog/PreferencesFragment.java | 15 ++++++++----- app/src/main/res/values/strings.xml | 4 ++-- app/src/main/res/xml/preferences.xml | 2 +- 5 files changed, 25 insertions(+), 22 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index bdfda64d..66609fff 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,7 +14,7 @@ android { minSdkVersion 18 targetSdkVersion 25 versionCode 34 - versionName "2.0.6a" + versionName "2.0.8a" } buildTypes { release { @@ -27,16 +27,16 @@ android { //apply plugin: 'android-apt' dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:design:25.1.0' - compile 'com.android.support:gridlayout-v7:25.1.0' - compile 'com.google.android.gms:play-services-drive:10.0.1' - compile 'com.getpebble:pebblekit:3.1.0' - compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1' - compile 'com.jakewharton.timber:timber:4.3.1' - compile 'com.pavelsikun:material-seekbar-preference:2.3.0+' - compile 'com.github.PhilJay:MPAndroidChart:v3.0.0' - compile "com.github.hotchemi:permissionsdispatcher:2.2.0" + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.android.support:design:25.1.0' + implementation 'com.android.support:gridlayout-v7:25.1.0' + implementation 'com.google.android.gms:play-services-drive:10.0.1' + implementation 'com.getpebble:pebblekit:3.1.0' + implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1' + implementation 'com.jakewharton.timber:timber:4.3.1' + implementation 'com.pavelsikun:material-seekbar-preference:2.3.0+' + implementation 'com.github.PhilJay:MPAndroidChart:v3.0.0' + implementation "com.github.hotchemi:permissionsdispatcher:2.2.0" annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.2.0' //apt "com.github.hotchemi:permissionsdispatcher-processor:2.2.0" } diff --git a/app/src/main/java/com/cooper/wheellog/MainActivity.java b/app/src/main/java/com/cooper/wheellog/MainActivity.java index 91ac5054..6b989482 100644 --- a/app/src/main/java/com/cooper/wheellog/MainActivity.java +++ b/app/src/main/java/com/cooper/wheellog/MainActivity.java @@ -403,8 +403,8 @@ private void configureDisplay(WHEEL_TYPE wheelType) { tvCurrent.setVisibility(View.VISIBLE); tvTitlePower.setVisibility(View.VISIBLE); tvPower.setVisibility(View.VISIBLE); - tvTitleTemperature2.setVisibility(View.VISIBLE); - tvTemperature2.setVisibility(View.VISIBLE); + tvTitleTemperature.setVisibility(View.VISIBLE); + tvTemperature.setVisibility(View.VISIBLE); tvTitleTotalDistance.setVisibility(View.VISIBLE); tvTotalDistance.setVisibility(View.VISIBLE); break; diff --git a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java index f095d396..d84eabbc 100644 --- a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java +++ b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java @@ -42,16 +42,19 @@ public void onCreate(Bundle savedInstanceState) { // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); - /* - Preference pref = findPreference( "@string/VersionTag" ); + + Preference pref = getPreferenceManager().findPreference("@string/VersionTag"); + if (pref == null) return; + try { PackageInfo pInfo = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0); - String version = pInfo.versionName; - pref.setTitle("V"+version); + String version = "pInfo"; + if (pInfo != null) version = "V" + pInfo.versionName; + pref.setTitle(version); } - catch (PackageManager.NameNotFoundException e) +// catch (PackageManager.NameNotFoundException e) + catch (Exception e) { ; } - */ } @Override diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8257f324..b2c72f65 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,8 +49,8 @@ Voltage Current Power - Battery temp - System temp + System temp + CPU(?) temp Tilt Roll Fan Status diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 66041bf7..5aafeaf5 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -40,6 +40,6 @@ + android:title="V2.0.7" /> \ No newline at end of file From 6010b31830bf38da95c56621f1ce86d39113bdb4 Mon Sep 17 00:00:00 2001 From: Torsten Leibold Date: Mon, 14 May 2018 08:41:38 -0700 Subject: [PATCH 06/11] Inmotion V10 support --- .../java/com/cooper/wheellog/utils/InMotionAdapter.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/cooper/wheellog/utils/InMotionAdapter.java b/app/src/main/java/com/cooper/wheellog/utils/InMotionAdapter.java index 322e16a8..4e3a2a91 100644 --- a/app/src/main/java/com/cooper/wheellog/utils/InMotionAdapter.java +++ b/app/src/main/java/com/cooper/wheellog/utils/InMotionAdapter.java @@ -70,6 +70,7 @@ public enum Model { V5F("52", 3812.0d), V5FPLUS("53", 3812.0d), V8("80", 3812.0d), + V10("A0", 3812.0d), UNKNOWN("x", 3812.0d); private String value; @@ -313,7 +314,7 @@ static double batteryFromVoltage(double volts, Model model) { } else { batt = 0.0; } - } else if (model.belongToInputType( "5") || model == Model.V8) { + } else if (model.belongToInputType( "5") || model == Model.V8 || model == Model.V10) { if (volts > 82.50) { batt = 1.0; } else if (volts > 68.0) { @@ -587,6 +588,7 @@ public String getModelString() { case "52": return "Inmotion V5F"; case "53": return "Inmotion V5FPLUS"; case "80": return "Inmotion V8"; + case "A0": return "Inmotion V10"; default: return "Unknown"; } } @@ -1039,7 +1041,7 @@ Status parseFastInfoMessage(Model model) { if (model.belongToInputType( "1") || model.belongToInputType( "5") - || model == V8) { + || model == V8 || model == V10) { distance = (double) (this.longFromBytes(ex_data, 44)) / 1000.0d; } else if (model == R0) { distance = (double) (this.longFromBytes(ex_data, 44)) / 1000.0d; From bf1cfa8629a4f838e0c460eeb97478f36303a3eb Mon Sep 17 00:00:00 2001 From: Torsten Leibold Date: Mon, 14 May 2018 10:39:04 -0700 Subject: [PATCH 07/11] V2.0.9 merged 2.0.8 changes from palachzzz in with my Pebble watch beep support --- README.md | 21 +++--- app/build.gradle | 2 +- .../cooper/wheellog/PreferencesFragment.java | 69 ++++++++++++++++++- app/src/main/res/values/strings.xml | 2 +- app/src/main/res/xml/preferences.xml | 6 +- 5 files changed, 81 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 7d513492..ee024a10 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,16 @@ -# WheelLogAndroid V2.0.6 +# WheelLogAndroid V2.0.9 -Updated Gradle configuration to compile with Gradle 4.4, still a few deprecated statements in there +Updated Gradle configuration to compile with Gradle 4.4 -Fixed the Gotway 84V indication issue, the preference change was not processed +Inmotion V10 support -Moved the MCM ratio fix for newer MCMs from MainActivity to preference-change processing +Manual BLE MAC address edit -Inmotion V8 comms might still be broken, I have no wheel to try it +When the app is in focus, pressing the volume up or down keys will trigger the native wheel beep (KingSong and Gotway) + +Pressing the Select button on a connected Pebble watch will trigger the native wheel beep (KingSong and Gotway), if enabled in preferences +This feature might work with a Tizen watch as well, please provide feedback as I don't have access to one -Revision (A): - Bug fixed: - - The 84V flag was not honored upon Wheellog restart - - New features: - - When the app is in focus, pressing the volume up or down keys will trigger the native wheel beep (KingSong and Gotway) - - Pressing the Select button on a connected Pebble watch will trigger the native wheel beep (KingSong and Gotway), if enabled in preferences - This feature might work with a Tizen watch as well, please provide feedback as I don't have access to one Pebble app code diff --git a/app/build.gradle b/app/build.gradle index 66609fff..cbfd0bf4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,7 +14,7 @@ android { minSdkVersion 18 targetSdkVersion 25 versionCode 34 - versionName "2.0.8a" + versionName "2.0.9" } buildTypes { release { diff --git a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java index d84eabbc..1aa9aefb 100644 --- a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java +++ b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java @@ -12,6 +12,9 @@ import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.view.View; +import android.widget.*; +import android.text.InputType; +import android.text.TextUtils; import com.cooper.wheellog.utils.Constants; import com.cooper.wheellog.utils.Constants.WHEEL_TYPE; @@ -43,7 +46,7 @@ public void onCreate(Bundle savedInstanceState) { // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); - Preference pref = getPreferenceManager().findPreference("@string/VersionTag"); + Preference pref = getPreferenceScreen().findPreference(getString(R.string.VersionTag)); if (pref == null) return; try { @@ -52,7 +55,6 @@ public void onCreate(Bundle savedInstanceState) { if (pInfo != null) version = "V" + pInfo.versionName; pref.setTitle(version); } -// catch (PackageManager.NameNotFoundException e) catch (Exception e) { ; } } @@ -230,6 +232,7 @@ public void onClick(View view) { Preference wheel_button = findPreference(getString(R.string.wheel_settings)); Preference reset_top_button = findPreference(getString(R.string.reset_top_speed)); Preference reset_user_distance_button = findPreference(getString(R.string.reset_user_distance)); + Preference last_mac_button = findPreference(getString(R.string.last_mac)); //getActivity().sendBroadcast(new Intent(Constants.ACTION_WHEEL_SETTING).putExtra(Constants.INTENT_EXTRA_WHEEL_UPDATE_SCALE, 1)); @@ -328,7 +331,67 @@ public boolean onPreferenceClick(Preference preference) { } }); } - + if (last_mac_button != null) { + last_mac_button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle("MAC Edit"); + + final EditText input = new EditText(getActivity()); + input.setInputType(InputType.TYPE_CLASS_TEXT); + input.setText(SettingsUtil.getLastAddress(getActivity())); + builder.setView(input); + builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + final String deviceAddress = input.getText().toString(); + SettingsUtil.setLastAddress(getActivity(), deviceAddress); + AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity()); + builder1.setTitle("Wheel Password ( InMotion only )"); + + final EditText input1 = new EditText(getActivity()); + input1.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + builder1.setView(input1); + builder1.setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String password = input1.getText().toString(); + //System.out.println("Set password "); + //System.out.println(password); + SettingsUtil.setPasswordForWheel(getActivity(), deviceAddress, password); + password = SettingsUtil.getPasswordForWheel(getActivity(),deviceAddress); + //System.out.println("Set password "); + //System.out.println(password); + //finish(); + } + }); + builder1.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + //finish(); + } + }); + builder1.show(); + + //SettingsUtil.setPasswordForWheel(getActivity(), deviceAddress, "000000"); + //finish(); + } + }); + builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.cancel(); + //finish(); + } + }); + builder.show(); + + return true; + } + }); + } break; case Speed: tb.setTitle("Speed Settings"); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b2c72f65..37ffa80d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -136,5 +136,5 @@ // TRIP PREFERENCES reset_top_speed reset_user_distance - + last_mac diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 5aafeaf5..8af4e200 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -37,9 +37,13 @@ android:key="@string/reset_user_distance" android:enabled="true" android:title="Reset user distance" /> + + android:title="Vx.y.zr" /> \ No newline at end of file From 93166b00f8c4743505d12a0c1cdf8fded21ba8a0 Mon Sep 17 00:00:00 2001 From: Torsten Leibold <> Date: Tue, 15 May 2018 20:16:35 -0700 Subject: [PATCH 08/11] missing Version update in preferences fixed --- .../java/com/cooper/wheellog/PreferencesFragment.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java index 1aa9aefb..badb355b 100644 --- a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java +++ b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java @@ -45,7 +45,12 @@ public void onCreate(Bundle savedInstanceState) { // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); + updateVersionTag(); + } + + private void updateVersionTag() + { Preference pref = getPreferenceScreen().findPreference(getString(R.string.VersionTag)); if (pref == null) return; @@ -56,7 +61,7 @@ public void onCreate(Bundle savedInstanceState) { pref.setTitle(version); } catch (Exception e) - { ; } + { ; } } @Override @@ -520,6 +525,7 @@ public boolean show_main_menu() { getPreferenceScreen().removeAll(); addPreferencesFromResource(R.xml.preferences); + updateVersionTag(); //System.out.println("ShowMainMenuRecognized"); Preference wheel_button = findPreference(getString(R.string.wheel_settings)); mWheelType = WheelData.getInstance().getWheelType(); From ad5f162725306b055196bc27635cdac042a4584a Mon Sep 17 00:00:00 2001 From: Torsten Leibold Date: Thu, 21 Mar 2019 14:50:19 -0700 Subject: [PATCH 09/11] added a 84V option for KS wheels --- app/build.gradle | 33 ++++++++------ .../cooper/wheellog/PreferencesFragment.java | 31 ++++++++++++- .../java/com/cooper/wheellog/WheelData.java | 44 +++++++++++++++---- app/src/main/res/xml/preferences_kingsong.xml | 42 ++++++++++++++++-- build.gradle | 3 +- 5 files changed, 125 insertions(+), 28 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index cbfd0bf4..2cc3d47f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,20 +1,18 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 - //buildToolsVersion "25.0.0" - + compileSdkVersion 24 + //buildToolsVersion '27.0.3' lintOptions { abortOnError false } - defaultConfig { applicationId "com.cooper.wheellog" vectorDrawables.useSupportLibrary = true - minSdkVersion 18 - targetSdkVersion 25 + minSdkVersion 24 + targetSdkVersion 24 versionCode 34 - versionName "2.0.9" + versionName '2.0.10' } buildTypes { release { @@ -22,21 +20,30 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + productFlavors { + } } //apply plugin: 'android-apt' dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:design:25.1.0' - implementation 'com.android.support:gridlayout-v7:25.1.0' - implementation 'com.google.android.gms:play-services-drive:10.0.1' + // implementation 'com.android.support:appcompat-v7:24.2.1' + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.android.support:animated-vector-drawable:24.2.1' + implementation 'com.android.support:support-compat:24.2.1' + implementation 'com.android.support:design:24.2.1' + implementation 'com.android.support:preference-v7:24.2.1' + implementation 'com.android.support:gridlayout-v7:24.2.1' + //implementation 'com.google.android.gms:play-services-base:15.0.1' + //implementation 'com.google.android.gms:play-services-identity:15.0.1' + //implementation 'com.google.android.gms:play-services-auth:16.0.0' + implementation 'com.google.android.gms:play-services-drive:10.2.0' implementation 'com.getpebble:pebblekit:3.1.0' implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1' implementation 'com.jakewharton.timber:timber:4.3.1' - implementation 'com.pavelsikun:material-seekbar-preference:2.3.0+' + implementation 'com.pavelsikun:material-seekbar-preference:2.3.0' implementation 'com.github.PhilJay:MPAndroidChart:v3.0.0' - implementation "com.github.hotchemi:permissionsdispatcher:2.2.0" + implementation 'com.github.hotchemi:permissionsdispatcher:2.2.0' annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.2.0' //apt "com.github.hotchemi:permissionsdispatcher-processor:2.2.0" } diff --git a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java index badb355b..7b5a182d 100644 --- a/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java +++ b/app/src/main/java/com/cooper/wheellog/PreferencesFragment.java @@ -131,10 +131,37 @@ public void onClick(DialogInterface dialog, int which) { boolean handle_button_disabled = sharedPreferences.getBoolean(getString(R.string.handle_button_disabled), false); WheelData.getInstance().updateHandleButton(handle_button_disabled); break; + case "ks_speed_alarm_1": + case "ks_speed_alarm_2": + case "ks_speed_alarm_3": case "wheel_max_speed": + final int max_speed = sharedPreferences.getInt(getString(R.string.wheel_max_speed), 0); + final int spd_alarm_1 = sharedPreferences.getInt("ks_speed_alarm)1", 0); + final int spd_alarm_2 = sharedPreferences.getInt("ks_speed_alarm)2", 0); + final int spd_alarm_3 = sharedPreferences.getInt("ks_speed_alarm)3", 0); + new AlertDialog.Builder(getActivity()) + .setTitle("Wheel Speed Alarm Change") + .setMessage("Do you want to write these alarms to your Kingsong wheel?\n 1/ 2/ 3/ tiltback\n"+ + String.format("%2d/%2d/%2d/%2d km/h", spd_alarm_1, spd_alarm_2, spd_alarm_3, max_speed)) + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + WheelData.getInstance().updateMaxSpeed(max_speed, spd_alarm_1, spd_alarm_2, spd_alarm_3); + } + }) + .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + // no action needed as changes to alarms should accumulative but we might need to add wanring message and reset of tiltback if answer is negative + //mSpeedWarningDisplayed = true; + //correctWheelBarState(getString(R.string.wheel_max_speed), WheelData.getInstance().getWheelMaxSpeed()); + + } + }) + .setIcon(android.R.drawable.ic_dialog_alert) + .show(); + //if (!mSpeedWarningDisplayed) { - final int max_speed = sharedPreferences.getInt(getString(R.string.wheel_max_speed), 0); - WheelData.getInstance().updateMaxSpeed(max_speed); + //final int max_speed = sharedPreferences.getInt(getString(R.string.wheel_max_speed), 0); + //WheelData.getInstance().updateMaxSpeed(max_speed); // if (max_speed > 30) { // new AlertDialog.Builder(getActivity()) // .setTitle("Are you sure?") diff --git a/app/src/main/java/com/cooper/wheellog/WheelData.java b/app/src/main/java/com/cooper/wheellog/WheelData.java index f673fd69..0f16bc65 100644 --- a/app/src/main/java/com/cooper/wheellog/WheelData.java +++ b/app/src/main/java/com/cooper/wheellog/WheelData.java @@ -78,7 +78,10 @@ public class WheelData { private boolean mWheelLedEnabled = false; private boolean mWheelButtonDisabled = false; private int mWheelMaxSpeed = 25; - private int mWheelSpeakerVolume = 50; + private int nWheelSpeedAlarm1 = 0; + private int nWheelSpeedAlarm2 = 0; + private int nWheelSpeedAlarm3 = 0; + private int mWheelSpeakerVolume = 50; private int mWheelTiltHorizon = 0; private boolean mAlarmsEnabled = false; @@ -310,7 +313,11 @@ public void updateHandleButton(boolean enabledButton) { } } - public void updateMaxSpeed(int wheelMaxSpeed) { + public void updateMaxSpeed(int wheelMaxSpeed) { + this.updateMaxSpeed(wheelMaxSpeed, 0, 0, wheelMaxSpeed - 1); + } + + public void updateMaxSpeed(int wheelMaxSpeed, int spd_alarm_1, int spd_alarm_2, int spd_alarm_3) { if (mWheelType == WHEEL_TYPE.INMOTION) { if (mWheelMaxSpeed != wheelMaxSpeed) { mWheelMaxSpeed = wheelMaxSpeed; @@ -345,8 +352,17 @@ public void updateMaxSpeed(int wheelMaxSpeed) { byte[] data = new byte[20]; data[0] = (byte) 0xAA; data[1] = (byte) 0x55; - data[6] = (byte) 0x1F; - data[8] = (byte) wheelMaxSpeed; + data[2] = (byte)spd_alarm_1; + data[3] = 0; + + data[4] = (byte)spd_alarm_2; + data[5] = 0; + data[6] = (byte)spd_alarm_3; + data[7] = 0; + data[8] = (byte)wheelMaxSpeed; + data[9] = 0; + //data[6] = (byte) 0x1F; // hardcoded to 31 km/h, yuck! + //data[8] = (byte) wheelMaxSpeed; data[16] = (byte) 0x85; data[17] = (byte) 0x14; data[18] = (byte) 0x5A; @@ -785,10 +801,10 @@ private boolean decodeKingSong(byte[] data) { if (data.length >= 20) { int a1 = data[0] & 255; int a2 = data[1] & 255; - if (a1 != 170 || a2 != 85) { + if (a1 != 170 || a2 != 85) { // needs to be 0xAA and 0x55 ! return false; } - if ((data[16] & 255) == 169) { // Live data + if ((data[16] & 255) == 169) { // Live data 0xA9 mVoltage = byteArrayInt2(data[2], data[3]); mSpeed = byteArrayInt2(data[4], data[5]); mTotalDistance = byteArrayInt4(data[6], data[7], data[8], data[9]); @@ -812,7 +828,7 @@ private boolean decodeKingSong(byte[] data) { setBatteryPercent(battery); return true; - } else if ((data[16] & 255) == 185) { // Distance/Time/Fan Data + } else if ((data[16] & 255) == 185) { // Distance/Time/Fan Data 0xB9 long distance = byteArrayInt4(data[2], data[3], data[4], data[5]); setDistance(distance); //int currentTime = byteArrayInt2(data[6], data[7]); @@ -820,7 +836,7 @@ private boolean decodeKingSong(byte[] data) { setCurrentTime(currentTime); setTopSpeed(byteArrayInt2(data[8], data[9])); mFanStatus = data[12]; - } else if ((data[16] & 255) == 187) { // Name and Type data + } else if ((data[16] & 255) == 187) { // Name and Type data 0xBB int end = 0; int i = 0; while (i < 14 && data[i + 2] != 0) { @@ -841,12 +857,19 @@ private boolean decodeKingSong(byte[] data) { } catch (Exception ignored) { } - } else if ((data[16] & 255) == 179) { // Serial Number + } else if ((data[16] & 255) == 179) { // Serial Number 0xB3 byte[] sndata = new byte[18]; System.arraycopy(data, 2, sndata, 0, 14); System.arraycopy(data, 17, sndata, 14, 3); sndata[17] = (byte) 0; mSerialNumber = new String(sndata); + } else if ((data[16] & 0xff) == 0xb5) { // Speed Alarm report + nWheelSpeedAlarm1 = byteArrayInt2(data[4], data[5]); + nWheelSpeedAlarm2 = byteArrayInt2(data[6], data[7]); + nWheelSpeedAlarm3 = byteArrayInt2(data[8], data[9]); + mWheelMaxSpeed = byteArrayInt2(data[10], data[11]); + + // here we need to adjust the PreferenceBars to reflect the readback } } return false; @@ -1004,6 +1027,9 @@ void reset() { mWheelLedEnabled = false; mWheelButtonDisabled = false; mWheelMaxSpeed = 25; + nWheelSpeedAlarm1 = 0; + nWheelSpeedAlarm2 = 0; + nWheelSpeedAlarm3 = 0; mWheelSpeakerVolume = 50; } diff --git a/app/src/main/res/xml/preferences_kingsong.xml b/app/src/main/res/xml/preferences_kingsong.xml index 069bdc51..a433b099 100644 --- a/app/src/main/res/xml/preferences_kingsong.xml +++ b/app/src/main/res/xml/preferences_kingsong.xml @@ -1,6 +1,6 @@ - + + - + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 8f591075..77771151 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.android.tools.build:gradle:3.3.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong @@ -18,6 +18,7 @@ allprojects { repositories { jcenter() maven { url "https://jitpack.io" } + google() } } From 38900b058cee81e768b0088dfb5b019e243851dc Mon Sep 17 00:00:00 2001 From: Torsten Leibold Date: Thu, 21 Mar 2019 15:03:14 -0700 Subject: [PATCH 10/11] removed obsolete setting in build.gradle (toolbox version) --- app/build.gradle | 1 - 1 file changed, 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index bd64b23f..bb374739 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,6 @@ apply plugin: 'com.android.application' android { compileSdkVersion 25 - buildToolsVersion '27.0.3' lintOptions { abortOnError false From b6a4bcd4141fa74edaa81e81b663254601c9c407 Mon Sep 17 00:00:00 2001 From: Torsten Leibold <> Date: Thu, 21 Mar 2019 17:05:17 -0700 Subject: [PATCH 11/11] added code in decodeKingsong to process 84V setting --- app/src/main/java/com/cooper/wheellog/WheelData.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/cooper/wheellog/WheelData.java b/app/src/main/java/com/cooper/wheellog/WheelData.java index 0f16bc65..bddbc24c 100644 --- a/app/src/main/java/com/cooper/wheellog/WheelData.java +++ b/app/src/main/java/com/cooper/wheellog/WheelData.java @@ -817,13 +817,17 @@ private boolean decodeKingSong(byte[] data) { mModeStr = String.format(Locale.US, "%d", mMode); } + int iVoltage = mVoltage; + if (mGotway84V) { + iVoltage = (int)Math.round(mVoltage * 0.8); + } int battery; - if (mVoltage < 5000) { + if (iVoltage < 5000) { battery = 0; - } else if (mVoltage >= 6600) { + } else if (iVoltage >= 6600) { battery = 100; } else { - battery = (mVoltage - 5000) / 16; + battery = (iVoltage - 5000) / 16; } setBatteryPercent(battery);