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

Commit c955d8ee authored by Jaikumar Ganesh's avatar Jaikumar Ganesh Committed by Android (Google) Code Review
Browse files

Merge "Allow users to change the length of BT disoverability. DO NOT MERGE" into gingerbread

parents 95364e4a cdd9d033
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -255,6 +255,24 @@
        <item>TTLS</item>
    </string-array>

    <!-- Bluetooth Settings -->

    <!-- Discoverable mode timeout options -->
    <string-array name="bluetooth_visibility_timeout_entries">
        <item>2 Minutes</item>
        <item>5 Minutes</item>
        <item>1 Hour</item>
        <item>Never</item>
    </string-array>

    <!-- Values for visibility_duration_entries matching constants in BluetoothSettings. Do not translate. -->
    <string-array name="bluetooth_visibility_timeout_values" translatable="false">
        <item>twomin</item>
        <item>fivemin</item>
        <item>onehour</item>
        <item>never</item>
    </string-array>

    <!-- Match this with drawable.wifi_signal. --> <skip />
    <!-- Wi-Fi settings. The signal strength a Wi-Fi network has. -->
    <string-array name="wifi_signal">
+13 −2
Original line number Diff line number Diff line
@@ -184,9 +184,14 @@
    <string name="bluetooth_visibility">Discoverable</string>
    <!-- Bluetooth settings screen, summary after selecting Discoverable check box -->
    <string name="bluetooth_is_discoverable">Discoverable for <xliff:g id="discoverable_time_period">%1$s</xliff:g> seconds\u2026</string>
    <!-- Bluetooth settings screen, Discoverable checkbox summary text when Discoverable duration is set to "forever" -->
    <string name="bluetooth_is_discoverable_always">Discoverable</string>
    <!-- Bluetooth settings screen, Discoverable checkbox summary text -->
    <string name="bluetooth_not_discoverable">Make device discoverable</string>
    <!-- Bluetooth settings screen, heading above the list of nearby bluetooth devices -->
    <!-- Bluetooth settings screen, option name to pick discoverability timeout duration (a list dialog comes up) -->
    <string name="bluetooth_visibility_timeout">Discoverable timeout</string>
    <!-- Bluetooth settings screen, Discoverable timout list dialog summary text -->
    <string name="bluetooth_visibility_timeout_summary">Set how long device will be discoverable</string>
    <!-- Bluetooth settings screen, check box label whether or not to allow
        bluetooth voice dialing when lock screen is up-->
    <string name="bluetooth_lock_voice_dialing">Lock voice dialing</string>
@@ -194,7 +199,7 @@
    <string name="bluetooth_lock_voice_dialing_summary">
      Prevent use of the bluetooth dialer when the screen is locked
    </string>

    <!-- Bluetooth settings screen, heading above the list of nearby bluetooth devices -->
    <string name="bluetooth_devices">Bluetooth devices</string>
    <!-- Bluetooth settings screen, title for the current bluetooth name setting -->
    <string name="bluetooth_device_name">Device name</string>
@@ -243,9 +248,15 @@
    <!-- Strings for asking to the user whether to allow an app to enable discovery mode -->
    <string name="bluetooth_ask_discovery">"An application on your phone is requesting permission to make your phone discoverable by other Bluetooth devices for <xliff:g id="timeout">%1$d</xliff:g> seconds. Do you want to do this?"</string>

    <!-- Strings for asking to the user whether to allow an app to enable lasting discovery mode  -->
    <string name="bluetooth_ask_lasting_discovery">"An application on your phone is requesting permission to make your phone always discoverable by other Bluetooth devices. Do you want to do this?"</string>

    <!-- Strings for asking to the user whether to allow an app to enable bluetooth and discovery mode -->
    <string name="bluetooth_ask_enablement_and_discovery">"An application on your phone is requesting permission to turn on Bluetooth and to make your phone discoverable by other devices for <xliff:g id="timeout">%1$d</xliff:g> seconds. Do you want to do this?"</string>

    <!-- Strings for asking to the user whether to allow an app to enable bluetooth and discovery mode -->
    <string name="bluetooth_ask_enablement_and_lasting_discovery">"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 -->
    <string name="bluetooth_turning_on">"Turning on Bluetooth\u2026"</string>

