Rename the Bluetooth profile classes for HID Device role.

We already have BluetoothInputDevice class, so adding something
called BluetoothHidDevice seems confusing. On the other hand,
the new class is designed to connect to HID Host devices, so
naming it BluetoothInputHost makes sense and goes in line with
the existing BluetoothInputDevice.

The same goes for the new constant HID_DEVICE that is just as
confusing to have together with the INPUT_DEVICE one.

This CL also renames the "connection state changed" broadcast
(for the same reasons), declares it as an SDK constant, and also
adds some javadoc to it.

Note that BluetoothHidDeviceApp* classes remained unchanged, as
those correspond to the app that implements the Device (and
connects to the Host).

Test: make
Change-Id: I5075ca5b97db3c1dd403c2e9660eecc7380cffe2
diff --git a/Android.mk b/Android.mk
index 3ef94ab..5dfa58a 100644
--- a/Android.mk
+++ b/Android.mk
@@ -125,7 +125,7 @@
 	core/java/android/bluetooth/IBluetoothSap.aidl \
 	core/java/android/bluetooth/IBluetoothStateChangeCallback.aidl \
 	core/java/android/bluetooth/IBluetoothHeadsetClient.aidl \
-	core/java/android/bluetooth/IBluetoothHidDevice.aidl \
+	core/java/android/bluetooth/IBluetoothInputHost.aidl \
 	core/java/android/bluetooth/IBluetoothHidDeviceCallback.aidl \
 	core/java/android/bluetooth/IBluetoothGatt.aidl \
 	core/java/android/bluetooth/IBluetoothGattCallback.aidl \
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 2b35e2b..b483054 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -1940,8 +1940,8 @@
         } else if (profile == BluetoothProfile.MAP_CLIENT) {
             BluetoothMapClient mapClient = new BluetoothMapClient(context, listener);
             return true;
-        } else if (profile == BluetoothProfile.HID_DEVICE) {
-            BluetoothHidDevice hidd = new BluetoothHidDevice(context, listener);
+        } else if (profile == BluetoothProfile.INPUT_HOST) {
+            BluetoothInputHost iHost = new BluetoothInputHost(context, listener);
             return true;
         } else {
             return false;
@@ -2019,9 +2019,9 @@
                 BluetoothMapClient mapClient = (BluetoothMapClient)proxy;
                 mapClient.close();
                 break;
-            case BluetoothProfile.HID_DEVICE:
-                BluetoothHidDevice hidd = (BluetoothHidDevice) proxy;
-                hidd.close();
+            case BluetoothProfile.INPUT_HOST:
+                BluetoothInputHost iHost = (BluetoothInputHost) proxy;
+                iHost.close();
                 break;
         }
     }
diff --git a/core/java/android/bluetooth/BluetoothHidDevice.java b/core/java/android/bluetooth/BluetoothInputHost.java
similarity index 91%
rename from core/java/android/bluetooth/BluetoothHidDevice.java
rename to core/java/android/bluetooth/BluetoothInputHost.java
index 3e6a078..129fe7e 100644
--- a/core/java/android/bluetooth/BluetoothHidDevice.java
+++ b/core/java/android/bluetooth/BluetoothInputHost.java
@@ -16,6 +16,8 @@
 
 package android.bluetooth;
 
+import android.annotation.SdkConstant;
+import android.annotation.SdkConstant.SdkConstantType;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -30,12 +32,31 @@
 /**
  * @hide
  */
