diff options
| author | 2017-06-28 08:26:13 +0000 | |
|---|---|---|
| committer | 2017-06-28 08:26:16 +0000 | |
| commit | ceaccbfe70d2568f36f862273e8832b2cd7dea8c (patch) | |
| tree | 0161526d9a0aefa33137da2db9bb4d8156d3a220 | |
| parent | c49534cf097f75421e56d1b6a22112ef942165c2 (diff) | |
| parent | 1d312bfa78c25e0e1d6ea25b2c027e2efdd5a418 (diff) | |
Merge "Add APIs to get remote device's battery level (1/2)"
| -rw-r--r-- | core/java/android/bluetooth/BluetoothDevice.java | 49 | ||||
| -rw-r--r-- | core/java/android/bluetooth/BluetoothHeadset.java | 11 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetooth.aidl | 1 | ||||
| -rw-r--r-- | core/res/AndroidManifest.xml | 1 | 
4 files changed, 56 insertions, 6 deletions
| diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 6bc88b03a122..a72ae8477367 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -203,6 +203,34 @@ public final class BluetoothDevice implements Parcelable {              "android.bluetooth.device.action.BOND_STATE_CHANGED";      /** +     * Broadcast Action: Indicates the battery level of a remote device has +     * been retrieved for the first time, or changed since the last retrieval +     * <p>Always contains the extra fields {@link #EXTRA_DEVICE} and {@link +     * #EXTRA_BATTERY_LEVEL}. +     * <p>Requires {@link android.Manifest.permission#BLUETOOTH} to receive. +     * @hide +     */ +    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) +    public static final String ACTION_BATTERY_LEVEL_CHANGED = +            "android.bluetooth.device.action.BATTERY_LEVEL_CHANGED"; + +    /** +     * Used as an Integer extra field in {@link #ACTION_BATTERY_LEVEL_CHANGED} +     * intent. It contains the most recently retrieved battery level information +     * ranging from 0% to 100% for a remote device, {@link #BATTERY_LEVEL_UNKNOWN} +     * when the valid is unknown or there is an error +     * @hide +     */ +    public static final String EXTRA_BATTERY_LEVEL = +            "android.bluetooth.device.extra.BATTERY_LEVEL"; + +    /** +     * Used as the unknown value for {@link #EXTRA_BATTERY_LEVEL} and {@link #getBatteryLevel()} +     * @hide +     */ +    public static final int BATTERY_LEVEL_UNKNOWN = -1; + +    /**       * Used as a Parcelable {@link BluetoothDevice} extra field in every intent       * broadcast by this class. It contains the {@link BluetoothDevice} that       * the intent applies to. @@ -864,6 +892,27 @@ public final class BluetoothDevice implements Parcelable {      }      /** +     * Get the most recent identified battery level of this Bluetooth device +     * <p>Requires {@link android.Manifest.permission#BLUETOOTH} +     * +     * @return Battery level in percents from 0 to 100, or {@link #BATTERY_LEVEL_UNKNOWN} if +     *         Bluetooth is disabled, or device is disconnected, or does not have any battery +     *         reporting service, or return value is invalid +     * @hide +     */ +    @RequiresPermission(Manifest.permission.BLUETOOTH) +    public int getBatteryLevel() { +        if (sService == null) { +            Log.e(TAG, "Bluetooth disabled. Cannot get remote device battery level"); +            return BATTERY_LEVEL_UNKNOWN; +        } +        try { +            return sService.getBatteryLevel(this); +        } catch (RemoteException e) {Log.e(TAG, "", e);} +        return BATTERY_LEVEL_UNKNOWN; +    } + +    /**       * Start the bonding (pairing) process with the remote device.       * <p>This is an asynchronous call, it will return immediately. Register       * for {@link #ACTION_BOND_STATE_CHANGED} intents to be notified when diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java index c31a9b20e286..da9b50a56696 100644 --- a/core/java/android/bluetooth/BluetoothHeadset.java +++ b/core/java/android/bluetooth/BluetoothHeadset.java @@ -226,14 +226,13 @@ public final class BluetoothHeadset implements BluetoothProfile {       *       * <p>This intent will have 3 extras:       * <ul> -     *   <li> {@link #EXTRA_IND_ID} - The Assigned number of headset Indicator which is supported by -                                        the headset ( as indicated by AT+BIND -                                        command in the SLC sequence).or whose value -                                        is changed (indicated by AT+BIEV command)</li> -     *   <li> {@link #EXTRA_IND_VALUE}- The updated value of headset indicator. </li> +     *   <li> {@link #EXTRA_HF_INDICATORS_IND_ID} - The Assigned number of headset Indicator which +     *              is supported by the headset ( as indicated by AT+BIND command in the SLC +     *              sequence).or whose value is changed (indicated by AT+BIEV command) </li> +     *   <li> {@link #EXTRA_HF_INDICATORS_IND_VALUE}- The updated value of headset indicator. </li>       *   <li> {@link BluetoothDevice#EXTRA_DEVICE} - The remote device. </li>       * </ul> -     * <p>{@link #EXTRA_IND_ID} is defined by Bluetooth SIG and each of the indicators are +     * <p>{@link #EXTRA_HF_INDICATORS_IND_ID} is defined by Bluetooth SIG and each of the indicators are       * given an assigned number. Below shows the assigned number of Indicator added so far       * - Enhanced Safety - 1       * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to diff --git a/core/java/android/bluetooth/IBluetooth.aidl b/core/java/android/bluetooth/IBluetooth.aidl index 43c5ae4407c9..1d7cfc900e4c 100644 --- a/core/java/android/bluetooth/IBluetooth.aidl +++ b/core/java/android/bluetooth/IBluetooth.aidl @@ -75,6 +75,7 @@ interface IBluetooth      ParcelUuid[] getRemoteUuids(in BluetoothDevice device);      boolean fetchRemoteUuids(in BluetoothDevice device);      boolean sdpSearch(in BluetoothDevice device, in ParcelUuid uuid); +    int getBatteryLevel(in BluetoothDevice device);      boolean setPin(in BluetoothDevice device, boolean accept, int len, in byte[] pinCode);      boolean setPasskey(in BluetoothDevice device, boolean accept, int len, in byte[] diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 914099fc117b..d5ac4aea5510 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -142,6 +142,7 @@      <protected-broadcast android:name="android.bluetooth.device.action.CONNECTION_ACCESS_CANCEL" />      <protected-broadcast android:name="android.bluetooth.device.action.CONNECTION_ACCESS_REQUEST" />      <protected-broadcast android:name="android.bluetooth.device.action.SDP_RECORD" /> +    <protected-broadcast android:name="android.bluetooth.device.action.BATTERY_LEVEL_CHANGED" />      <protected-broadcast android:name="android.bluetooth.devicepicker.action.LAUNCH" />      <protected-broadcast android:name="android.bluetooth.devicepicker.action.DEVICE_SELECTED" />      <protected-broadcast |