Loading core/java/android/bluetooth/BluetoothAdapter.java +9 −22 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.app.ActivityThread; import android.os.SystemProperties; import android.provider.Settings; import android.os.Binder; import android.util.Log; import android.util.Pair; Loading Loading @@ -631,24 +632,6 @@ public final class BluetoothAdapter { } } /** * Returns true if LE only mode is enabled, that is apps * have authorization to turn only BT ON and the calling * app has privilage to do so */ private boolean isLEAlwaysOnEnabled() { boolean ret = false; if (SystemProperties.getBoolean("ro.bluetooth.blealwayson", true) == true) { Log.v(TAG, "LE always on mode is enabled"); // TODO: System API authorization check ret = true; } else { Log.v(TAG, "LE always on mode is disabled"); ret = false; } return ret; } /** * Turns off Bluetooth LE which was earlier turned on by calling EnableBLE(). * Loading Loading @@ -676,7 +659,7 @@ public final class BluetoothAdapter { * @hide */ public boolean disableBLE() { if (isLEAlwaysOnEnabled() != true) return false; if (!isBleScanAlwaysAvailable()) return false; int state = getLeState(); if (state == BluetoothAdapter.STATE_ON) { Loading Loading @@ -738,7 +721,7 @@ public final class BluetoothAdapter { * @hide */ public boolean enableBLE() { if (isLEAlwaysOnEnabled() != true) return false; if (!isBleScanAlwaysAvailable()) return false; if (isLeEnabled() == true) { if (DBG) Log.d(TAG, "enableBLE(): BT is already enabled..!"); Loading Loading @@ -1243,9 +1226,13 @@ public final class BluetoothAdapter { */ @SystemApi public boolean isBleScanAlwaysAvailable() { // TODO: implement after Settings UI change. try { return mManagerService.isBleScanAlwaysAvailable(); } catch (RemoteException e) { Log.e(TAG, "remote expection when calling isBleScanAlwaysAvailable", e); return false; } } /** * Returns whether peripheral mode is supported. Loading core/java/android/bluetooth/IBluetoothManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ interface IBluetoothManager String getAddress(); String getName(); boolean isBleScanAlwaysAvailable(); int updateBleAppCount(IBinder b, boolean enable); boolean isBleAppPresent(); } services/core/java/com/android/server/BluetoothManagerService.java +11 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.util.Log; import java.io.FileDescriptor; Loading Loading @@ -443,6 +444,16 @@ class BluetoothManagerService extends IBluetoothManager.Stub { /** Internal death rec list */ Map<IBinder, ClientDeathRecipient> mBleApps = new HashMap<IBinder, ClientDeathRecipient>(); @Override public boolean isBleScanAlwaysAvailable() { try { return (Settings.Global.getInt(mContentResolver, Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE)) != 0; } catch (SettingNotFoundException e) { } return false; } public int updateBleAppCount(IBinder token, boolean enable) { if (enable) { ClientDeathRecipient r = mBleApps.get(token); Loading Loading
core/java/android/bluetooth/BluetoothAdapter.java +9 −22 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.app.ActivityThread; import android.os.SystemProperties; import android.provider.Settings; import android.os.Binder; import android.util.Log; import android.util.Pair; Loading Loading @@ -631,24 +632,6 @@ public final class BluetoothAdapter { } } /** * Returns true if LE only mode is enabled, that is apps * have authorization to turn only BT ON and the calling * app has privilage to do so */ private boolean isLEAlwaysOnEnabled() { boolean ret = false; if (SystemProperties.getBoolean("ro.bluetooth.blealwayson", true) == true) { Log.v(TAG, "LE always on mode is enabled"); // TODO: System API authorization check ret = true; } else { Log.v(TAG, "LE always on mode is disabled"); ret = false; } return ret; } /** * Turns off Bluetooth LE which was earlier turned on by calling EnableBLE(). * Loading Loading @@ -676,7 +659,7 @@ public final class BluetoothAdapter { * @hide */ public boolean disableBLE() { if (isLEAlwaysOnEnabled() != true) return false; if (!isBleScanAlwaysAvailable()) return false; int state = getLeState(); if (state == BluetoothAdapter.STATE_ON) { Loading Loading @@ -738,7 +721,7 @@ public final class BluetoothAdapter { * @hide */ public boolean enableBLE() { if (isLEAlwaysOnEnabled() != true) return false; if (!isBleScanAlwaysAvailable()) return false; if (isLeEnabled() == true) { if (DBG) Log.d(TAG, "enableBLE(): BT is already enabled..!"); Loading Loading @@ -1243,9 +1226,13 @@ public final class BluetoothAdapter { */ @SystemApi public boolean isBleScanAlwaysAvailable() { // TODO: implement after Settings UI change. try { return mManagerService.isBleScanAlwaysAvailable(); } catch (RemoteException e) { Log.e(TAG, "remote expection when calling isBleScanAlwaysAvailable", e); return false; } } /** * Returns whether peripheral mode is supported. Loading
core/java/android/bluetooth/IBluetoothManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,8 @@ interface IBluetoothManager String getAddress(); String getName(); boolean isBleScanAlwaysAvailable(); int updateBleAppCount(IBinder b, boolean enable); boolean isBleAppPresent(); }
services/core/java/com/android/server/BluetoothManagerService.java +11 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.util.Log; import java.io.FileDescriptor; Loading Loading @@ -443,6 +444,16 @@ class BluetoothManagerService extends IBluetoothManager.Stub { /** Internal death rec list */ Map<IBinder, ClientDeathRecipient> mBleApps = new HashMap<IBinder, ClientDeathRecipient>(); @Override public boolean isBleScanAlwaysAvailable() { try { return (Settings.Global.getInt(mContentResolver, Settings.Global.BLE_SCAN_ALWAYS_AVAILABLE)) != 0; } catch (SettingNotFoundException e) { } return false; } public int updateBleAppCount(IBinder token, boolean enable) { if (enable) { ClientDeathRecipient r = mBleApps.get(token); Loading