Giter Site home page Giter Site logo

android-ponewheel's People

Contributors

audkar avatar biell avatar ebabel avatar hammer-is avatar kvnloo avatar kwatkins avatar twyatt avatar wmaciel 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

android-ponewheel's Issues

[FR] Background Support

A background service would be a nice feature to add. So you can pull up maps, texting, camera, or whatever and still be logging.

New 4210 hardware 4142 firmware XR no longer show data

Reported on the Facebook Onewheel Owner's Group; several people have received XR this week with new hardware and firmware versions and they reportedly no longer show data with Ponewheel other than firmware version and the Bluetooth ID/serial number. Onewave was tried and it also no longer reports data.

Support multiview

Looks like when jumping into multiview the UI resets and disconnects, not sure what is needed but it would be cool to have this support.

Start and stop logging button

If I am not mistaken, as it stands now, the app starts logging the board's info as soon as it connects.

If we had a start and stop logging button, similar to the ride mapping in the original app, it would make easier to know when a ride starts and stops, making it easier to know when to keep polling gps data and how to split the logs in the database.

Release plans for app store/roadmap etc

This is moving to more of an open source community project, which is great, now how should we/or what point release it on the app store? And,

  • Possible rename of the app?
  • Update description to show contributors etc
  • Formalize Issue tracking (bug/feature/design tags)
  • Code development, feature branches, development, version tags, release, etc

Or I can simply drop the latest/master on the app store when we think it's ready. Of course it could use automated testing to pass, but eh, I'm happy to be the monkey test runner riding a OneWheel for the cause :)

Ride Mode Switching On-the-fly

Thank you for the app improvements so far, adding the plus and also logging interval.

I was testing the beta app while indoors (it has been too cold and salty/filthy to try outside) and noticed that the ride mode can be changed while moving! This is a feature I have seen mentioned in the groups several times. How much testing has been done to see how the OW responds to switching at higher speeds? I wonder what would happen if the mode was switched from Delirium to Sequoia while riding at 13MPH. Would Sequoia slam the tail into the ground since this speed is beyond that mode's pushback speed?

App falls over w/ exception "grpc failed"

Almost there for the Map, getting the exception below w/ and w/out having the location option checked. I also think it'll be fine if we we do location tracking by default when the app starts and make this a default feature (and maybe adding to manifest)

I started to look into it thinking it might be something w/ the environment (Pixel running Android N and a bit on the modified side) - could still be, but looks to be other things according to https://stackoverflow.com/questions/45384803/grpc-failed-while-working-with-maps-and-location

io.reactivex.exceptions.OnErrorNotImplementedException: grpc failed at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704) at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701) at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:276) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:172) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252) at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:61) at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:52) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) Caused by: java.io.IOException: grpc failed at android.location.Geocoder.getFromLocation(Geocoder.java:136) at com.patloew.rxlocation.Geocoding.lambda$fromLocation$1(Geocoding.java:62) at com.patloew.rxlocation.Geocoding$$Lambda$1.call(Unknown Source) at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual(SingleFromCallable.java:35) at io.reactivex.Single.subscribe(Single.java:2779) at io.reactivex.internal.operators.single.SingleFlatMapMaybe.subscribeActual(SingleFlatMapMaybe.java:41) at io.reactivex.Maybe.subscribe(Maybe.java:3727) at io.reactivex.internal.operators.maybe.MaybeToObservable.subscribeActual(MaybeToObservable.java:43) at io.reactivex.Observable.subscribe(Observable.java:10910) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.subscribeInner(ObservableFlatMap.java:162) at io.reactivex.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext(ObservableFlatMap.java:139) at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeOnObserver.onNext(ObservableSubscribeOn.java:58) at io.reactivex.internal.operators.observable.ObservableFromPublisher$PublisherSubscriber.onNext(ObservableFromPublisher.java:56) at io.reactivex.internal.operators.flowable.FlowableCreate$MissingEmitter.onNext(FlowableCreate.java:359) at com.patloew.rxlocation.LocationUpdatesFlowableOnSubscribe$RxLocationListener.onLocationChanged(LocationUpdatesFlowableOnSubscribe.java:73) at com.google.android.gms.internal.zzasg$zzb$1.zza(Unknown Source) at com.google.android.gms.internal.zzasg$zzb$1.zzs(Unknown Source) at com.google.android.gms.internal.zzabh.zzb(Unknown Source) at com.google.android.gms.internal.zzabh$zza.handleMessage(Unknown Source) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6171) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781) at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)

[Request] Allow for user defined polling frequency

The app currently logs the every second.
It would be very useful to have that frequency configurable from the app UI.
Personally, I'd like to have a smaller gap between polls.
What would be the limits on how fast those requests can go through BT?

Listing ride activities crashes

It looks like on the latest release exporting the logs is broken. It likely still is logging the CSV, just crashing when trying to open the activity and/or share the logs. And obscure error is obscure, deep in the bad choice decision by me at the time to use databinding for the UI and observables... and might be a result of updating the target SDK.
Might also relate to #30

