Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 542b7c0a authored by Steve Kondik's avatar Steve Kondik Committed by Gerrit Code Review
Browse files

Merge "Make Bluetooth discoverability timeout configurable (also supporting...

Merge "Make Bluetooth discoverability timeout configurable (also supporting infinite timeout)." into froyo
parents d905f231 007fc7d9
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -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>
+4 −0
Original line number Diff line number Diff line
@@ -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 -->
+7 −0
Original line number Diff line number Diff line
@@ -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"
+7 −3
Original line number Diff line number Diff line
@@ -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"
@@ -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;
    }

+32 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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";
@@ -74,6 +78,8 @@ public class BluetoothSettings extends PreferenceActivity
    private BluetoothEnabler mEnabler;
    private BluetoothDiscoverableEnabler mDiscoverableEnabler;

    private ListPreference mDiscoverableDurationPreference;

    private BluetoothNamePreference mNamePreference;

    private ProgressCategory mDeviceList;
@@ -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));
@@ -169,6 +179,7 @@ public class BluetoothSettings extends PreferenceActivity
            mEnabler.resume();
            mDiscoverableEnabler.resume();
            mNamePreference.resume();
            updateDiscoverableDurationPreferenceState();
        }

        mLocalManager.registerCallback(this);
@@ -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());
    }
}