From 399ea8325b353cef0ffcd6cebc122f7e328cc083 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 19 Jan 2018 09:56:51 +0900 Subject: [PATCH] Add DataUnit to clarify SI-vs-IEC units. Improve docs and propose it as public API. Test: builds, boots Bug: 70915728 Change-Id: I9b55601e9eb8c069eeccd5f8f5e64fb34e336fd2 --- api/current.txt | 12 ++++++++++++ core/java/android/util/DataUnit.java | 11 +++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/api/current.txt b/api/current.txt index 06f3b2ac8f1c..43c6ab17a415 100644 --- a/api/current.txt +++ b/api/current.txt @@ -44081,6 +44081,18 @@ package android.util { field public static final deprecated boolean RELEASE = true; } + public class DataUnit extends java.lang.Enum { + method public long toBytes(long); + method public static android.util.DataUnit valueOf(java.lang.String); + method public static final android.util.DataUnit[] values(); + enum_constant public static final android.util.DataUnit GIBIBYTES; + enum_constant public static final android.util.DataUnit GIGABYTES; + enum_constant public static final android.util.DataUnit KIBIBYTES; + enum_constant public static final android.util.DataUnit KILOBYTES; + enum_constant public static final android.util.DataUnit MEBIBYTES; + enum_constant public static final android.util.DataUnit MEGABYTES; + } + public class DebugUtils { method public static boolean isObjectSelected(java.lang.Object); } diff --git a/core/java/android/util/DataUnit.java b/core/java/android/util/DataUnit.java index 3cc1bd899eeb..ea4266ecb790 100644 --- a/core/java/android/util/DataUnit.java +++ b/core/java/android/util/DataUnit.java @@ -20,12 +20,15 @@ import java.time.temporal.ChronoUnit; import java.util.concurrent.TimeUnit; /** - * Constants for common byte-related units. Note that both SI and IEC units are - * supported, and you'll need to pick the correct one for your use-case. + * A {@code DataUnit} represents data sizes at a given unit of granularity and + * provides utility methods to convert across units. + *

+ * Note that both SI units (powers of 10) and IEC units (powers of 2) are + * supported, and you'll need to pick the correct one for your use-case. For + * example, Wikipedia defines a "kilobyte" as an SI unit of 1000 bytes, and a + * "kibibyte" as an IEC unit of 1024 bytes. *

* This design is mirrored after {@link TimeUnit} and {@link ChronoUnit}. - * - * @hide */ public enum DataUnit { KILOBYTES { @Override public long toBytes(long v) { return v * 1_000; } }, -- 2.11.0