9-25 08:49:34.157  1167  1198 I ActivityManager: Displayed net.kwatts.powtools/.RidesListActivity: +346ms
09-25 08:49:34.157 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 9
09-25 08:49:34.164 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 10
09-25 08:49:34.168 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 11
09-25 08:49:34.173 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 12
09-25 08:49:34.177 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 13
09-25 08:49:34.192   806   806 D [email protected]: LAUNCH OFF
09-25 08:49:34.584   619  2060 W SurfaceFlinger: Attempting to set client state on removed layer: PopupWindow:ce380f1#0
09-25 08:49:34.584   619  2060 W SurfaceFlinger: Attempting to destroy on removed layer: PopupWindow:ce380f1#0
09-25 08:49:34.751   887   887 E wificond: NL80211_CMD_TRIGGER_SCAN failed: Device or resource busy
09-25 08:49:34.752  1167  1387 E WificondScannerImpl: Failed to start scan, freqs=null
09-25 08:49:34.758  2490  2526 I QcrilOemhookMsgTunnel: [0]processOemHookIndication length=21
09-25 08:49:34.759  2490  2490 D QcrilMsgTunnelIfaceManager: handleMessage what = 0
09-25 08:49:34.814  1882  1882 D ServiceStateProvider: subId=1
09-25 08:49:34.821  1838  1936 I QCNEJ/CndHalConnector: -> SND notifyWwanSubtypeChanged(13)
09-25 08:49:34.823  1838  1936 I QCNEJ/CndHalConnector: -> SND notifyMobileDataEnabledChanged(true)
09-25 08:49:34.834  2416  2416 I CarrierServices: [2] chy.onReceive: Received SERVICE_STATE intent, clearing cached cell info
09-25 08:49:34.849 22532 22532 I Tycho   : [2] bjc.a: Ignoring duplicate service state event: In service in US.
09-25 08:49:34.850 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId14 minDate= Thu Sep 12 21:09:09 PDT 2019 max=Thu Sep 12 21:09:09 PDT 2019
09-25 08:49:34.851 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 14
09-25 08:49:34.862 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId15 minDate= Thu Sep 12 21:09:59 PDT 2019 max=Thu Sep 12 21:09:59 PDT 2019
09-25 08:49:34.863 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 15
09-25 08:49:34.878 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId16 minDate= Thu Sep 12 21:15:17 PDT 2019 max=Thu Sep 12 21:15:17 PDT 2019
09-25 08:49:34.879 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 16
09-25 08:49:34.895 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId17 minDate= Thu Sep 12 22:42:15 PDT 2019 max=Thu Sep 12 22:42:15 PDT 2019
09-25 08:49:34.896 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 17
09-25 08:49:34.905 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId18 minDate= Thu Sep 12 22:50:29 PDT 2019 max=Thu Sep 12 22:50:29 PDT 2019
09-25 08:49:34.906 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 18
09-25 08:49:34.911 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId19 minDate= Thu Sep 12 22:57:49 PDT 2019 max=Thu Sep 12 22:57:49 PDT 2019
09-25 08:49:34.911 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 19
09-25 08:49:34.920 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId20 minDate= null max=null
09-25 08:49:34.920 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 20
09-25 08:49:34.920 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:34.927 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId21 minDate= null max=null
09-25 08:49:34.927 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:34.927 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 21
09-25 08:49:34.932 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId22 minDate= null max=null
09-25 08:49:34.932 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 22
09-25 08:49:34.932 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:34.943 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId23 minDate= null max=null
09-25 08:49:34.944 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:34.944 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 23
09-25 08:49:34.950 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId24 minDate= Thu Sep 12 23:00:07 PDT 2019 max=Thu Sep 12 23:00:07 PDT 2019
09-25 08:49:34.950 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 24
09-25 08:49:34.960 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId25 minDate= Thu Sep 12 23:03:01 PDT 2019 max=Thu Sep 12 23:03:01 PDT 2019
09-25 08:49:34.960 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 25
09-25 08:49:34.967 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId26 minDate= Thu Sep 12 23:06:07 PDT 2019 max=Thu Sep 12 23:06:07 PDT 2019
09-25 08:49:34.968 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 26
09-25 08:49:34.979 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId27 minDate= Thu Sep 12 23:13:52 PDT 2019 max=Thu Sep 12 23:13:52 PDT 2019
09-25 08:49:34.980 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 27
09-25 08:49:34.993 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId28 minDate= Thu Sep 12 23:19:29 PDT 2019 max=Thu Sep 12 23:19:29 PDT 2019
09-25 08:49:34.993 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 28
09-25 08:49:35.003 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId29 minDate= Thu Sep 12 23:32:46 PDT 2019 max=Thu Sep 12 23:32:46 PDT 2019
09-25 08:49:35.003 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 29
09-25 08:49:35.009 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId30 minDate= Thu Sep 12 23:47:15 PDT 2019 max=Thu Sep 12 23:47:15 PDT 2019
09-25 08:49:35.009 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 30
09-25 08:49:35.014 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId31 minDate= null max=null
09-25 08:49:35.014 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 31
09-25 08:49:35.014 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.025 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId32 minDate= null max=null
09-25 08:49:35.025 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.025 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 32
09-25 08:49:35.030 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId33 minDate= null max=null
09-25 08:49:35.030 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.030 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 33
09-25 08:49:35.044 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId34 minDate= null max=null
09-25 08:49:35.045 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.045 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 34
09-25 08:49:35.058 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId35 minDate= null max=null
09-25 08:49:35.058 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.058 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 35
09-25 08:49:35.063 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId36 minDate= null max=null
09-25 08:49:35.064 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.064 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 36
09-25 08:49:35.076 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId37 minDate= null max=null
09-25 08:49:35.076 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 37
09-25 08:49:35.076 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.091 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId38 minDate= null max=null
09-25 08:49:35.091 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.091 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 38
09-25 08:49:35.095 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId39 minDate= null max=null
09-25 08:49:35.096 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.096 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 39
09-25 08:49:35.107 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId40 minDate= null max=null
09-25 08:49:35.107 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 40
09-25 08:49:35.107 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.112 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId41 minDate= Thu Sep 12 23:59:37 PDT 2019 max=Thu Sep 12 23:59:37 PDT 2019
09-25 08:49:35.112 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 41
09-25 08:49:35.125 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId42 minDate= Fri Sep 13 00:12:12 PDT 2019 max=Fri Sep 13 00:12:12 PDT 2019
09-25 08:49:35.126 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 42
09-25 08:49:35.140 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId43 minDate= Fri Sep 13 00:50:05 PDT 2019 max=Fri Sep 13 00:50:05 PDT 2019
09-25 08:49:35.141 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 43
09-25 08:49:35.145 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId44 minDate= Fri Sep 13 00:56:29 PDT 2019 max=Fri Sep 13 00:56:29 PDT 2019
09-25 08:49:35.146 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 44
09-25 08:49:35.158 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId45 minDate= Fri Sep 13 00:58:56 PDT 2019 max=Fri Sep 13 00:58:56 PDT 2019
09-25 08:49:35.159 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 45
09-25 08:49:35.173 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId46 minDate= Fri Sep 13 01:09:00 PDT 2019 max=Fri Sep 13 01:09:00 PDT 2019
09-25 08:49:35.173 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 46
09-25 08:49:35.177 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId47 minDate= null max=null
09-25 08:49:35.177 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 47
09-25 08:49:35.177 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.191 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId48 minDate= Fri Sep 13 01:20:29 PDT 2019 max=Fri Sep 13 01:20:29 PDT 2019
09-25 08:49:35.191 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 48
09-25 08:49:35.208 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId49 minDate= Fri Sep 13 01:21:07 PDT 2019 max=Fri Sep 13 01:21:07 PDT 2019
09-25 08:49:35.209 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 49
09-25 08:49:35.222 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId50 minDate= null max=null
09-25 08:49:35.222 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.222 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 50
09-25 08:49:35.227 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId51 minDate= Fri Sep 13 01:29:27 PDT 2019 max=Fri Sep 13 01:29:27 PDT 2019
09-25 08:49:35.228 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 51
09-25 08:49:35.240 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId52 minDate= Fri Sep 13 01:44:38 PDT 2019 max=Fri Sep 13 01:44:38 PDT 2019
09-25 08:49:35.240 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 52
09-25 08:49:35.256 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId53 minDate= null max=null
09-25 08:49:35.257 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.257 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 53
09-25 08:49:35.271 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId54 minDate= null max=null
09-25 08:49:35.271 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 54
09-25 08:49:35.271 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.275 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId55 minDate= null max=null
09-25 08:49:35.275 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.275 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 55
09-25 08:49:35.290 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId56 minDate= Fri Sep 13 01:56:47 PDT 2019 max=Fri Sep 13 01:56:47 PDT 2019
09-25 08:49:35.290 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 56
09-25 08:49:35.305 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId57 minDate= Fri Sep 13 01:58:56 PDT 2019 max=Fri Sep 13 01:58:56 PDT 2019
09-25 08:49:35.306 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 57
09-25 08:49:35.322 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId58 minDate= null max=null
09-25 08:49:35.322 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.322 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 58
09-25 08:49:35.338 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId59 minDate= Fri Sep 13 02:02:00 PDT 2019 max=Fri Sep 13 02:02:00 PDT 2019
09-25 08:49:35.339 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 59
09-25 08:49:35.342 28438 28547 D BluetoothAdapter: isLeEnabled(): ON
09-25 08:49:35.354 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId60 minDate= Fri Sep 13 10:47:35 PDT 2019 max=Fri Sep 13 10:47:35 PDT 2019
09-25 08:49:35.355 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 60
09-25 08:49:35.371 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId61 minDate= Fri Sep 13 10:48:41 PDT 2019 max=Fri Sep 13 10:48:41 PDT 2019
09-25 08:49:35.371 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 61
09-25 08:49:35.378   807   950 I CHRE    : @ 435490.781: [AR_CHRE] still: 60
09-25 08:49:35.388 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId62 minDate= Fri Sep 13 10:53:23 PDT 2019 max=Fri Sep 13 10:53:23 PDT 2019
09-25 08:49:35.388 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 62
09-25 08:49:35.403 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId63 minDate= Fri Sep 13 10:57:15 PDT 2019 max=Fri Sep 13 10:57:15 PDT 2019
09-25 08:49:35.404 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 63
09-25 08:49:35.420 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId64 minDate= Fri Sep 13 10:59:12 PDT 2019 max=Fri Sep 13 10:59:12 PDT 2019
09-25 08:49:35.420 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 64
09-25 08:49:35.437 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId65 minDate= Fri Sep 13 11:03:35 PDT 2019 max=Fri Sep 13 11:03:35 PDT 2019
09-25 08:49:35.437 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 65
09-25 08:49:35.453 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId66 minDate= Fri Sep 13 11:22:23 PDT 2019 max=Fri Sep 13 11:22:23 PDT 2019
09-25 08:49:35.453 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 66
09-25 08:49:35.469 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId67 minDate= null max=null
09-25 08:49:35.470 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 67
09-25 08:49:35.470 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.485 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId68 minDate= null max=null
09-25 08:49:35.486 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.486 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 68
09-25 08:49:35.502 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId69 minDate= null max=null
09-25 08:49:35.503 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 69
09-25 08:49:35.503 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.518 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId70 minDate= null max=null
09-25 08:49:35.519 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.519 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 70
09-25 08:49:35.552 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId71 minDate= Fri Sep 13 12:16:43 PDT 2019 max=Fri Sep 13 12:16:43 PDT 2019
09-25 08:49:35.552 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 71
09-25 08:49:35.568 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId72 minDate= Fri Sep 13 12:48:05 PDT 2019 max=Fri Sep 13 12:48:05 PDT 2019
09-25 08:49:35.568 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 72
09-25 08:49:35.584 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId73 minDate= null max=null
09-25 08:49:35.584 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.584 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 73
09-25 08:49:35.618 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId74 minDate= Fri Sep 13 13:08:44 PDT 2019 max=Fri Sep 13 13:08:44 PDT 2019
09-25 08:49:35.618 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 74
09-25 08:49:35.633 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId75 minDate= Fri Sep 13 13:18:54 PDT 2019 max=Fri Sep 13 13:18:54 PDT 2019
09-25 08:49:35.634 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 75
09-25 08:49:35.667 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId76 minDate= Fri Sep 13 14:01:36 PDT 2019 max=Fri Sep 13 14:01:36 PDT 2019
09-25 08:49:35.668 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 76
09-25 08:49:35.750 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId77 minDate= Fri Sep 13 14:18:53 PDT 2019 max=Fri Sep 13 14:18:53 PDT 2019
09-25 08:49:35.751 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 77
09-25 08:49:35.783 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId78 minDate= Fri Sep 13 14:27:15 PDT 2019 max=Fri Sep 13 14:27:15 PDT 2019
09-25 08:49:35.784 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 78
09-25 08:49:35.797 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId79 minDate= Fri Sep 13 14:42:28 PDT 2019 max=Fri Sep 13 14:42:28 PDT 2019
09-25 08:49:35.797 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 79
09-25 08:49:35.814 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId80 minDate= Fri Sep 13 14:56:20 PDT 2019 max=Fri Sep 13 14:56:20 PDT 2019
09-25 08:49:35.814 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 80
09-25 08:49:35.830 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId81 minDate= null max=null
09-25 08:49:35.830 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.830 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 81
09-25 08:49:35.846 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId82 minDate= Fri Sep 13 15:20:54 PDT 2019 max=Fri Sep 13 15:20:54 PDT 2019
09-25 08:49:35.847 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 82
09-25 08:49:35.855 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId83 minDate= Fri Sep 13 15:30:21 PDT 2019 max=Fri Sep 13 15:30:21 PDT 2019
09-25 08:49:35.855 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 83
09-25 08:49:35.863 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId84 minDate= Fri Sep 13 15:31:57 PDT 2019 max=Fri Sep 13 15:31:57 PDT 2019
09-25 08:49:35.864 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 84
09-25 08:49:35.879 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId85 minDate= null max=null
09-25 08:49:35.879 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:35.879 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 85
09-25 08:49:35.896 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId86 minDate= Fri Sep 13 15:33:03 PDT 2019 max=Fri Sep 13 15:33:03 PDT 2019
09-25 08:49:35.896 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 86
09-25 08:49:35.912 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId87 minDate= Fri Sep 13 15:33:51 PDT 2019 max=Fri Sep 13 15:33:51 PDT 2019
09-25 08:49:35.913 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 87
09-25 08:49:35.927 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId88 minDate= Fri Sep 13 15:38:13 PDT 2019 max=Fri Sep 13 15:38:13 PDT 2019
09-25 08:49:35.928 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 88
09-25 08:49:35.931 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId89 minDate= Fri Sep 13 15:41:26 PDT 2019 max=Fri Sep 13 15:41:26 PDT 2019
09-25 08:49:35.932 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 89
09-25 08:49:35.945 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId90 minDate= Fri Sep 13 15:46:58 PDT 2019 max=Fri Sep 13 15:46:58 PDT 2019
09-25 08:49:35.946 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 90
09-25 08:49:35.961 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId91 minDate= Fri Sep 13 15:50:11 PDT 2019 max=Fri Sep 13 15:50:11 PDT 2019
09-25 08:49:35.962 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 91
09-25 08:49:35.978 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId92 minDate= Fri Sep 13 16:58:17 PDT 2019 max=Fri Sep 13 16:58:17 PDT 2019
09-25 08:49:35.979 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 92
09-25 08:49:35.994 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId93 minDate= Fri Sep 13 17:51:33 PDT 2019 max=Fri Sep 13 17:51:33 PDT 2019
09-25 08:49:35.995 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 93
09-25 08:49:36.010 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId94 minDate= Fri Sep 13 18:27:57 PDT 2019 max=Fri Sep 13 18:27:57 PDT 2019
09-25 08:49:36.011 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 94
09-25 08:49:36.027 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId95 minDate= Sun Sep 15 14:20:00 PDT 2019 max=Sun Sep 15 14:20:00 PDT 2019
09-25 08:49:36.027 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 95
09-25 08:49:36.043 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId96 minDate= Sun Sep 15 14:26:49 PDT 2019 max=Sun Sep 15 14:26:49 PDT 2019
09-25 08:49:36.044 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 96
09-25 08:49:36.059 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId97 minDate= Sun Sep 15 14:52:41 PDT 2019 max=Sun Sep 15 14:52:41 PDT 2019
09-25 08:49:36.060 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 97
09-25 08:49:36.061  2148 29687 E ctxmgr  : [AppIntervalImpl] closeInterval: ongoing [CONTEXT service_id=47 ]
09-25 08:49:36.075   795   795 V ContextHubHal: sendMessageToHub
09-25 08:49:36.077   807   950 D CHRE    : @ 435491.500: Parsed nanoapp message from host: app ID 0x476f6f676c00100b, endpoint 0x0, msgType 0, payload size 10
09-25 08:49:36.077  1167  1404 V ContextHubClientManager: Received NanoAppMessage[type = 1025, length = 168 bytes, broadcast, nanoapp = 0x476f6f676c00100b](data = 0x210000A4 00007200 08E7CAD2 CF011A0C ...)
09-25 08:49:36.077   807   950 I CHRE    : @ 435491.500: [NanoMinion] received MSG Type 0x70, Version 1, 6 bytes
09-25 08:49:36.077   807   950 I CHRE    : @ 435491.500: [AR_CHRE] request.flush
09-25 08:49:36.077   807   950 I CHRE    : @ 435491.500: [AR_CHRE] send to host, reason=3, sampleSize=9, transitionSize=0, lastAccelTime = 435478566, lastAudioTime = 0
09-25 08:49:36.077   807   950 I CHRE    : @ 435491.500: [NanoMinion] sent MSG Type 0x72, Version 0, 160 bytes, MessageId 2
09-25 08:49:36.077  1167  1404 D ContextHubService: Sending message 1025 version 0 from hubHandle 0, appInstance 0, callBackCount 2
09-25 08:49:36.089  2148  4820 I Places  : ?: PlacesBleScanner stop()
09-25 08:49:36.092  2148  2148 I BeaconBle: Places requested to stop scan
09-25 08:49:36.092  2148  2148 I BeaconBle: Scan canceled successfully.
09-25 08:49:36.093 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId98 minDate= Tue Sep 17 19:18:05 PDT 2019 max=Tue Sep 17 19:18:05 PDT 2019
09-25 08:49:36.093 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 98
09-25 08:49:36.098  2148  4820 I PlaceInferenceEngine: [anon] Changed inference mode: 1
09-25 08:49:36.098  2148  4820 I PlaceInferenceEngine: [account#-29786098] Changed inference mode: 1
09-25 08:49:36.098  2148  4820 I PlaceInferenceEngine: [account#-44440013] Changed inference mode: 1
09-25 08:49:36.110 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId99 minDate= Sat Sep 21 11:44:49 PDT 2019 max=Sat Sep 21 11:44:49 PDT 2019
09-25 08:49:36.111 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 99
09-25 08:49:36.174 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId100 minDate= null max=null
09-25 08:49:36.175 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:36.175 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 100
09-25 08:49:36.190 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId101 minDate= Sat Sep 21 12:23:56 PDT 2019 max=Sat Sep 21 12:23:56 PDT 2019
09-25 08:49:36.191 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 101
09-25 08:49:36.204 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId102 minDate= null max=null
09-25 08:49:36.205 29672 29672 D net.kwatts.powtools [C:Ride] [M:getMinuteDuration] [L:25] : minDate= null max=null
09-25 08:49:36.205 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 102
09-25 08:49:36.208 29672 29672 D net.kwatts.powtools [C:RideListAdapter$RideVie] [M:bind] [L:88] : rideId103 minDate= Sun Sep 22 13:45:50 PDT 2019 max=Sun Sep 22 13:45:50 PDT 2019
09-25 08:49:36.210 29672 29740 D net.kwatts.powtools [C:RideListAdapter] [M:lambda$loadTrack$1] [L:122] : loadTrack: rideId = 103
09-25 08:49:36.758  1167  1387 E WificondScannerImpl: Failed to start scan, freqs=null
09-25 08:49:36.758   887   887 E wificond: NL80211_CMD_TRIGGER_SCAN failed: Device or resource busy
09-25 08:49:38.034  1167  2338 I ActivityManager: START u0 {cmp=net.kwatts.powtools/.RideDetailActivity (has extras)} from uid 10369
09-25 08:49:38.036   806   806 D [email protected]: LAUNCH ON
09-25 08:49:38.043 29672 29672 D net.kwatts.powtools [C:DebugDrawerAddDummyRide] [M:onPause] [L:180] : onPause:
09-25 08:49:38.049 29672 29672 W ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@49011b
09-25 08:49:38.056 29672 29672 D RideDetailActivity: onCreate:
09-25 08:49:38.061 29672 29672 I AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead.
09-25 08:49:38.073 29672 29672 I zzai    : Making Creator dynamically
09-25 08:49:38.118 29672 29672 I kwatts.powtool: The ClassLoaderContext is a special shared library.
09-25 08:49:38.120 29672 29672 I chatty  : uid=10369(net.kwatts.powtools) identical 1 line
09-25 08:49:38.122 29672 29672 I kwatts.powtool: The ClassLoaderContext is a special shared library.
09-25 08:49:38.223 29672 29672 W kwatts.powtool: Unsupported class loader
09-25 08:49:38.228 29672 29672 W kwatts.powtool: Skipping duplicate class check due to unsupported classloader
09-25 08:49:38.234 29672 29672 I DynamiteModule: Considering local module com.google.android.gms.maps_dynamite:0 and remote module com.google.android.gms.maps_dynamite:221
09-25 08:49:38.234 29672 29672 I DynamiteModule: Selected remote version of com.google.android.gms.maps_dynamite, version >= 221
09-25 08:49:38.245 29672 29672 W ChimeraDebugLogger: Singleton logger instance not set.
09-25 08:49:38.248 29672 29672 W kwatts.powtool: Unsupported class loader
09-25 08:49:38.253 29672 29672 W kwatts.powtool: Skipping duplicate class check due to unsupported classloader
09-25 08:49:38.283 29672 29672 I Google Maps Android API: Google Play services client version: 10298000
09-25 08:49:38.287 29672 29672 I Google Maps Android API: Google Play services package version: 19275037
09-25 08:49:38.345 29672 29672 W kwatts.powtool: Accessing hidden field Ljava/nio/Buffer;->address:J (light greylist, reflection)
09-25 08:49:38.453 29672 29756 D NetworkSecurityConfig: No Network Security Config specified, using platform default
09-25 08:49:38.558   619   640 D SurfaceFlinger: duplicate layer name: changing net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity to net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity#1
09-25 08:49:38.579   807   950 I CHRE    : @ 435493.969: [AR_CHRE] still: 35
09-25 08:49:38.621  1167  1198 I ActivityManager: Displayed net.kwatts.powtools/.RideDetailActivity: +564ms
09-25 08:49:38.636   806   806 D [email protected]: LAUNCH OFF
09-25 08:49:38.960 29672 29756 E AndroidRuntime: FATAL EXCEPTION: Thread-6
09-25 08:49:38.960 29672 29756 E AndroidRuntime: Process: net.kwatts.powtools, PID: 29672
09-25 08:49:38.960 29672 29756 E AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at ce.b(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (100400-269183835):3)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at cb.a(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (100400-269183835):3)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at cd.a(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (100400-269183835):14)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at com.google.maps.api.android.lib6.drd.aj.a(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (100400-269183835):4)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at bf.a(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (100400-269183835):22)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at bf.run(:com.google.android.gms.dynamite_mapsdynamite@[email protected] (100400-269183835):8)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/data/user_de/0/com.google.android.gms/app_chimera/m/000000a6/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/000000a6/MapsDynamite.apk!/lib/arm64-v8a, /system/lib64]]
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at ad.loadClass(:com.google.android.gms.dynamite_dynamiteloader@[email protected] (100400-269183835):4)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
09-25 08:49:38.960 29672 29756 E AndroidRuntime: 	... 6 more
09-25 08:49:38.963  1167  1177 W ActivityManager:   Force finishing activity net.kwatts.powtools/.RideDetailActivity
09-25 08:49:38.966  1167  1177 W ActivityManager:   Force finishing activity net.kwatts.powtools/.RidesListActivity
09-25 08:49:38.969 29672 29756 I Process : Sending signal. PID: 29672 SIG: 9
09-25 08:49:38.973  1167 29785 W DropBoxManagerService: Dropping: data_app_crash (1541 > 0 bytes)
09-25 08:49:38.978  1167  1190 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.stats.service.DropBoxEntryAddedReceiver
09-25 08:49:38.978  1167  1190 W BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.DROPBOX_ENTRY_ADDED flg=0x10 (has extras) } to com.google.android.gms/.chimera.GmsIntentOperationService$PersistentTrustedReceiver
09-25 08:49:38.991  1167  1368 W InputDispatcher: channel '360a877 net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
09-25 08:49:38.991  1167  1368 E InputDispatcher: channel '360a877 net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
09-25 08:49:38.991  1167  1368 W InputDispatcher: channel '39229fd net.kwatts.powtools/net.kwatts.powtools.RidesListActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
09-25 08:49:38.991  1167  1368 E InputDispatcher: channel '39229fd net.kwatts.powtools/net.kwatts.powtools.RidesListActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
09-25 08:49:38.991  1167  1368 W InputDispatcher: channel '7b3578e net.kwatts.powtools/net.kwatts.powtools.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
09-25 08:49:38.991  1167  1368 E InputDispatcher: channel '7b3578e net.kwatts.powtools/net.kwatts.powtools.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
09-25 08:49:38.996  1167  1994 I WindowManager: WIN DEATH: Window{39229fd u0 net.kwatts.powtools/net.kwatts.powtools.RidesListActivity}
09-25 08:49:38.996  1167  5703 I ActivityManager: Process net.kwatts.powtools (pid 29672) has died: fore TOP
09-25 08:49:38.996  1167  1994 W InputDispatcher: Attempted to unregister already unregistered input channel '39229fd net.kwatts.powtools/net.kwatts.powtools.RidesListActivity (server)'
09-25 08:49:38.996  1167  1193 W libprocessgroup: kill(-29672, 9) failed: No such process
09-25 08:49:38.996  1167  1193 I libprocessgroup: Successfully killed process cgroup uid 10369 pid 29672 in 0ms
09-25 08:49:38.997   768   768 I Zygote  : Process 29672 exited due to signal (9)
09-25 08:49:39.001  1167  4462 I WindowManager: WIN DEATH: Window{7b3578e u0 net.kwatts.powtools/net.kwatts.powtools.MainActivity}
09-25 08:49:39.001  1167  4462 W InputDispatcher: Attempted to unregister already unregistered input channel '7b3578e net.kwatts.powtools/net.kwatts.powtools.MainActivity (server)'
09-25 08:49:39.003  1167  2338 I WindowManager: WIN DEATH: Window{360a877 u0 net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity}
09-25 08:49:39.003  1167  2338 W InputDispatcher: Attempted to unregister already unregistered input channel '360a877 net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity (server)'
09-25 08:49:39.006  1167  3520 I WindowManager: WIN DEATH: Window{161a911 u0 net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity EXITING}
09-25 08:49:39.036  1167  1192 I ActivityManager: Start proc 29792:net.kwatts.powtools/u0a369 for activity net.kwatts.powtools/.MainActivity
09-25 08:49:39.043 29792 29792 I kwatts.powtool: Late-enabling -Xcheck:jni
09-25 08:49:39.048   619  2060 W SurfaceFlinger: Attempting to set client state on removed layer: net.kwatts.powtools/net.kwatts.powtools.RidesListActivity#0
09-25 08:49:39.048   619  2060 W SurfaceFlinger: Attempting to destroy on removed layer: net.kwatts.powtools/net.kwatts.powtools.RidesListActivity#0
09-25 08:49:39.050   619   639 W SurfaceFlinger: Attempting to set client state on removed layer: net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity#1
09-25 08:49:39.050   619   639 W SurfaceFlinger: Attempting to destroy on removed layer: net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity#1
09-25 08:49:39.130   619   732 W SurfaceFlinger: Attempting to set client state on removed layer: net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity#0
09-25 08:49:39.130   619   732 W SurfaceFlinger: Attempting to destroy on removed layer: net.kwatts.powtools/net.kwatts.powtools.RideDetailActivity#0
09-25 08:49:39.138  1167  1198 W ActivityManager: setHasOverlayUi called on unknown pid: 29672
09-25 08:49:39.145   619   640 W SurfaceFlinger: Attempting to set client state on removed layer: Dim Layer for - Task=3016#0
09-25 08:49:39.145   619   640 W SurfaceFlinger: Attempting to destroy on removed layer: Dim Layer for - Task=3016#0
09-25 08:49:39.371 29792 29792 W kwatts.powtool: JIT profile information will not be recorded: profile file does not exits.
09-25 08:49:39.372 29792 29792 I chatty  : uid=10369(net.kwatts.powtools) identical 10 lines
09-25 08:49:39.372 29792 29792 W kwatts.powtool: JIT profile information will not be recorded: profile file does not exits.
09-25 08:49:39.389 29792 29792 I InstantRun: starting instant run server: is main process
09-25 08:49:39.401 29792 29810 I stetho  : Listening on @stetho_net.kwatts.powtools_devtools_remote
09-25 08:49:39.417 29792 29811 E libc    : Access denied finding property "vendor.debug.egl.profiler"
09-25 08:49:39.413 29792 29792 W net.kwatts.powtools: type=1400 audit(0.0:50895): avc: denied { read } for comm=45474C20496E6974 name="u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=19268 scontext=u:r:untrusted_app:s0:c113,c257,c512,c768 tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0
09-25 08:49:39.451 29792 29792 D net.kwatts.powtools [C:MainActivity] [M:onCreate] [L:293] : Starting...
09-25 08:49:39.470 29792 29792 D net.kwatts.powtools [C:MainActivity] [M:enableWritingToStorage] [L:1002] : We already have permission for writing to storage.
09-25 08:49:39.475 29792 29792 W Notification: Use of stream types is deprecated for operations other than volume control
09-25 08:49:39.475 29792 29792 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case
09-25 08:49:39.561 29792 29792 W kwatts.powtool: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
09-25 08:49:39.562 29792 29792 W kwatts.powtool: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
09-25 08:49:39.569 29792 29792 I AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead.
09-25 08:49:39.638 29792 29792 I chatty  : uid=10369(net.kwatts.powtools) identical 5 lines
09-25 08:49:39.640 29792 29792 I AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead.
09-25 08:49:39.704 29792 29797 I kwatts.powtool: Compiler allocated 4MB to compile void android.widget.TextView.<init>(android.content.Context, android.util.AttributeSet, int, int)
09-25 08:49:39.776 29792 29792 I kwatts.powtool: Rejecting re-init on previously-failed class java.lang.Class<android.databinding.ViewDataBinding$LiveDataListener>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/arch/lifecycle/Observer;
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.databinding.ViewDataBinding.<clinit>() (ViewDataBinding.java:121)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding net.kwatts.powtools.DataBinderMapperImpl.getDataBinder(android.databinding.DataBindingComponent, android.view.View, int) (DataBinderMapperImpl.java:56)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.MergedDataBinderMapper.getDataBinder(android.databinding.DataBindingComponent, android.view.View, int) (MergedDataBinderMapper.java:74)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.bind(android.databinding.DataBindingComponent, android.view.View, int) (DataBindingUtil.java:199)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.bindToAddedViews(android.databinding.DataBindingComponent, android.view.ViewGroup, int, int) (DataBindingUtil.java:327)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.setContentView(android.app.Activity, int, android.databinding.DataBindingComponent) (DataBindingUtil.java:306)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.setContentView(android.app.Activity, int) (DataBindingUtil.java:284)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void net.kwatts.powtools.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:310)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:7144)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7135)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1271)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2894)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at android.app.Activity android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, android.content.Intent) (ActivityThread.java:3049)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.LaunchActivityItem.execute(android.app.ClientTransactionHandler, android.os.IBinder, android.app.servertransaction.PendingTransactionActions) (LaunchActivityItem.java:78)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.TransactionExecutor.executeCallbacks(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:108)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.TransactionExecutor.execute(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:68)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1809)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
09-25 08:49:39.776 29792 29792 I kwatts.powtool:   at void android.os.Looper.loop() (Looper.java:193)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6680)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
09-25 08:49:39.777 29792 29792 I kwatts.powtool: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.arch.lifecycle.Observer" on path: DexPathList[[zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/base.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_dependencies_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_resources_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_0_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_1_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_2_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_3_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_4_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_5_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_sl
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.databinding.ViewDataBinding.<clinit>() (ViewDataBinding.java:121)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding net.kwatts.powtools.DataBinderMapperImpl.getDataBinder(android.databinding.DataBindingComponent, android.view.View, int) (DataBinderMapperImpl.java:56)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.MergedDataBinderMapper.getDataBinder(android.databinding.DataBindingComponent, android.view.View, int) (MergedDataBinderMapper.java:74)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.bind(android.databinding.DataBindingComponent, android.view.View, int) (DataBindingUtil.java:199)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.bindToAddedViews(android.databinding.DataBindingComponent, android.view.ViewGroup, int, int) (DataBindingUtil.java:327)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.setContentView(android.app.Activity, int, android.databinding.DataBindingComponent) (DataBindingUtil.java:306)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.setContentView(android.app.Activity, int) (DataBindingUtil.java:284)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void net.kwatts.powtools.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:310)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:7144)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7135)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1271)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2894)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.app.Activity android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, android.content.Intent) (ActivityThread.java:3049)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.LaunchActivityItem.execute(android.app.ClientTransactionHandler, android.os.IBinder, android.app.servertransaction.PendingTransactionActions) (LaunchActivityItem.java:78)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.TransactionExecutor.executeCallbacks(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:108)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.TransactionExecutor.execute(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:68)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1809)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.os.Looper.loop() (Looper.java:193)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6680)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:
09-25 08:49:39.777 29792 29792 I kwatts.powtool: Rejecting re-init on previously-failed class java.lang.Class<android.databinding.ViewDataBinding$LiveDataListener>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/arch/lifecycle/Observer;
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.databinding.ViewDataBinding.<clinit>() (ViewDataBinding.java:121)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding net.kwatts.powtools.DataBinderMapperImpl.getDataBinder(android.databinding.DataBindingComponent, android.view.View, int) (DataBinderMapperImpl.java:56)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.MergedDataBinderMapper.getDataBinder(android.databinding.DataBindingComponent, android.view.View, int) (MergedDataBinderMapper.java:74)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.bind(android.databinding.DataBindingComponent, android.view.View, int) (DataBindingUtil.java:199)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.bindToAddedViews(android.databinding.DataBindingComponent, android.view.ViewGroup, int, int) (DataBindingUtil.java:327)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.setContentView(android.app.Activity, int, android.databinding.DataBindingComponent) (DataBindingUtil.java:306)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.setContentView(android.app.Activity, int) (DataBindingUtil.java:284)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void net.kwatts.powtools.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:310)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:7144)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7135)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1271)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2894)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.app.Activity android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, android.content.Intent) (ActivityThread.java:3049)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.LaunchActivityItem.execute(android.app.ClientTransactionHandler, android.os.IBinder, android.app.servertransaction.PendingTransactionActions) (LaunchActivityItem.java:78)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.TransactionExecutor.executeCallbacks(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:108)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.TransactionExecutor.execute(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:68)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1809)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.os.Looper.loop() (Looper.java:193)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6680)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
09-25 08:49:39.777 29792 29792 I kwatts.powtool: Caused by: java.lang.ClassNotFoundException: Didn't find class "android.arch.lifecycle.Observer" on path: DexPathList[[zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/base.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_dependencies_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_resources_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_0_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_1_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_2_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_3_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_4_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_slice_5_apk.apk", zip file "/data/app/net.kwatts.powtools-a0-UUVpilCa3604Ta4rk4Q==/split_lib_sl
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.databinding.ViewDataBinding.<clinit>() (ViewDataBinding.java:121)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding net.kwatts.powtools.DataBinderMapperImpl.getDataBinder(android.databinding.DataBindingComponent, android.view.View, int) (DataBinderMapperImpl.java:56)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.MergedDataBinderMapper.getDataBinder(android.databinding.DataBindingComponent, android.view.View, int) (MergedDataBinderMapper.java:74)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.bind(android.databinding.DataBindingComponent, android.view.View, int) (DataBindingUtil.java:199)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.bindToAddedViews(android.databinding.DataBindingComponent, android.view.ViewGroup, int, int) (DataBindingUtil.java:327)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.setContentView(android.app.Activity, int, android.databinding.DataBindingComponent) (DataBindingUtil.java:306)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.databinding.ViewDataBinding android.databinding.DataBindingUtil.setContentView(android.app.Activity, int) (DataBindingUtil.java:284)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void net.kwatts.powtools.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:310)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:7144)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:7135)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1271)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2894)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at android.app.Activity android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, android.content.Intent) (ActivityThread.java:3049)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.LaunchActivityItem.execute(android.app.ClientTransactionHandler, android.os.IBinder, android.app.servertransaction.PendingTransactionActions) (LaunchActivityItem.java:78)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.TransactionExecutor.executeCallbacks(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:108)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.servertransaction.TransactionExecutor.execute(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:68)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1809)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.os.Looper.loop() (Looper.java:193)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6680)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:493)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:858)
09-25 08:49:39.777 29792 29792 I kwatts.powtool:
09-25 08:49:39.821   879 13582 D NuPlayerDriver: NuPlayerDriver(0xea613a00) created, clientPid(29792)
09-25 08:49:39.826   879 29818 D GenericSource: FileSource remote
09-25 08:49:39.834   877 25742 D MediaBufferGroup: creating MemoryDealer
09-25 08:49:39.835   879 29817 D NuPlayerDriver: notifyListener_l(0xea613a00), (1, 0, 0, -1), loop setting(0, 0)
09-25 08:49:39.970 29792 29792 D OpenGLRenderer: Skia GL Pipeline
09-25 08:49:40.075 29792 29792 W kwatts.powtool: Accessing hidden method Landroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, reflection)
09-25 08:49:40.094 29792 29792 D android.widget.GridLayout: horizontal constraints: x2-x0>=936, x2-x1<=161, x1-x0<=454 are inconsistent; permanently removing: x2-x1<=161.
09-25 08:49:40.132 29792 29820 I Adreno  : QUALCOMM build                   : 3f88ca2, I42f6fe38fb
09-25 08:49:40.132 29792 29820 I Adreno  : Build Date                       : 07/13/18
09-25 08:49:40.132 29792 29820 I Adreno  : OpenGL ES Shader Compiler Version: EV031.24.00.00
09-25 08:49:40.132 29792 29820 I Adreno  : Local Branch                     : 50.04
09-25 08:49:40.132 29792 29820 I Adreno  : Remote Branch                    :
09-25 08:49:40.132 29792 29820 I Adreno  : Remote Branch                    :
09-25 08:49:40.132 29792 29820 I Adreno  : Reconstruct Branch               :
09-25 08:49:40.132 29792 29820 I Adreno  : Build Config                     : S P 4.0.10 AArch64
09-25 08:49:40.130 29792 29792 W RenderThread: type=1400 audit(0.0:50896): avc: denied { read } for name="u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=19268 scontext=u:r:untrusted_app:s0:c113,c257,c512,c768 tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0

