FileDocCategorySizeDatePackage
Formatter.javaAPI DocAndroid 5.1 API7738Thu Mar 12 22:22:10 GMT 2015android.text.format

Formatter

public final class Formatter extends Object
Utility class to aid in formatting common values that are not covered by the {@link java.util.Formatter} class in {@link java.util}

Fields Summary
private static final int
SECONDS_PER_MINUTE
private static final int
SECONDS_PER_HOUR
private static final int
SECONDS_PER_DAY
private static final int
MILLIS_PER_MINUTE
Constructors Summary
Methods Summary
public static java.lang.StringformatFileSize(android.content.Context context, long number)
Formats a content size to be in the form of bytes, kilobytes, megabytes, etc

param
context Context to use to load the localized units
param
number size value to be formatted
return
formatted string with the number

        return formatFileSize(context, number, false);
    
private static java.lang.StringformatFileSize(android.content.Context context, long number, boolean shorter)

        if (context == null) {
            return "";
        }

        float result = number;
        int suffix = com.android.internal.R.string.byteShort;
        if (result > 900) {
            suffix = com.android.internal.R.string.kilobyteShort;
            result = result / 1024;
        }
        if (result > 900) {
            suffix = com.android.internal.R.string.megabyteShort;
            result = result / 1024;
        }
        if (result > 900) {
            suffix = com.android.internal.R.string.gigabyteShort;
            result = result / 1024;
        }
        if (result > 900) {
            suffix = com.android.internal.R.string.terabyteShort;
            result = result / 1024;
        }
        if (result > 900) {
            suffix = com.android.internal.R.string.petabyteShort;
            result = result / 1024;
        }
        String value;
        if (result < 1) {
            value = String.format("%.2f", result);
        } else if (result < 10) {
            if (shorter) {
                value = String.format("%.1f", result);
            } else {
                value = String.format("%.2f", result);
            }
        } else if (result < 100) {
            if (shorter) {
                value = String.format("%.0f", result);
            } else {
                value = String.format("%.2f", result);
            }
        } else {
            value = String.format("%.0f", result);
        }
        return context.getResources().
            getString(com.android.internal.R.string.fileSizeSuffix,
                      value, context.getString(suffix));
    
public static java.lang.StringformatIpAddress(int ipv4Address)
Returns a string in the canonical IPv4 format ###.###.###.### from a packed integer containing the IP address. The IPv4 address is expected to be in little-endian format (LSB first). That is, 0x01020304 will return "4.3.2.1".

deprecated
Use {@link java.net.InetAddress#getHostAddress()}, which supports both IPv4 and IPv6 addresses. This method does not support IPv6 addresses.

        return NetworkUtils.intToInetAddress(ipv4Address).getHostAddress();
    
public static java.lang.StringformatShortElapsedTime(android.content.Context context, long millis)
Returns elapsed time for the given millis, in the following format: 1 day 5 hrs; will include at most two units, can go down to seconds precision.

param
context the application context
param
millis the elapsed time in milli seconds
return
the formatted elapsed time
hide


                                                       
           
        long secondsLong = millis / 1000;

        int days = 0, hours = 0, minutes = 0;
        if (secondsLong >= SECONDS_PER_DAY) {
            days = (int)(secondsLong / SECONDS_PER_DAY);
            secondsLong -= days * SECONDS_PER_DAY;
        }
        if (secondsLong >= SECONDS_PER_HOUR) {
            hours = (int)(secondsLong / SECONDS_PER_HOUR);
            secondsLong -= hours * SECONDS_PER_HOUR;
        }
        if (secondsLong >= SECONDS_PER_MINUTE) {
            minutes = (int)(secondsLong / SECONDS_PER_MINUTE);
            secondsLong -= minutes * SECONDS_PER_MINUTE;
        }
        int seconds = (int)secondsLong;

        if (days >= 2) {
            days += (hours+12)/24;
            return context.getString(com.android.internal.R.string.durationDays, days);
        } else if (days > 0) {
            if (hours == 1) {
                return context.getString(com.android.internal.R.string.durationDayHour, days, hours);
            }
            return context.getString(com.android.internal.R.string.durationDayHours, days, hours);
        } else if (hours >= 2) {
            hours += (minutes+30)/60;
            return context.getString(com.android.internal.R.string.durationHours, hours);
        } else if (hours > 0) {
            if (minutes == 1) {
                return context.getString(com.android.internal.R.string.durationHourMinute, hours,
                        minutes);
            }
            return context.getString(com.android.internal.R.string.durationHourMinutes, hours,
                    minutes);
        } else if (minutes >= 2) {
            minutes += (seconds+30)/60;
            return context.getString(com.android.internal.R.string.durationMinutes, minutes);
        } else if (minutes > 0) {
            if (seconds == 1) {
                return context.getString(com.android.internal.R.string.durationMinuteSecond, minutes,
                        seconds);
            }
            return context.getString(com.android.internal.R.string.durationMinuteSeconds, minutes,
                    seconds);
        } else if (seconds == 1) {
            return context.getString(com.android.internal.R.string.durationSecond, seconds);
        } else {
            return context.getString(com.android.internal.R.string.durationSeconds, seconds);
        }
    
public static java.lang.StringformatShortElapsedTimeRoundingUpToMinutes(android.content.Context context, long millis)
Returns elapsed time for the given millis, in the following format: 1 day 5 hrs; will include at most two units, can go down to minutes precision.

param
context the application context
param
millis the elapsed time in milli seconds
return
the formatted elapsed time
hide

        long minutesRoundedUp = (millis + MILLIS_PER_MINUTE - 1) / MILLIS_PER_MINUTE;

        if (minutesRoundedUp == 0) {
            return context.getString(com.android.internal.R.string.durationMinutes, 0);
        } else if (minutesRoundedUp == 1) {
            return context.getString(com.android.internal.R.string.durationMinute, 1);
        }

        return formatShortElapsedTime(context, minutesRoundedUp * MILLIS_PER_MINUTE);
    
public static java.lang.StringformatShortFileSize(android.content.Context context, long number)
Like {@link #formatFileSize}, but trying to generate shorter numbers (showing fewer digits of precision).

        return formatFileSize(context, number, true);