package com.o3dr.android.client.utils.unit; import java.util.Locale; /** * Unit provider implementation for the metric system. */ public class MetricUnitProvider implements UnitProvider { @Override public String areaToString(double areaInSqMeters) { double absArea = Math.abs(areaInSqMeters); if (absArea >= 100000) { return String.format(Locale.US, "%2.1f km" + SQUARE_SYMBOL, areaInSqMeters / 1000000); } else if (absArea >= 1) { return String.format(Locale.US, "%2.1f m" + SQUARE_SYMBOL, areaInSqMeters); } else if (absArea >= 0.00001) { return String.format(Locale.US, "%2.2f cm" + SQUARE_SYMBOL, areaInSqMeters * 10000); } else { return areaInSqMeters + " m" + SQUARE_SYMBOL; } } @Override public String distanceToString(double distanceInMeters) { double absDistance = Math.abs(distanceInMeters); if (absDistance >= 1000) { return String.format(Locale.US, "%2.1f km", distanceInMeters / 1000); } else if (absDistance >= 0.1) { return String.format(Locale.US, "%2.1f m", distanceInMeters); } else if (absDistance >= 0.001) { return String.format(Locale.US, "%2.1f mm", distanceInMeters * 1000); } else { return distanceInMeters + " m"; } } @Override public String speedToString(double speedInMetersPerSeconds) { return String.format(Locale.US, "%2.1f m/s", speedInMetersPerSeconds); } @Override public String electricChargeToString(double chargeInmAh) { double absCharge = Math.abs(chargeInmAh); if(absCharge >= 1000){ return String.format(Locale.US, "%2.0f Ah", chargeInmAh / 1000); } else{ return String.format(Locale.ENGLISH, "%2.0f mAh", chargeInmAh); } } }