Merge "Properly check if BT is off when shutting down radios" into nyc-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0f760e0815
@@ -37,6 +37,7 @@ interface IBluetoothManager
|
|||||||
boolean enable();
|
boolean enable();
|
||||||
boolean enableNoAutoConnect();
|
boolean enableNoAutoConnect();
|
||||||
boolean disable(boolean persist);
|
boolean disable(boolean persist);
|
||||||
|
int getState();
|
||||||
IBluetoothGatt getBluetoothGatt();
|
IBluetoothGatt getBluetoothGatt();
|
||||||
|
|
||||||
boolean bindBluetoothProfileService(int profile, IBluetoothProfileServiceConnection proxy);
|
boolean bindBluetoothProfileService(int profile, IBluetoothProfileServiceConnection proxy);
|
||||||
|
|||||||
@@ -425,6 +425,24 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getState() {
|
||||||
|
if ((Binder.getCallingUid() != Process.SYSTEM_UID) &&
|
||||||
|
(!checkIfCallerIsForegroundUser())) {
|
||||||
|
Slog.w(TAG, "getState(): not allowed for non-active and non system user");
|
||||||
|
return BluetoothAdapter.STATE_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
mBluetoothLock.readLock().lock();
|
||||||
|
if (mBluetooth != null) return mBluetooth.getState();
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Slog.e(TAG, "getState()", e);
|
||||||
|
} finally {
|
||||||
|
mBluetoothLock.readLock().unlock();
|
||||||
|
}
|
||||||
|
return BluetoothAdapter.STATE_OFF;
|
||||||
|
}
|
||||||
|
|
||||||
class ClientDeathRecipient implements IBinder.DeathRecipient {
|
class ClientDeathRecipient implements IBinder.DeathRecipient {
|
||||||
public void binderDied() {
|
public void binderDied() {
|
||||||
if (DBG) Slog.d(TAG, "Binder is dead - unregister Ble App");
|
if (DBG) Slog.d(TAG, "Binder is dead - unregister Ble App");
|
||||||
|
|||||||
@@ -543,7 +543,8 @@ public final class ShutdownThread extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
bluetoothOff = bluetooth == null || !bluetooth.isEnabled();
|
bluetoothOff = bluetooth == null ||
|
||||||
|
bluetooth.getState() == BluetoothAdapter.STATE_OFF;
|
||||||
if (!bluetoothOff) {
|
if (!bluetoothOff) {
|
||||||
Log.w(TAG, "Disabling Bluetooth...");
|
Log.w(TAG, "Disabling Bluetooth...");
|
||||||
bluetooth.disable(false); // disable but don't persist new state
|
bluetooth.disable(false); // disable but don't persist new state
|
||||||
@@ -577,7 +578,7 @@ public final class ShutdownThread extends Thread {
|
|||||||
|
|
||||||
if (!bluetoothOff) {
|
if (!bluetoothOff) {
|
||||||
try {
|
try {
|
||||||
bluetoothOff = !bluetooth.isEnabled();
|
bluetoothOff = bluetooth.getState() == BluetoothAdapter.STATE_OFF;
|
||||||
} catch (RemoteException ex) {
|
} catch (RemoteException ex) {
|
||||||
Log.e(TAG, "RemoteException during bluetooth shutdown", ex);
|
Log.e(TAG, "RemoteException during bluetooth shutdown", ex);
|
||||||
bluetoothOff = true;
|
bluetoothOff = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user