package edu.mit.mitmobile2.tour; import java.util.Locale; public class LocaleMeasurements { private static final float MILE = 1609.344f; // meters in a mile private static final float YARD = 0.9144f; // meters in a yard private static final float SMOOT = 1.7018f; // meters in a smoot public static String getDistance(float meters) { Locale locale = Locale.getDefault(); // really small distances, just mean that the distance is not correct if(meters < 1) { return null; } int smoots = Math.round(meters/SMOOT); String smootText = "(" + smoots + " smoots)"; if(Locale.US.equals(locale)) { float yards = meters/YARD; if(yards < 1000) { return Math.round(yards) + " yards " + smootText; } float miles = meters/MILE; if(miles < 2) { return String.format("%.1f", miles) + " miles " + smootText; } return null; } else { if(meters < 1000) { return Math.round(meters) + " meters " + smootText; } float kilometers = meters/1000; if(kilometers < 5) { return String.format("%.1f", kilometers) + " kilometers " + smootText; } return null; } } }