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

Commit 27bd00ba authored by PauloftheWest's avatar PauloftheWest
Browse files

Entering Bluetooth in Settings will always initiate a scan.

Bug: 17060518
Change-Id: I4ba13097f664b4a758ba714f423fa8b34af60ce6
parent ff0e81eb
Loading
Loading
Loading
Loading
+27 −32
Original line number Original line Diff line number Diff line
@@ -82,7 +82,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
    private PreferenceGroup mAvailableDevicesCategory;
    private PreferenceGroup mAvailableDevicesCategory;
    private boolean mAvailableDevicesCategoryIsPresent;
    private boolean mAvailableDevicesCategoryIsPresent;


    private boolean mActivityStarted;
    private boolean mInitialScanStarted;


    private TextView mEmptyView;
    private TextView mEmptyView;
    private SwitchBar mSwitchBar;
    private SwitchBar mSwitchBar;
@@ -118,7 +118,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
    @Override
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        super.onActivityCreated(savedInstanceState);
        mActivityStarted = (savedInstanceState == null);    // don't auto start scan after rotation
        mInitialScanStarted = (savedInstanceState != null);    // don't auto start scan after rotation


        mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
        mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
        getListView().setEmptyView(mEmptyView);
        getListView().setEmptyView(mEmptyView);
@@ -153,6 +153,9 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
        }
        }
        super.onResume();
        super.onResume();


        // Make the device visible to other devices.
        mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);

        if (isUiRestricted()) {
        if (isUiRestricted()) {
            setDeviceListGroup(getPreferenceScreen());
            setDeviceListGroup(getPreferenceScreen());
            removeAllDevices();
            removeAllDevices();
@@ -162,11 +165,8 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem


        getActivity().registerReceiver(mReceiver, mIntentFilter);
        getActivity().registerReceiver(mReceiver, mIntentFilter);
        if (mLocalAdapter != null) {
        if (mLocalAdapter != null) {
            updateContent(mLocalAdapter.getBluetoothState(), mActivityStarted);
            updateContent(mLocalAdapter.getBluetoothState());
        }
        }

        // Make the device visible to other devices.
        mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
    }
    }


    @Override
    @Override
@@ -176,14 +176,14 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
            mBluetoothEnabler.pause();
            mBluetoothEnabler.pause();
        }
        }


        // Make the device only visible to connected devices.
        mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);

        if (isUiRestricted()) {
        if (isUiRestricted()) {
            return;
            return;
        }
        }


        getActivity().unregisterReceiver(mReceiver);
        getActivity().unregisterReceiver(mReceiver);

        // Make the device only visible to connected devices.
        mLocalAdapter.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
    }
    }


    @Override
    @Override
@@ -233,9 +233,11 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
        if (isUiRestricted()) return;
        if (isUiRestricted()) return;
        if (!mAvailableDevicesCategoryIsPresent) {
        if (!mAvailableDevicesCategoryIsPresent) {
            getPreferenceScreen().addPreference(mAvailableDevicesCategory);
            getPreferenceScreen().addPreference(mAvailableDevicesCategory);
            mAvailableDevicesCategoryIsPresent = true;
        }
        }
        mLocalManager.getCachedDeviceManager().clearCachedDevices();
        mLocalManager.getCachedDeviceManager().clearCachedDevices();
        mAvailableDevicesCategory.removeAll();
        mAvailableDevicesCategory.removeAll();
        mInitialScanStarted = true;
        mLocalAdapter.startScanning(true);
        mLocalAdapter.startScanning(true);
    }
    }


