diff --git a/res/values/strings.xml b/res/values/strings.xml index 56498e4320c..cd5ac0ba65f 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -290,9 +290,12 @@ "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?" "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?" - + "Turning Bluetooth on\u2026" + + "Turning Bluetooth off\u2026" + Auto connect diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java index 0ad8948c4b9..6b654b5e6cb 100644 --- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java +++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java @@ -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) { diff --git a/src/com/android/settings/bluetooth/BluetoothFindNearby.java b/src/com/android/settings/bluetooth/BluetoothFindNearby.java deleted file mode 100644 index 066f4f61148..00000000000 --- a/src/com/android/settings/bluetooth/BluetoothFindNearby.java +++ /dev/null @@ -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); - } - } -} diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java index ede218dcfc5..4b0db684e86 100644 --- a/src/com/android/settings/bluetooth/BluetoothSettings.java +++ b/src/com/android/settings/bluetooth/BluetoothSettings.java @@ -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.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 diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java index 9783fd71d5c..53bd33cdb1f 100644 --- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java +++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java @@ -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; }