jonasoreland / runnerup

A open source run tracker
GNU General Public License v3.0
719 stars 271 forks source link

Feature Request: Support for Pebble Smartwatch #98

Closed RunningCl0ud closed 8 years ago

RunningCl0ud commented 9 years ago

It would be very nice to have the active workout to be seen on the pebble smartwatch.

jonasoreland commented 9 years ago

yes indeed...but i don't own a pebble....so it's very hard

RunningCl0ud commented 9 years ago

I was hoping that the people at Pebble would lend you one https://github.com/pebble But maybe that is a naive thought? :-)

powellc commented 9 years ago

@jonasoreland I'll buy one and send it to you, no questions asked. Heck, I don't even care how long it takes you to get to this feature, just so long as it's in the pipeline. Drop me an email: colin.powell+rup@gmail.com

RunningCl0ud commented 9 years ago

I think that @powellc has a great idea! ;-) @jonasoreland And I have learned to build my first watchface to see if I can understand some coding to help in any way in the future.

Cagier commented 8 years ago

I have looked into this a bit and it actually seems very straightforward and can be accomplished in a few lines of code. Apparently there is a sports API already built into the pebble and so NO WATCHFACE IS REQUIRED. This is what runkeeper and other sports apps use and there is some apparently simple sample code here -> https://github.com/pebble/pebble-sdk-examples/blob/master/sports-demo/SportsDemo-Android/app/src/main/java/com/example/PebbleKitExample/ExampleSportsActivity.java More info here: http://developer.getpebble.com/guides/mobile-apps/android/android-sports/

I don't have a machine that I can compile android apps on but I am more than willing to test any apk with my android/pebble combination. However, I think you might be able to test this without a pebble as there is a pebble emulator in the sdk. Let me know if I can be of any assistance with this.

I know I am probably over-simplifying it a bit but it does seem achievable and would be a great enhancement. Hopefully that info is some help/encouragement... ;)

nebmo commented 8 years ago

I could give this a try if no one else wants to

nebmo commented 8 years ago

