Giter Site home page Giter Site logo

wheellog.android's Introduction

WheelLog.Android

Latest release Build Status

Unofficial App for EUC on Android. The following manufacturers are supported:

  • InMotion
  • KingSong
  • Gotway
  • Veteran
  • Ninebot Zx, S2, C/P/E+, Mini

Contributing

🛠️ Pull requests

A pull request is a way to suggest changes in this repository. We accept pull requests in the master branch.

App stores

google-play-badge huawei-app-gallery

⌚ Smart watch applications

🚀 Quick start

Minimum requirements:

Let's start

  • Download, install and open Android studio
  • In main menu File -> New -> Project From Version Control

image

  • Insert URL https://github.com/Wheellog/Wheellog.Android.git and click on Clone
  • Install SDK and connect android device
  • Setup private tokens in local.properties
  • Click Run button - Enjoy!

💤 Based on

palachzzz fork

wheellog.android's People

Contributors

ask369 avatar b1oki avatar dotarsoja avatar ggoraa avatar gowgos5 avatar hawkadmin avatar hyperair avatar juliomap avatar kvazimoda24 avatar marccardinal avatar nicolas2k avatar p1ng2win avatar palachzzz avatar paymicro avatar sing303 avatar yakushevvladimir avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

wheellog.android's Issues

Distance reported is inaccurate

On my mten3 I think the speed is accurate (it seems the same as EUC World reports, at least), but the distance reported is quite far off. When I turn the wheel on and it connects, the distance almost immediately jumps to 0.63mi, before I've even gotten on the wheel. I just did a ride of less than 1mile and when I got to my destination, Wheel Log showed a distance of 12.6mile

Device profiles

Привести настройки в порядок.

Тут есть реализация сохранения и восстановления

public static boolean savePreferencesTo(Context context, String suffix) {
if (suffix == null || suffix.equals("")) {
return false;
}
SharedPreferences from = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences to = getDestinationPrefs(context, suffix);
return sync(from, to);
}
public static boolean restorePreferencesFrom(Context context, String suffix) {
if (suffix == null || suffix.equals("")) {
return false;
}
SharedPreferences from = getDestinationPrefs(context, suffix);
SharedPreferences to = PreferenceManager.getDefaultSharedPreferences(context);
return sync(from, to);
}

Libraries used

Could you please document which libraries the app is using? While your app declares to be GPL-3.0, it seems it contains some proprietary libraries (probably those coming as JARs in /app/libs) I can find no (license) details on, like

  • com.garmin.android.*
  • com.garmin.monkeybrains.serialization
  • com.samsung.android.sdk
  • com.samsung.accessory

Thanks in advance!

Crash: java.lang.IllegalArgumentException com.cooper.wheellog.LoggingService.onStartCommand

Occurrences: 89, impacted users: 22
Affected: Android 9 only
First occurrence: unknown (at least apk 62)
java.lang.RuntimeException:
at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4319)
at android.app.ActivityThread.access$2700 (ActivityThread.java:273)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2070)
at android.os.Handler.dispatchMessage (Handler.java:112)
at android.os.Looper.loop (Looper.java:216)
at android.app.ActivityThread.main (ActivityThread.java:7625)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:987)
Caused by: java.lang.IllegalArgumentException:
at android.os.Parcel.createException (Parcel.java:1957)
at android.os.Parcel.readException (Parcel.java:1921)
at android.os.Parcel.readException (Parcel.java:1871)
at android.app.IActivityManager$Stub$Proxy.setServiceForeground (IActivityManager.java:5176)
at android.app.Service.startForeground (Service.java:701)
at com.cooper.wheellog.LoggingService.onStartCommand (LoggingService.java:175)
at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4298)
Caused by: android.os.RemoteException:
at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked (ActiveServices.java:1259)
at com.android.server.am.ActiveServices.setServiceForegroundLocked (ActiveServices.java:962)
at com.android.server.am.ActivityManagerService.setServiceForeground (ActivityManagerService.java:22255)
at android.app.IActivityManager$Stub.onTransact$setServiceForeground$ (IActivityManager.java:10501)
at android.app.IActivityManager$Stub.onTransact (IActivityManager.java:937)

FAILURE_DURING_TRANSER error while connecting to garmin watch

Description

WheelLog 2.3.9
Companion app 1.0.13

As soon as I click the watch icon in WheeLog I get a FAILURE_DURING_TRANSFER error message and get redirected the ConnectIQ website (not ConnectIQ app). There I get an additional error message:

