summaryrefslogtreecommitdiff
path: root/framework/java
diff options
context:
space:
mode:
authorMarie Janssen <jamuraa@google.com>2016-12-29 19:32:36 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-12-29 19:32:36 +0000
commit5feadc60bea3425f79511e9897f1fc5d900d3d3c (patch)
treed21f0659d34a7a474c910cbdee0aa63a347e1f57 /framework/java
parentefcfb8aaaf1201f590efd48aaae5719c411afbed (diff)
parent6eb20469015829978b820ba63bc0d064e36d3697 (diff)
Merge "Bluetooth: track enabling in dumpsys"
Diffstat (limited to 'framework/java')
-rw-r--r--framework/java/android/bluetooth/BluetoothAdapter.java99
-rw-r--r--framework/java/android/bluetooth/IBluetoothManager.aidl6
2 files changed, 36 insertions, 69 deletions
diff --git a/framework/java/android/bluetooth/BluetoothAdapter.java b/framework/java/android/bluetooth/BluetoothAdapter.java
index b483054c99..f9be3a1d7f 100644
--- a/framework/java/android/bluetooth/BluetoothAdapter.java
+++ b/framework/java/android/bluetooth/BluetoothAdapter.java
@@ -680,30 +680,7 @@ public final class BluetoothAdapter {
}
/**
- * Performs action based on user action to turn BT ON
- * or OFF if BT is in BLE_ON state
- */
- private void notifyUserAction(boolean enable) {
- try {
- mServiceLock.readLock().lock();
- if (mService == null) {
- Log.e(TAG, "mService is null");
- return;
- }
- if (enable) {
- mService.onLeServiceUp(); //NA:TODO implementation pending
- } else {
- mService.onBrEdrDown(); //NA:TODO implementation pending
- }
- } catch (RemoteException e) {
- Log.e(TAG, "", e);
- } finally {
- mServiceLock.readLock().unlock();
- }
- }
-
- /**
- * Turns off Bluetooth LE which was earlier turned on by calling EnableBLE().
+ * Turns off Bluetooth LE which was earlier turned on by calling enableBLE().
*
* <p> If the internal Adapter state is STATE_BLE_ON, this would trigger the transition
* to STATE_OFF and completely shut-down Bluetooth
@@ -733,61 +710,50 @@ public final class BluetoothAdapter {
if (!isBleScanAlwaysAvailable()) return false;
int state = getLeState();
- if (state == BluetoothAdapter.STATE_ON) {
- if (DBG) Log.d (TAG, "STATE_ON: shouldn't disable");
- try {
- mManagerService.updateBleAppCount(mToken, false);
- } catch (RemoteException e) {
- Log.e(TAG, "", e);
- }
- return true;
-
- } else if (state == BluetoothAdapter.STATE_BLE_ON) {
- if (DBG) Log.d (TAG, "STATE_BLE_ON");
- int bleAppCnt = 0;
+ if (state == BluetoothAdapter.STATE_ON || state == BluetoothAdapter.STATE_BLE_ON) {
+ String packageName = ActivityThread.currentPackageName();
+ if (DBG) Log.d (TAG, "disableBLE(): de-registering " + packageName);
try {
- bleAppCnt = mManagerService.updateBleAppCount(mToken, false);
+ mManagerService.updateBleAppCount(mToken, false, packageName);
} catch (RemoteException e) {
Log.e(TAG, "", e);
}
- if (bleAppCnt == 0) {
- // Disable only if there are no other clients
- notifyUserAction(false);
- }
return true;
}
- if (DBG) Log.d (TAG, "STATE_OFF: Already disabled");
+ if (DBG) Log.d (TAG, "disableBLE(): Already disabled");
return false;
}
/**
- * Special Applications who want to only turn on Bluetooth Low Energy (BLE) would
- * EnableBLE, EnableBLE brings-up Bluetooth so that application can access
- * only LE related feature (Bluetooth GATT layers interfaces using the respective class)
- * EnableBLE in turn registers the existance of a special App which wants to
- * turn on Bluetooth Low enrgy part without making it visible at the settings UI
- * as Bluetooth ON.
- * <p>Invoking EnableBLE when Bluetooth is already in ON state, would just registers
- * the existance of special Application and doesn't do anything to current BT state.
- * when user turn OFF Bluetooth from UI, if there is an existance of special app, Bluetooth
- * would stay in BLE_ON state so that LE features are still acessible to the special
- * Applications.
+ * Applications who want to only use Bluetooth Low Energy (BLE) can call enableBLE.
*
- * <p>This is an asynchronous call: it will return immediately, and
+ * enableBLE registers the existence of an app using only LE functions.
+ *
+ * enableBLE may enable Bluetooth to an LE only mode so that an app can use
+ * LE related features (BluetoothGatt or BluetoothGattServer classes)
+ *
+ * If the user disables Bluetooth while an app is registered to use LE only features,
+ * Bluetooth will remain on in LE only mode for the app.
+ *
+ * When Bluetooth is in LE only mode, it is not shown as ON to the UI.
+ *
+ * <p>This is an asynchronous call: it returns immediately, and
* clients should listen for {@link #ACTION_BLE_STATE_CHANGED}
- * to be notified of subsequent adapter state changes. If this call returns
- * true, then the adapter state will immediately transition from {@link
- * #STATE_OFF} to {@link #STATE_BLE_TURNING_ON}, and some time
- * later transition to either {@link #STATE_OFF} or {@link
- * #STATE_BLE_ON}. If this call returns false then there was an
- * immediate problem that will prevent the adapter from being turned on -
- * such as Airplane mode, or the adapter is already turned on.
- * (@link #ACTION_BLE_STATE_CHANGED) returns the Bluetooth Adapter's various
+ * to be notified of adapter state changes.
+ *
+ * If this call returns * true, then the adapter state is either in a mode where
+ * LE is available, or will transition from {@link #STATE_OFF} to {@link #STATE_BLE_TURNING_ON},
+ * and some time later transition to either {@link #STATE_OFF} or {@link #STATE_BLE_ON}.
+ *
+ * If this call returns false then there was an immediate problem that prevents the
+ * adapter from being turned on - such as Airplane mode.
+ *
+ * {@link #ACTION_BLE_STATE_CHANGED} returns the Bluetooth Adapter's various
* states, It includes all the classic Bluetooth Adapter states along with
* internal BLE only states
*
- * @return true to indicate Bluetooth LE start-up has begun, or false on
+ * @return true to indicate Bluetooth LE will be available, or false on
* immediate error
* @hide
*/
@@ -796,13 +762,14 @@ public final class BluetoothAdapter {
if (!isBleScanAlwaysAvailable()) return false;
try {
- mManagerService.updateBleAppCount(mToken, true);
+ String packageName = ActivityThread.currentPackageName();
+ mManagerService.updateBleAppCount(mToken, true, packageName);
if (isLeEnabled()) {
if (DBG) Log.d(TAG, "enableBLE(): Bluetooth already enabled");
return true;
}
if (DBG) Log.d(TAG, "enableBLE(): Calling enable");
- return mManagerService.enable(ActivityThread.currentPackageName());
+ return mManagerService.enable(packageName);
} catch (RemoteException e) {
Log.e(TAG, "", e);
}
@@ -2094,7 +2061,7 @@ public final class BluetoothAdapter {
return true;
}
try {
- return mManagerService.enableNoAutoConnect();
+ return mManagerService.enableNoAutoConnect(ActivityThread.currentPackageName());
} catch (RemoteException e) {Log.e(TAG, "", e);}
return false;
}
diff --git a/framework/java/android/bluetooth/IBluetoothManager.aidl b/framework/java/android/bluetooth/IBluetoothManager.aidl
index 2ab9ae80b4..5afd774182 100644
--- a/framework/java/android/bluetooth/IBluetoothManager.aidl
+++ b/framework/java/android/bluetooth/IBluetoothManager.aidl
@@ -35,8 +35,8 @@ interface IBluetoothManager
void unregisterStateChangeCallback(in IBluetoothStateChangeCallback callback);
boolean isEnabled();
boolean enable(String packageName);
- boolean enableNoAutoConnect();
- boolean disable( String packageName, boolean persist);
+ boolean enableNoAutoConnect(String packageName);
+ boolean disable(String packageName, boolean persist);
int getState();
IBluetoothGatt getBluetoothGatt();
@@ -47,6 +47,6 @@ interface IBluetoothManager
String getName();
boolean isBleScanAlwaysAvailable();
- int updateBleAppCount(IBinder b, boolean enable);
+ int updateBleAppCount(IBinder b, boolean enable, String packageName);
boolean isBleAppPresent();
}