I’ve been working on a near complete re-write of Tracks2Miles over the last couple of weekends months. It’s taken so long for a couple of reasons, when the weather was good I just wanted to be outside running/cycling and for the (larger) period when it was grim out just not wanting to spend any more time writing code after doing it all day at work.
A number of major changes have been made, but the one that is likely to be most noticeable is the move to using Fragments for the layout of the GUI. This means that I’ve been able to create some layouts for devices. There are now 3 layouts:
Small size screen
“Normal” size screen
Tablet size screen
I know that a tablet layout for Tracks2Miles may seam a little strange since it started out as just a way to upload routes recorded by My Tracks and the image of a guy out jogging with a 10.1″ Galaxy tab strapped to their arm is a little stupid. But since adding the ability to view the timeline of workouts and to manually enter workouts it has started to make some more sense. That and the stats* says there are at least 31 tablet (running Android 3.1/3.2, there may be more on 4.x+) users already out there. Hopefully this new layout will pull in some more tablet users as (IMHO) looks a lot better than the phone view scaled up.
The other big change is the move to using the built in sync mechanism to drive the collection of new timeline entries. This means you can now have Tracks2Miles pull in new workouts, comments and routes on a regular basis in the background. A side effect of this is that I’m going to have to drop support for Andriod 2.1 as the syncing API had some improvements that make this a lot easier at 2.2. The same stats that showed the total number tablet users show there are only 39 users left on 2.1. The older releases should continue to work for them.
This use of the syncing API means that I the timeline can be updated at regular intervals in the background so you will always have the latest workouts when you open the all and allows me to add alerts for when there are new entries.
A feature requested by Brian O’Donovan was the ability to sanity check speeds for different workout types, I think this mainly came about because of the distance conversion feature when the units are changed. I’ve added some options to the beta settings menu that allows you to set a min and max speed for a few of the workout types. If you enable this checking a toast message will pop up if the average speed for a workout is outside these ranges. You can access the limits under the beta section of the preferences screen.
At this point I think I’ve pretty much exhausted the capabilities of the current Dailymile API but hopefully there should be a improved version due soon. In the mean time I suppose the next step would be to look at translating Tracks2Miles to some other languages. The Google Play stats suggest that Germany might be a good first choice.
I cut what I hope to be the final beta today and after hearing back from the testers I’ll push it to Google Play as an update.
* Up until v2.0 I’ve been using the built in stats that come with the Google Play, but for this release going forward I have also included the Google Analytics library so I should get a much clearer picture of what the spread of devices running the app are.
This is a real quick post as a heads up. The My Tracks guys have just shipped a pretty major update to My Tracks. This update has changed a load of things including how you export tracks for Tracks2Miles to upload them to Dailymile.
I’ve just pushed a real quick update (I hope I’ve not broken anything) with a fix for an interface that changed, without the fix Tracks2Miles will crash when you try to export a workout with the new My Tracks.
I was hoping to ship Tracks2Miles v2.0 at the same time My Tracks v2.0 shipped but I’ve been really busy with work so not been able to get it finished in time. I hope to get it all done over the next few weekends so I can get it out soon.
Exporting workouts has got a little bit more convoluted with the new My Tracks so I’ll try and do a new walk through video as well.
I pushed a new update to the market at the weekend.
It should hopefully fix a problem where Tracks2Miles would complain it could not access My Tracks data even when sharing was allowed. This looks to be down to a change in the My Tracks API with the My Tracks 1.1.15.
I’ve also tweaked the “Like” handling a little to only work for posts that are videos or pictures as this seams to be the only type of posts this works.
Recently a college has been having a look at the code to see if there are some things he wants to add. Hopefully I should have something from him soon.
The next version should have better support for tablets and ICS devices that support Activity Fragments to make better use of large screens. I’ve also managed to arrange to borrow a Sony Ericsson X10 mini to see about trying to improve the UI for those of you with really small screen devices.
After my last My Tracks patch had to be pulled (to be honest it did break sharing routes by anything other than Tracks2Miles) a new (safe) patch was accepted a few days ago.
This patch passes just the My Tracks track id along with the URL for the exported file in the SHARE intent. The key for the extra reuses the same key that is used by the My Tracks library when sending Broadcasts on starting and stopping recording a new track. The track id can be recovered from the intent with the following code:
long track_id =
MyTracksProviderUtils utils =
Track track = utils.getTrack(track_id);
TripStatistics stats = track.getStatistics();
double totalDistance = stats.getTotalDistance();
long movingTime = stats.getMovingTime();
String cat = track.getCategory();
String desc = track.getDescription();
long lastLocId = utils.getLastLocationId(track_id);
Location loc = utils.getLocation(lastLocId);
The latest version of Tracks2TitanXT has already been updated to use this method and Tracks2Miles will get an update for this as well as some better tablet support before the next version of My Tracks ships.
So the My Tracks guys released version 1.1.10 last week. This normally would be a good thing as they have been adding lots of nice new features and generally improving things.
Unfortunately in this release they also included a feature that stops 3rd party apps using their database without the user having to go into the their settings and allowing it.
I don’t agree with what the change is looking to achieve, My Tracks already has a set of Permissions that need to be requested by an application before it can access the data. If the user does not want to grant access then they should not install the 3rd party apps. I know nobody really reads closely the list of Permissions apps ask for at install time, but this is a problem for the Market application to solve by better high lighting the Permissions being asked for and explaining the consequences of accepting them.
On top of that there is no easy way to check if the “Allow access” option is set before you try and access the data. I will be raising a issue about this shortly as well as submitting another change to mean that I don’t have to try and guess the name of the track being exported.
It also would have been nice to get more than a couple of hours notice that the this new “feature” was about to ship. While I know it has been discussed on the site, I have a not been following the updates recently because the day job has been particularly busy. It would have at least been courteous to send the email that notified the owners of those with apps about the change a little sooner. So we had time to make the required changes rather than just get a whole slew of bug reports.
Anyway that’s the bitching out of the way. There is now a new version of Tracks2Miles that will show a dialog box if it can not access the data and return you to My Tracks to enable the access to the data.
You can grad the latest version from the Market here