"The WheeLog App used with this application is not installed on your ConnectIQ device. Please install the widget and try again". ConnectIQ site shows app as installed.

Same error whether companion app is started or not.

Smartphone model and android version

Uniherz Jelly 2 - Android 10

EUC model

Kingsong 14D

Crash: java.lang.NullPointerException com.cooper.wheellog.LoggingService.onDestroy

Occurrences: 89, impacted users: 48
Affected: Android 9, 10, 11
First occurrence: apk 70 (5 Sep), apk 71 still affected

java.lang.RuntimeException:
at android.app.ActivityThread.handleStopService (ActivityThread.java:4583)
at android.app.ActivityThread.access$2100 (ActivityThread.java:274)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2139)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:237)
at android.app.ActivityThread.main (ActivityThread.java:8167)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)
Caused by: java.lang.NullPointerException:
at com.cooper.wheellog.LoggingService.onDestroy (LoggingService.java:188)
at android.app.ActivityThread.handleStopService (ActivityThread.java:4563)

Crash: android.view.WindowManager$BadTokenException com.garmin.android.connectiq.ConnectIQ$1.ru

Occurrences: 91, impacted users: 34
Affected: all (android 5.0 - 10)
First occurrence: unknown (at least apk 43)
android.view.WindowManager$BadTokenException:
at android.view.ViewRootImpl.setView (ViewRootImpl.java:1126)
at android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:450)
at android.view.WindowManagerImpl.addView (WindowManagerImpl.java:95)
at android.app.Dialog.show (Dialog.java:473)
at com.garmin.android.connectiq.ConnectIQ$1.run (ConnectIQ.java:557)
at android.os.Handler.handleCallback (Handler.java:883)
at android.os.Handler.dispatchMessage (Handler.java:100)
at android.os.Looper.loop (Looper.java:237)
at android.app.ActivityThread.main (ActivityThread.java:8125)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)

Rockwheel GT14 issues

Description

  • не правильно показывает заряд сразу после второго пакета
  • пройденный путь в обратную сторону считает периодически
  • общий пробег не сохраняет

Screenshots

video - https://t.me/wheellog/18367

EUC model

Rockwheel GT14

Inmotion V11 support

Они хорошенько курнули при создании нового протокола)

Minimal API 18 - Android 4.1

Is your feature request related to a problem? Please describe.
API 18 - не позвляет подключать и использовать современные фишки, такие как

  • Core Splashscreen - для сплеша - API 23+
  • Jetpack Compose - для UI - API 21+
  • требудет использовать несколько стилей для тем, т.к. что-то работает только с 23.

Describe the solution you'd like
Увеличить минимальный API до 23 (Android 6). Когда количество пользователей на более низких API станет несущественным или превозмагать уже не захочется (смотря что наступит раньше).

Rework Gotway protocol decoder

PROBLEM DESCRIPTION

Using new Tesla V2, I found that I often get unreal top speeds in the app, like 931km/h. After finding another person with exactly the same problem, I decided to share some thoughts.

The BT-to-serial module on Tesla V2 is under a heatsink. Its effective transmit power as measured by a phone is less than -88...-92 dBm. So it often disconnects and reconnects again. Sometimes the app detects this, sometimes no. But the latter can result in getting invalid data packets with holes or combined parts of two different packets. Since the app obviously only finds the start sequence and does not validate the remaining data validity, it records impossible peak values breaking the logging.

This currently is a confirmed problem on at least 2 different Tesla V2 with new controller. I tried to replace the BT module by a new one - same results. I also tried to use iPhone instead of Android phone - same issue (sporadical disconnects and reconnects, I did not check the data itself).

PROPOSED SOLUTION

The problem should be resolved by moving the BT module to a better place. But in general would be good to add an optional minimal data validation. Say, if the speed is above 110 km/h, drop the packet as invalid. Maybe add similar checks for other data like peak currents, etc. I realise that it's almost impossible to ask manufacturers to add a kind of checksums to unreliable BT serial links. But dropping some definitely invalid packets may help a bit.

EDIT: after some conversations was found that the problem is not only related to Tesla. Sporadical data errors were observed by owners of other GW-manufactured wheels. It may look like the issue with BT module input buffer overflow when data transmission is slowed down. In any case, regardless of reasons, any basic data validation could result in better user experience.

Hide BMS page

Эта страница специфична только для Ninebot Z серии.
Поэтому ее надо бы убрать у остальных моделей.

Alarms mode for miband

Description

Суть режима alarm miband такая:
Когда он включен в настройках notification title и notification text не обновляются. Но если прилетает аларм - в notification text выдает какой аларм превышен и его значение (скорость или ток или температура). И в notification title - строку alarm.
В этом режиме данные шторки не обновляеются.