New Logo/Icon proposal

Good day sir. I am a graphic designer and i am interested in designing a logo for your good project. I will be doing it as a gift for free. I just need your permission first before I begin my design. Hoping for your positive feedback. Thanks

Frequent disconnects without reconnect

I feel like the app is disconnecting a lot (or more importantly not reconnecting properly). This might have been my fault, changing from using the sharedPreference. I will look through the changes and see if I can get the reconnects working better. Any ideas are welcomed.

CircleCI builds are failing

Probably due to out of memory. Maybe because of all the test dependencies? We should choose which ones we need, or delete them and add as needed.

Add option of using features w/out OW, using the GPS and other sensor data on device

(Right now this setting this as a discussion, not entirely sure what features I'm asking for yet :-)

We get requests to support other boards, and something that I thought about while snowboarding last week and really enjoying/getting use to what our app provides, we may be able to do a small subset of features using mobile device sensor data. GPS for speed + top speed, speed alerts, trip logging/logged rides, and possibly even a rough battery estimate (assuming 100% at the beginning of the ride and lowering over distance traveled for the ride).

Further, we can add device sensor data to the existing OW data and enhance the dashboard and logged rides, including,

  • ambient temp
  • mobile device axis (can detect when I fall on my ass)
  • accelerometer
  • heart rate
  • light (in lux units)

For Android there are helpers (https://source.android.com/devices/sensors/sensor-types) providing models from the raw sensor data, things that can tell if your walking, tilt of the device, things like that.

Thoughts?

Crashes all the time

I am updating the app per Issue #76 to have some options for Two-X and possibly other battery modders. It is difficult to use and test ponewheel with it crashing all the time. I think I have identified a very close formula to translate voltage to battery remaining:

100/(1+4^(51.2-volts))

and I have coded it into a fork, but I am having trouble testing this formula because ponewheel keeps crashing, so I can't get a full ride log file. Once I can generate some accurate tests I plan to open a merge request.

Does ponewheel crash all the time for anyone else? I have a Galaxy J3 running Android 8.1.0. Is this a known issue at this point, or is it that ponewheel is stable for everyone but me?

Small screen display issues

I attached a screenshot of the pOnewheel app running on my Samsung Galaxy Alpha (an older phone running 5.0.1). Please notice that the 5 shapings contain wrapped words. Also, look just above at the battery section. Due to wrapped words, the text does not all fit in the box.

If you can detect the screen resolution and choose a smaller font at lower screen sizes, that would be helpful.

This screenshot is taken while running the beta app from the app store.

screenshot_2017-12-29-10-18-45

Debug setting does nothing

When I toggle ON this Debug option setting:

only this empty layout appears in main screen:

  • No code is associated with this view
  • Settings description tells that it should enable DebugDrawer. But build.gradle has dependency which removes DebugDrawer from release build.
    releaseImplementation 'io.palaima.debugdrawer:debugdrawer-no-op:0.7.0'

Can you describe how this setting should behave? Maybe I could fix it.

Current targetSdkVersion 21 doesn't met mandatory requirements

Since 2018 November it is required that all applications target at least Android SDK version 26. Docs

I have looked to source code very briefly and see some changes which will be required to increase version:

  • Runtime permissions
    • Location
    • External storage
  • Doze mode, foreground services. Probably clean solution would be to refactor Wake lock to foreground service

Do you know any additional features which app uses and needs to update while migrating to target version 26?

Are you willing to accept contributions (PRs) to solve this issue?

batteryTemp not right

BatteryTemp only returns on start for me, and always returns the array [25,30] for me. Does it every return anything else for you? Also, I think the 0'th element of the array is what you are supposed to use, not the 1st element. The official OW app says my battery is 25°C, not 30°C. So this part may be a tiny app bug in OWDevice.java

I am wondering if maybe I broke my sensor when installing my Two-X, because I am charging it now, and still it reports 25°C (77°F). I have never known a battery not to warm up at least a little when charging. If someone else ever gets something other than [25,30] from OnewheelCharacteristicBatteryTemp, I would be interested.

I care because I wanted to lay down the framework for updating the results of battery remaining based on the temperature. I can use the controller temperature, which seems to be working, to estimate what the battery would be seeing. But, it seems like I would want to get it from the horses mouth, if I can.

No stats after firmware update

Hey,
I just cloned the repo and while the app connects fine, there's no stats available. It may be the firmware update. Can you repro?

Does ponewheel work with OW+ XR? (confirmed, works great)

XR = Future Motion secures the spot at the top for electric boards - it adds just a bit of torque to get over those roots on the steep trails, but it's the bigger battery that does it - that was crushing me w/ OW+, constantly having to watch the battery %. No more.

When I get time I'll see if there are added BLE characteristics or configurations.

It would still be cool to be able to edit/modify the firmware, risky stuff, but would be fun to make custom shapes and test pushing beyond pushback limits.

UI speed and other cards are freezing

After connecting to OW, the UI looks good, everything updates. Then after a certain amount of time (not sure what the triggers are yet) certain cards stop working, actually all do except the characteristics view, those do display the list of OW stats.

The debug drawer also freezes, so wasn't able to get the logs, I'll look into getting them - in the meantime, there is a screen dump at https://www.youtube.com/edit?o=U&video_id=dSupXo_52cw

Running on a Google Pixel - [ro.vendor.build.fingerprint]: [google/sailfish/sailfish:8.1.0/OPM2.171019.029/4657601:user/release-keys]

[Feature Request] Dropbox integration

It would be very handy if the app could automagically upload your newest log files to dropbox or some other cloud storage service.

As it stands now, one needs a third party app to find the log files and share them somewhere else.

Pint Support

Hey all,

I just got my pint in the mail today and suprise suprise my nor any 3rd party app works with it as far as I know. It is the same behavior as when gemini first dropped, where no values can be read unless the board is first unlocked by the official app.

I suspect the hash seed/key (not sure on terminology) just changed and the process is still the same but I'm not sure, I intend to investigate when I can.

I know for gemini we had a crack team working in a thread on here and I was kinda hoping to reassemble the gang, I wasn't sure how else to contact everyone. I can test anything anyone thinks of if I'm the only one with a pint board so far.

Accessing logged rides crashes app

Testing out the database updates, sometimes it opens the logged ride, and as soon as I try and move the map I get a crash.

The exception that gets thrown:

11-29 10:08:03.337 9197 9268 E AndroidRuntime: Process: net.kwatts.powtools, PID: 9197 11-29 10:08:03.337 9197 9268 E AndroidRuntime: at net.kwatts.powtools.MapActivity.setupChart(MapActivity.java:250) 11-29 10:08:03.337 9197 9268 E AndroidRuntime: at net.kwatts.powtools.MapActivity.lambda$onCreate$0$MapActivity(MapActivity.java:89) 11-29 10:08:03.337 9197 9268 E AndroidRuntime: at net.kwatts.powtools.MapActivity$$Lambda$0.run(Unknown Source) 11-29 10:08:03.337 9197 9268 E AndroidRuntime: at net.kwatts.powtools.App.lambda$dbExecute$25$App(App.java:58) 11-29 10:08:03.337 9197 9268 E AndroidRuntime: at net.kwatts.powtools.App$$Lambda$0.run(Unknown Source) 11-29 10:08:03.349 1149 3228 W ActivityManager: Force finishing activity net.kwatts.powtools/.MapActivity 11-29 10:13:01.039 1149 3228 W ActivityManager: Force finishing activity net.kwatts.powtools/.RidesListActivity 11-29 10:13:01.140 1149 3228 W ActivityManager: Force finishing activity net.kwatts.powtools/.MainActivity

And other times this:

11-29 10:21:54.650 11980 12343 E AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1 11-29 10:21:54.650 11980 12343 E AndroidRuntime: Process: net.kwatts.powtools, PID: 11980 11-29 10:21:54.650 11980 12343 E AndroidRuntime: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6892) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1048) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.requestLayout(View.java:19781) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.requestLayout(View.java:19781) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.requestLayout(View.java:19781) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.requestLayout(View.java:19781) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.requestLayout(View.java:19781) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.requestLayout(View.java:19781) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.requestLayout(View.java:19781) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.setBackgroundDrawable(View.java:18356) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.setBackground(View.java:18247) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at android.view.View.setBackgroundColor(View.java:18209) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at net.kwatts.powtools.MapActivity.setupChart(MapActivity.java:250) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at net.kwatts.powtools.MapActivity.lambda$onCreate$0$MapActivity(MapActivity.java:89) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at net.kwatts.powtools.MapActivity$$Lambda$0.run(Unknown Source) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at net.kwatts.powtools.App.lambda$dbExecute$25$App(App.java:58) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at net.kwatts.powtools.App$$Lambda$0.run(Unknown Source) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 11-29 10:21:54.650 11980 12343 E AndroidRuntime: at java.lang.Thread.run(Thread.java:761) 11-29 10:21:54.654 1149 2453 W ActivityManager: Force finishing activity net.kwatts.powtools/.MapActivity