Note: A physical Pebble is needed to test PebbleKit Android apps, since the emulator cannot communicate with a phone :(

nebmo commented 8 years ago

Made a PR (https://github.com/jonasoreland/runnerup/pull/336) with support for:

  1. start, pause, resume activity from watch
  2. See activity time, distance, pace
  3. name and icon in watch

Now the pace displayed is total pace for activity, but maybe i should change it to lap pace as we have on android wear?

nebmo commented 8 years ago

@powellc, so you still gonna send me a Pebble? :)

RunningCl0ud commented 8 years ago

Wow this is going to happen. Great @nebmo ! :+1:

RunningCl0ud commented 8 years ago
  1. In my Forerunner305 there was an option to see what you wanted thru a couple of "windows" that you "made up" yourself. So you could choose to show both lap pace, total pace, distance and heart rate in the same window. Is that possible with runnerup?
  2. Can I be of any help by testing with my Pebble?
nebmo commented 8 years ago

@RunningCl0ud, problem is that I didnt create a pebble app, I used the Sports app on Pebble. And that has 3 hardcoded fields for distance, time and pace. But it would be possible to have a configuration in runnerup about what kind of pace to show (activity, interval or lap pace).

RunningCl0ud commented 8 years ago

I do not know what app that is because there are a lot of them in the Pebble appstore. I know pebble apps that are similar to the Garmin Forerunner 305 and that would be a fine outcome with Runnerup. But your idea is a good start

Cagier commented 8 years ago

@RunningCl0ud - the facility that we used is not really an app in that it is NOT in the pebble appstore. It is effectively a "built-in" app that comes preloaded on the pebble and has three fixed fields (Time, Distance and Speed/Pace). However, you can toggle the API to make it display either PACE or SPEED and this would require a small change in RunnerUp to allow this toggle (in the same way as RunKeeper does with it's "Primary Display" option) but at the moment this first deployment has "Pace" only. You can also select units - which are miles or kilometres. This is automatically done for you, depending on your RunnerUp preferences.

Unfortunately, the API/app does not allow for HEARTRATE at the moment. Although with a small inelegant fudge you could theoretically (and easily) easily send it if you were prepared to leave it labelled as "speed" or "pace". I tried to cajole nebmo into this but he hasn't given in yet! :stuck_out_tongue_winking_eye: I have also emailed Pebble support to suggest HEARTRATE as a third toggleable option on that final line but have had no response back yet on that particular feature request.

However, I think you might actually be looking to display more than three items at a time though and if you wanted to do that then you would also have to build a new custom watchface app and manually load that when you wanted to run. That is do-able but a bit more manual than the current sports API (which appears automatically) and would also take up 1 of the valuable 8 slots on the pebble. It would also leave the text a bit small and I already find it a struggle to read the current data while on the run so I don't know if everyone would want that.

The current solution is very elegant and works better than RunKeeper as it lets you START the activity as well as Pause/Resume. I'm sure the Pace/Speed toggle will follow shortly but requires adding additional parameters into the already cluttered preferences screen and reading them before sending the data to the pebble.

Regarding testing, I did the testing for nebmo after I pointed him to the sample code above and so any bugs are my fault as he doesn't have a pebble himself! The good news is that I think it has already being merged into the current master so it should be out in the next release. I'm currently using the "beta" and I can attest that it is well worth the wait!

RunningCl0ud commented 8 years ago

Well then it is a better idea than I first thought of. Good! I am looking forward to the next release. :+1:

In the case of the Forerunner 305, I can have 3(at least?) home screens to freely jump between when I am running and the screens are easy to modify to view 1 to 4 objects in your liking, whether that will be pace, time, hr, lap time and so on. Of course the text gets smaller the more items you want to show. But maybe someone can pick that idea up later on I hope?

I did a race yesterday and would have benefited of having the pace shown. :wink:

RunningCl0ud commented 8 years ago

Is there a repository where i can download the beta and test it as well? Would have been nice!

nebmo commented 8 years ago

Maybe Jonas can release beta now?

jonasoreland commented 8 years ago

yes, i hope/plan to make a release this weekend /Jonas

On Tue, Oct 13, 2015 at 11:05 PM, Niklas Weidemann <notifications@github.com

wrote:

Maybe Jonas can release beta now?

— Reply to this email directly or view it on GitHub https://github.com/jonasoreland/runnerup/issues/98#issuecomment-147853744 .

NiklasSavenstedt commented 8 years ago

I've tested the Pebble integration and it works great. Just a thought. Would there be a problem, setting metric or imperial at whatchapp-start. Just looks a bit weird when it starts with imperial, which I guess is default in watch, and switches to metric when the workout starts. Too bad the Pebble Sports-API don't send data when the other buttons on the watch is pushed, cause then we could have used them to trigger changes on what to display. Great work!

Cagier commented 8 years ago

I'm not sure when this version is actually going live (or if it has already). A small annoyance in the beta is that although you can pause/resume when the screen is locked, you can only Start an activity if the screen is unlocked. This caught me out in a couple of organised events recently. Obviously the workaround is to start and then pause straight away until the event starts but I thought this might be straightforward to fix as the button-press obviously reaches the app if you can pause when in the same state. Apart from that, it's BRILLIANT!

nebmo commented 8 years ago

That is a bug in RunnerUp start fragment and not the Pebble code I think

jonasoreland commented 8 years ago

i can confirm that this bug is not in the pebble code as such, it exists e.g also for android wear...

i've known about it for a while, but have not started to fix it :(

/Jonas

On Fri, Nov 6, 2015 at 3:07 PM, Niklas Weidemann notifications@github.com wrote:

That is a bug in RunnerUp start fragment and not the Pebble code I think

— Reply to this email directly or view it on GitHub https://github.com/jonasoreland/runnerup/issues/98#issuecomment-154417713 .

Cagier commented 8 years ago

Ok, thanks for the fast reply guys! A workaround might be to keep the screen unlocked until an activity commences? Anyway it's already logged as an issue so that answers that. Cheers

RunningCl0ud commented 8 years ago

Yeah I am used to keep the screen unlocked when starting a race because otherwise it takes a couple of secs to start the gps and all of the other runners are ahead of me before I have green lite. :wink:

henrik-andreasson commented 8 years ago

I really like the pebble support, I've tried it only shortly but it looks good thanks! I was wondering if it is possible to start runner up from the watch as strava starter does.

I've also asked the author of strava started if he could share the source as a alternative way and then build Runner Up starter.

https://play.google.com/store/apps/details?id=com.giovannizilli.pebblestrava.app&hl=en

audax commented 8 years ago

I'd absolutely love the option to display my heart rate instead of speed or pace.

Which dimension do I have to use here? I am new to the code and never even built the app... https://github.com/jonasoreland/runnerup/pull/336/files#diff-eeea7410ff97b3c831bde66a03ffd14eR128 ? Until a better way to do this is found, I'll probably just use a fork with that change.

jonasoreland commented 8 years ago

Dimension.HR

/Jonas

On Sun, Nov 8, 2015 at 12:32 PM, Jens Kadenbach notifications@github.com wrote:

I'd absolutely love the option to display my heart rate instead of speed or pace.

Which dimension do I have to use here? I am new to the code and never even built the app...

https://github.com/jonasoreland/runnerup/pull/336/files#diff-eeea7410ff97b3c831bde66a03ffd14eR128 ? Until a better way to do this is found, I'll probably just use a fork with that change.

— Reply to this email directly or view it on GitHub https://github.com/jonasoreland/runnerup/issues/98#issuecomment-154808107 .

audax commented 8 years ago

Thank you very much!

lu-x commented 8 years ago

Hey there! One question: Do i have to install the pebble app or is it working with gadgetbridge, too?

Cagier commented 8 years ago

The gadgetbridge page mentions that the mi band can display sports data. All Runnerup does is to use the standard sports API so I imagine it should work fine (but I don't think it has been tested). If you prove that it does work then please post back here in case anyone else is considering the same approach in the future. Cheers

lu-x commented 8 years ago

Great, thanks! I'll try this out.

Am 18. Januar 2016 10:29:54 MEZ, schrieb Keith Garland notifications@github.com:

The gadgetbridge page mentions that the mi band can display sports data. All Runnerup does is to use the standard sports API so I imagine it should work fine (but I don't think it has been tested). If you prove that it does work then please post back here in case anyone else is considering the same approach in the future. Cheers


Reply to this email directly or view it on GitHub: https://github.com/jonasoreland/runnerup/issues/98#issuecomment-172474078

Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.

lu-x commented 8 years ago

It currently doesn't seem to work. The sports data is not updated.

danielegobbetti commented 8 years ago

Short summary for @jonasoreland there is nothing to "fix" on your side, you're using pebblekit that checks if the official pebble app is connected to the pebble. It does so by the means of a content provider. If Gadgetbridge would override that content provider it wouldn't be possible for user to have both Gadgetbridge and the official app installed at the same time. The good news is that we can probably work around this limitation. As said, it has nothing to do with your app (which I discovered thanks to the post of @kas70 and find pretty good! Congrats!) and we will try if we manage to solve the issue in a clean way.

@kas70 please see the relevant issue on the gadgetbridge repository (https://github.com/Freeyourgadget/Gadgetbridge/issues/130) if you intend to follow the developments.

jonasoreland commented 8 years ago

thx for info. (i'm quite clueless on this issue since I don't own a pebble)

/Jonas

On Thu, Jan 21, 2016 at 2:44 PM, Daniele Gobbetti notifications@github.com wrote:

Short summary for @jonasoreland https://github.com/jonasoreland there is nothing to "fix" on your side, you're using pebblekit that checks if the official pebble app is connected to the pebble. It does so by the means of a content provider. If Gadgetbridge would override that content provider it wouldn't be possible for user to have both Gadgetbridge and the official app installed at the same time. The good news is that we can probably work around this limitation. As said, it has nothing to do with your app (which I discovered thanks to the post of @kas70 https://github.com/kas70 and find pretty good! Congrats!) and we will try if we manage to solve the issue in a clean way.

@kas70 https://github.com/kas70 please see the relevant issue on the gadgetbridge repository (Freeyourgadget/Gadgetbridge#130 https://github.com/Freeyourgadget/Gadgetbridge/issues/130) if you intend to follow the developments.

— Reply to this email directly or view it on GitHub https://github.com/jonasoreland/runnerup/issues/98#issuecomment-173573725 .

ashimokawa commented 8 years ago

We have solved the issue on our end in a dirty way but will clean that up for the next release. So runnerup is now working quite nicely with Gadgetbridge. :+1:

Cagier commented 8 years ago

I guess we can close this issue now as the code is live and working. (I use this feature every time I run and it is brilliant!)

GuillaumeAmat commented 8 years ago

@Cagier I just install RunnerUp in order to abandon RunKeeper and I already love it. But I liked to see my speed displayed on my Pebble and I don't find any setting toggle to switch between pace and speed.

Is it implemented like it was said in a previous comment?

Thanks

djibux commented 6 years ago

@audax, did you manage to display heartrate? That would be a killer feature for me (and I don't care if it's labeled pace…)

audax commented 6 years ago

@djibux I think I did, but I can't find the diff. I can however point you to the right place in the code: https://github.com/jonasoreland/runnerup/blob/1844222ffb76494cd9673623956b2a1f92b92f45/app/latest/java/org/runnerup/tracker/component/TrackerPebble.java#L125

Change data.addString(Constants.SPORTS_TIME_KEY, formatter.format(Formatter.Format.TXT_SHORT, Dimension.TIME, workoutInfo.get(Scope.ACTIVITY, Dimension.TIME))); to data.addString(Constants.SPORTS_TIME_KEY, formatter.format(Formatter.Format.TXT_SHORT, Dimension.HR, workoutInfo.get(Scope.ACTIVITY, Dimension.HR))); and that should probably work.

Maybe play around and use other constants from the pebble sdk. You can find them here: https://developer.pebble.com/docs/pebblekit-android/com/getpebble/android/kit/Constants/