From 44b58ab89e59b3d8241901232c8f7dc9617b206e Mon Sep 17 00:00:00 2001 From: Matthew Xie Date: Wed, 16 Nov 2011 12:27:57 -0800 Subject: Check the bluetooth state for getUuid call Donnot make the bluetoothservice.getUuids call if the bluetooth is not on. Also get rid of all the necessary locks on BluetoothService for get property call. It had a lock on BluetoothAdapterProperty. bug5472114 Change-Id: I383472ae6006fc1f0129c960c8a44ed0df027a43 --- core/java/android/bluetooth/BluetoothAdapter.java | 1 + core/java/android/server/BluetoothService.java | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) (limited to 'core/java') diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index ea5c3db..d971652 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -533,6 +533,7 @@ public final class BluetoothAdapter { * @hide */ public ParcelUuid[] getUuids() { + if (getState() != STATE_ON) return null; try { return mService.getUuids(); } catch (RemoteException e) {Log.e(TAG, "", e);} diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java index 9ca5847..5ea8e2a 100755 --- a/core/java/android/server/BluetoothService.java +++ b/core/java/android/server/BluetoothService.java @@ -809,7 +809,7 @@ public class BluetoothService extends IBluetooth.Stub { } } - /*package*/ synchronized String getProperty(String name, boolean checkState) { + /*package*/ String getProperty(String name, boolean checkState) { // If checkState is false, check if the event loop is running. // before making the call to Bluez if (checkState) { @@ -853,14 +853,14 @@ public class BluetoothService extends IBluetooth.Stub { return getProperty("Name", false); } - public synchronized ParcelUuid[] getUuids() { + public ParcelUuid[] getUuids() { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); String value = getProperty("UUIDs", true); if (value == null) return null; return convertStringToParcelUuid(value); } - private synchronized ParcelUuid[] convertStringToParcelUuid(String value) { + private ParcelUuid[] convertStringToParcelUuid(String value) { String[] uuidStrings = null; // The UUIDs are stored as a "," separated string. uuidStrings = value.split(","); @@ -933,7 +933,7 @@ public class BluetoothService extends IBluetooth.Stub { * @return The discoverability window of the device, in seconds. A negative * value indicates an error. */ - public synchronized int getDiscoverableTimeout() { + public int getDiscoverableTimeout() { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); String timeout = getProperty("DiscoverableTimeout", true); if (timeout != null) @@ -942,7 +942,7 @@ public class BluetoothService extends IBluetooth.Stub { return -1; } - public synchronized int getScanMode() { + public int getScanMode() { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); if (!isEnabledInternal()) return BluetoothAdapter.SCAN_MODE_NONE; @@ -968,7 +968,7 @@ public class BluetoothService extends IBluetooth.Stub { return stopDiscoveryNative(); } - public synchronized boolean isDiscovering() { + public boolean isDiscovering() { mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission"); String discoveringProperty = getProperty("Discovering", false); @@ -2384,7 +2384,7 @@ public class BluetoothService extends IBluetooth.Stub { mDeviceProfileState.remove(address); } - synchronized String[] getKnownDevices() { + String[] getKnownDevices() { String[] bonds = null; String val = getProperty("Devices", true); if (val != null) { -- cgit v1.1