I'll dig into it deeper as well.

Android 4.4 support?

I'm looking into cheap wrist Android phones, like the DM98 or LEM4, but most come only with Android 4.4.
What's requiring Android 5.0+ in POnewheel?

Need accurate fuel gauge for use with OW+ with Two-X upgrade

Kevin and I were talking about how those of us with Two-X OW+s could have accurate remaining battery indication.

The Two-X replaces 2.5Ah OW+ battery with 5Ah battery otherwise the same. But it seems the board insists on assuming it has 2.5Ah battery. Symptom is, after full charge, app says 100%. Say you use up 1.25Ah, then the app will say 50%, as if it had a 2.5Ah battery still. But with Two-X that should be 75%.

Kevin suggested (and I am fricken all about) putting a settings switch for Two-X users that corrects the gauge somehow. Is it possible to accurately estimate battery remaining with the info available to us?

My two-x forum is full of all my poor customers wondering how the hell they're gonna know how much juice they got left.

Thanks!
Soren

[email protected]
[email protected]

Battery Temperature Not Logged

I noticed that battery temperature is not being logged, and since that statistic is very important when trying to understand battery performance in the cold Winter I think it should be included.

I found in the OWDevice.java file where all of the Characteristics are pulled in from the board and how only some are selected to be logged, so I could add it myself but don't understand the process of using git yet. This may be my chance to learn.

