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

Commit ddf71724 authored by Jake Hamby's avatar Jake Hamby Committed by Android (Google) Code Review
Browse files

Merge "Fix some Bluetooth settings bugs."

parents b5573884 49cfe8a3
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -290,9 +290,12 @@
    <string name="bluetooth_ask_enablement_and_lasting_discovery" product="tablet">"An application on your tablet is requesting permission to turn on Bluetooth and to make your tablet discoverable by other devices. Do you want to do this?"</string>
    <string name="bluetooth_ask_enablement_and_lasting_discovery" product="default">"An application on your phone is requesting permission to turn on Bluetooth and to make your phone discoverable by other devices. Do you want to do this?"</string>

    <!-- Strings for msg to display to user while bluetooth is turning on -->
    <!-- Strings for msg to display to user while bluetooth is turning on [CHAR LIMIT=60] -->
    <string name="bluetooth_turning_on">"Turning Bluetooth on\u2026"</string>

    <!-- Strings for msg to display to user while bluetooth is turning off [CHAR LIMIT=60] -->
    <string name="bluetooth_turning_off">"Turning Bluetooth off\u2026"</string>

    <!-- Strings for device profile auto connect setting -->
    <string name="bluetooth_auto_connect">Auto connect</string>

+13 −1
Original line number Diff line number Diff line
@@ -144,12 +144,24 @@ final class BluetoothDiscoverableEnabler implements Preference.OnPreferenceClick
        if (getDiscoverableTimeout() == DISCOVERABLE_TIMEOUT_NEVER) {
            mDiscoveryPreference.setSummary(R.string.bluetooth_is_discoverable_always);
        } else {
            String textTimeout = DateUtils.formatElapsedTime(timeout);
            String textTimeout = formatTimeRemaining(timeout);
            mDiscoveryPreference.setSummary(mContext.getString(R.string.bluetooth_is_discoverable,
                    textTimeout));
        }
    }

    private static String formatTimeRemaining(int timeout) {
        StringBuilder sb = new StringBuilder(6);    // "mmm:ss"
        int min = timeout / 60;
        sb.append(min).append(':');
        int sec = timeout - (min * 60);
        if (sec < 10) {
            sb.append('0');
        }
        sb.append(sec);
        return sb.toString();
    }

    void setDiscoverableTimeout(int index) {
        String timeoutValue;
        switch (index) {
+0 −71
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.bluetooth;

import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;

import com.android.settings.R;

/**
 * Fragment to scan and show the discoverable devices.
 */
public final class BluetoothFindNearby extends DeviceListPreferenceFragment {

    @Override
    void addPreferencesForActivity() {
        addPreferencesFromResource(R.xml.device_picker);
    }

    @Override
    public void onResume() {
        super.onResume();
        if (mSelectedDevice != null) {
            CachedBluetoothDeviceManager manager = mLocalManager.getCachedDeviceManager();
            CachedBluetoothDevice device = manager.findDevice(mSelectedDevice);
            if (device != null && device.getBondState() == BluetoothDevice.BOND_BONDED) {
                // selected device was paired, so return from this screen
                finish();
                return;
            }
        }
        mLocalAdapter.startScanning(true);
    }

    @Override
    void onDevicePreferenceClick(BluetoothDevicePreference btPreference) {
        mLocalAdapter.stopScanning();
        super.onDevicePreferenceClick(btPreference);
    }

    public void onDeviceBondStateChanged(CachedBluetoothDevice
            cachedDevice, int bondState) {
        if (bondState == BluetoothDevice.BOND_BONDED) {
            // return from scan screen after successful auto-pairing
            finish();
        }
    }

    @Override
    public void onBluetoothStateChanged(int bluetoothState) {
        super.onBluetoothStateChanged(bluetoothState);

        if (bluetoothState == BluetoothAdapter.STATE_ON) {
                mLocalAdapter.startScanning(false);
        }
    }
}
+19 −21
Original line number Diff line number Diff line
@@ -72,6 +72,8 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
    private View mView;
    private TextView mEmptyView;

    private final IntentFilter mIntentFilter;

    // accessed from inner class (not private to avoid thunks)
    Preference mMyDevicePreference;

@@ -79,21 +81,22 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED) ||
                    (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) &&
                            (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
                                    BluetoothAdapter.ERROR) == BluetoothAdapter.STATE_ON))) {
            if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) {
                updateDeviceName();
            }
        }

        private void updateDeviceName() {
            if (mLocalAdapter != null && mLocalAdapter.isEnabled() && mMyDevicePreference != null) {
            if (mLocalAdapter.isEnabled() && mMyDevicePreference != null) {
                mMyDevicePreference.setTitle(mLocalAdapter.getName());
            }
        }
    };

    public BluetoothSettings() {
        mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
@@ -142,16 +145,12 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
        super.onResume();

        mBluetoothEnabler.resume();
        updateContent(mLocalAdapter.getBluetoothState());

        if (mDiscoverableEnabler != null) {
            mDiscoverableEnabler.resume();
        }
        getActivity().registerReceiver(mReceiver, mIntentFilter);

        IntentFilter filter = new IntentFilter();
        filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
        filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
        getActivity().registerReceiver(mReceiver, filter);
        updateContent(mLocalAdapter.getBluetoothState());
    }

    @Override