Crash: java.lang.IllegalArgumentException com.cooper.wheellog.BluetoothLeService.onDestroy

1000+ occurrences, 479 users impacted
Affected: Android 9, 10, 11
First occurrence: 5 Sep, 70apk release
Crash dump:
java.lang.RuntimeException:
at android.app.ActivityThread.handleStopService (ActivityThread.java:3880)
at android.app.ActivityThread.access$1700 (ActivityThread.java:208)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1733)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loop (Looper.java:205)
at android.app.ActivityThread.main (ActivityThread.java:6991)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:884)
Caused by: java.lang.IllegalArgumentException:
at android.app.LoadedApk.forgetReceiverDispatcher (LoadedApk.java:1293)
at android.app.ContextImpl.unregisterReceiver (ContextImpl.java:1531)
at android.content.ContextWrapper.unregisterReceiver (ContextWrapper.java:659)
at com.cooper.wheellog.BluetoothLeService.onDestroy (BluetoothLeService.java:358)
at android.app.ActivityThread.handleStopService (ActivityThread.java:3860)

Begode RS notification Bug

Description

Обновляется штока на новых готвеях. Но не обновляется информация для mi-band.
Только на бигудах. Если подключиться к любому другому колесу не меняя телефона и приверсии приложения то всё нормально.
При нажатии на любую кнопку в шторке - обновляется.

Expected behavior

Шторка должна обновляться

EUC model

Begode RS and Begide ЕХ

Req: Option to "Start logging when wheel is moving"

I frequently open the wheel log app to check state of charge while charging my wheel. If I have the "Auto Log" setting enabled, then each of these connections generates a short log file. But I generally like "Auto Log" so that my all of my trips are logged.

A new setting "Auto Log Trips" defined as "Start logging automatically once wheel is in motion" added to the log settings would solve this for me. I could use this instead of "Auto Log", but users who want to always log when connected could continue to use the old setting.

Crash: java.lang.IllegalStateException com.samsung.android.sdk.accessory.ServiceConnectionIndicationBroadcastReceiver

Occurrences: 89, impacted users: 32
Affected: Android 10 (72%), Android 9 (28%)
First occurrence: unknown (at least apk 66)
java.lang.RuntimeException:
at android.app.ActivityThread.handleReceiver (ActivityThread.java:4238)
at android.app.ActivityThread.access$1700 (ActivityThread.java:274)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2113)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:237)
at android.app.ActivityThread.main (ActivityThread.java:8154)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)
Caused by: java.lang.IllegalStateException:
at android.app.ContextImpl.startServiceCommon (ContextImpl.java:1688)
at android.app.ContextImpl.startService (ContextImpl.java:1633)
at android.content.ContextWrapper.startService (ContextWrapper.java:683)
at android.content.ContextWrapper.startService (ContextWrapper.java:683)
at com.samsung.android.sdk.accessory.ServiceConnectionIndicationBroadcastReceiver.onReceive (Unknown Source:136)
at android.app.ActivityThread.handleReceiver (ActivityThread.java:4229)

MiBand Horizontal Option

I'd like to test out if I can fit the MiBand in the top of my helmet.
Can you guys make it so that it has the option to display the wheel information horizontally instead of vertically?

Inmotion way of querying

Hi