There is a Characteristic called SafetyHeadroom that may be interesting to look at. It could have to do with the regen setting, but if it is instead some sort of dynamic measurement of power or otherwise? I'm curious if anyone here knows. Also is there a separate area (board) for us to discuss things or ask questions/discuss the code without opening "Issues" here? Sorry for being a nube.

[FR] Speed + battery display on Android Wear(Watch)

Android Wear support

Apparently the iOS watch does all this!
• Low battery alert
• Regeneration alert (battery overcharge warning when going downhill)
• Point of no return message (50% battery charge left)
• Battery fully charged notification
• New top speed message
• Wheelslip detection
• Consumption display: tells you how much percentage of a full battery charge you have already burned
• Regeneration display: tells you how much percentage of a full battery charge you have regenerated (when going downhill or braking)
• Estimated remaining range according to your current riding profile
• Total odometer display
• Speed display
• Board live movement display: shows the movement of your board
• Auto connect to your favorite Onewheel
• Board name: give your Onewheel a name
• Apple Watch app
• Social sharing and online leaderboards
• GPS track recording

Identify + fix BLE re-connection issue

Whenever there is a disconnect to OW device that isn't done by the user - for example, turning off the OW without hitting the "disconnect" button, the app has problems trying to reconnect. The workaround could be either fully closing and restarting the app and/or turning on and off bluetooth in the device settings.

