Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
# WheelLogAndroid
# WheelLogAndroid V2.0.9

One more try to make it working with Inmotion V8
Updated Gradle configuration to compile with Gradle 4.4

Added support for Samsung Gear Tizen based watches
Inmotion V10 support

Manual BLE MAC address edit

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
Expand Down
29 changes: 19 additions & 10 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,48 @@ apply plugin: 'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion '27.0.3'

lintOptions {
abortOnError false
}

defaultConfig {
applicationId "com.cooper.wheellog"
minSdkVersion 18
targetSdkVersion 25
vectorDrawables.useSupportLibrary = true
minSdkVersion 24
targetSdkVersion 24
versionCode 34
versionName "2.0.8"
versionName '2.0.10'
}
buildTypes {
release {
minifyEnabled false
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"
annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:2.2.0"

}
5 changes: 5 additions & 0 deletions app/src/main/java/com/cooper/wheellog/BluetoothLeService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)
Expand Down
27 changes: 26 additions & 1 deletion app/src/main/java/com/cooper/wheellog/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;


Expand Down Expand Up @@ -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) {
Expand All @@ -899,13 +919,18 @@ 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);

boolean use_ratio = sharedPreferences.getBoolean(getString(R.string.use_ratio), false);
WheelData.getInstance().setUseRatio(use_ratio);
boolean gotway_84v = sharedPreferences.getBoolean(getString(R.string.gotway_84v), false);
WheelData.getInstance().setGotway84V(gotway_84v);

WheelData.getInstance().setAlarmsEnabled(alarms_enabled);

if (alarms_enabled) {
Expand Down
64 changes: 58 additions & 6 deletions app/src/main/java/com/cooper/wheellog/PreferencesFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -19,8 +21,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 {
Expand All @@ -42,8 +42,26 @@ enum SettingsScreen {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(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;

try {
PackageInfo pInfo = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0);
String version = "pInfo";
if (pInfo != null) version = "V" + pInfo.versionName;
pref.setTitle(version);
}
catch (Exception e)
{ ; }
}

@Override
Expand Down Expand Up @@ -113,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?")
Expand Down Expand Up @@ -174,6 +219,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;
Expand Down Expand Up @@ -356,7 +409,6 @@ public void onClick(DialogInterface dialog, int which) {
builder1.show();



//SettingsUtil.setPasswordForWheel(getActivity(), deviceAddress, "000000");
//finish();
}
Expand All @@ -373,7 +425,6 @@ public void onClick(DialogInterface dialog, int which) {

return true;
}

});
}

Expand Down Expand Up @@ -505,6 +556,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();
Expand Down
Loading