Merge "Entering Bluetooth in Settings will always initiate a scan." into lmp-dev

This commit is contained in:
PauloftheWest
2014-08-27 17:24:40 +00:00
committed by Android (Google) Code Review

View File

@@ -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
@@ -236,6 +236,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
if (!mAvailableDevicesCategoryIsPresent) { if (!mAvailableDevicesCategoryIsPresent) {
getPreferenceScreen().addPreference(mAvailableDevicesCategory); getPreferenceScreen().addPreference(mAvailableDevicesCategory);
mAvailableDevicesCategoryIsPresent = true;
} }
if (mAvailableDevicesCategory != null) { if (mAvailableDevicesCategory != null) {
@@ -245,6 +246,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment implem
mLocalManager.getCachedDeviceManager().clearCachedDevices(); mLocalManager.getCachedDeviceManager().clearCachedDevices();
mAvailableDevicesCategory.removeAll(); mAvailableDevicesCategory.removeAll();
mInitialScanStarted = true;
mLocalAdapter.startScanning(true); mLocalAdapter.startScanning(true);
} }
@@ -255,16 +257,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);
addCachedDevices(); if (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;
@@ -287,9 +291,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());
@@ -299,30 +307,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); startScanning();
mAvailableDevicesCategoryIsPresent = false;
}
if (numberOfPairedDevices == 0) {
preferenceScreen.removePreference(mPairedDevicesCategory);
if (scanState == true) {
mActivityStarted = false;
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);
@@ -359,7 +354,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
@@ -374,7 +369,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() {