+8 −0
Original line number Diff line number Diff line
@@ -40,6 +40,14 @@
        android:summaryOff="@string/bluetooth_not_discoverable"
        android:persistent="false" />

    <ListPreference
        android:key="bt_discoverable_timeout"
        android:title="@string/bluetooth_visibility_timeout"
        android:dependency="bt_discoverable"
        android:summary="@string/bluetooth_visibility_timeout_summary"
        android:entries="@array/bluetooth_visibility_timeout_entries"
        android:entryValues="@array/bluetooth_visibility_timeout_values" />

    <Preference
        android:key="bt_scan"
        android:dependency="bt_checkbox"
+70 −21
Original line number Diff line number Diff line
@@ -26,8 +26,11 @@ import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.os.Handler;
import android.os.SystemProperties;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.CheckBoxPreference;
import android.provider.Settings;
import android.util.Log;

/**
 * BluetoothDiscoverableEnabler is a helper to manage the "Discoverable"
@@ -39,14 +42,28 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan

    private static final String SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT =
            "debug.bt.discoverable_time";
    /* package */  static final int DEFAULT_DISCOVERABLE_TIMEOUT = 120;

    /* package */ static final String SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP =
    static final int DISCOVERABLE_TIMEOUT_TWO_MINUTES = 120;
    static final int DISCOVERABLE_TIMEOUT_FIVE_MINUTES = 300;
    static final int DISCOVERABLE_TIMEOUT_ONE_HOUR = 3600;
    static final int DISCOVERABLE_TIMEOUT_NEVER = 0;

    static final String SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP =
        "discoverable_end_timestamp";

    private static final String VALUE_DISCOVERABLE_TIMEOUT_TWO_MINUTES = "twomin";
    private static final String VALUE_DISCOVERABLE_TIMEOUT_FIVE_MINUTES = "fivemin";
    private static final String VALUE_DISCOVERABLE_TIMEOUT_ONE_HOUR = "onehour";
    private static final String VALUE_DISCOVERABLE_TIMEOUT_NEVER = "never";

    // no need for this timeout anymore since we have the listPreference default value
    // leaving now temporary until requestpermissionactivity is modified..
    static final int DEFAULT_DISCOVERABLE_TIMEOUT = DISCOVERABLE_TIMEOUT_TWO_MINUTES;

    private final Context mContext;
    private final Handler mUiHandler;
    private final CheckBoxPreference mCheckBoxPreference;
    private final ListPreference mTimeoutListPreference;

    private final LocalBluetoothManager mLocalManager;