@@ -174,8 +173,10 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
                .setEnabled(bluetoothIsEnabled && !isDiscovering)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
        menu.add(Menu.NONE, MENU_ID_RENAME_DEVICE, 0, R.string.bluetooth_rename_device)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
                .setEnabled(bluetoothIsEnabled)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        menu.add(Menu.NONE, MENU_ID_VISIBILITY_TIMEOUT, 0, R.string.bluetooth_visibility_timeout)
                .setEnabled(bluetoothIsEnabled)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
        menu.add(Menu.NONE, MENU_ID_SHOW_RECEIVED, 0, R.string.bluetooth_show_received_files)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
@@ -233,7 +234,6 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {

    private void updateContent(int bluetoothState) {
        final PreferenceScreen preferenceScreen = getPreferenceScreen();
        getActivity().invalidateOptionsMenu();
        int messageId = 0;

        switch (bluetoothState) {
@@ -245,9 +245,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
                if (mMyDevicePreference == null) {
                    mMyDevicePreference = new Preference(getActivity());
                }
                if (mLocalAdapter != null) {
                mMyDevicePreference.setTitle(mLocalAdapter.getName());
                }
                mMyDevicePreference.setPersistent(false);
                mMyDevicePreference.setEnabled(true);
                preferenceScreen.addPreference(mMyDevicePreference);
@@ -255,6 +253,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
                if (mDiscoverableEnabler == null) {
                    mDiscoverableEnabler = new BluetoothDiscoverableEnabler(getActivity(),
                            mLocalAdapter, mMyDevicePreference);
                    mDiscoverableEnabler.resume();
                }

                // Paired devices category
@@ -291,14 +290,12 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
                    preferenceScreen.removePreference(mPairedDevicesCategory);
                    startScanning();
                }
                getActivity().invalidateOptionsMenu();
                return; // not break

            case BluetoothAdapter.STATE_TURNING_OFF:
                int preferenceCount = preferenceScreen.getPreferenceCount();
                for (int i = 0; i < preferenceCount; i++) {
                    preferenceScreen.getPreference(i).setEnabled(false);
                }
                return; // not break
                messageId = R.string.bluetooth_turning_off;
                break;

            case BluetoothAdapter.STATE_OFF:
                messageId = R.string.bluetooth_empty_list_bluetooth_off;
@@ -312,6 +309,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
        setDeviceListGroup(preferenceScreen);
        removeAllDevices();
        mEmptyView.setText(messageId);
        getActivity().invalidateOptionsMenu();
    }

    @Override
+0 −1
Original line number Diff line number Diff line
@@ -151,7 +151,6 @@ public abstract class DeviceListPreferenceFragment extends

    public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
        if (mDevicePreferenceMap.get(cachedDevice) != null) {
            Log.e(TAG, "Got onDeviceAdded, but cachedDevice already exists");
            return;
        }