@@ -246,16 +248,18 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
    }
    }


    private void addDeviceCategory(PreferenceGroup preferenceGroup, int titleId,
    private void addDeviceCategory(PreferenceGroup preferenceGroup, int titleId,
            BluetoothDeviceFilter.Filter filter) {
            BluetoothDeviceFilter.Filter filter, boolean addCachedDevices) {
        preferenceGroup.setTitle(titleId);
        preferenceGroup.setTitle(titleId);
        getPreferenceScreen().addPreference(preferenceGroup);
        getPreferenceScreen().addPreference(preferenceGroup);
        setFilter(filter);
        setFilter(filter);
        setDeviceListGroup(preferenceGroup);
        setDeviceListGroup(preferenceGroup);
        if (addCachedDevices) {
            addCachedDevices();
            addCachedDevices();
        }
        preferenceGroup.setEnabled(true);
        preferenceGroup.setEnabled(true);
    }
    }


    private void updateContent(int bluetoothState, boolean scanState) {
    private void updateContent(int bluetoothState) {
        final PreferenceScreen preferenceScreen = getPreferenceScreen();
        final PreferenceScreen preferenceScreen = getPreferenceScreen();
        int messageId = 0;
        int messageId = 0;


@@ -278,9 +282,13 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
                }
                }
                addDeviceCategory(mPairedDevicesCategory,
                addDeviceCategory(mPairedDevicesCategory,
                        R.string.bluetooth_preference_paired_devices,
                        R.string.bluetooth_preference_paired_devices,
                        BluetoothDeviceFilter.BONDED_DEVICE_FILTER);
                        BluetoothDeviceFilter.BONDED_DEVICE_FILTER, true);
                int numberOfPairedDevices = mPairedDevicesCategory.getPreferenceCount();
                int numberOfPairedDevices = mPairedDevicesCategory.getPreferenceCount();


                if (isUiRestricted() || numberOfPairedDevices <= 0) {
                    preferenceScreen.removePreference(mPairedDevicesCategory);
                }

                // Available devices category
                // Available devices category
                if (mAvailableDevicesCategory == null) {
                if (mAvailableDevicesCategory == null) {
                    mAvailableDevicesCategory = new BluetoothProgressCategory(getActivity());
                    mAvailableDevicesCategory = new BluetoothProgressCategory(getActivity());
@@ -290,30 +298,17 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
                }
                }
                addDeviceCategory(mAvailableDevicesCategory,
                addDeviceCategory(mAvailableDevicesCategory,
                        R.string.bluetooth_preference_found_devices,
                        R.string.bluetooth_preference_found_devices,
                        BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER);
                        BluetoothDeviceFilter.UNBONDED_DEVICE_FILTER, mInitialScanStarted);
                int numberOfAvailableDevices = mAvailableDevicesCategory.getPreferenceCount();
                int numberOfAvailableDevices = mAvailableDevicesCategory.getPreferenceCount();
                mAvailableDevicesCategoryIsPresent = true;


                if (numberOfAvailableDevices == 0) {
                if (!mInitialScanStarted) {
                    preferenceScreen.removePreference(mAvailableDevicesCategory);
                    mAvailableDevicesCategoryIsPresent = false;
                }

                if (numberOfPairedDevices == 0) {
                    preferenceScreen.removePreference(mPairedDevicesCategory);
                    if (scanState == true) {
                        mActivityStarted = false;
                    startScanning();
                    startScanning();
                    } else {
                        if (!mAvailableDevicesCategoryIsPresent) {
                            getPreferenceScreen().addPreference(mAvailableDevicesCategory);
                        }
                    }
                }
                }


                if (mMyDevicePreference == null) {
                if (mMyDevicePreference == null) {
                    mMyDevicePreference = new Preference(getActivity());
                    mMyDevicePreference = new Preference(getActivity());
                }
                }

                mMyDevicePreference.setSummary(getResources().getString(
                mMyDevicePreference.setSummary(getResources().getString(
                            R.string.bluetooth_is_visible_message, mLocalAdapter.getName()));
                            R.string.bluetooth_is_visible_message, mLocalAdapter.getName()));
                mMyDevicePreference.setSelectable(false);
                mMyDevicePreference.setSelectable(false);
@@ -350,7 +345,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
    @Override
    @Override
    public void onBluetoothStateChanged(int bluetoothState) {
    public void onBluetoothStateChanged(int bluetoothState) {
        super.onBluetoothStateChanged(bluetoothState);
        super.onBluetoothStateChanged(bluetoothState);
        updateContent(bluetoothState, true);
        updateContent(bluetoothState);
    }
    }


    @Override
    @Override
@@ -365,7 +360,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
    public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
        setDeviceListGroup(getPreferenceScreen());
        setDeviceListGroup(getPreferenceScreen());
        removeAllDevices();
        removeAllDevices();
        updateContent(mLocalAdapter.getBluetoothState(), false);
        updateContent(mLocalAdapter.getBluetoothState());
    }
    }


    private final View.OnClickListener mDeviceProfilesListener = new View.OnClickListener() {
    private final View.OnClickListener mDeviceProfilesListener = new View.OnClickListener() {