diff --git a/MyTracks/res/values/strings.xml b/MyTracks/res/values/strings.xml index dad7c73a9..a3fcfe682 100644 --- a/MyTracks/res/values/strings.xml +++ b/MyTracks/res/values/strings.xml @@ -384,9 +384,9 @@ limitations under the License. - Average moving pace: %1$.2f min/km (%2$.1f min/mi) + %1$s pace in minutes per kilometer + %2$s pace in minutes per mile"> + Average moving pace: %1$s min/km (%2$s min/mi) - Average pace: %1$.2f min/km (%2$.1f min/mi) + %1$s pace in minutes per kilometer + %2$s pace in minutes per mile"> + Average pace: %1$s min/km (%2$s min/mi) - Fastest pace: %1$.2f min/km (%2$.1f min/mi) + %1$s pace in minutes per kilometer + %2$s pace in minutes per mile"> + Fastest pace: %1$s min/km (%2$s min/mi) 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 e647dc4f2..1669bf15d 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java +++ b/MyTracks/src/com/google/android/apps/mytracks/content/DescriptionGeneratorImpl.java @@ -24,7 +24,6 @@ import com.google.android.maps.mytracks.R; import com.google.common.annotations.VisibleForTesting; import android.content.Context; -import android.util.Pair; import java.util.Vector; @@ -117,25 +116,24 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator { writeTime(stats.getMovingTime(), builder, R.string.description_moving_time, lineBreak); // Average speed - Pair averageSpeed = writeSpeed( - stats.getAverageSpeed(), builder, R.string.description_average_speed, lineBreak); + writeSpeed(stats.getAverageSpeed(), builder, R.string.description_average_speed, lineBreak); // Average moving speed - Pair averageMovingSpeed = writeSpeed(stats.getAverageMovingSpeed(), builder, - R.string.description_average_moving_speed, lineBreak); + writeSpeed(stats.getAverageMovingSpeed(), builder, R.string.description_average_moving_speed, + lineBreak); // Max speed - Pair maxSpeed = writeSpeed( - stats.getMaxSpeed(), builder, R.string.description_max_speed, lineBreak); + writeSpeed(stats.getMaxSpeed(), builder, R.string.description_max_speed, lineBreak); // Average pace - writePace(averageSpeed, builder, R.string.description_average_pace, lineBreak); + writePace(stats.getAverageSpeed(), builder, R.string.description_average_pace, lineBreak); // Average moving pace - writePace(averageMovingSpeed, builder, R.string.description_average_moving_pace, lineBreak); + writePace(stats.getAverageMovingSpeed(), builder, R.string.description_average_moving_pace, + lineBreak); // Fastest pace - writePace(maxSpeed, builder, R.string.description_fastest_pace, lineBreak); + writePace(stats.getMaxSpeed(), builder, R.string.description_fastest_pace, lineBreak); // Max elevation writeElevation(stats.getMaxElevation(), builder, R.string.description_max_elevation, lineBreak); @@ -199,34 +197,29 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator { * @param builder StringBuilder to append speed * @param resId resource id of speed string * @param lineBreak line break string - * @return a pair of speed, first in kilometers per hour, second in miles per - * hour. */ @VisibleForTesting - Pair writeSpeed( + void writeSpeed( double speed, StringBuilder builder, int resId, String lineBreak) { double speedInKmHr = speed * UnitConversions.MS_TO_KMH; double speedInMiHr = speedInKmHr * UnitConversions.KM_TO_MI; builder.append(context.getString(resId, speedInKmHr, speedInMiHr)); builder.append(lineBreak); - return Pair.create(speedInKmHr, speedInMiHr); } /** * Writes pace. - * - * @param speed a pair of speed, first in kilometers per hour, second in miles - * per hour + * + * @param speed speed in meters per second * @param builder StringBuilder to append pace * @param resId resource id of pace string * @param lineBreak line break string */ @VisibleForTesting - void writePace( - Pair speed, StringBuilder builder, int resId, String lineBreak) { - double paceInMinKm = getPace(speed.first); - double paceInMinMi = getPace(speed.second); - builder.append(context.getString(resId, paceInMinKm, paceInMinMi)); + 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); + builder.append(context.getString(resId, paceInMetrics[0], paceInImperial[0])); builder.append(lineBreak); } @@ -262,14 +255,4 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator { builder.append(context.getString(resId, gradeInPercent)); builder.append(lineBreak); } - - /** - * Gets pace (in minutes) from speed. - * - * @param speed speed in hours - */ - @VisibleForTesting - double getPace(double speed) { - return speed == 0 ? 0.0 : 60.0 / speed; // convert from hours to minutes - } } 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 245e5f3bd..01d17fd48 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.8 min/mi)
" - + "Average moving pace: 0.25 min/km (0.4 min/mi)
" - + "Fastest pace: 0.17 min/km (0.3 min/mi)
" + + "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)
" + "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.8 min/mi)\n" - + "Average moving pace: 0.25 min/km (0.4 min/mi)\n" - + "Fastest pace: 0.17 min/km (0.3 min/mi)\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" + "Max elevation: 550 m (1804 ft)\n" + "Min elevation: -500 m (-1640 ft)\n" + "Elevation gain: 6000 m (19685 ft)\n" @@ -162,9 +162,8 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase { */ public void testWritePace() { StringBuilder builder = new StringBuilder(); - descriptionGenerator.writePace( - new Pair(1.1, 2.2), builder, R.string.description_average_pace, "\n"); - assertEquals("Average pace: 54.55 min/km (27.3 min/mi)\n", builder.toString()); + 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()); } /** @@ -197,18 +196,4 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase { Double.POSITIVE_INFINITY, builder, R.string.description_max_grade, "
"); assertEquals("Max grade: 0 %
", builder.toString()); } - - /** - * Tests {@link DescriptionGeneratorImpl#getPace(double)}. - */ - public void testGetPace() { - assertEquals(12.0, descriptionGenerator.getPace(5)); - } - - /** - * Tests {@link DescriptionGeneratorImpl#getPace(double)} with zero speed. - */ - public void testGetPace_zero() { - assertEquals(0.0, descriptionGenerator.getPace(0)); - } }