Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c90c7604 authored by Wei Wang's avatar Wei Wang Committed by Android (Google) Code Review
Browse files

Merge "Honor Ble scanning settings from Settings UI." into mnc-dev

parents b57f236e 67d8416b
Loading
Loading
Loading
Loading
+9 −22
Original line number Diff line number Diff line
@@ -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;
@@ -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().
     *
@@ -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) {
@@ -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..!");
@@ -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.
+2 −0
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ interface IBluetoothManager

    String getAddress();
    String getName();

    boolean isBleScanAlwaysAvailable();
    int updateBleAppCount(IBinder b, boolean enable);
    boolean isBleAppPresent();
}
+11 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);