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

Commit aeca1851 authored by Jaikumar Ganesh's avatar Jaikumar Ganesh Committed by Android Git Automerger
Browse files

am c955d8ee: Merge "Allow users to change the length of BT disoverability. DO...

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

* commit 'c955d8ee':
  Allow users to change the length of BT disoverability. DO NOT MERGE
parents 531bed61 c955d8ee
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
@@ -186,9 +186,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>
@@ -196,7 +201,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>
@@ -245,9 +250,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