Display pace in mm:second format.

This commit is contained in:
Jimmy Shih
2013-06-10 15:59:47 -07:00
parent 053aae4d5a
commit 849d5bdf1c
4 changed files with 28 additions and 20 deletions
+2 -2
View File
@@ -1974,7 +1974,7 @@ limitations under the License.
</string> </string>
<string name="settings_stats_rate_title" <string name="settings_stats_rate_title"
translation_description="In the 'Stats' settings, the option to change the preferred rate, translation_description="In the 'Stats' settings, the option to change the preferred rate,
either speed (mi/hr) or pace (hr/mi). either speed (mi/hr) or pace (min/mi).
Character limit: ~23 (1 line)"> Character limit: ~23 (1 line)">
Preferred rate Preferred rate
@@ -2131,7 +2131,7 @@ limitations under the License.
Moving time Moving time
</string> </string>
<string name="stats_pace" <string name="stats_pace"
translation_description="In the 'Stats' page, the pace like hours per mile. translation_description="In the 'Stats' page, the pace like minutes per mile.
Character limit: ~23 (1 line)"> Character limit: ~23 (1 line)">
Pace Pace
@@ -219,6 +219,15 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator {
void writePace(double speed, StringBuilder builder, int resId, String lineBreak) { void writePace(double speed, StringBuilder builder, int resId, String lineBreak) {
String[] paceInMetrics = StringUtils.getSpeedParts(context, speed, true, false); String[] paceInMetrics = StringUtils.getSpeedParts(context, speed, true, false);
String[] paceInImperial = StringUtils.getSpeedParts(context, speed, false, 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(context.getString(resId, paceInMetrics[0], paceInImperial[0]));
builder.append(lineBreak); builder.append(lineBreak);
} }
@@ -213,19 +213,18 @@ public class StringUtils {
return result; return result;
} }
speed *= UnitConversions.MS_TO_KMH; speed *= UnitConversions.MS_TO_KMH;
if (metricUnits) { if (!metricUnits) {
if (!reportSpeed) {
// convert from hours to minutes
speed = speed == 0 ? 0.0 : 60.0 / speed;
}
} else {
speed *= UnitConversions.KM_TO_MI; 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; return result;
} }
@@ -68,9 +68,9 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
+ "Average speed: 120.00 km/h (74.6 mi/h)<br>" + "Average speed: 120.00 km/h (74.6 mi/h)<br>"
+ "Average moving speed: 240.00 km/h (149.1 mi/h)<br>" + "Average moving speed: 240.00 km/h (149.1 mi/h)<br>"
+ "Max speed: 360.00 km/h (223.7 mi/h)<br>" + "Max speed: 360.00 km/h (223.7 mi/h)<br>"
+ "Average pace: 0.50 min/km (0.80 min/mi)<br>" + "Average pace: 0:30 min/km (0:48 min/mi)<br>"
+ "Average moving pace: 0.25 min/km (0.40 min/mi)<br>" + "Average moving pace: 0:15 min/km (0:24 min/mi)<br>"
+ "Fastest pace: 0.17 min/km (0.27 min/mi)<br>" + "Fastest pace: 0:10 min/km (0:16 min/mi)<br>"
+ "Max elevation: 550 m (1804 ft)<br>" + "Max elevation: 550 m (1804 ft)<br>"
+ "Min elevation: -500 m (-1640 ft)<br>" + "Min elevation: -500 m (-1640 ft)<br>"
+ "Elevation gain: 6000 m (19685 ft)<br>" + "Elevation gain: 6000 m (19685 ft)<br>"
@@ -103,9 +103,9 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
+ "Average speed: 120.00 km/h (74.6 mi/h)\n" + "Average speed: 120.00 km/h (74.6 mi/h)\n"
+ "Average moving speed: 240.00 km/h (149.1 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" + "Max speed: 360.00 km/h (223.7 mi/h)\n"
+ "Average pace: 0.50 min/km (0.80 min/mi)\n" + "Average pace: 0:30 min/km (0:48 min/mi)\n"
+ "Average moving pace: 0.25 min/km (0.40 min/mi)\n" + "Average moving pace: 0:15 min/km (0:24 min/mi)\n"
+ "Fastest pace: 0.17 min/km (0.27 min/mi)\n" + "Fastest pace: 0:10 min/km (0:16 min/mi)\n"
+ "Max elevation: 550 m (1804 ft)\n" + "Max elevation: 550 m (1804 ft)\n"
+ "Min elevation: -500 m (-1640 ft)\n" + "Min elevation: -500 m (-1640 ft)\n"
+ "Elevation gain: 6000 m (19685 ft)\n" + "Elevation gain: 6000 m (19685 ft)\n"
@@ -163,7 +163,7 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
public void testWritePace() { public void testWritePace() {
StringBuilder builder = new StringBuilder(); StringBuilder builder = new StringBuilder();
descriptionGenerator.writePace(1.1, builder, R.string.description_average_pace, "\n"); 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());
} }
/** /**