location: Add sub-locality, sub-thoroughfare and premises fields to Address class

This is required for fully describing locations in Japan.

Signed-off-by: Mike Lockwood <lockwood@android.com>
diff --git a/api/current.xml b/api/current.xml
index a129c3d..af1f289 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -66816,6 +66816,17 @@
  visibility="public"
 >
 </method>
+<method name="getPremises"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getSubAdminArea"
  return="java.lang.String"
  abstract="false"
@@ -66827,6 +66838,28 @@
  visibility="public"
 >
 </method>
+<method name="getSubLocality"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
+<method name="getSubThoroughfare"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getThoroughfare"
  return="java.lang.String"
  abstract="false"
@@ -67016,6 +67049,19 @@
 <parameter name="postalCode" type="java.lang.String">
 </parameter>
 </method>
+<method name="setPremises"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="premises" type="java.lang.String">
+</parameter>
+</method>
 <method name="setSubAdminArea"
  return="void"
  abstract="false"
@@ -67029,6 +67075,32 @@
 <parameter name="subAdminArea" type="java.lang.String">
 </parameter>
 </method>
+<method name="setSubLocality"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="sublocality" type="java.lang.String">
+</parameter>
+</method>
+<method name="setSubThoroughfare"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="subthoroughfare" type="java.lang.String">
+</parameter>
+</method>
 <method name="setThoroughfare"
  return="void"
  abstract="false"
diff --git a/location/java/android/location/Address.java b/location/java/android/location/Address.java
index 3551363..ac275c6 100644
--- a/location/java/android/location/Address.java
+++ b/location/java/android/location/Address.java
@@ -41,7 +41,10 @@
     private String mAdminArea;
     private String mSubAdminArea;
     private String mLocality;
+    private String mSubLocality;
     private String mThoroughfare;
+    private String mSubThoroughfare;
+    private String mPremises;
     private String mPostalCode;
     private String mCountryCode;
     private String mCountryName;
@@ -175,6 +178,21 @@
     }
 
     /**
+     * Returns the sub-locality of the address, or null if it is unknown.
+     * For example, this may correspond to the neighborhood of the locality.
+     */
+    public String getSubLocality() {
+        return mSubLocality;
+    }
+
+    /**
+     * Sets the sub-locality of the address to the given String, which may be null.
+     */
+    public void setSubLocality(String sublocality) {
+        mSubLocality = sublocality;
+    }
+
+    /**
      * Returns the thoroughfare name of the address, for example, "1600 Ampitheater Parkway",
      * which may be null
      */
@@ -190,6 +208,35 @@
     }
 
     /**
+     * Returns the sub-thoroughfare name of the address, which may be null.
+     * This may correspond to the street number of the address.
+     */
+    public String getSubThoroughfare() {
+        return mSubThoroughfare;
+    }
+
+    /**
+     * Sets the sub-thoroughfare name of the address, which may be null.
+     */
+    public void setSubThoroughfare(String subthoroughfare) {
+        this.mSubThoroughfare = subthoroughfare;
+    }
+
+    /**
+     * Returns the premises of the address, or null if it is unknown.
+     */
+    public String getPremises() {
+        return mPremises;
+    }
+
+    /**
+     * Sets the premises of the address to the given String, which may be null.
+     */
+    public void setPremises(String premises) {
+        mPremises = premises;
+    }
+
+    /**
      * Returns the postal code of the address, for example "94110",
      * or null if it is unknown.
      */