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

Commit 48539984 authored by bnarasimha's avatar bnarasimha Committed by Clark Scheff
Browse files

Tethering: Turn off wifi hotspot after inactivity(3/3)

Turn off the Wi-Fi hotspot after a specified time of inactivity.
The hotspot is considered to be inactive when no clients are
connected to it.

Change-Id: I646c34f9f5f16a209c7d987f53a73261f88d4c42
parent c534d5b7
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -240,4 +240,20 @@
        <item>@string/security_settings_fingerprint_sensor_location_right</item>
    </string-array>

    <!-- Wi-Fi tethering inactivity shut off -->
    <string-array name="hotstpot_inactivity_timeout_entries" translatable="false">
        <item>@string/hotstpot_inactivity_timeout_never</item>
        <item>@string/hotstpot_inactivity_timeout_1_minute</item>
        <item>@string/hotstpot_inactivity_timeout_5_minutes</item>
        <item>@string/hotstpot_inactivity_timeout_10_minutes</item>
    </string-array>


    <string-array name="hotstpot_inactivity_timeout_values" translatable="false">
        <item>0</item>
        <item>60000</item>
        <item>300000</item>
        <item>600000</item>
    </string-array>

</resources>
+11 −0
Original line number Diff line number Diff line
@@ -389,4 +389,15 @@
    <string name="security_settings_fingerprint_sensor_location_left">left side</string>
    <string name="security_settings_fingerprint_sensor_location_right">right side</string>

    <!-- Tethering & portable hotspot other category -->
    <string name="tethering_other_category_text">Other</string>
    <!-- Wi-Fi tethering inactivity timeout -->
    <string name="hotstpot_inactivity_timeout_text">Wi\u2011Fi hotspot timeout</string>
    <string name="hotstpot_inactivity_timeout_never">Never</string>
    <string name="hotstpot_inactivity_timeout_1_minute">1 minute</string>
    <string name="hotstpot_inactivity_timeout_5_minutes">5 minutes</string>
    <string name="hotstpot_inactivity_timeout_10_minutes">10 minutes</string>
    <string name="hotstpot_inactivity_timeout_never_summary_text">Portable Wi\u2011Fi hotspot timeout never</string>
    <string name="hotstpot_inactivity_timeout_summary_text">Portable Wi\u2011Fi hotspot timeout after <xliff:g id="timeout">%1$s</xliff:g></string>

</resources>
+21 −7
Original line number Diff line number Diff line
@@ -17,10 +17,6 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:settings="http://schemas.android.com/apk/res-auto">

    <SwitchPreference
        android:key="usb_tether_settings"
        android:title="@string/usb_tethering_button_text" />

    <SwitchPreference
        android:key="enable_wifi_ap"
        android:title="@string/wifi_tether_checkbox_text" />
@@ -36,9 +32,12 @@
        android:title="@string/wifi_tether_configure_ap_text"
        android:persistent="false" />

    <SwitchPreference
        android:key="enable_bluetooth_tethering"
        android:title="@string/bluetooth_tether_checkbox_text" />
    <ListPreference
            android:key="hotstpot_inactivity_timeout"
            android:title="@string/hotstpot_inactivity_timeout_text"
            android:entries="@array/hotstpot_inactivity_timeout_entries"
            android:entryValues="@array/hotstpot_inactivity_timeout_values"
            android:persistent="false" />

    <com.android.settings.DividerPreference
            android:key="disabled_on_data_saver"
@@ -49,4 +48,19 @@
        android:key="tethering_help"
        android:title="@string/tethering_help_button_text" >
    </PreferenceScreen>

    <PreferenceCategory
            android:title="@string/tethering_other_category_text">

        <SwitchPreference
                android:key="usb_tether_settings"
                android:title="@string/usb_tethering_button_text"
                android:persistent="false" />

        <SwitchPreference
                android:key="enable_bluetooth_tethering"
                android:title="@string/bluetooth_tether_checkbox_text"
                android:persistent="false" />

    </PreferenceCategory>
