Fix some Bluetooth settings bugs.
- Remove BluetoothFindNearby.java (no longer used) - Show message when Bluetooth is turning off - Fix case where device name sometimes didn't show when turning BT on - Disable "Rename device" and "Visibility timeout" menus when BT is off - Remove "Got onDeviceAdded, but cachedDevice already exists" log message - Never show "Rename device" in action menu (bug 5064378) - Show discovery time remaining as "m:ss", not "mm:ss" (bug 5064104) Bug: 5064378 Bug: 5064104 Change-Id: I79609dfdad61993a28cff64c9e082870ff74d180
This commit is contained in:
@@ -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="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>
|
<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>
|
<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 -->
|
<!-- Strings for device profile auto connect setting -->
|
||||||
<string name="bluetooth_auto_connect">Auto connect</string>
|
<string name="bluetooth_auto_connect">Auto connect</string>
|
||||||
|
|
||||||
|
@@ -144,12 +144,24 @@ final class BluetoothDiscoverableEnabler implements Preference.OnPreferenceClick
|
|||||||
if (getDiscoverableTimeout() == DISCOVERABLE_TIMEOUT_NEVER) {
|
if (getDiscoverableTimeout() == DISCOVERABLE_TIMEOUT_NEVER) {
|
||||||
mDiscoveryPreference.setSummary(R.string.bluetooth_is_discoverable_always);
|
mDiscoveryPreference.setSummary(R.string.bluetooth_is_discoverable_always);
|
||||||
} else {
|
} else {
|
||||||
String textTimeout = DateUtils.formatElapsedTime(timeout);
|
String textTimeout = formatTimeRemaining(timeout);
|
||||||
mDiscoveryPreference.setSummary(mContext.getString(R.string.bluetooth_is_discoverable,
|
mDiscoveryPreference.setSummary(mContext.getString(R.string.bluetooth_is_discoverable,
|
||||||
textTimeout));
|
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) {
|
void setDiscoverableTimeout(int index) {
|
||||||
String timeoutValue;
|
String timeoutValue;
|
||||||
switch (index) {
|
switch (index) {
|
||||||
|
@@ -1,71 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -72,6 +72,8 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
private View mView;
|
private View mView;
|
||||||
private TextView mEmptyView;
|
private TextView mEmptyView;
|
||||||
|
|
||||||
|
private final IntentFilter mIntentFilter;
|
||||||
|
|
||||||
// accessed from inner class (not private to avoid thunks)
|
// accessed from inner class (not private to avoid thunks)
|
||||||
Preference mMyDevicePreference;
|
Preference mMyDevicePreference;
|
||||||
|
|
||||||
@@ -79,21 +81,22 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED) ||
|
if (action.equals(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED)) {
|
||||||
(action.equals(BluetoothAdapter.ACTION_STATE_CHANGED) &&
|
|
||||||
(intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
|
|
||||||
BluetoothAdapter.ERROR) == BluetoothAdapter.STATE_ON))) {
|
|
||||||
updateDeviceName();
|
updateDeviceName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateDeviceName() {
|
private void updateDeviceName() {
|
||||||
if (mLocalAdapter != null && mLocalAdapter.isEnabled() && mMyDevicePreference != null) {
|
if (mLocalAdapter.isEnabled() && mMyDevicePreference != null) {
|
||||||
mMyDevicePreference.setTitle(mLocalAdapter.getName());
|
mMyDevicePreference.setTitle(mLocalAdapter.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public BluetoothSettings() {
|
||||||
|
mIntentFilter = new IntentFilter(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@@ -142,16 +145,12 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
mBluetoothEnabler.resume();
|
mBluetoothEnabler.resume();
|
||||||
updateContent(mLocalAdapter.getBluetoothState());
|
|
||||||
|
|
||||||
if (mDiscoverableEnabler != null) {
|
if (mDiscoverableEnabler != null) {
|
||||||
mDiscoverableEnabler.resume();
|
mDiscoverableEnabler.resume();
|
||||||
}
|
}
|
||||||
|
getActivity().registerReceiver(mReceiver, mIntentFilter);
|
||||||
|
|
||||||
IntentFilter filter = new IntentFilter();
|
updateContent(mLocalAdapter.getBluetoothState());
|
||||||
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
|
|
||||||
filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
|
|
||||||
getActivity().registerReceiver(mReceiver, filter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -174,8 +173,10 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
.setEnabled(bluetoothIsEnabled && !isDiscovering)
|
.setEnabled(bluetoothIsEnabled && !isDiscovering)
|
||||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||||
menu.add(Menu.NONE, MENU_ID_RENAME_DEVICE, 0, R.string.bluetooth_rename_device)
|
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)
|
menu.add(Menu.NONE, MENU_ID_VISIBILITY_TIMEOUT, 0, R.string.bluetooth_visibility_timeout)
|
||||||
|
.setEnabled(bluetoothIsEnabled)
|
||||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
||||||
menu.add(Menu.NONE, MENU_ID_SHOW_RECEIVED, 0, R.string.bluetooth_show_received_files)
|
menu.add(Menu.NONE, MENU_ID_SHOW_RECEIVED, 0, R.string.bluetooth_show_received_files)
|
||||||
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
|
||||||
@@ -233,7 +234,6 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
|
|
||||||
private void updateContent(int bluetoothState) {
|
private void updateContent(int bluetoothState) {
|
||||||
final PreferenceScreen preferenceScreen = getPreferenceScreen();
|
final PreferenceScreen preferenceScreen = getPreferenceScreen();
|
||||||
getActivity().invalidateOptionsMenu();
|
|
||||||
int messageId = 0;
|
int messageId = 0;
|
||||||
|
|
||||||
switch (bluetoothState) {
|
switch (bluetoothState) {
|
||||||
@@ -245,9 +245,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
if (mMyDevicePreference == null) {
|
if (mMyDevicePreference == null) {
|
||||||
mMyDevicePreference = new Preference(getActivity());
|
mMyDevicePreference = new Preference(getActivity());
|
||||||
}
|
}
|
||||||
if (mLocalAdapter != null) {
|
mMyDevicePreference.setTitle(mLocalAdapter.getName());
|
||||||
mMyDevicePreference.setTitle(mLocalAdapter.getName());
|
|
||||||
}
|
|
||||||
mMyDevicePreference.setPersistent(false);
|
mMyDevicePreference.setPersistent(false);
|
||||||
mMyDevicePreference.setEnabled(true);
|
mMyDevicePreference.setEnabled(true);
|
||||||
preferenceScreen.addPreference(mMyDevicePreference);
|
preferenceScreen.addPreference(mMyDevicePreference);
|
||||||
@@ -255,6 +253,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
if (mDiscoverableEnabler == null) {
|
if (mDiscoverableEnabler == null) {
|
||||||
mDiscoverableEnabler = new BluetoothDiscoverableEnabler(getActivity(),
|
mDiscoverableEnabler = new BluetoothDiscoverableEnabler(getActivity(),
|
||||||
mLocalAdapter, mMyDevicePreference);
|
mLocalAdapter, mMyDevicePreference);
|
||||||
|
mDiscoverableEnabler.resume();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Paired devices category
|
// Paired devices category
|
||||||
@@ -291,14 +290,12 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
preferenceScreen.removePreference(mPairedDevicesCategory);
|
preferenceScreen.removePreference(mPairedDevicesCategory);
|
||||||
startScanning();
|
startScanning();
|
||||||
}
|
}
|
||||||
|
getActivity().invalidateOptionsMenu();
|
||||||
return; // not break
|
return; // not break
|
||||||
|
|
||||||
case BluetoothAdapter.STATE_TURNING_OFF:
|
case BluetoothAdapter.STATE_TURNING_OFF:
|
||||||
int preferenceCount = preferenceScreen.getPreferenceCount();
|
messageId = R.string.bluetooth_turning_off;
|
||||||
for (int i = 0; i < preferenceCount; i++) {
|
break;
|
||||||
preferenceScreen.getPreference(i).setEnabled(false);
|
|
||||||
}
|
|
||||||
return; // not break
|
|
||||||
|
|
||||||
case BluetoothAdapter.STATE_OFF:
|
case BluetoothAdapter.STATE_OFF:
|
||||||
messageId = R.string.bluetooth_empty_list_bluetooth_off;
|
messageId = R.string.bluetooth_empty_list_bluetooth_off;
|
||||||
@@ -312,6 +309,7 @@ public final class BluetoothSettings extends DeviceListPreferenceFragment {
|
|||||||
setDeviceListGroup(preferenceScreen);
|
setDeviceListGroup(preferenceScreen);
|
||||||
removeAllDevices();
|
removeAllDevices();
|
||||||
mEmptyView.setText(messageId);
|
mEmptyView.setText(messageId);
|
||||||
|
getActivity().invalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -151,7 +151,6 @@ public abstract class DeviceListPreferenceFragment extends
|
|||||||
|
|
||||||
public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
|
public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
|
||||||
if (mDevicePreferenceMap.get(cachedDevice) != null) {
|
if (mDevicePreferenceMap.get(cachedDevice) != null) {
|
||||||
Log.e(TAG, "Got onDeviceAdded, but cachedDevice already exists");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user