diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 560e6e3..1b3abbf 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -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">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ed6787f..4c2ae0f 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -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>
 
diff --git a/res/xml/bluetooth_settings.xml b/res/xml/bluetooth_settings.xml
index 131f7a0..0c16880 100644
--- a/res/xml/bluetooth_settings.xml
+++ b/res/xml/bluetooth_settings.xml
@@ -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"
diff --git a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
index 37e48ff..7a4a1ff 100644
--- a/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
+++ b/src/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.java
@@ -26,8 +26,11 @@
 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 @@
 
     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 =
-            "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 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 @@
         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 @@
 
         mUiHandler.removeCallbacks(mUpdateCountdownSummaryRunnable);
         mCheckBoxPreference.setOnPreferenceChangeListener(null);
+        mTimeoutListPreference.setOnPreferenceChangeListener(null);
         mContext.unregisterReceiver(mReceiver);
     }
 
     public boolean onPreferenceChange(Preference preference, Object value) {
-        // Turn on/off BT discoverability
-        setEnabled((Boolean) 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 @@
         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 @@
         if (mode == BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
             mCheckBoxPreference.setChecked(true);
             updateCountdownSummary();
-
         } else {
             mCheckBoxPreference.setChecked(false);
         }
@@ -173,11 +225,8 @@
             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);
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 1e73b2d..e897673 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -31,9 +31,13 @@
 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 @@
     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 @@
                     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);
 
diff --git a/src/com/android/settings/bluetooth/RequestPermissionActivity.java b/src/com/android/settings/bluetooth/RequestPermissionActivity.java
index dd802f3..52cd439 100644
--- a/src/com/android/settings/bluetooth/RequestPermissionActivity.java
+++ b/src/com/android/settings/bluetooth/RequestPermissionActivity.java
@@ -157,7 +157,15 @@
             builder.setCancelable(false);
         } else {
             // Ask the user whether to turn on discovery mode or not
-            builder.setMessage(getString(R.string.bluetooth_ask_enablement_and_discovery, mTimeout));
+            // For lasting discoverable mode there is a different message
+            // TODO(): Revisit this when public APIs for discoverable timeout are introduced.
+            if (mTimeout == BluetoothDiscoverableEnabler.DISCOVERABLE_TIMEOUT_NEVER) {
+                builder.setMessage(
+                        getString(R.string.bluetooth_ask_enablement_and_lasting_discovery));
+            } else {
+                builder.setMessage(
+                        getString(R.string.bluetooth_ask_enablement_and_discovery, mTimeout));
+            }
             builder.setPositiveButton(getString(R.string.yes), this);
             builder.setNegativeButton(getString(R.string.no), this);
         }
@@ -243,9 +251,14 @@
 
             Log.e(TAG, "Timeout = " + mTimeout);
 
-            if (mTimeout > MAX_DISCOVERABLE_TIMEOUT) {
-                mTimeout = MAX_DISCOVERABLE_TIMEOUT;
-            } else if (mTimeout <= 0) {
+            // Right now assuming for simplicity that an app can pick any int value,
+            // and if equal to BluetoothDiscoverableEnabler.DISCOVERABLE_TIMEOUT_NEVER
+            // it will be treated as a request for lasting discoverability.
+            // Alternatively, a check can be added here for enforcing the specific allowed values
+            // as listed in BluetoothDiscoverableEnabler.
+            // We need to make all these value public.
+
+            if (mTimeout <= 0) {
                 mTimeout = BluetoothDiscoverableEnabler.DEFAULT_DISCOVERABLE_TIMEOUT;
             }
         } else {
diff --git a/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java b/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
index c869868..2657d91 100644
--- a/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
+++ b/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
@@ -75,7 +75,11 @@
         if (mEnableOnly) {
             tv.setText(getString(R.string.bluetooth_ask_enablement));
         } else {
-            tv.setText(getString(R.string.bluetooth_ask_enablement_and_discovery, mTimeout));
+            if (mTimeout == BluetoothDiscoverableEnabler.DISCOVERABLE_TIMEOUT_NEVER) {
+                tv.setText(getString(R.string.bluetooth_ask_enablement_and_lasting_discovery));
+            } else {
+                tv.setText(getString(R.string.bluetooth_ask_enablement_and_discovery, mTimeout));
+            }
         }
 
         p.mPositiveButtonText = getString(R.string.yes);
