forked from upstream-mirrors/OpenTracks
Fix comments on 4d928853455e
This commit is contained in:
+76
-64
@@ -21,6 +21,7 @@ import com.google.android.apps.mytracks.util.ChartURLGenerator;
|
||||
import com.google.android.apps.mytracks.util.StringUtils;
|
||||
import com.google.android.apps.mytracks.util.UnitConversions;
|
||||
import com.google.android.maps.mytracks.R;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.Pair;
|
||||
@@ -46,29 +47,30 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator {
|
||||
@Override
|
||||
public String generateTrackDescription(
|
||||
Track track, Vector<Double> distances, Vector<Double> elevations) {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
// Created by
|
||||
String url = context.getString(R.string.my_tracks_web_url);
|
||||
buffer.append(context.getString(
|
||||
builder.append(context.getString(
|
||||
R.string.send_google_by_my_tracks, "<a href='http://" + url + "'>", "</a>"));
|
||||
buffer.append("<p>");
|
||||
builder.append("<p>");
|
||||
|
||||
buffer.append(generateTripStatisticsDescription(track.getStatistics(), true));
|
||||
builder.append(generateTripStatisticsDescription(track.getStatistics(), true));
|
||||
|
||||
// Activity type
|
||||
String trackCategory = track.getCategory();
|
||||
String category = trackCategory != null && trackCategory.length() > 0 ? trackCategory
|
||||
: context.getString(R.string.value_unknown);
|
||||
buffer.append(context.getString(R.string.description_activity_type, category));
|
||||
buffer.append(HTML_LINE_BREAK);
|
||||
builder.append(context.getString(R.string.description_activity_type, category));
|
||||
builder.append(HTML_LINE_BREAK);
|
||||
|
||||
// Elevation chart
|
||||
if (distances != null && elevations != null) {
|
||||
buffer.append("<img border=\"0\" src=\""
|
||||
builder.append("<img border=\"0\" src=\""
|
||||
+ ChartURLGenerator.getChartUrl(distances, elevations, track, context) + "\"/>");
|
||||
builder.append(HTML_LINE_BREAK);
|
||||
}
|
||||
return buffer.toString();
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,117 +82,115 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator {
|
||||
* Generates a description for a {@link TripStatistics}.
|
||||
*
|
||||
* @param stats the trip statistics
|
||||
* @param html true to use <br> for line break instead of \n
|
||||
* @param html true to use "<br>" for line break instead of "\n"
|
||||
*/
|
||||
private String generateTripStatisticsDescription(TripStatistics stats, boolean html) {
|
||||
String lineBreak = html ? HTML_LINE_BREAK : TEXT_LINE_BREAK;
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
// Total distance
|
||||
writeDistance(stats.getTotalDistance(), buffer, R.string.description_total_distance);
|
||||
buffer.append(lineBreak);
|
||||
writeDistance(
|
||||
stats.getTotalDistance(), builder, R.string.description_total_distance, lineBreak);
|
||||
|
||||
// Total time
|
||||
writeTime(stats.getTotalTime(), buffer, R.string.description_total_time);
|
||||
buffer.append(lineBreak);
|
||||
writeTime(stats.getTotalTime(), builder, R.string.description_total_time, lineBreak);
|
||||
|
||||
// Moving time
|
||||
writeTime(stats.getMovingTime(), buffer, R.string.description_moving_time);
|
||||
buffer.append(lineBreak);
|
||||
writeTime(stats.getMovingTime(), builder, R.string.description_moving_time, lineBreak);
|
||||
|
||||
// Average speed
|
||||
Pair<Double, Double> averageSpeed = writeSpeed(
|
||||
stats.getAverageSpeed(), buffer, R.string.description_average_speed);
|
||||
buffer.append(lineBreak);
|
||||
stats.getAverageSpeed(), builder, R.string.description_average_speed, lineBreak);
|
||||
|
||||
// Average moving speed
|
||||
Pair<Double, Double> averageMovingSpeed = writeSpeed(
|
||||
stats.getAverageMovingSpeed(), buffer, R.string.description_average_moving_speed);
|
||||
buffer.append(lineBreak);
|
||||
Pair<Double, Double> averageMovingSpeed = writeSpeed(stats.getAverageMovingSpeed(), builder,
|
||||
R.string.description_average_moving_speed, lineBreak);
|
||||
|
||||
// Max speed
|
||||
Pair<Double, Double> maxSpeed = writeSpeed(
|
||||
stats.getMaxSpeed(), buffer, R.string.description_max_speed);
|
||||
buffer.append(lineBreak);
|
||||
stats.getMaxSpeed(), builder, R.string.description_max_speed, lineBreak);
|
||||
|
||||
// Average pace
|
||||
writePace(averageSpeed, buffer, R.string.description_average_pace);
|
||||
buffer.append(lineBreak);
|
||||
writePace(averageSpeed, builder, R.string.description_average_pace, lineBreak);
|
||||
|
||||
// Average moving pace
|
||||
writePace(averageMovingSpeed, buffer, R.string.description_average_moving_pace);
|
||||
buffer.append(lineBreak);
|
||||
writePace(averageMovingSpeed, builder, R.string.description_average_moving_pace, lineBreak);
|
||||
|
||||
// Min pace
|
||||
writePace(maxSpeed, buffer, R.string.description_min_pace);
|
||||
buffer.append(lineBreak);
|
||||
writePace(maxSpeed, builder, R.string.description_min_pace, lineBreak);
|
||||
|
||||
// Max elevation
|
||||
writeElevation(stats.getMaxElevation(), buffer, R.string.description_max_elevation);
|
||||
buffer.append(lineBreak);
|
||||
writeElevation(stats.getMaxElevation(), builder, R.string.description_max_elevation, lineBreak);
|
||||
|
||||
// Min elevation
|
||||
writeElevation(stats.getMinElevation(), buffer, R.string.description_min_elevation);
|
||||
buffer.append(lineBreak);
|
||||
writeElevation(stats.getMinElevation(), builder, R.string.description_min_elevation, lineBreak);
|
||||
|
||||
// Elevation gain
|
||||
writeElevation(stats.getTotalElevationGain(), buffer, R.string.description_elevation_gain);
|
||||
buffer.append(lineBreak);
|
||||
writeElevation(
|
||||
stats.getTotalElevationGain(), builder, R.string.description_elevation_gain, lineBreak);
|
||||
|
||||
// Max grade
|
||||
writeGrade(stats.getMaxGrade(), buffer, R.string.description_max_grade);
|
||||
buffer.append(lineBreak);
|
||||
writeGrade(stats.getMaxGrade(), builder, R.string.description_max_grade, lineBreak);
|
||||
|
||||
// Min grade
|
||||
writeGrade(stats.getMinGrade(), buffer, R.string.description_min_grade);
|
||||
buffer.append(lineBreak);
|
||||
writeGrade(stats.getMinGrade(), builder, R.string.description_min_grade, lineBreak);
|
||||
|
||||
// Recorded time
|
||||
buffer.append(
|
||||
builder.append(
|
||||
context.getString(R.string.description_recorded_time,
|
||||
StringUtils.formatDateTime(context, stats.getStartTime())));
|
||||
buffer.append(lineBreak);
|
||||
builder.append(lineBreak);
|
||||
|
||||
return buffer.toString();
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes distance.
|
||||
*
|
||||
* @param distance distance in meters
|
||||
* @param buffer buffer to write distance
|
||||
* @param builder StringBuilder to append distance
|
||||
* @param resId resource id of distance string
|
||||
* @param lineBreak line break string
|
||||
*/
|
||||
private void writeDistance(double distance, StringBuffer buffer, int resId) {
|
||||
@VisibleForTesting
|
||||
void writeDistance(double distance, StringBuilder builder, int resId, String lineBreak) {
|
||||
double distanceInKm = distance * UnitConversions.M_TO_KM;
|
||||
double distanceInMi = distanceInKm * UnitConversions.KM_TO_MI;
|
||||
buffer.append(context.getString(resId, distanceInKm, distanceInMi));
|
||||
builder.append(context.getString(resId, distanceInKm, distanceInMi));
|
||||
builder.append(lineBreak);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes time.
|
||||
*
|
||||
* @param time time in milliseconds.
|
||||
* @param buffer buffer to write time
|
||||
* @param builder StringBuilder to append time
|
||||
* @param resId resource id of time string
|
||||
* @param lineBreak line break string
|
||||
*/
|
||||
private void writeTime(long time, StringBuffer buffer, int resId) {
|
||||
buffer.append(context.getString(resId, StringUtils.formatElapsedTime(time)));
|
||||
@VisibleForTesting
|
||||
void writeTime(long time, StringBuilder builder, int resId, String lineBreak) {
|
||||
builder.append(context.getString(resId, StringUtils.formatElapsedTime(time)));
|
||||
builder.append(lineBreak);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes speed.
|
||||
*
|
||||
* @param speed speed in meters per second
|
||||
* @param buffer buffer to write speed
|
||||
* @param builder StringBuilder to append speed
|
||||
* @param resId resource id of speed string
|
||||
*@return a pair of speed, first in kilometers per hour, second in miles per
|
||||
* @param lineBreak line break string
|
||||
* @return a pair of speed, first in kilometers per hour, second in miles per
|
||||
* hour.
|
||||
*/
|
||||
private Pair<Double, Double> writeSpeed(double speed, StringBuffer buffer, int resId) {
|
||||
@VisibleForTesting
|
||||
Pair<Double, Double> writeSpeed(
|
||||
double speed, StringBuilder builder, int resId, String lineBreak) {
|
||||
double speedInKmHr = speed * UnitConversions.MS_TO_KMH;
|
||||
double speedInMiHr = speedInKmHr * UnitConversions.KM_TO_MI;
|
||||
buffer.append(context.getString(resId, speedInKmHr, speedInMiHr));
|
||||
builder.append(context.getString(resId, speedInKmHr, speedInMiHr));
|
||||
builder.append(lineBreak);
|
||||
return Pair.create(speedInKmHr, speedInMiHr);
|
||||
}
|
||||
|
||||
@@ -199,39 +199,50 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator {
|
||||
*
|
||||
* @param speed a pair of speed, first in kilometers per hour, second in miles
|
||||
* per hour
|
||||
* @param buffer buffer to write pace
|
||||
* @param builder StringBuilder to append pace
|
||||
* @param resId resource id of pace string
|
||||
* @param lineBreak line break string
|
||||
*/
|
||||
private void writePace(Pair<Double, Double> speed, StringBuffer buffer, int resId) {
|
||||
@VisibleForTesting
|
||||
void writePace(
|
||||
Pair<Double, Double> speed, StringBuilder builder, int resId, String lineBreak) {
|
||||
double paceInMinKm = getPace(speed.first);
|
||||
double paceInMinMi = getPace(speed.second);
|
||||
buffer.append(context.getString(resId, paceInMinKm, paceInMinMi));
|
||||
builder.append(context.getString(resId, paceInMinKm, paceInMinMi));
|
||||
builder.append(lineBreak);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes elevation.
|
||||
*
|
||||
* @param elevation elevation in meters
|
||||
* @param buffer buffer to write elevation
|
||||
* @param builder StringBuilder to append elevation
|
||||
* @param resId resource id of elevation string
|
||||
* @param lineBreak line break string
|
||||
*/
|
||||
private void writeElevation(double elevation, StringBuffer buffer, int resId) {
|
||||
@VisibleForTesting
|
||||
void writeElevation(
|
||||
double elevation, StringBuilder builder, int resId, String lineBreak) {
|
||||
long elevationInM = Math.round(elevation);
|
||||
long elevationInFt = Math.round(elevation * UnitConversions.M_TO_FT);
|
||||
buffer.append(context.getString(resId, elevationInM, elevationInFt));
|
||||
builder.append(context.getString(resId, elevationInM, elevationInFt));
|
||||
builder.append(lineBreak);
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes grade.
|
||||
*
|
||||
* @param grade grade in fraction
|
||||
* @param buffer buffer to write grade
|
||||
* @param builder StringBuilder to append grade
|
||||
* @param resId resource id grade string
|
||||
* @param lineBreak line break string
|
||||
*/
|
||||
private void writeGrade(double grade, StringBuffer buffer, int resId) {
|
||||
long gradeInPercent = Double.isNaN(grade) || Double.isInfinite(grade)
|
||||
? 0L : Math.round(grade * 100);
|
||||
buffer.append(context.getString(resId, gradeInPercent));
|
||||
@VisibleForTesting
|
||||
void writeGrade(double grade, StringBuilder builder, int resId, String lineBreak) {
|
||||
long gradeInPercent = Double.isNaN(grade) || Double.isInfinite(grade) ? 0L
|
||||
: Math.round(grade * 100);
|
||||
builder.append(context.getString(resId, gradeInPercent));
|
||||
builder.append(lineBreak);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -239,7 +250,8 @@ public class DescriptionGeneratorImpl implements DescriptionGenerator {
|
||||
*
|
||||
* @param speed speed in hours
|
||||
*/
|
||||
private double getPace(double speed) {
|
||||
@VisibleForTesting
|
||||
double getPace(double speed) {
|
||||
return speed == 0 ? 0.0 : 60.0 / speed; // convert from hours to minutes
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user