Add sources for API 35

Downloaded from https://dl.google.com/android/repository/source-35_r01.zip
using SdkManager in Studio

Test: None
Change-Id: I83f78aa820b66edfdc9f8594d17bc7b6cacccec1
diff --git a/android-35/android/bluetooth/BluetoothHealth.java b/android-35/android/bluetooth/BluetoothHealth.java
new file mode 100644
index 0000000..8ce684e
--- /dev/null
+++ b/android-35/android/bluetooth/BluetoothHealth.java
@@ -0,0 +1,388 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.bluetooth;
+
+import android.annotation.RequiresPermission;
+import android.annotation.SuppressLint;
+import android.bluetooth.annotations.RequiresBluetoothConnectPermission;
+import android.bluetooth.annotations.RequiresLegacyBluetoothPermission;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.util.Log;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Public API for Bluetooth Health Profile.
+ *
+ * <p>BluetoothHealth is a proxy object for controlling the Bluetooth Service via IPC.
+ *
+ * <p>How to connect to a health device which is acting in the source role.
+ * <li>Use {@link BluetoothAdapter#getProfileProxy} to get the BluetoothHealth proxy object.
+ * <li>Create an {@link BluetoothHealth} callback and call {@link #registerSinkAppConfiguration} to
+ *     register an application configuration
+ * <li>Pair with the remote device. This currently needs to be done manually from Bluetooth Settings
+ * <li>Connect to a health device using {@link #connectChannelToSource}. Some devices will connect
+ *     the channel automatically. The {@link BluetoothHealth} callback will inform the application
+ *     of channel state change.
+ * <li>Use the file descriptor provided with a connected channel to read and write data to the
+ *     health channel.
+ * <li>The received data needs to be interpreted using a health manager which implements the IEEE
+ *     11073-xxxxx specifications.
+ * <li>When done, close the health channel by calling {@link #disconnectChannel} and unregister the
+ *     application configuration calling {@link #unregisterAppConfiguration}
+ *
+ * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should use
+ *     Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+ *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+ *     BluetoothDevice#createL2capChannel(int)}
+ */
+@Deprecated
+public final class BluetoothHealth implements BluetoothProfile {
+    private static final String TAG = "BluetoothHealth";
+
+    /**
+     * Health Profile Source Role - the health device.
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int SOURCE_ROLE = 1 << 0;
+
+    /**
+     * Health Profile Sink Role the device talking to the health device.
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int SINK_ROLE = 1 << 1;
+
+    /**
+     * Health Profile - Channel Type used - Reliable
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int CHANNEL_TYPE_RELIABLE = 10;
+
+    /**
+     * Health Profile - Channel Type used - Streaming
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int CHANNEL_TYPE_STREAMING = 11;
+
+    /**
+     * Hide auto-created default constructor
+     *
+     * @hide
+     */
+    BluetoothHealth() {}
+
+    /** @hide */
+    @Override
+    public void onServiceConnected(IBinder service) {}
+
+    /** @hide */
+    @Override
+    public void onServiceDisconnected() {}
+
+    /** @hide */
+    @Override
+    public BluetoothAdapter getAdapter() {
+        return null;
+    }
+
+    /**
+     * Register an application configuration that acts as a Health SINK. This is the configuration
+     * that will be used to communicate with health devices which will act as the {@link
+     * #SOURCE_ROLE}. This is an asynchronous call and so the callback is used to notify success or
+     * failure if the function returns true.
+     *
+     * @param name The friendly name associated with the application or configuration.
+     * @param dataType The dataType of the Source role of Health Profile to which the sink wants to
+     *     connect to.
+     * @param callback A callback to indicate success or failure of the registration and all
+     *     operations done on this application configuration.
+     * @return If true, callback will be called.
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated
+    @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @SuppressLint("AndroidFrameworkRequiresPermission")
+    public boolean registerSinkAppConfiguration(
+            String name, int dataType, BluetoothHealthCallback callback) {
+        Log.e(TAG, "registerSinkAppConfiguration(): BluetoothHealth is deprecated");
+        return false;
+    }
+
+    /**
+     * Unregister an application configuration that has been registered using {@link
+     * #registerSinkAppConfiguration}
+     *
+     * @param config The health app configuration
+     * @return Success or failure.
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated
+    @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @SuppressLint("AndroidFrameworkRequiresPermission")
+    public boolean unregisterAppConfiguration(BluetoothHealthAppConfiguration config) {
+        Log.e(TAG, "unregisterAppConfiguration(): BluetoothHealth is deprecated");
+        return false;
+    }
+
+    /**
+     * Connect to a health device which has the {@link #SOURCE_ROLE}. This is an asynchronous call.
+     * If this function returns true, the callback associated with the application configuration
+     * will be called.
+     *
+     * @param device The remote Bluetooth device.
+     * @param config The application configuration which has been registered using {@link
+     *     #registerSinkAppConfiguration(String, int, BluetoothHealthCallback) }
+     * @return If true, the callback associated with the application config will be called.
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated
+    @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @SuppressLint("AndroidFrameworkRequiresPermission")
+    public boolean connectChannelToSource(
+            BluetoothDevice device, BluetoothHealthAppConfiguration config) {
+        Log.e(TAG, "connectChannelToSource(): BluetoothHealth is deprecated");
+        return false;
+    }
+
+    /**
+     * Disconnect a connected health channel. This is an asynchronous call. If this function returns
+     * true, the callback associated with the application configuration will be called.
+     *
+     * @param device The remote Bluetooth device.
+     * @param config The application configuration which has been registered using {@link
+     *     #registerSinkAppConfiguration(String, int, BluetoothHealthCallback) }
+     * @param channelId The channel id associated with the channel
+     * @return If true, the callback associated with the application config will be called.
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated
+    @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @SuppressLint("AndroidFrameworkRequiresPermission")
+    public boolean disconnectChannel(
+            BluetoothDevice device, BluetoothHealthAppConfiguration config, int channelId) {
+        Log.e(TAG, "disconnectChannel(): BluetoothHealth is deprecated");
+        return false;
+    }
+
+    /**
+     * Get the file descriptor of the main channel associated with the remote device and application
+     * configuration.
+     *
+     * <p>It's the responsibility of the caller to close the ParcelFileDescriptor when done.
+     *
+     * @param device The remote Bluetooth health device
+     * @param config The application configuration
+     * @return null on failure, ParcelFileDescriptor on success.
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated
+    @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @SuppressLint("AndroidFrameworkRequiresPermission")
+    public ParcelFileDescriptor getMainChannelFd(
+            BluetoothDevice device, BluetoothHealthAppConfiguration config) {
+        Log.e(TAG, "getMainChannelFd(): BluetoothHealth is deprecated");
+        return null;
+    }
+
+    /**
+     * Get the current connection state of the profile.
+     *
+     * <p>This is not specific to any application configuration but represents the connection state
+     * of the local Bluetooth adapter with the remote device. This can be used by applications like
+     * status bar which would just like to know the state of the local adapter.
+     *
+     * @param device Remote bluetooth device.
+     * @return State of the profile connection. One of {@link #STATE_CONNECTED}, {@link
+     *     #STATE_CONNECTING}, {@link #STATE_DISCONNECTED}, {@link #STATE_DISCONNECTING}
+     */
+    @Override
+    @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @SuppressLint("AndroidFrameworkRequiresPermission")
+    public int getConnectionState(BluetoothDevice device) {
+        Log.e(TAG, "getConnectionState(): BluetoothHealth is deprecated");
+        return STATE_DISCONNECTED;
+    }
+
+    /**
+     * Get connected devices for the health profile.
+     *
+     * <p>Return the set of devices which are in state {@link #STATE_CONNECTED}
+     *
+     * <p>This is not specific to any application configuration but represents the connection state
+     * of the local Bluetooth adapter for this profile. This can be used by applications like status
+     * bar which would just like to know the state of the local adapter.
+     *
+     * @return List of devices. The list will be empty on error.
+     */
+    @Override
+    @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @SuppressLint("AndroidFrameworkRequiresPermission")
+    public List<BluetoothDevice> getConnectedDevices() {
+        Log.e(TAG, "getConnectedDevices(): BluetoothHealth is deprecated");
+        return Collections.emptyList();
+    }
+
+    /**
+     * Get a list of devices that match any of the given connection states.
+     *
+     * <p>If none of the devices match any of the given states, an empty list will be returned.
+     *
+     * <p>This is not specific to any application configuration but represents the connection state
+     * of the local Bluetooth adapter for this profile. This can be used by applications like status
+     * bar which would just like to know the state of the local adapter.
+     *
+     * @param states Array of states. States can be one of {@link #STATE_CONNECTED}, {@link
+     *     #STATE_CONNECTING}, {@link #STATE_DISCONNECTED}, {@link #STATE_DISCONNECTING},
+     * @return List of devices. The list will be empty on error.
+     */
+    @Override
+    @RequiresLegacyBluetoothPermission
+    @RequiresBluetoothConnectPermission
+    @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT)
+    @SuppressLint("AndroidFrameworkRequiresPermission")
+    public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
+        Log.e(TAG, "getDevicesMatchingConnectionStates(): BluetoothHealth is deprecated");
+        return Collections.emptyList();
+    }
+
+    /**
+     * Health Channel Connection State - Disconnected
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int STATE_CHANNEL_DISCONNECTED = 0;
+
+    /**
+     * Health Channel Connection State - Connecting
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int STATE_CHANNEL_CONNECTING = 1;
+
+    /**
+     * Health Channel Connection State - Connected
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int STATE_CHANNEL_CONNECTED = 2;
+
+    /**
+     * Health Channel Connection State - Disconnecting
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int STATE_CHANNEL_DISCONNECTING = 3;
+
+    /**
+     * Health App Configuration registration success
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int APP_CONFIG_REGISTRATION_SUCCESS = 0;
+
+    /**
+     * Health App Configuration registration failure
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int APP_CONFIG_REGISTRATION_FAILURE = 1;
+
+    /**
+     * Health App Configuration un-registration success
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int APP_CONFIG_UNREGISTRATION_SUCCESS = 2;
+
+    /**
+     * Health App Configuration un-registration failure
+     *
+     * @deprecated Health Device Profile (HDP) and MCAP protocol are no longer used. New apps should
+     *     use Bluetooth Low Energy based solutions such as {@link BluetoothGatt}, {@link
+     *     BluetoothAdapter#listenUsingL2capChannel()}, or {@link
+     *     BluetoothDevice#createL2capChannel(int)}
+     */
+    @Deprecated public static final int APP_CONFIG_UNREGISTRATION_FAILURE = 3;
+}