-public final class BluetoothHidDevice implements BluetoothProfile {
+public final class BluetoothInputHost implements BluetoothProfile {
 
-    private static final String TAG = BluetoothHidDevice.class.getSimpleName();
+    private static final String TAG = BluetoothInputHost.class.getSimpleName();
 
+    /**
+     * Intent used to broadcast the change in connection state of the Input
+     * Host profile.
+     *
+     * <p>This intent will have 3 extras:
+     * <ul>
+     *   <li> {@link #EXTRA_STATE} - The current state of the profile. </li>
+     *   <li> {@link #EXTRA_PREVIOUS_STATE}- The previous state of the profile.</li>
+     *   <li> {@link BluetoothDevice#EXTRA_DEVICE} - The remote device. </li>
+     * </ul>
+     *
+     * <p>{@link #EXTRA_STATE} or {@link #EXTRA_PREVIOUS_STATE} can be any of
+     * {@link #STATE_DISCONNECTED}, {@link #STATE_CONNECTING},
+     * {@link #STATE_CONNECTED}, {@link #STATE_DISCONNECTING}.
+     *
+     * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to
+     * receive.
+     */
+    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
     public static final String ACTION_CONNECTION_STATE_CHANGED =
-        "android.bluetooth.hid.profile.action.CONNECTION_STATE_CHANGED";
+        "android.bluetooth.inputhost.profile.action.CONNECTION_STATE_CHANGED";
 
     /**
      * Constants representing device subclass.
@@ -92,7 +113,7 @@
 
     private ServiceListener mServiceListener;
 
-    private IBluetoothHidDevice mService;
+    private IBluetoothInputHost mService;
 
     private BluetoothAdapter mAdapter;
 
@@ -178,11 +199,11 @@
         public void onServiceConnected(ComponentName className, IBinder service) {
             Log.d(TAG, "onServiceConnected()");
 
-            mService = IBluetoothHidDevice.Stub.asInterface(service);
+            mService = IBluetoothInputHost.Stub.asInterface(service);
 
             if (mServiceListener != null) {
-                mServiceListener.onServiceConnected(BluetoothProfile.HID_DEVICE,
-                    BluetoothHidDevice.this);
+                mServiceListener.onServiceConnected(BluetoothProfile.INPUT_HOST,
+                    BluetoothInputHost.this);
             }
         }
 
@@ -192,13 +213,13 @@
             mService = null;
 
             if (mServiceListener != null) {
-                mServiceListener.onServiceDisconnected(BluetoothProfile.HID_DEVICE);
+                mServiceListener.onServiceDisconnected(BluetoothProfile.INPUT_HOST);
             }
         }
     };
 
-    BluetoothHidDevice(Context context, ServiceListener listener) {
-        Log.v(TAG, "BluetoothHidDevice");
+    BluetoothInputHost(Context context, ServiceListener listener) {
+        Log.v(TAG, "BluetoothInputHost");
 
         mContext = context;
         mServiceListener = listener;
@@ -217,7 +238,7 @@
     }
 
     boolean doBind() {
-        Intent intent = new Intent(IBluetoothHidDevice.class.getName());
+        Intent intent = new Intent(IBluetoothInputHost.class.getName());
         ComponentName comp = intent.resolveSystemService(mContext.getPackageManager(), 0);
         intent.setComponent(comp);
         if (comp == null || !mContext.bindServiceAsUser(intent, mConnection, 0,
diff --git a/core/java/android/bluetooth/BluetoothProfile.java b/core/java/android/bluetooth/BluetoothProfile.java
index 6a009a9..2f64c71 100644
--- a/core/java/android/bluetooth/BluetoothProfile.java
+++ b/core/java/android/bluetooth/BluetoothProfile.java
@@ -143,10 +143,10 @@
     public static final int MAP_CLIENT = 18;
 
     /**
-     * HID device
+     * Input Host
      * @hide
      */
-    static public final int HID_DEVICE = 19;
+    static public final int INPUT_HOST = 19;
 
     /**
      * Max profile ID. This value should be updated whenever a new profile is added to match
diff --git a/core/java/android/bluetooth/IBluetoothHidDevice.aidl b/core/java/android/bluetooth/IBluetoothInputHost.aidl
similarity index 97%
rename from core/java/android/bluetooth/IBluetoothHidDevice.aidl
rename to core/java/android/bluetooth/IBluetoothInputHost.aidl
index 15f7313..b2c421c 100644
--- a/core/java/android/bluetooth/IBluetoothHidDevice.aidl
+++ b/core/java/android/bluetooth/IBluetoothInputHost.aidl
@@ -23,7 +23,7 @@
 import android.bluetooth.BluetoothHidDeviceAppQosSettings;
 
 /** @hide */
-interface IBluetoothHidDevice {
+interface IBluetoothInputHost {
     boolean registerApp(in BluetoothHidDeviceAppConfiguration config,
             in BluetoothHidDeviceAppSdpSettings sdp, in BluetoothHidDeviceAppQosSettings inQos,
             in BluetoothHidDeviceAppQosSettings outQos, in IBluetoothHidDeviceCallback callback);
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 4e98e34..60cf810 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -181,6 +181,8 @@
     <protected-broadcast
         android:name="android.bluetooth.input.profile.action.VIRTUAL_UNPLUG_STATUS" />
     <protected-broadcast
+        android:name="android.bluetooth.inputhost.profile.action.CONNECTION_STATE_CHANGED" />
+    <protected-broadcast
         android:name="android.bluetooth.map.profile.action.CONNECTION_STATE_CHANGED" />
     <protected-broadcast android:name="android.bluetooth.mapmce.profile.action.CONNECTION_STATE_CHANGED" />
     <protected-broadcast android:name="android.bluetooth.mapmce.profile.action.MESSAGE_RECEIVED" />