From 849d5bdf1c3b78bb808d33f79638916cea6d219c Mon Sep 17 00:00:00 2001 From: Jimmy Shih Date: Mon, 10 Jun 2013 15:59:47 -0700 Subject: [PATCH] Display pace in mm:second format. --- MyTracks/res/values/strings.xml | 4 ++-- .../content/DescriptionGeneratorImpl.java | 9 ++++++++ .../apps/mytracks/util/StringUtils.java | 21 +++++++++---------- .../content/DescriptionGeneratorImplTest.java | 14 ++++++------- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index a3fcfe682..90f50c968 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -1974,7 +1974,7 @@ limitations under the License. Preferred rate @@ -2131,7 +2131,7 @@ limitations under the License. Moving time Pace diff --git a/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java b/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java index 1669bf15d..42cbeae64 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java @@ -219,6 +219,15 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator { void writePace(double speed, StringBuilder builder, int resId, String lineBreak) { String[] paceInMetrics = StringUtils.getSpeedParts(context, speed, true, false); String[] paceInImperial = StringUtils.getSpeedParts(context, speed, false, false); + + if (paceInMetrics[0] == null) { + paceInMetrics[0] = context.getString(R.string.value_unknown); + } + + if (paceInImperial[0] == null) { + paceInImperial[0] = context.getString(R.string.value_unknown); + } + builder.append(context.getString(resId, paceInMetrics[0], paceInImperial[0])); builder.append(lineBreak); } diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/StringUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/StringUtils.java index 0e09a817e..9771fbbf0 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/StringUtils.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/StringUtils.java @@ -213,19 +213,18 @@ public class StringUtils { return result; } speed *= UnitConversions.MS_TO_KMH; - if (metricUnits) { - if (!reportSpeed) { - // convert from hours to minutes - speed = speed == 0 ? 0.0 : 60.0 / speed; - } - } else { + if (!metricUnits) { speed *= UnitConversions.KM_TO_MI; - if (!reportSpeed) { - // convert from hours to minutes - speed = speed == 0 ? 0.0 : 60.0 / speed; - } } - result[0] = String.format("%.2f", speed); + if (reportSpeed) { + result[0] = String.format("%.2f", speed); + } else { + // convert from hours to minutes + double pace = speed == 0 ? 0.0 : 60.0 / speed; + int minutes = (int) pace; + int seconds = (int) Math.round((pace - minutes) * 60.0); + result[0] = String.format("%d:%02d", minutes, seconds); + } return result; } diff --git a/MyTracksTest/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImplTest.java b/MyTracksTest/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImplTest.java index 01d17fd48..d2d672693 100644 --- a/MyTracksTest/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImplTest.java +++ b/MyTracksTest/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImplTest.java @@ -68,9 +68,9 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase { + "Average speed: 120.00 km/h (74.6 mi/h)
" + "Average moving speed: 240.00 km/h (149.1 mi/h)
" + "Max speed: 360.00 km/h (223.7 mi/h)
" - + "Average pace: 0.50 min/km (0.80 min/mi)
" - + "Average moving pace: 0.25 min/km (0.40 min/mi)
" - + "Fastest pace: 0.17 min/km (0.27 min/mi)
" + + "Average pace: 0:30 min/km (0:48 min/mi)
" + + "Average moving pace: 0:15 min/km (0:24 min/mi)
" + + "Fastest pace: 0:10 min/km (0:16 min/mi)
" + "Max elevation: 550 m (1804 ft)
" + "Min elevation: -500 m (-1640 ft)
" + "Elevation gain: 6000 m (19685 ft)
" @@ -103,9 +103,9 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase { + "Average speed: 120.00 km/h (74.6 mi/h)\n" + "Average moving speed: 240.00 km/h (149.1 mi/h)\n" + "Max speed: 360.00 km/h (223.7 mi/h)\n" - + "Average pace: 0.50 min/km (0.80 min/mi)\n" - + "Average moving pace: 0.25 min/km (0.40 min/mi)\n" - + "Fastest pace: 0.17 min/km (0.27 min/mi)\n" + + "Average pace: 0:30 min/km (0:48 min/mi)\n" + + "Average moving pace: 0:15 min/km (0:24 min/mi)\n" + + "Fastest pace: 0:10 min/km (0:16 min/mi)\n" + "Max elevation: 550 m (1804 ft)\n" + "Min elevation: -500 m (-1640 ft)\n" + "Elevation gain: 6000 m (19685 ft)\n" @@ -163,7 +163,7 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase { public void testWritePace() { StringBuilder builder = new StringBuilder(); descriptionGenerator.writePace(1.1, builder, R.string.description_average_pace, "\n"); - assertEquals("Average pace: 15.15 min/km (24.38 min/mi)\n", builder.toString()); + assertEquals("Average pace: 15:09 min/km (24:23 min/mi)\n", builder.toString()); } /**