I was hoping to get some info on how to correctly query the inmotion v11.
I have browsed the code but am still a bit lost, i am trying to read out the speed in c#.
So far i found that we are connecting to the device targetting the service
{ "6e400001-b5a3-f393-e0a9-e50e24dcca9e", "INMOTION_V2_SERVICE_UUID" },
Then we need to write the command : RealTimeInfo = 0x04,
But then i am lost at what characteristic we are writing and where the data comes from. :(
Any help is greatly appreciated.

Thanks

Gotway MTen3 67v wrong battery level

With fully charged MTen3 67v (67v is chosen in options) the app shows 90%ish battery charge level (with no load), when teating with EUC World (and selecting MTen3 67v profile) is shows 100%.
Please help to fix.

App is killed after some minutes of ride

Description

When i launch app before a ride session then i put phone in my pocket. The app is killed after some minutes and the session stop logging.

Steps to reproduce

  1. Starting application (with auto log) - at 12:22:00
  2. Go to home (with Notification running)
  3. Ride (without any interaction with phone)
    ...
    The app is killed 💀 Last log : 12:31:00 (9 minutes) - I ride for 1 hour
    Note: I heard the 'disconnect' sound during the ride

Expected behavior

App continue to work in background and write log into .csv.

Smartphone model and android version

OnePlus A6003
Android version: 10 - Oreo 8.1.0

EUC model

Inmotion V8

Workaround

I tried WheelLog AJDM v6.5 application (wich is a fork of Wheellog) and the issue is not present.

👉 Maybe there is a flag to add to say system to no kill the app

kingsong serial is 0x63

there is mistake in the description, not that in makes difference since you send all, but if one wants to monitor what he sends, then
serial is 0x63
and model is 0x9B

thanks for the work done.

Save/view log of important messages

Нужно хранить и показывать важные сообщения, такие как:

  • сообщения API / попытки загрузки
  • какие-то ошибки, алармы

Чтобы они были доступны и после закрытия приложения.

Lights from notification button doesn't work

Tested on Gotway Begote RS C30 on Android.
In wheel settings, however, I can turn the lights on or off without problems. So the issue is with the light from notification only.
Screenshot_20210407-090618

Req: Set Alarms and Tiltback using MPH if "Use MPH" is enabled.

Currently the "Wheel speed limit" in Wheel Settings as well as the Speeds that trigger alarms 1,2,3 are always specified in km/h regardless of the value of the "Use MPH" setting.

It would be nice to be able to set alarms and wheel settings using mph.

Crash: java.lang.IllegalArgumentException com.cooper.wheellog.LoggingService.onStartCommand

Occurrences: 389, impacted users: 72
Affected: Android 10 (99%), Android 9 (1%)
First occurence: unknown (at least apk 65)
java.lang.RuntimeException:
at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4539)
at android.app.ActivityThread.access$2200 (ActivityThread.java:273)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2137)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:237)
at android.app.ActivityThread.main (ActivityThread.java:8125)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)
Caused by: java.lang.IllegalArgumentException:
at android.os.Parcel.createException (Parcel.java:2092)
at android.os.Parcel.readException (Parcel.java:2056)
at android.os.Parcel.readException (Parcel.java:2004)
at android.app.IActivityManager$Stub$Proxy.setServiceForeground (IActivityManager.java:6987)
at android.app.Service.startForeground (Service.java:707)
at com.cooper.wheellog.LoggingService.onStartCommand (LoggingService.java:171)
at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:4521)
Caused by: android.os.RemoteException:
at com.android.server.am.ActiveServices.setServiceForegroundInnerLocked (ActiveServices.java:1337)
at com.android.server.am.ActiveServices.setServiceForegroundLocked (ActiveServices.java:1014)
at com.android.server.am.ActivityManagerService.setServiceForeground (ActivityManagerService.java:16634)
at android.app.IActivityManager$Stub.onTransact (IActivityManager.java:3202)
at com.android.server.am.ActivityManagerService.onTransact (ActivityManagerService.java:3383)

New page with a list of trips

Нужена страница со списком поездок.

Желательная информация:

  • Дата/время
  • Время поездки
  • Загружено ли в electro.club

Функции:

  • Открыть папку с треком
  • Расшарить (отправить телеграм, блютуз... etc.)
  • Загрузить в electro.club

Crash: java.lang.NullPointerException com.cooper.wheellog.PebbleService$1.run

Occurrences: 82, impacted users: 25
Affected: Android 7.1-10 (all)
First occurrence: unknown (at least apk66)
java.lang.NullPointerException:
at com.cooper.wheellog.PebbleService$1.run (PebbleService.java:89)
at android.os.Handler.handleCallback (Handler.java:883)
at android.os.Handler.dispatchMessage (Handler.java:100)
at android.os.Looper.loop (Looper.java:214)
at android.app.ActivityThread.main (ActivityThread.java:7710)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:950)

Crash: java.lang.NullPointerException com.cooper.wheellog.BluetoothLeService.onDestroy

Occurrences: 118, impacted users: 50
Affected: Android 9, 10, 11
First occurence: unknown (at least apk 43)
java.lang.RuntimeException:
at android.app.ActivityThread.handleStopService (ActivityThread.java:4583)
at android.app.ActivityThread.access$2200 (ActivityThread.java:274)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2139)
at android.os.Handler.dispatchMessage (Handler.java:107)
at android.os.Looper.loop (Looper.java:237)
at android.app.ActivityThread.main (ActivityThread.java:8167)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)
Caused by: java.lang.NullPointerException:
at com.cooper.wheellog.BluetoothLeService.onDestroy (BluetoothLeService.java:355)
at android.app.ActivityThread.handleStopService (ActivityThread.java:4563)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.