Loading core/java/android/bluetooth/BluetoothAdapter.java +235 −132 Original line number Diff line number Diff line Loading @@ -53,6 +53,8 @@ import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.TimeoutException; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * Represents the local device Bluetooth adapter. The {@link BluetoothAdapter} Loading Loading @@ -487,6 +489,8 @@ public final class BluetoothAdapter { private final IBluetoothManager mManagerService; private IBluetooth mService; private final ReentrantReadWriteLock mServiceLock = new ReentrantReadWriteLock(); private final Object mLock = new Object(); private final Map<LeScanCallback, ScanCallback> mLeScanClients; Loading Loading @@ -521,8 +525,13 @@ public final class BluetoothAdapter { throw new IllegalArgumentException("bluetooth manager service is null"); } try { mServiceLock.writeLock().lock(); mService = managerService.registerAdapter(mManagerCallback); } catch (RemoteException e) {Log.e(TAG, "", e);} } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.writeLock().unlock(); } mManagerService = managerService; mLeScanClients = new HashMap<LeScanCallback, ScanCallback>(); mToken = new Binder(); Loading Loading @@ -609,10 +618,14 @@ public final class BluetoothAdapter { @RequiresPermission(Manifest.permission.BLUETOOTH) public boolean isEnabled() { try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.isEnabled(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading Loading @@ -643,12 +656,12 @@ public final class BluetoothAdapter { * 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; } try { if (enable) { mService.onLeServiceUp(); //NA:TODO implementation pending } else { Loading @@ -656,6 +669,8 @@ public final class BluetoothAdapter { } } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } Loading Loading @@ -787,27 +802,29 @@ public final class BluetoothAdapter { @RequiresPermission(Manifest.permission.BLUETOOTH) @AdapterState public int getState() { int state = BluetoothAdapter.STATE_OFF; try { synchronized(mManagerCallback) { if (mService != null) { int state= mService.getState(); if (VDBG) Log.d(TAG, "" + hashCode() + ": getState(). Returning " + state); //consider all internal states as OFF mServiceLock.readLock().lock(); if (mService != null) { state = mService.getState(); } } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } // Consider all internal states as OFF if (state == BluetoothAdapter.STATE_BLE_ON || state == BluetoothAdapter.STATE_BLE_TURNING_ON || state == BluetoothAdapter.STATE_BLE_TURNING_OFF) { if (VDBG) Log.d(TAG, "Consider internal state as OFF"); state = BluetoothAdapter.STATE_OFF; } if (VDBG) Log.d(TAG, "" + hashCode() + ": getState(). Returning " + state); return state; } // TODO(BT) there might be a small gap during STATE_TURNING_ON that // mService is null, handle that case } } catch (RemoteException e) {Log.e(TAG, "", e);} return STATE_OFF; } /** * Get the current state of the local Bluetooth adapter Loading @@ -829,19 +846,21 @@ public final class BluetoothAdapter { @RequiresPermission(Manifest.permission.BLUETOOTH) @AdapterState public int getLeState() { int state = BluetoothAdapter.STATE_OFF; try { synchronized(mManagerCallback) { if (mService != null) { int state= mService.getState(); if (VDBG) Log.d(TAG,"getLeState() returning " + state); return state; } mServiceLock.readLock().lock(); if (mService != null) { state = mService.getState(); } } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } return BluetoothAdapter.STATE_OFF; if (VDBG) Log.d(TAG,"getLeState() returning " + state); return state; } boolean getLeAccess() { Loading Loading @@ -883,16 +902,21 @@ public final class BluetoothAdapter { */ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN) public boolean enable() { int state = STATE_OFF; int state = BluetoothAdapter.STATE_OFF; if (isEnabled() == true) { if (DBG) Log.d(TAG, "enable(): BT is already enabled..!"); return true; } // Use service interface to get the exact state if (mService != null) { try { mServiceLock.readLock().lock(); if (mService != null) { state = mService.getState(); } catch (RemoteException e) {Log.e(TAG, "", e);} } } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } if (state == BluetoothAdapter.STATE_BLE_ON) { Loading Loading @@ -997,10 +1021,13 @@ public final class BluetoothAdapter { */ public boolean configHciSnoopLog(boolean enable) { try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.configHciSnoopLog(enable); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1016,12 +1043,16 @@ public final class BluetoothAdapter { */ public boolean factoryReset() { try { mServiceLock.readLock().lock(); if (mService != null) { return mService.factoryReset(); } else { } SystemProperties.set("persist.bluetooth.factoryreset", "true"); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1036,10 +1067,13 @@ public final class BluetoothAdapter { public ParcelUuid[] getUuids() { if (getState() != STATE_ON) return null; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getUuids(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return null; } Loading @@ -1062,10 +1096,13 @@ public final class BluetoothAdapter { public boolean setName(String name) { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.setName(name); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1090,10 +1127,13 @@ public final class BluetoothAdapter { public int getScanMode() { if (getState() != STATE_ON) return SCAN_MODE_NONE; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getScanMode(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return SCAN_MODE_NONE; } Loading Loading @@ -1128,10 +1168,13 @@ public final class BluetoothAdapter { public boolean setScanMode(@ScanMode int mode, int duration) { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.setScanMode(mode, duration); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1146,10 +1189,13 @@ public final class BluetoothAdapter { public int getDiscoverableTimeout() { if (getState() != STATE_ON) return -1; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getDiscoverableTimeout(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return -1; } Loading @@ -1157,10 +1203,13 @@ public final class BluetoothAdapter { public void setDiscoverableTimeout(int timeout) { if (getState() != STATE_ON) return; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) mService.setDiscoverableTimeout(timeout); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} } /** Loading Loading @@ -1197,10 +1246,13 @@ public final class BluetoothAdapter { public boolean startDiscovery() { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.startDiscovery(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1225,10 +1277,13 @@ public final class BluetoothAdapter { public boolean cancelDiscovery() { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.cancelDiscovery(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1255,10 +1310,13 @@ public final class BluetoothAdapter { public boolean isDiscovering() { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.isDiscovering(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1270,9 +1328,12 @@ public final class BluetoothAdapter { public boolean isMultipleAdvertisementSupported() { if (getState() != STATE_ON) return false; try { return mService.isMultiAdvertisementSupported(); mServiceLock.readLock().lock(); if (mService != null) return mService.isMultiAdvertisementSupported(); } catch (RemoteException e) { Log.e(TAG, "failed to get isMultipleAdvertisementSupported, error: ", e); } finally { mServiceLock.readLock().unlock(); } return false; } Loading Loading @@ -1305,9 +1366,12 @@ public final class BluetoothAdapter { public boolean isPeripheralModeSupported() { if (getState() != STATE_ON) return false; try { return mService.isPeripheralModeSupported(); mServiceLock.readLock().lock(); if (mService != null) return mService.isPeripheralModeSupported(); } catch (RemoteException e) { Log.e(TAG, "failed to get peripheral mode capability: ", e); } finally { mServiceLock.readLock().unlock(); } return false; } Loading @@ -1320,9 +1384,12 @@ public final class BluetoothAdapter { public boolean isOffloadedFilteringSupported() { if (!getLeAccess()) return false; try { return mService.isOffloadedFilteringSupported(); mServiceLock.readLock().lock(); if (mService != null) return mService.isOffloadedFilteringSupported(); } catch (RemoteException e) { Log.e(TAG, "failed to get isOffloadedFilteringSupported, error: ", e); } finally { mServiceLock.readLock().unlock(); } return false; } Loading @@ -1335,9 +1402,12 @@ public final class BluetoothAdapter { public boolean isOffloadedScanBatchingSupported() { if (!getLeAccess()) return false; try { return mService.isOffloadedScanBatchingSupported(); mServiceLock.readLock().lock(); if (mService != null) return mService.isOffloadedScanBatchingSupported(); } catch (RemoteException e) { Log.e(TAG, "failed to get isOffloadedScanBatchingSupported, error: ", e); } finally { mServiceLock.readLock().unlock(); } return false; } Loading Loading @@ -1376,10 +1446,13 @@ public final class BluetoothAdapter { public BluetoothActivityEnergyInfo getControllerActivityEnergyInfo(int updateType) { if (getState() != STATE_ON) return null; try { mServiceLock.readLock().lock(); BluetoothActivityEnergyInfo record; if (mService != null) { if (!mService.isActivityAndEnergyReportingSupported()) { return null; } } synchronized(this) { if (updateType == ACTIVITY_ENERGY_INFO_REFRESHED) { mService.getActivityEnergyInfoFromController(); Loading @@ -1396,6 +1469,8 @@ public final class BluetoothAdapter { Log.e(TAG, "getControllerActivityEnergyInfoCallback wait interrupted: " + e); } catch (RemoteException e) { Log.e(TAG, "getControllerActivityEnergyInfoCallback: " + e); } finally { mServiceLock.readLock().unlock(); } return null; } Loading @@ -1417,11 +1492,14 @@ public final class BluetoothAdapter { return toDeviceSet(new BluetoothDevice[0]); } try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return toDeviceSet(mService.getBondedDevices()); } return toDeviceSet(new BluetoothDevice[0]); } catch (RemoteException e) {Log.e(TAG, "", e);} } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } return null; } Loading @@ -1441,10 +1519,13 @@ public final class BluetoothAdapter { public int getConnectionState() { if (getState() != STATE_ON) return BluetoothAdapter.STATE_DISCONNECTED; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getAdapterConnectionState(); } catch (RemoteException e) { Log.e(TAG, "getConnectionState:", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "getConnectionState:", e);} return BluetoothAdapter.STATE_DISCONNECTED; } Loading @@ -1467,11 +1548,12 @@ public final class BluetoothAdapter { public int getProfileConnectionState(int profile) { if (getState() != STATE_ON) return BluetoothProfile.STATE_DISCONNECTED; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getProfileConnectionState(profile); } } catch (RemoteException e) { Log.e(TAG, "getProfileConnectionState:", e); } finally { mServiceLock.readLock().unlock(); } return BluetoothProfile.STATE_DISCONNECTED; } Loading Loading @@ -1775,7 +1857,9 @@ public final class BluetoothAdapter { byte[] hash; byte[] randomizer; byte[] ret = mService.readOutOfBandData(); byte[] ret = null; mServiceLock.readLock().lock(); if (mService != null) mService.readOutOfBandData(); if (ret == null || ret.length != 32) return null; Loading @@ -1788,7 +1872,12 @@ public final class BluetoothAdapter { } return new Pair<byte[], byte[]>(hash, randomizer); } catch (RemoteException e) {Log.e(TAG, "", e);}*/ } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } */ return null; } Loading Loading @@ -1917,8 +2006,11 @@ public final class BluetoothAdapter { new IBluetoothManagerCallback.Stub() { public void onBluetoothServiceUp(IBluetooth bluetoothService) { if (VDBG) Log.d(TAG, "onBluetoothServiceUp: " + bluetoothService); synchronized (mManagerCallback) { mServiceLock.writeLock().lock(); mService = bluetoothService; mServiceLock.writeLock().unlock(); synchronized (mProxyServiceStateCallbacks) { for (IBluetoothManagerCallback cb : mProxyServiceStateCallbacks ) { try { Loading @@ -1927,7 +2019,8 @@ public final class BluetoothAdapter { } else { Log.d(TAG, "onBluetoothServiceUp: cb is null!!!"); } } catch (Exception e) { Log.e(TAG,"",e);} } catch (Exception e) { Log.e(TAG,"",e); } } } Loading @@ -1935,11 +2028,14 @@ public final class BluetoothAdapter { public void onBluetoothServiceDown() { if (VDBG) Log.d(TAG, "onBluetoothServiceDown: " + mService); synchronized (mManagerCallback) { mServiceLock.writeLock().lock(); mService = null; if (mLeScanClients != null) mLeScanClients.clear(); if (sBluetoothLeAdvertiser != null) sBluetoothLeAdvertiser.cleanup(); if (sBluetoothLeScanner != null) sBluetoothLeScanner.cleanup(); mServiceLock.writeLock().unlock(); synchronized (mProxyServiceStateCallbacks) { for (IBluetoothManagerCallback cb : mProxyServiceStateCallbacks ){ try { Loading @@ -1948,7 +2044,8 @@ public final class BluetoothAdapter { } else { Log.d(TAG, "onBluetoothServiceDown: cb is null!!!"); } } catch (Exception e) { Log.e(TAG,"",e);} } catch (Exception e) { Log.e(TAG,"",e); } } } Loading Loading @@ -2011,11 +2108,17 @@ public final class BluetoothAdapter { //TODO(BT) /* try { mServiceLock.readLock().lock(); if (mService != null) { return mService.changeApplicationBluetoothState(on, new StateChangeCallbackWrapper(callback), new Binder()); } } catch (RemoteException e) { Log.e(TAG, "changeBluetoothState", e); }*/ } finally { mServiceLock.readLock().unlock(); } */ return false; } Loading services/core/java/com/android/server/BluetoothManagerService.java +165 −118 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
core/java/android/bluetooth/BluetoothAdapter.java +235 −132 Original line number Diff line number Diff line Loading @@ -53,6 +53,8 @@ import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.TimeoutException; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * Represents the local device Bluetooth adapter. The {@link BluetoothAdapter} Loading Loading @@ -487,6 +489,8 @@ public final class BluetoothAdapter { private final IBluetoothManager mManagerService; private IBluetooth mService; private final ReentrantReadWriteLock mServiceLock = new ReentrantReadWriteLock(); private final Object mLock = new Object(); private final Map<LeScanCallback, ScanCallback> mLeScanClients; Loading Loading @@ -521,8 +525,13 @@ public final class BluetoothAdapter { throw new IllegalArgumentException("bluetooth manager service is null"); } try { mServiceLock.writeLock().lock(); mService = managerService.registerAdapter(mManagerCallback); } catch (RemoteException e) {Log.e(TAG, "", e);} } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.writeLock().unlock(); } mManagerService = managerService; mLeScanClients = new HashMap<LeScanCallback, ScanCallback>(); mToken = new Binder(); Loading Loading @@ -609,10 +618,14 @@ public final class BluetoothAdapter { @RequiresPermission(Manifest.permission.BLUETOOTH) public boolean isEnabled() { try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.isEnabled(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading Loading @@ -643,12 +656,12 @@ public final class BluetoothAdapter { * 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; } try { if (enable) { mService.onLeServiceUp(); //NA:TODO implementation pending } else { Loading @@ -656,6 +669,8 @@ public final class BluetoothAdapter { } } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } Loading Loading @@ -787,27 +802,29 @@ public final class BluetoothAdapter { @RequiresPermission(Manifest.permission.BLUETOOTH) @AdapterState public int getState() { int state = BluetoothAdapter.STATE_OFF; try { synchronized(mManagerCallback) { if (mService != null) { int state= mService.getState(); if (VDBG) Log.d(TAG, "" + hashCode() + ": getState(). Returning " + state); //consider all internal states as OFF mServiceLock.readLock().lock(); if (mService != null) { state = mService.getState(); } } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } // Consider all internal states as OFF if (state == BluetoothAdapter.STATE_BLE_ON || state == BluetoothAdapter.STATE_BLE_TURNING_ON || state == BluetoothAdapter.STATE_BLE_TURNING_OFF) { if (VDBG) Log.d(TAG, "Consider internal state as OFF"); state = BluetoothAdapter.STATE_OFF; } if (VDBG) Log.d(TAG, "" + hashCode() + ": getState(). Returning " + state); return state; } // TODO(BT) there might be a small gap during STATE_TURNING_ON that // mService is null, handle that case } } catch (RemoteException e) {Log.e(TAG, "", e);} return STATE_OFF; } /** * Get the current state of the local Bluetooth adapter Loading @@ -829,19 +846,21 @@ public final class BluetoothAdapter { @RequiresPermission(Manifest.permission.BLUETOOTH) @AdapterState public int getLeState() { int state = BluetoothAdapter.STATE_OFF; try { synchronized(mManagerCallback) { if (mService != null) { int state= mService.getState(); if (VDBG) Log.d(TAG,"getLeState() returning " + state); return state; } mServiceLock.readLock().lock(); if (mService != null) { state = mService.getState(); } } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } return BluetoothAdapter.STATE_OFF; if (VDBG) Log.d(TAG,"getLeState() returning " + state); return state; } boolean getLeAccess() { Loading Loading @@ -883,16 +902,21 @@ public final class BluetoothAdapter { */ @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN) public boolean enable() { int state = STATE_OFF; int state = BluetoothAdapter.STATE_OFF; if (isEnabled() == true) { if (DBG) Log.d(TAG, "enable(): BT is already enabled..!"); return true; } // Use service interface to get the exact state if (mService != null) { try { mServiceLock.readLock().lock(); if (mService != null) { state = mService.getState(); } catch (RemoteException e) {Log.e(TAG, "", e);} } } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } if (state == BluetoothAdapter.STATE_BLE_ON) { Loading Loading @@ -997,10 +1021,13 @@ public final class BluetoothAdapter { */ public boolean configHciSnoopLog(boolean enable) { try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.configHciSnoopLog(enable); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1016,12 +1043,16 @@ public final class BluetoothAdapter { */ public boolean factoryReset() { try { mServiceLock.readLock().lock(); if (mService != null) { return mService.factoryReset(); } else { } SystemProperties.set("persist.bluetooth.factoryreset", "true"); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1036,10 +1067,13 @@ public final class BluetoothAdapter { public ParcelUuid[] getUuids() { if (getState() != STATE_ON) return null; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getUuids(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return null; } Loading @@ -1062,10 +1096,13 @@ public final class BluetoothAdapter { public boolean setName(String name) { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.setName(name); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1090,10 +1127,13 @@ public final class BluetoothAdapter { public int getScanMode() { if (getState() != STATE_ON) return SCAN_MODE_NONE; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getScanMode(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return SCAN_MODE_NONE; } Loading Loading @@ -1128,10 +1168,13 @@ public final class BluetoothAdapter { public boolean setScanMode(@ScanMode int mode, int duration) { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.setScanMode(mode, duration); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1146,10 +1189,13 @@ public final class BluetoothAdapter { public int getDiscoverableTimeout() { if (getState() != STATE_ON) return -1; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getDiscoverableTimeout(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return -1; } Loading @@ -1157,10 +1203,13 @@ public final class BluetoothAdapter { public void setDiscoverableTimeout(int timeout) { if (getState() != STATE_ON) return; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) mService.setDiscoverableTimeout(timeout); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} } /** Loading Loading @@ -1197,10 +1246,13 @@ public final class BluetoothAdapter { public boolean startDiscovery() { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.startDiscovery(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1225,10 +1277,13 @@ public final class BluetoothAdapter { public boolean cancelDiscovery() { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.cancelDiscovery(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1255,10 +1310,13 @@ public final class BluetoothAdapter { public boolean isDiscovering() { if (getState() != STATE_ON) return false; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.isDiscovering(); } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "", e);} return false; } Loading @@ -1270,9 +1328,12 @@ public final class BluetoothAdapter { public boolean isMultipleAdvertisementSupported() { if (getState() != STATE_ON) return false; try { return mService.isMultiAdvertisementSupported(); mServiceLock.readLock().lock(); if (mService != null) return mService.isMultiAdvertisementSupported(); } catch (RemoteException e) { Log.e(TAG, "failed to get isMultipleAdvertisementSupported, error: ", e); } finally { mServiceLock.readLock().unlock(); } return false; } Loading Loading @@ -1305,9 +1366,12 @@ public final class BluetoothAdapter { public boolean isPeripheralModeSupported() { if (getState() != STATE_ON) return false; try { return mService.isPeripheralModeSupported(); mServiceLock.readLock().lock(); if (mService != null) return mService.isPeripheralModeSupported(); } catch (RemoteException e) { Log.e(TAG, "failed to get peripheral mode capability: ", e); } finally { mServiceLock.readLock().unlock(); } return false; } Loading @@ -1320,9 +1384,12 @@ public final class BluetoothAdapter { public boolean isOffloadedFilteringSupported() { if (!getLeAccess()) return false; try { return mService.isOffloadedFilteringSupported(); mServiceLock.readLock().lock(); if (mService != null) return mService.isOffloadedFilteringSupported(); } catch (RemoteException e) { Log.e(TAG, "failed to get isOffloadedFilteringSupported, error: ", e); } finally { mServiceLock.readLock().unlock(); } return false; } Loading @@ -1335,9 +1402,12 @@ public final class BluetoothAdapter { public boolean isOffloadedScanBatchingSupported() { if (!getLeAccess()) return false; try { return mService.isOffloadedScanBatchingSupported(); mServiceLock.readLock().lock(); if (mService != null) return mService.isOffloadedScanBatchingSupported(); } catch (RemoteException e) { Log.e(TAG, "failed to get isOffloadedScanBatchingSupported, error: ", e); } finally { mServiceLock.readLock().unlock(); } return false; } Loading Loading @@ -1376,10 +1446,13 @@ public final class BluetoothAdapter { public BluetoothActivityEnergyInfo getControllerActivityEnergyInfo(int updateType) { if (getState() != STATE_ON) return null; try { mServiceLock.readLock().lock(); BluetoothActivityEnergyInfo record; if (mService != null) { if (!mService.isActivityAndEnergyReportingSupported()) { return null; } } synchronized(this) { if (updateType == ACTIVITY_ENERGY_INFO_REFRESHED) { mService.getActivityEnergyInfoFromController(); Loading @@ -1396,6 +1469,8 @@ public final class BluetoothAdapter { Log.e(TAG, "getControllerActivityEnergyInfoCallback wait interrupted: " + e); } catch (RemoteException e) { Log.e(TAG, "getControllerActivityEnergyInfoCallback: " + e); } finally { mServiceLock.readLock().unlock(); } return null; } Loading @@ -1417,11 +1492,14 @@ public final class BluetoothAdapter { return toDeviceSet(new BluetoothDevice[0]); } try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return toDeviceSet(mService.getBondedDevices()); } return toDeviceSet(new BluetoothDevice[0]); } catch (RemoteException e) {Log.e(TAG, "", e);} } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } return null; } Loading @@ -1441,10 +1519,13 @@ public final class BluetoothAdapter { public int getConnectionState() { if (getState() != STATE_ON) return BluetoothAdapter.STATE_DISCONNECTED; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getAdapterConnectionState(); } catch (RemoteException e) { Log.e(TAG, "getConnectionState:", e); } finally { mServiceLock.readLock().unlock(); } } catch (RemoteException e) {Log.e(TAG, "getConnectionState:", e);} return BluetoothAdapter.STATE_DISCONNECTED; } Loading @@ -1467,11 +1548,12 @@ public final class BluetoothAdapter { public int getProfileConnectionState(int profile) { if (getState() != STATE_ON) return BluetoothProfile.STATE_DISCONNECTED; try { synchronized(mManagerCallback) { mServiceLock.readLock().lock(); if (mService != null) return mService.getProfileConnectionState(profile); } } catch (RemoteException e) { Log.e(TAG, "getProfileConnectionState:", e); } finally { mServiceLock.readLock().unlock(); } return BluetoothProfile.STATE_DISCONNECTED; } Loading Loading @@ -1775,7 +1857,9 @@ public final class BluetoothAdapter { byte[] hash; byte[] randomizer; byte[] ret = mService.readOutOfBandData(); byte[] ret = null; mServiceLock.readLock().lock(); if (mService != null) mService.readOutOfBandData(); if (ret == null || ret.length != 32) return null; Loading @@ -1788,7 +1872,12 @@ public final class BluetoothAdapter { } return new Pair<byte[], byte[]>(hash, randomizer); } catch (RemoteException e) {Log.e(TAG, "", e);}*/ } catch (RemoteException e) { Log.e(TAG, "", e); } finally { mServiceLock.readLock().unlock(); } */ return null; } Loading Loading @@ -1917,8 +2006,11 @@ public final class BluetoothAdapter { new IBluetoothManagerCallback.Stub() { public void onBluetoothServiceUp(IBluetooth bluetoothService) { if (VDBG) Log.d(TAG, "onBluetoothServiceUp: " + bluetoothService); synchronized (mManagerCallback) { mServiceLock.writeLock().lock(); mService = bluetoothService; mServiceLock.writeLock().unlock(); synchronized (mProxyServiceStateCallbacks) { for (IBluetoothManagerCallback cb : mProxyServiceStateCallbacks ) { try { Loading @@ -1927,7 +2019,8 @@ public final class BluetoothAdapter { } else { Log.d(TAG, "onBluetoothServiceUp: cb is null!!!"); } } catch (Exception e) { Log.e(TAG,"",e);} } catch (Exception e) { Log.e(TAG,"",e); } } } Loading @@ -1935,11 +2028,14 @@ public final class BluetoothAdapter { public void onBluetoothServiceDown() { if (VDBG) Log.d(TAG, "onBluetoothServiceDown: " + mService); synchronized (mManagerCallback) { mServiceLock.writeLock().lock(); mService = null; if (mLeScanClients != null) mLeScanClients.clear(); if (sBluetoothLeAdvertiser != null) sBluetoothLeAdvertiser.cleanup(); if (sBluetoothLeScanner != null) sBluetoothLeScanner.cleanup(); mServiceLock.writeLock().unlock(); synchronized (mProxyServiceStateCallbacks) { for (IBluetoothManagerCallback cb : mProxyServiceStateCallbacks ){ try { Loading @@ -1948,7 +2044,8 @@ public final class BluetoothAdapter { } else { Log.d(TAG, "onBluetoothServiceDown: cb is null!!!"); } } catch (Exception e) { Log.e(TAG,"",e);} } catch (Exception e) { Log.e(TAG,"",e); } } } Loading Loading @@ -2011,11 +2108,17 @@ public final class BluetoothAdapter { //TODO(BT) /* try { mServiceLock.readLock().lock(); if (mService != null) { return mService.changeApplicationBluetoothState(on, new StateChangeCallbackWrapper(callback), new Binder()); } } catch (RemoteException e) { Log.e(TAG, "changeBluetoothState", e); }*/ } finally { mServiceLock.readLock().unlock(); } */ return false; } Loading
services/core/java/com/android/server/BluetoothManagerService.java +165 −118 File changed.Preview size limit exceeded, changes collapsed. Show changes