forked from upstream-mirrors/OpenTracks
Use StringUtils.getSpeedParts to geneate all the pace values in DescriptionGeneratorImpl.
This commit is contained in:
@@ -384,9 +384,9 @@ limitations under the License.
|
|||||||
<string name="description_average_moving_pace"
|
<string name="description_average_moving_pace"
|
||||||
translation_description="Average moving pace description.
|
translation_description="Average moving pace description.
|
||||||
|
|
||||||
%1$.2f pace in minutes per kilometer
|
%1$s pace in minutes per kilometer
|
||||||
%2$.1f pace in minutes per mile">
|
%2$s pace in minutes per mile">
|
||||||
Average moving pace: %1$.2f min/km (%2$.1f min/mi)
|
Average moving pace: %1$s min/km (%2$s min/mi)
|
||||||
</string>
|
</string>
|
||||||
<string name="description_average_moving_speed"
|
<string name="description_average_moving_speed"
|
||||||
translation_description="Average moving speed description.
|
translation_description="Average moving speed description.
|
||||||
@@ -398,9 +398,9 @@ limitations under the License.
|
|||||||
<string name="description_average_pace"
|
<string name="description_average_pace"
|
||||||
translation_description="Average pace description.
|
translation_description="Average pace description.
|
||||||
|
|
||||||
%1$.2f pace in minutes per kilometer
|
%1$s pace in minutes per kilometer
|
||||||
%2$.1f pace in minutes per mile">
|
%2$s pace in minutes per mile">
|
||||||
Average pace: %1$.2f min/km (%2$.1f min/mi)
|
Average pace: %1$s min/km (%2$s min/mi)
|
||||||
</string>
|
</string>
|
||||||
<string name="description_average_speed"
|
<string name="description_average_speed"
|
||||||
translation_description="Average speed description.
|
translation_description="Average speed description.
|
||||||
@@ -427,9 +427,9 @@ limitations under the License.
|
|||||||
<string name="description_fastest_pace"
|
<string name="description_fastest_pace"
|
||||||
translation_description="Fastest pace description.
|
translation_description="Fastest pace description.
|
||||||
|
|
||||||
%1$.2f pace in minutes per kilometer
|
%1$s pace in minutes per kilometer
|
||||||
%2$.1f pace in minutes per mile">
|
%2$s pace in minutes per mile">
|
||||||
Fastest pace: %1$.2f min/km (%2$.1f min/mi)
|
Fastest pace: %1$s min/km (%2$s min/mi)
|
||||||
</string>
|
</string>
|
||||||
<string name="description_location_accuracy"
|
<string name="description_location_accuracy"
|
||||||
translation_description="Label for location accuracy in meters.">
|
translation_description="Label for location accuracy in meters.">
|
||||||
|
|||||||
+14
-31
@@ -24,7 +24,6 @@ import com.google.android.maps.mytracks.R;
|
|||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Pair;
|
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
@@ -117,25 +116,24 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator {
|
|||||||
writeTime(stats.getMovingTime(), builder, R.string.description_moving_time, lineBreak);
|
writeTime(stats.getMovingTime(), builder, R.string.description_moving_time, lineBreak);
|
||||||
|
|
||||||
// Average speed
|
// Average speed
|
||||||
Pair<Double, Double> averageSpeed = writeSpeed(
|
writeSpeed(stats.getAverageSpeed(), builder, R.string.description_average_speed, lineBreak);
|
||||||
stats.getAverageSpeed(), builder, R.string.description_average_speed, lineBreak);
|
|
||||||
|
|
||||||
// Average moving speed
|
// Average moving speed
|
||||||
Pair<Double, Double> averageMovingSpeed = writeSpeed(stats.getAverageMovingSpeed(), builder,
|
writeSpeed(stats.getAverageMovingSpeed(), builder, R.string.description_average_moving_speed,
|
||||||
R.string.description_average_moving_speed, lineBreak);
|
lineBreak);
|
||||||
|
|
||||||
// Max speed
|
// Max speed
|
||||||
Pair<Double, Double> maxSpeed = writeSpeed(
|
writeSpeed(stats.getMaxSpeed(), builder, R.string.description_max_speed, lineBreak);
|
||||||
stats.getMaxSpeed(), builder, R.string.description_max_speed, lineBreak);
|
|
||||||
|
|
||||||
// Average pace
|
// Average pace
|
||||||
writePace(averageSpeed, builder, R.string.description_average_pace, lineBreak);
|
writePace(stats.getAverageSpeed(), builder, R.string.description_average_pace, lineBreak);
|
||||||
|
|
||||||
// Average moving pace
|
// 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
|
// Fastest pace
|
||||||
writePace(maxSpeed, builder, R.string.description_fastest_pace, lineBreak);
|
writePace(stats.getMaxSpeed(), builder, R.string.description_fastest_pace, lineBreak);
|
||||||
|
|
||||||
// Max elevation
|
// Max elevation
|
||||||
writeElevation(stats.getMaxElevation(), builder, R.string.description_max_elevation, lineBreak);
|
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 builder StringBuilder to append speed
|
||||||
* @param resId resource id of speed string
|
* @param resId resource id of speed string
|
||||||
* @param lineBreak line break string
|
* @param lineBreak line break string
|
||||||
* @return a pair of speed, first in kilometers per hour, second in miles per
|
|
||||||
* hour.
|
|
||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Pair<Double, Double> writeSpeed(
|
void writeSpeed(
|
||||||
double speed, StringBuilder builder, int resId, String lineBreak) {
|
double speed, StringBuilder builder, int resId, String lineBreak) {
|
||||||
double speedInKmHr = speed * UnitConversions.MS_TO_KMH;
|
double speedInKmHr = speed * UnitConversions.MS_TO_KMH;
|
||||||
double speedInMiHr = speedInKmHr * UnitConversions.KM_TO_MI;
|
double speedInMiHr = speedInKmHr * UnitConversions.KM_TO_MI;
|
||||||
builder.append(context.getString(resId, speedInKmHr, speedInMiHr));
|
builder.append(context.getString(resId, speedInKmHr, speedInMiHr));
|
||||||
builder.append(lineBreak);
|
builder.append(lineBreak);
|
||||||
return Pair.create(speedInKmHr, speedInMiHr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Writes pace.
|
* Writes pace.
|
||||||
*
|
*
|
||||||
* @param speed a pair of speed, first in kilometers per hour, second in miles
|
* @param speed speed in meters per second
|
||||||
* per hour
|
|
||||||
* @param builder StringBuilder to append pace
|
* @param builder StringBuilder to append pace
|
||||||
* @param resId resource id of pace string
|
* @param resId resource id of pace string
|
||||||
* @param lineBreak line break string
|
* @param lineBreak line break string
|
||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void writePace(
|
void writePace(double speed, StringBuilder builder, int resId, String lineBreak) {
|
||||||
Pair<Double, Double> speed, StringBuilder builder, int resId, String lineBreak) {
|
String[] paceInMetrics = StringUtils.getSpeedParts(context, speed, true, false);
|
||||||
double paceInMinKm = getPace(speed.first);
|
String[] paceInImperial = StringUtils.getSpeedParts(context, speed, false, false);
|
||||||
double paceInMinMi = getPace(speed.second);
|
builder.append(context.getString(resId, paceInMetrics[0], paceInImperial[0]));
|
||||||
builder.append(context.getString(resId, paceInMinKm, paceInMinMi));
|
|
||||||
builder.append(lineBreak);
|
builder.append(lineBreak);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -262,14 +255,4 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator {
|
|||||||
builder.append(context.getString(resId, gradeInPercent));
|
builder.append(context.getString(resId, gradeInPercent));
|
||||||
builder.append(lineBreak);
|
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-23
@@ -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.8 min/mi)<br>"
|
+ "Average pace: 0.50 min/km (0.80 min/mi)<br>"
|
||||||
+ "Average moving pace: 0.25 min/km (0.4 min/mi)<br>"
|
+ "Average moving pace: 0.25 min/km (0.40 min/mi)<br>"
|
||||||
+ "Fastest pace: 0.17 min/km (0.3 min/mi)<br>"
|
+ "Fastest pace: 0.17 min/km (0.27 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.8 min/mi)\n"
|
+ "Average pace: 0.50 min/km (0.80 min/mi)\n"
|
||||||
+ "Average moving pace: 0.25 min/km (0.4 min/mi)\n"
|
+ "Average moving pace: 0.25 min/km (0.40 min/mi)\n"
|
||||||
+ "Fastest pace: 0.17 min/km (0.3 min/mi)\n"
|
+ "Fastest pace: 0.17 min/km (0.27 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"
|
||||||
@@ -162,9 +162,8 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
|
|||||||
*/
|
*/
|
||||||
public void testWritePace() {
|
public void testWritePace() {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
descriptionGenerator.writePace(
|
descriptionGenerator.writePace(1.1, builder, R.string.description_average_pace, "\n");
|
||||||
new Pair<Double, Double>(1.1, 2.2), builder, R.string.description_average_pace, "\n");
|
assertEquals("Average pace: 15.15 min/km (24.38 min/mi)\n", builder.toString());
|
||||||
assertEquals("Average pace: 54.55 min/km (27.3 min/mi)\n", builder.toString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -197,18 +196,4 @@ public class DescriptionGeneratorImplTest extends AndroidTestCase {
|
|||||||
Double.POSITIVE_INFINITY, builder, R.string.description_max_grade, "<br>");
|
Double.POSITIVE_INFINITY, builder, R.string.description_max_grade, "<br>");
|
||||||
assertEquals("Max grade: 0 %<br>", builder.toString());
|
assertEquals("Max grade: 0 %<br>", 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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user