@@ -69,12 +86,16 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan
        }
    };

    public BluetoothDiscoverableEnabler(Context context, CheckBoxPreference checkBoxPreference) {
    public BluetoothDiscoverableEnabler(Context context,
            CheckBoxPreference checkBoxPreference, ListPreference timeoutListPreference) {
        mContext = context;
        mUiHandler = new Handler();
        mCheckBoxPreference = checkBoxPreference;
        mTimeoutListPreference = timeoutListPreference;

        checkBoxPreference.setPersistent(false);
        // we actually want to persist this since can't infer from BT device state
        mTimeoutListPreference.setPersistent(true);

        mLocalManager = LocalBluetoothManager.getInstance(context);
        if (mLocalManager == null) {
@@ -91,7 +112,7 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan
        IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
        mContext.registerReceiver(mReceiver, filter);
        mCheckBoxPreference.setOnPreferenceChangeListener(this);

        mTimeoutListPreference.setOnPreferenceChangeListener(this);
        handleModeChanged(mLocalManager.getBluetoothAdapter().getScanMode());
    }

@@ -102,12 +123,18 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan

        mUiHandler.removeCallbacks(mUpdateCountdownSummaryRunnable);
        mCheckBoxPreference.setOnPreferenceChangeListener(null);
        mTimeoutListPreference.setOnPreferenceChangeListener(null);
        mContext.unregisterReceiver(mReceiver);
    }

    public boolean onPreferenceChange(Preference preference, Object value) {
        if (preference == mCheckBoxPreference) {
            // Turn on/off BT discoverability
            setEnabled((Boolean) value);
        } else if (preference == mTimeoutListPreference) {
            mTimeoutListPreference.setValue((String) value);
            setEnabled(true);
        }

        return true;
    }
@@ -116,26 +143,52 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan
        BluetoothAdapter manager = mLocalManager.getBluetoothAdapter();

        if (enable) {

            int timeout = getDiscoverableTimeout();
            manager.setDiscoverableTimeout(timeout);

            mCheckBoxPreference.setSummaryOn(
                    mContext.getResources().getString(R.string.bluetooth_is_discoverable, timeout));

            long endTimestamp = System.currentTimeMillis() + timeout * 1000;
            long endTimestamp = System.currentTimeMillis() + timeout * 1000L;
            persistDiscoverableEndTimestamp(endTimestamp);

            manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE);
            updateCountdownSummary();

            manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE, timeout);
        } else {
            manager.setScanMode(BluetoothAdapter.SCAN_MODE_CONNECTABLE);
        }
    }

    private void updateTimerDisplay(int timeout) {
        if (getDiscoverableTimeout() == DISCOVERABLE_TIMEOUT_NEVER) {
            mCheckBoxPreference.setSummaryOn(
                mContext.getResources()
                .getString(R.string.bluetooth_is_discoverable_always));
        } else {
            mCheckBoxPreference.setSummaryOn(
                mContext.getResources()
                .getString(R.string.bluetooth_is_discoverable, timeout));
        }
    }

    private int getDiscoverableTimeout() {
        int timeout = SystemProperties.getInt(SYSTEM_PROPERTY_DISCOVERABLE_TIMEOUT, -1);
        if (timeout <= 0) {
            timeout = DEFAULT_DISCOVERABLE_TIMEOUT;
        if (timeout < 0) {
            String timeoutValue = null;
            if (mTimeoutListPreference != null && mTimeoutListPreference.getValue() != null) {
                timeoutValue = mTimeoutListPreference.getValue().toString();
            } else {
                mTimeoutListPreference.setValue(VALUE_DISCOVERABLE_TIMEOUT_TWO_MINUTES);
                return DISCOVERABLE_TIMEOUT_TWO_MINUTES;
            }

            if (timeoutValue.equals(VALUE_DISCOVERABLE_TIMEOUT_NEVER)) {
                timeout = DISCOVERABLE_TIMEOUT_NEVER;
            } else if (timeoutValue.equals(VALUE_DISCOVERABLE_TIMEOUT_ONE_HOUR)) {
                timeout = DISCOVERABLE_TIMEOUT_ONE_HOUR;
            } else if (timeoutValue.equals(VALUE_DISCOVERABLE_TIMEOUT_FIVE_MINUTES)) {
                timeout = DISCOVERABLE_TIMEOUT_FIVE_MINUTES;
            } else {
                timeout = DISCOVERABLE_TIMEOUT_TWO_MINUTES;
            }
        }

        return timeout;
@@ -151,7 +204,6 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan
        if (mode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
            mCheckBoxPreference.setChecked(true);
            updateCountdownSummary();

        } else {
            mCheckBoxPreference.setChecked(false);
        }
@@ -173,11 +225,8 @@ public class BluetoothDiscoverableEnabler implements Preference.OnPreferenceChan
            return;
        }

        String formattedTimeLeft = String.valueOf((endTimestamp - currentTimestamp) / 1000);

        mCheckBoxPreference.setSummaryOn(
                mContext.getResources().getString(R.string.bluetooth_is_discoverable,
                        formattedTimeLeft));
        int timeLeft = (int) ((endTimestamp - currentTimestamp) / 1000L);
        updateTimerDisplay(timeLeft);

        synchronized (this) {
            mUiHandler.removeCallbacks(mUpdateCountdownSummaryRunnable);
+8 −3
Original line number Diff line number Diff line
@@ -31,9 +31,13 @@ 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.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
import android.text.TextUtils;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
@@ -55,6 +59,7 @@ public class BluetoothSettings extends PreferenceActivity
    private static final String KEY_BT_CHECKBOX = "bt_checkbox";
    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_DISCOVERABLE_TIMEOUT = "bt_discoverable_timeout";
    private static final String KEY_BT_NAME = "bt_name";
    private static final String KEY_BT_SCAN = "bt_scan";

@@ -141,9 +146,9 @@ public class BluetoothSettings extends PreferenceActivity
                    this,
                    (CheckBoxPreference) findPreference(KEY_BT_CHECKBOX));

            mDiscoverableEnabler = new BluetoothDiscoverableEnabler(
                    this,
                    (CheckBoxPreference) findPreference(KEY_BT_DISCOVERABLE));
            mDiscoverableEnabler = new BluetoothDiscoverableEnabler(this,
                    (CheckBoxPreference) findPreference(KEY_BT_DISCOVERABLE),
                    (ListPreference) findPreference(KEY_BT_DISCOVERABLE_TIMEOUT));

            mNamePreference = (BluetoothNamePreference) findPreference(KEY_BT_NAME);

Loading