Merge "Entering Bluetooth in Settings will always initiate a scan." into lmp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
18fbf724aa
@@ -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() {
|
||||||
|
Reference in New Issue
Block a user