diff options
Diffstat (limited to 'device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java')
-rw-r--r-- | device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java index 2ccdaae..9287f85 100644 --- a/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java +++ b/device/bluetooth/android/java/src/org/chromium/device/bluetooth/Wrappers.java @@ -46,13 +46,15 @@ import java.util.UUID; class Wrappers { private static final String TAG = "Bluetooth"; + public static final int DEVICE_CLASS_UNSPECIFIED = 0x1F00; + /** * Wraps android.bluetooth.BluetoothAdapter. */ static class BluetoothAdapterWrapper { private final BluetoothAdapter mAdapter; protected final ContextWrapper mContext; - protected final BluetoothLeScannerWrapper mScanner; + protected BluetoothLeScannerWrapper mScannerWrapper; /** * Creates a BluetoothAdapterWrapper using the default @@ -94,34 +96,42 @@ class Wrappers { Log.i(TAG, "BluetoothAdapterWrapper.create failed: Default adapter not found."); return null; } else { - return new BluetoothAdapterWrapper(adapter, new ContextWrapper(context), - new BluetoothLeScannerWrapper(adapter.getBluetoothLeScanner())); + return new BluetoothAdapterWrapper(adapter, new ContextWrapper(context)); } } - public BluetoothAdapterWrapper(BluetoothAdapter adapter, ContextWrapper context, - BluetoothLeScannerWrapper scanner) { + public BluetoothAdapterWrapper(BluetoothAdapter adapter, ContextWrapper context) { mAdapter = adapter; mContext = context; - mScanner = scanner; - } - - public ContextWrapper getContext() { - return mContext; } - public BluetoothLeScannerWrapper getBluetoothLeScanner() { - return mScanner; + public boolean disable() { + return mAdapter.disable(); } - public boolean isEnabled() { - return mAdapter.isEnabled(); + public boolean enable() { + return mAdapter.enable(); } public String getAddress() { return mAdapter.getAddress(); } + public BluetoothLeScannerWrapper getBluetoothLeScanner() { + BluetoothLeScanner scanner = mAdapter.getBluetoothLeScanner(); + if (scanner == null) { + return null; + } + if (mScannerWrapper == null) { + mScannerWrapper = new BluetoothLeScannerWrapper(scanner); + } + return mScannerWrapper; + } + + public ContextWrapper getContext() { + return mContext; + } + public String getName() { return mAdapter.getName(); } @@ -133,6 +143,10 @@ class Wrappers { public boolean isDiscovering() { return mAdapter.isDiscovering(); } + + public boolean isEnabled() { + return mAdapter.isEnabled(); + } } /** @@ -155,7 +169,7 @@ class Wrappers { * Wraps android.bluetooth.BluetoothLeScanner. */ static class BluetoothLeScannerWrapper { - private final BluetoothLeScanner mScanner; + protected final BluetoothLeScanner mScanner; private final HashMap<ScanCallbackWrapper, ForwardScanCallbackToWrapper> mCallbacks; public BluetoothLeScannerWrapper(BluetoothLeScanner scanner) { @@ -276,6 +290,11 @@ class Wrappers { } public int getBluetoothClass_getDeviceClass() { + if (mDevice == null || mDevice.getBluetoothClass() == null) { + // BluetoothDevice.getBluetoothClass() returns null if adapter has been powered off. + // Return DEVICE_CLASS_UNSPECIFIED in these cases. + return DEVICE_CLASS_UNSPECIFIED; + } return mDevice.getBluetoothClass().getDeviceClass(); } |