Make public APIs of ACTION_UUID, getUuids, and fetchUuidsWithSdp
Give APP a way to find out if a service is supported by a remote device
bug 5487202
Change-Id: Ie778b3227f29a24cdf61fa0365b82f9a45d439dc
diff --git a/api/current.txt b/api/current.txt
index 0e32d88..14c5031 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -4472,10 +4472,12 @@
method public android.bluetooth.BluetoothSocket createInsecureRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
method public android.bluetooth.BluetoothSocket createRfcommSocketToServiceRecord(java.util.UUID) throws java.io.IOException;
method public int describeContents();
+ method public boolean fetchUuidsWithSdp();
method public java.lang.String getAddress();
method public android.bluetooth.BluetoothClass getBluetoothClass();
method public int getBondState();
method public java.lang.String getName();
+ method public android.os.ParcelUuid[] getUuids();
method public void writeToParcel(android.os.Parcel, int);
field public static final java.lang.String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
field public static final java.lang.String ACTION_ACL_DISCONNECTED = "android.bluetooth.device.action.ACL_DISCONNECTED";
@@ -4484,6 +4486,7 @@
field public static final java.lang.String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED";
field public static final java.lang.String ACTION_FOUND = "android.bluetooth.device.action.FOUND";
field public static final java.lang.String ACTION_NAME_CHANGED = "android.bluetooth.device.action.NAME_CHANGED";
+ field public static final java.lang.String ACTION_UUID = "android.bleutooth.device.action.UUID";
field public static final int BOND_BONDED = 12; // 0xc
field public static final int BOND_BONDING = 11; // 0xb
field public static final int BOND_NONE = 10; // 0xa
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java
index 4cb8220..e8c368c 100644
--- a/core/java/android/bluetooth/BluetoothDevice.java
+++ b/core/java/android/bluetooth/BluetoothDevice.java
@@ -249,11 +249,10 @@
* <p> Always contains the extra field {@link #EXTRA_DEVICE}
* <p> Always contains the extra filed {@link #EXTRA_UUID}
* <p>Requires {@link android.Manifest.permission#BLUETOOTH} to receive.
- * @hide
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_UUID =
- "android.bleutooth.device.action.UUID";
+ "android.bluetooth.device.action.UUID";
/**
* Broadcast Action: Indicates a failure to retrieve the name of a remote
@@ -770,7 +769,18 @@
return false;
}
- /** @hide */
+ /**
+ * Returns the supported features (UUIDs) of the remote device.
+ *
+ * <p>This method does not start a service discovery procedure to retrieve the UUIDs
+ * from the remote device. Instead, the local cached copy of the service
+ * UUIDs are returned.
+ * <p>Use {@link #fetchUuidsWithSdp} if fresh UUIDs are desired.
+ * <p>Requires {@link android.Manifest.permission#BLUETOOTH}.
+ *
+ * @return the supported features (UUIDs) of the remote device,
+ * or null on error
+ */
public ParcelUuid[] getUuids() {
try {
return sService.getRemoteUuids(mAddress);
@@ -779,18 +789,19 @@
}
/**
- * Perform a SDP query on the remote device to get the UUIDs
- * supported. This API is asynchronous and an Intent is sent,
- * with the UUIDs supported by the remote end. If there is an error
- * in getting the SDP records or if the process takes a long time,
- * an Intent is sent with the UUIDs that is currently present in the
- * cache. Clients should use the {@link #getUuids} to get UUIDs
- * is SDP is not to be performed.
+ * Perform a service discovery on the remote device to get the UUIDs supported.
*
- * @return False if the sanity check fails, True if the process
+ * <p>This API is asynchronous and {@link #ACTION_UUID} intent is sent,
+ * with the UUIDs supported by the remote end. If there is an error
+ * in getting the SDP records or if the process takes a long time,
+ * {@link #ACTION_UUID} intent is sent with the UUIDs that is currently
+ * present in the cache. Clients should use the {@link #getUuids} to get UUIDs
+ * if service discovery is not to be performed.
+ * <p>Requires {@link android.Manifest.permission#BLUETOOTH}.
+ *
+ * @return False if the sanity check fails, True if the process
* of initiating an ACL connection to the remote device
* was started.
- * @hide
*/
public boolean fetchUuidsWithSdp() {
try {