package de.danoeh.antennapodsp.util;
import android.util.Log;
/**
* Provides methods for converting various units.
*/
public final class Converter {
/**
* Class shall not be instantiated.
*/
private Converter() {
}
/**
* Logging tag.
*/
private static final String TAG = "Converter";
/**
* Indicates that the value is in the Byte range.
*/
private static final int B_RANGE = 0;
/**
* Indicates that the value is in the Kilobyte range.
*/
private static final int KB_RANGE = 1;
/**
* Indicates that the value is in the Megabyte range.
*/
private static final int MB_RANGE = 2;
/**
* Indicates that the value is in the Gigabyte range.
*/
private static final int GB_RANGE = 3;
/**
* Determines the length of the number for best readability.
*/
private static final int NUM_LENGTH = 1000;
private static final int HOURS_MIL = 3600000;
private static final int MINUTES_MIL = 60000;
private static final int SECONDS_MIL = 1000;
/**
* Takes a byte-value and converts it into a more readable
* String.
*
* @param input The value to convert
* @return The converted String with a unit
*/
public static String byteToString(final long input) {
int i = 0;
int result = 0;
for (i = 0; i < GB_RANGE + 1; i++) {
result = (int) (input / Math.pow(1024, i));
if (result < NUM_LENGTH) {
break;
}
}
switch (i) {
case B_RANGE:
return result + " B";
case KB_RANGE:
return result + " KB";
case MB_RANGE:
return result + " MB";
case GB_RANGE:
return result + " GB";
default:
Log.e(TAG, "Error happened in byteToString");
return "ERROR";
}
}
/**
* Converts milliseconds to a string containing hours, minutes and seconds
*/
public static String getDurationStringLong(int duration) {
int h = duration / HOURS_MIL;
int rest = duration - h * HOURS_MIL;
int m = rest / MINUTES_MIL;
rest -= m * MINUTES_MIL;
int s = rest / SECONDS_MIL;
return String.format("%02d:%02d:%02d", h, m, s);
}
/**
* Converts milliseconds to a string containing hours and minutes
*/
public static String getDurationStringShort(int duration) {
int h = duration / HOURS_MIL;
int rest = duration - h * HOURS_MIL;
int m = rest / MINUTES_MIL;
return String.format("%02d:%02d", h, m);
}
}