I'm not sure what is going on, logs aren't showing much, so adding verbose logs in the BluetoothImpl may shed light. If there is a solid open sourced + maintained library that deals with the Android BLE buggy af stack I'm all about moving to it...

How I added an on-the-go battery for OW+...

Not an issue/feature request/etc more of wanted to pass the notes on my latest project to team... I finally succeeded in getting a battery pack and charger etc to be able to charge on the go. Now can finally make it to the ocean on the golden gate park runs...

img_20171216_153225

You need,

Then it's solder city converting everything to XT60 plugs. For charging the battery w/ the laptop power cable the solar charger is set to 42V/1.5A and for charging the OW+ from the battery solar charger is set to 58V/3.5A

If any of you are going down this rabbit hole let me know, took a bit of time to get this working with electrical smoke and bit of scare that I don't wish on anyone :)

Multiple small issues and suggestions

Hi,
I'm running the Google Play version (2.3), so I'm afraid what I'm gonna say next has long been fixed. That's why I'll bundle them in a single ticket here. By the way, I'd love some documentation on how to build this —I've never built an android app before!

  1. Selecting the "Metrics Units" checkbox does not work over app restart (option is selected ok, but metrics units won't show up until you unselect/reselect it in the settings).
  2. When disconnected/reconnected (board power cycle for example), the state of the pads is not updated until you step back on it
  3. Damn, I forgot what it was... Will edit later I guess.

EDIT:
I guess it was a couple suggestions:

  1. Optional speed alert that would play a sound when you go beyond a set speed. Additional safety against high-speed nosedives.
  2. Optional charge alert that would play a sound when you reach a certain level. Would help you stop recharging before 100% when starting from a hilltop.

Add a "donate" button under settings

One thing that I've been asked before is how to donate, what about adding a donate option, mentioning it would go to the contributors their time (and likely to their OW funds). Is there an easy service that would do this? Even better if it actually showed contributions and total, an incentive for people to donate.

Riding Focused Display Enhancement Idea

I am thinking it would be useful to have a "Riding Focused Display" instead of the current display. Even the official OW app display is not optimized and designed to be most useful to look at while riding.

For instance, Speed and Range should be the largest size possible along with anything else that is useful to see at a glance while riding.

My perfect app would allow several color keyed line graphs of user selected statistics (battery voltage, amps, angles, speed) to be graphed out ideally on the same main display screen but also could be on another screen reached by swiping.

Hopefully some day I will be able to help with the coding. I've been slowly looking through it and it looks pretty easy to understand.

pOnewheel v3.4 - Fatal exception after set Logging Frequency

Actual behavior

Should after user set Logging Frequency, then click Ok to save it. Applications must be stable, and run well on the device.

Expected behavior

After setting up Logging Frequency, then click OK to save it. Next, press the back button on the device, suddenly the application crashes and stops. And when I want to reenter the app, the app continues to stop, so the ability to get into the app can not be done anymore.

How to reproduce

  • Launch app.
  • Allow application is requesting permission to turn on Bluetooth. Press Yes.
  • Click on three dots in the top right corner of the display screen.
  • Select and open Settings feature.
  • Press or open the Frequency Logging feature.
  • Add 10 zeros, so be 10000000000, then Press OK.
  • Press the back button on the device.You will get into trouble as I have experienced.

Information

  • Device: Nubia n2 lite
  • Android version: 8.1.0
  • Application version: 3.4

Recording of the bug

https://youtu.be/1B_ytm2iKFU

Databinding characteristics are hard to read/maintain

It's hard to figure out whats going on in main_activity.xml:
android:layout_row="53"
android:text='@{owdevice.deviceReadCharacteristics.get(4).ui_name}'

The hardest thing is the specified row. I'm pretty sure there aren't 53 rows and I don't know if they are all showing up. I think it would be nicer to not specify the row and put them in order in the xml.

Less hard to figure out, but not ideal is the 4, I think this means I need to find the 5th item added to deviceReadCharacteristics? I tried to change deviceReadCharacteristics to a hashmap, and I might be tempted to go back to that, but I haven't done databinding yet so I'm not quite sure what I'm doing.

[Discussion] Kotlin

How do you guys feel about adding in a little bit, or a lot of Kotlin?

Would it motivate you to contribute more or less to the project?

[FR] File maintenance in app

  • Delete files

  • see details about file in list view

    • trip length
    • nicely formatted date
    • maybe a mini-map?
    • maybe sort/filter the list?
  • "share" files? formatted post to facebook/twitter?

this would all probably be more manageable if the logs were actually in DB instead of files

Boosted Board & others support

It would be awesome to support multiple boards. I don't know anyone else with a board (other than onewheel). Looks like boosted has an iOS app but Android has been missing for years.

Inboard has a nice iOS app (not as good as OW) but for Android it can only flash new firmware.

Add custom shaping to ponewheel

It looks to be fairly straight forward thanks to @nanouX #86 (comment)

Initial implementation can be simple, something like another card with a slider or dropdown to set the values 3 different values. Always the bonus points for a better way to show it in the UI.

getStatusMode in sharedPreferences

What is the reason for putting getStatusMode() in sharedPreferences? It is wrong on startup (still set to 2) sometimes, like if the app crashed. I think it would be better to store this under BluetoothUtilImpl, then have MainActivity access it via getBluetoothUtil().getStatusMode(), or something else like that.

I am adding a periodic characteristic walk. I want it for battery temperature, but I also thought other things might want it. In doing so, I noticed a number of issues with other scheduled tasks. Most notably the sendKeyChallengeForGemini, a new one is registered for each disconnect and reconnect. I have had 5 of them going at any giving time, firing off 5 challenges every 15 seconds. I can easily fix that by moving the Handler to onCreate in MainActivity and check getStatusMode() == 2 first before issuing the challenge. That is how I came across this. And, in working on it, I have eliminated some startup issues and some crashing issues.

If you see no objections, I will remove getStatusMode and setStatusMode from sharedPreferences and move that functionality into BluetoothUtill / BluetoothUtilImpl.

Since battery temperature is only reported on 5°C changes, I don't want to catch it only when it comes in. When it flips, it is enough of a difference that my temperature based recalculations can show the battery remaining change quickly up and down. By pulling the temperature every 1 or 2 minutes, I can smooth that out. It also seemed like a good frequency to pull last error code.

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.