diff --git a/api/current.txt b/api/current.txt
index fb2c0ffab67f3..8165873d14bf1 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -32397,6 +32397,7 @@ package android.util {
method public static int complexToDimensionPixelSize(int, android.util.DisplayMetrics);
method public static float complexToFloat(int);
method public static float complexToFraction(int, float, float);
+ method public int getComplexUnit();
method public float getDimension(android.util.DisplayMetrics);
method public final float getFloat();
method public float getFraction(float, float);
diff --git a/core/java/android/util/TypedValue.java b/core/java/android/util/TypedValue.java
index d42ed0315fc98..74d42452503e8 100644
--- a/core/java/android/util/TypedValue.java
+++ b/core/java/android/util/TypedValue.java
@@ -311,6 +311,18 @@ public class TypedValue {
return complexToDimension(data, metrics);
}
+ /**
+ * Return the complex unit type for this value. For example, a dimen type
+ * with value 12sp will return {@link #COMPLEX_UNIT_SP}. Only use for values
+ * whose type is {@link #TYPE_DIMENSION}.
+ *
+ * @return The complex unit type.
+ */
+ public int getComplexUnit()
+ {
+ return COMPLEX_UNIT_MASK & (data>>TypedValue.COMPLEX_UNIT_SHIFT);
+ }
+
/**
* Converts an unpacked complex data value holding a dimension to its final floating
* point value. The two parameters unit and value