diff options
| author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-02-05 01:02:53 +0000 |
|---|---|---|
| committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-02-05 01:02:53 +0000 |
| commit | 9514b54cfd146fcc694a4e0970a23e5f2e2b6188 (patch) | |
| tree | dfe4751b5114eb484d9dcf1aa3092ab4c4e29bac /core/java/android/bluetooth/BluetoothAdapter.java | |
| parent | 2eafee92ee936de1f574cf5cfd6fbe0b2cd40556 (diff) | |
| parent | cd3f28071ec3b8bc58ea0e1ba450bab0069ab20f (diff) | |
Merge "Change data type of duration param from int representing seconds to long representing milliseconds in BluetoothAdapter#setScanMode" am: 6d4004fc61 am: cd3f28071e
Change-Id: I04f8786655f21b0dcf516f3dccb847424e45ce65
Diffstat (limited to 'core/java/android/bluetooth/BluetoothAdapter.java')
| -rw-r--r-- | core/java/android/bluetooth/BluetoothAdapter.java | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index 3bc83dbcd04e..56424c9f5a7d 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -1485,9 +1485,8 @@ public final class BluetoothAdapter { * <p>The Bluetooth scan mode determines if the local adapter is * connectable and/or discoverable from remote Bluetooth devices. * <p>For privacy reasons, discoverable mode is automatically turned off - * after <code>duration</code> seconds. For example, 120 seconds should be - * enough for a remote device to initiate and complete its discovery - * process. + * after <code>durationMillis</code> milliseconds. For example, 120000 milliseconds should be + * enough for a remote device to initiate and complete its discovery process. * <p>Valid scan mode values are: * {@link #SCAN_MODE_NONE}, * {@link #SCAN_MODE_CONNECTABLE}, @@ -1502,24 +1501,29 @@ public final class BluetoothAdapter { * </code>instead. * * @param mode valid scan mode - * @param duration time in seconds to apply scan mode, only used for {@link + * @param durationMillis time in milliseconds to apply scan mode, only used for {@link * #SCAN_MODE_CONNECTABLE_DISCOVERABLE} * @return true if the scan mode was set, false otherwise * @hide */ @SystemApi - @RequiresPermission(Manifest.permission.BLUETOOTH) - public boolean setScanMode(@ScanMode int mode, int duration) { + @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED) + public boolean setScanMode(@ScanMode int mode, long durationMillis) { if (getState() != STATE_ON) { return false; } try { mServiceLock.readLock().lock(); if (mService != null) { - return mService.setScanMode(mode, duration); + int durationSeconds = Math.toIntExact(durationMillis / 1000); + return mService.setScanMode(mode, durationSeconds); } } catch (RemoteException e) { Log.e(TAG, "", e); + } catch (ArithmeticException ex) { + Log.e(TAG, "setScanMode: Duration in seconds outside of the bounds of an int"); + throw new IllegalArgumentException("Duration not in bounds. In seconds, the " + + "durationMillis must be in the range of an int"); } finally { mServiceLock.readLock().unlock(); } @@ -1552,13 +1556,22 @@ public final class BluetoothAdapter { * @hide */ @SystemApi - @RequiresPermission(Manifest.permission.BLUETOOTH) + @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setScanMode(@ScanMode int mode) { if (getState() != STATE_ON) { return false; } - /* getDiscoverableTimeout() to use the latest from NV than use 0 */ - return setScanMode(mode, getDiscoverableTimeout()); + try { + mServiceLock.readLock().lock(); + if (mService != null) { + return mService.setScanMode(mode, getDiscoverableTimeout()); + } + } catch (RemoteException e) { + Log.e(TAG, "", e); + } finally { + mServiceLock.readLock().unlock(); + } + return false; } /** @hide */ |
