Loading res/values/arrays.xml +16 −0 Original line number Diff line number Diff line Loading @@ -466,4 +466,20 @@ <item>Transparent</item> </string-array> <string-array name="bluetooth_discoverable_duration_entries"> <item>60 seconds</item> <item>120 seconds</item> <item>300 seconds</item> <item>600 seconds</item> <item>Infinite</item> </string-array> <string-array name="bluetooth_discoverable_duration_values" translatable="false"> <item>60</item> <item>120</item> <item>300</item> <item>600</item> <item>0</item> </string-array> </resources> res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,10 @@ <!-- Used as setting title (for checkbox) on second screen after selecting Bluetooth settings --> <string name="bluetooth">Bluetooth</string> <!-- Bluetooth settings screen, list label how long the device remains in discoverable mode --> <string name="bluetooth_discoverable_duration_title">Discoverable duration</string> <!-- Bluetooth settings screen, Discoverable duration list summary --> <string name="bluetooth_discoverable_duration_summary">How long the device stays discoverable</string> <!-- Bluetooth settings screen, check box label when the Bluetooth device can be seen by others --> <string name="bluetooth_visibility">Discoverable</string> <!-- Bluetooth settings screen, summary after selecting Discoverable check box --> Loading res/xml/bluetooth_settings.xml +7 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,13 @@ android:persistent="false" android:singleLine="true" /> <ListPreference android:key="bt_discoverable_duration" android:title="@string/bluetooth_discoverable_duration_title" android:summary="@string/bluetooth_discoverable_duration_summary" android:entries="@array/bluetooth_discoverable_duration_entries" android:entryValues="@array/bluetooth_discoverable_duration_values" /> <CheckBoxPreference android:key="bt_discoverable" android:title="@string/bluetooth_visibility" Loading src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java +7 −3 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.os.Handler; import android.os.SystemProperties; import android.preference.Preference; import android.preference.CheckBoxPreference; import android.provider.Settings; /** * BluetoothDiscoverableEnabler is a helper to manage the "Discoverable" Loading Loading @@ -126,18 +127,21 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan long endTimestamp = System.currentTimeMillis() + timeout * 1000; persistDiscoverableEndTimestamp(endTimestamp); manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE); manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, timeout); } else { manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE); } } private int getDiscoverableTimeout() { int timeout = SystemProperties.getInt(SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT, -1); if (timeout <= 0) { int timeout = Settings.System.getInt( mContext.getContentResolver(), Settings.System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, -1); if (timeout < 0) { timeout = DEFAULT_DISCOVERABLE_TIMEOUT; } return timeout; } Loading src/com/android/settings/bluetooth/BluetoothSettings.java +32 −1 Original line number Diff line number Diff line Loading @@ -31,9 +31,11 @@ import android.content.IntentFilter; import android.os.Bundle; import android.os.ParcelUuid; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.provider.Settings; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; Loading @@ -48,11 +50,13 @@ import java.util.WeakHashMap; * connection management. */ public class BluetoothSettings extends PreferenceActivity implements LocalBluetoothManager.Callback { implements LocalBluetoothManager.Callback, Preference.OnPreferenceChangeListener { private static final String TAG = "BluetoothSettings"; private static final String KEY_BT_CHECKBOX = "bt_checkbox"; private static final String KEY_BT_DISCOVERABLE_DURATION = "bt_discoverable_duration"; private static final String KEY_BT_DISCOVERABLE = "bt_discoverable"; private static final String KEY_BT_DEVICE_LIST = "bt_device_list"; private static final String KEY_BT_NAME = "bt_name"; Loading @@ -74,6 +78,8 @@ public class BluetoothSettings extends PreferenceActivity private BluetoothEnabler mEnabler; private BluetoothDiscoverableEnabler mDiscoverableEnabler; private ListPreference mDiscoverableDurationPreference; private BluetoothNamePreference mNamePreference; private ProgressCategory mDeviceList; Loading Loading @@ -141,6 +147,10 @@ public class BluetoothSettings extends PreferenceActivity this, (CheckBoxPreference) findPreference(KEY_BT_CHECKBOX)); mDiscoverableDurationPreference = (ListPreference) findPreference(KEY_BT_DISCOVERABLE_DURATION); mDiscoverableDurationPreference.setOnPreferenceChangeListener(this); mDiscoverableEnabler = new BluetoothDiscoverableEnabler( this, (CheckBoxPreference) findPreference(KEY_BT_DISCOVERABLE)); Loading Loading @@ -169,6 +179,7 @@ public class BluetoothSettings extends PreferenceActivity mEnabler.resume(); mDiscoverableEnabler.resume(); mNamePreference.resume(); updateDiscoverableDurationPreferenceState(); } mLocalManager.registerCallback(this); Loading Loading @@ -363,4 +374,24 @@ public class BluetoothSettings extends PreferenceActivity intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device); sendBroadcast(intent); } public boolean onPreferenceChange(Preference preference, Object objValue) { if (preference == mDiscoverableDurationPreference) { int value = Integer.parseInt(objValue.toString()); Settings.System.putInt(getContentResolver(), Settings.System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, value); updateDiscoverableDurationPreferenceState(); } return true; } private void updateDiscoverableDurationPreferenceState() { int timeout = Settings.System.getInt( getContentResolver(), Settings.System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT); mDiscoverableDurationPreference.setValue(String.valueOf(timeout)); mDiscoverableDurationPreference.setSummary(mDiscoverableDurationPreference.getEntry()); } } Loading
res/values/arrays.xml +16 −0 Original line number Diff line number Diff line Loading @@ -466,4 +466,20 @@ <item>Transparent</item> </string-array> <string-array name="bluetooth_discoverable_duration_entries"> <item>60 seconds</item> <item>120 seconds</item> <item>300 seconds</item> <item>600 seconds</item> <item>Infinite</item> </string-array> <string-array name="bluetooth_discoverable_duration_values" translatable="false"> <item>60</item> <item>120</item> <item>300</item> <item>600</item> <item>0</item> </string-array> </resources>
res/values/strings.xml +4 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,10 @@ <!-- Used as setting title (for checkbox) on second screen after selecting Bluetooth settings --> <string name="bluetooth">Bluetooth</string> <!-- Bluetooth settings screen, list label how long the device remains in discoverable mode --> <string name="bluetooth_discoverable_duration_title">Discoverable duration</string> <!-- Bluetooth settings screen, Discoverable duration list summary --> <string name="bluetooth_discoverable_duration_summary">How long the device stays discoverable</string> <!-- Bluetooth settings screen, check box label when the Bluetooth device can be seen by others --> <string name="bluetooth_visibility">Discoverable</string> <!-- Bluetooth settings screen, summary after selecting Discoverable check box --> Loading
res/xml/bluetooth_settings.xml +7 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,13 @@ android:persistent="false" android:singleLine="true" /> <ListPreference android:key="bt_discoverable_duration" android:title="@string/bluetooth_discoverable_duration_title" android:summary="@string/bluetooth_discoverable_duration_summary" android:entries="@array/bluetooth_discoverable_duration_entries" android:entryValues="@array/bluetooth_discoverable_duration_values" /> <CheckBoxPreference android:key="bt_discoverable" android:title="@string/bluetooth_visibility" Loading
src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java +7 −3 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.os.Handler; import android.os.SystemProperties; import android.preference.Preference; import android.preference.CheckBoxPreference; import android.provider.Settings; /** * BluetoothDiscoverableEnabler is a helper to manage the "Discoverable" Loading Loading @@ -126,18 +127,21 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan long endTimestamp = System.currentTimeMillis() + timeout * 1000; persistDiscoverableEndTimestamp(endTimestamp); manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE); manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, timeout); } else { manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE); } } private int getDiscoverableTimeout() { int timeout = SystemProperties.getInt(SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT, -1); if (timeout <= 0) { int timeout = Settings.System.getInt( mContext.getContentResolver(), Settings.System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, -1); if (timeout < 0) { timeout = DEFAULT_DISCOVERABLE_TIMEOUT; } return timeout; } Loading
src/com/android/settings/bluetooth/BluetoothSettings.java +32 −1 Original line number Diff line number Diff line Loading @@ -31,9 +31,11 @@ import android.content.IntentFilter; import android.os.Bundle; import android.os.ParcelUuid; import android.preference.CheckBoxPreference; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen; import android.provider.Settings; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; Loading @@ -48,11 +50,13 @@ import java.util.WeakHashMap; * connection management. */ public class BluetoothSettings extends PreferenceActivity implements LocalBluetoothManager.Callback { implements LocalBluetoothManager.Callback, Preference.OnPreferenceChangeListener { private static final String TAG = "BluetoothSettings"; private static final String KEY_BT_CHECKBOX = "bt_checkbox"; private static final String KEY_BT_DISCOVERABLE_DURATION = "bt_discoverable_duration"; private static final String KEY_BT_DISCOVERABLE = "bt_discoverable"; private static final String KEY_BT_DEVICE_LIST = "bt_device_list"; private static final String KEY_BT_NAME = "bt_name"; Loading @@ -74,6 +78,8 @@ public class BluetoothSettings extends PreferenceActivity private BluetoothEnabler mEnabler; private BluetoothDiscoverableEnabler mDiscoverableEnabler; private ListPreference mDiscoverableDurationPreference; private BluetoothNamePreference mNamePreference; private ProgressCategory mDeviceList; Loading Loading @@ -141,6 +147,10 @@ public class BluetoothSettings extends PreferenceActivity this, (CheckBoxPreference) findPreference(KEY_BT_CHECKBOX)); mDiscoverableDurationPreference = (ListPreference) findPreference(KEY_BT_DISCOVERABLE_DURATION); mDiscoverableDurationPreference.setOnPreferenceChangeListener(this); mDiscoverableEnabler = new BluetoothDiscoverableEnabler( this, (CheckBoxPreference) findPreference(KEY_BT_DISCOVERABLE)); Loading Loading @@ -169,6 +179,7 @@ public class BluetoothSettings extends PreferenceActivity mEnabler.resume(); mDiscoverableEnabler.resume(); mNamePreference.resume(); updateDiscoverableDurationPreferenceState(); } mLocalManager.registerCallback(this); Loading Loading @@ -363,4 +374,24 @@ public class BluetoothSettings extends PreferenceActivity intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device); sendBroadcast(intent); } public boolean onPreferenceChange(Preference preference, Object objValue) { if (preference == mDiscoverableDurationPreference) { int value = Integer.parseInt(objValue.toString()); Settings.System.putInt(getContentResolver(), Settings.System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, value); updateDiscoverableDurationPreferenceState(); } return true; } private void updateDiscoverableDurationPreferenceState() { int timeout = Settings.System.getInt( getContentResolver(), Settings.System.BLUETOOTH_DISCOVERABILITY_TIMEOUT, BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT); mDiscoverableDurationPreference.setValue(String.valueOf(timeout)); mDiscoverableDurationPreference.setSummary(mDiscoverableDurationPreference.getEntry()); } }