</PreferenceScreen>
+35 −5
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import android.os.Environment;
import android.os.Handler;
import android.os.UserManager;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.telephony.TelephonyManager;
@@ -74,6 +75,7 @@ public class TetherSettings extends RestrictedSettingsFragment
    private static final String ENABLE_WIFI_AP_EXT = "enable_wifi_ap_ext";
    private static final String ENABLE_BLUETOOTH_TETHERING = "enable_bluetooth_tethering";
    private static final String TETHER_CHOICE = "TETHER_TYPE";
    private static final String HOTSPOT_TIMEOUT = "hotstpot_inactivity_timeout";
    private static final String TETHERING_HELP = "tethering_help";
    private static final String DATA_SAVER_FOOTER = "disabled_on_data_saver";
    private static final String ACTION_EXTRA = "choice";
@@ -99,6 +101,8 @@ public class TetherSettings extends RestrictedSettingsFragment

    private SwitchPreference mBluetoothTether;

    private ListPreference mHotspotInactivityTimeout;

    private BroadcastReceiver mTetherChangeReceiver;

    private String[] mUsbRegexs;
@@ -211,6 +215,7 @@ public class TetherSettings extends RestrictedSettingsFragment

        mUsbTether = (SwitchPreference) findPreference(USB_TETHER_SETTINGS);
        mBluetoothTether = (SwitchPreference) findPreference(ENABLE_BLUETOOTH_TETHERING);
        mHotspotInactivityTimeout = (ListPreference) findPreference(HOTSPOT_TIMEOUT);

        mDataSaverBackend.addListener(this);

@@ -247,6 +252,7 @@ public class TetherSettings extends RestrictedSettingsFragment
                mBluetoothTether.setChecked(false);
            }
        }
        mHotspotInactivityTimeout.setOnPreferenceChangeListener(this);
        // Set initial state based on Data Saver mode.
        onDataSaverChanged(mDataSaverBackend.isDataSaverEnabled());
    }
@@ -295,6 +301,15 @@ public class TetherSettings extends RestrictedSettingsFragment
                    mWifiConfig.SSID,
                    mSecurityType[index]));
        }
        updateHotspotTimeoutSummary(mWifiConfig);
    }

    private void updateHotspotTimeoutSummary(WifiConfiguration wifiConfig) {
        mHotspotInactivityTimeout.setValue(
                (wifiConfig == null) ? "0" : Long.toString(wifiConfig.wifiApInactivityTimeout));
        mHotspotInactivityTimeout.setSummary(String.format(
                getString(R.string.hotstpot_inactivity_timeout_summary_text,
                        mHotspotInactivityTimeout.getEntry())));
    }

    @Override
@@ -549,6 +564,7 @@ public class TetherSettings extends RestrictedSettingsFragment

    @Override
    public boolean onPreferenceChange(Preference preference, Object value) {
        if (preference == mEnableWifiAp) {
            boolean enable = (Boolean) value;

            if (enable) {
@@ -557,6 +573,20 @@ public class TetherSettings extends RestrictedSettingsFragment
                mCm.stopTethering(TETHERING_WIFI);
            }
            return false;
        } else if (preference == mHotspotInactivityTimeout) {
            if (mWifiConfig != null) {
                mWifiConfig.wifiApInactivityTimeout = Long.parseLong((String) value);
                updateHotspotTimeoutSummary(mWifiConfig);
                if (mWifiManager.getWifiApState() == WifiManager.WIFI_AP_STATE_ENABLED) {
                    mWifiManager.setWifiApEnabled(null, false);
                    mWifiManager.setWifiApEnabled(mWifiConfig, true);
                } else {
                    mWifiManager.setWifiApConfiguration(mWifiConfig);
                }
                return true;
            }
        }
        return false;
    }

    public static boolean isProvisioningNeededButUnavailable(Context context) {