Added a screen to configure wireless scanning

- Created "Scanning" preference screen

- Added overflow menu on "Location" settings to access "Scanning" settings

- Moved "Wi-Fi scanning always available" from Wi-Fi settings to "Scanning"
  settings

- Added "Bluetooth scanning always available" preference (UI only)

Change-Id: I85d8cd60ab309db5db9caee43f4b5a117192d904
This commit is contained in:
Lifu Tang
2015-03-23 13:16:56 -07:00
parent 584b2b2bc1
commit cb193d55e1
6 changed files with 145 additions and 22 deletions

View File

@@ -1415,12 +1415,6 @@
<string name="wifi_poor_network_detection_summary">Don\'t use a Wi\u2011Fi network unless it has a good Internet connection</string>
<!-- Checkbox summary for option to toggle poor network detection [CHAR LIMIT=60] -->
<string name="wifi_avoid_poor_network_detection_summary">Only use networks that have a good Internet connection</string>
<!-- Checkbox title for option to scan always available setting -->
<string name="wifi_scan_always_available">Scanning always available</string>
<!-- Checkbox title for option to scan always available setting [CHAR LIMIT=60] -->
<string name="wifi_scan_always_available_title">Always allow scanning</string>
<!-- Checkbox summary for option to toggle scan always available setting -->
<string name="wifi_scan_always_available_summary">Let Google\'s location service and other apps scan for networks, even when Wi\u2011Fi is off</string>
<!-- Checkbox title for option to connect to open Wi-Fi automatically [CHAR LIMIT=40] -->
<string name="wifi_automatically_connect_title">Use open Wi\u2011Fi automatically</string>
<!-- Checkbox summary for option to connect to open Wi-Fi automatically [CHAR LIMIT=100] -->
@@ -2628,6 +2622,21 @@
<string name="location_mode_battery_saving_description">Use Wi\u2011Fi and cellular networks to determine location</string>
<!-- [CHAR LIMIT=130] Location mode screen, description for sensors only mode -->
<string name="location_mode_sensors_only_description">Use GPS to determine location</string>
<!-- Help menu label [CHAR LIMIT=20] Location settings screen, overflow menu that takes the user
to scanning settings activity -->
<string name="location_menu_scanning">Scanning</string>
<!-- [CHAR LIMIT=30] Wireless background scanning settings screen, screen title -->
<string name="location_scanning_screen_title">Scanning</string>
<!-- [CHAR LIMIT=130] Preference title for Wi-Fi always scanning [DO NOT TRANSLATE] -->
<string name="location_scanning_wifi_always_scanning_title">Wi\u2011Fi scanning always available</string>
<!-- Preference description text for Wi-Fi always scanning [DO NOT TRANSLATE] -->
<string name="location_scanning_wifi_always_scanning_description">The clear history button in
your browser has saved more lives than Superman</string>
<!-- [CHAR LIMIT=130] Description text for Bluetooth always scanning [DO NOT TRANSLATE] -->
<string name="location_scanning_bluetooth_always_scanning_title">Bluetooth scanning always available</string>
<!-- Description text for Bluetooth always scanning [DO NOT TRANSLATE] -->
<string name="location_scanning_bluetooth_always_scanning_description">If you want to catch a
squirrel just climb a tree and act like a nut</string>
<!-- [CHAR LIMIT=30] Security & location settings screen, setting check box label for Google location service (cell ID, wifi, etc.) -->
<string name="location_network_based">Wi\u2011Fi &amp; cellular network location</string>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/location_scanning_screen_title">
<SwitchPreference
android:title="@string/location_scanning_wifi_always_scanning_title"
android:summary="@string/location_scanning_wifi_always_scanning_description"
android:defaultValue="true"
android:key="wifi_always_scanning"
android:persistent="false" />
<SwitchPreference
android:title="@string/location_scanning_bluetooth_always_scanning_title"
android:summary="@string/location_scanning_bluetooth_always_scanning_description"
android:defaultValue="true"
android:key="bluetooth_always_scanning"
android:persistent="false" />
</PreferenceScreen>

View File

@@ -24,12 +24,6 @@
android:summary="@string/wifi_notify_open_networks_summary"
android:persistent="false" />
<SwitchPreference
android:key="wifi_scan_always_available"
android:title="@string/wifi_scan_always_available"
android:summary="@string/wifi_scan_always_available_summary"
android:persistent="false" />
<ListPreference
android:key="sleep_policy"
android:title="@string/wifi_setting_sleep_policy_title"

View File

@@ -29,6 +29,9 @@ import android.preference.PreferenceCategory;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Switch;
import com.android.settings.R;
@@ -66,6 +69,8 @@ public class LocationSettings extends LocationSettingsBase
/** Key for preference category "Location services" */
private static final String KEY_LOCATION_SERVICES = "location_services";
private static final int MENU_SCANNING = Menu.FIRST;
private SwitchBar mSwitchBar;
private Switch mSwitch;
private boolean mValidListener = false;
@@ -249,6 +254,28 @@ public class LocationSettings extends LocationSettingsBase
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(0, MENU_SCANNING, 0, R.string.location_menu_scanning);
// The super class adds "Help & Feedback" menu item.
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final SettingsActivity activity = (SettingsActivity) getActivity();
switch (item.getItemId()) {
case MENU_SCANNING:
activity.startPreferencePanel(
ScanningSettings.class.getName(), null,
R.string.location_scanning_screen_title, null, LocationSettings.this,
0);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public int getHelpResource() {
return R.string.help_url_location_access;

View File

@@ -0,0 +1,69 @@
/*
* Copyright (C) 2015 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.location;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.Settings.Global;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
/**
* A page that configures the background scanning settings for Wi-Fi and Bluetooth.
*/
public class ScanningSettings extends SettingsPreferenceFragment {
private static final String KEY_WIFI_SCAN_ALWAYS_AVAILABLE = "wifi_always_scanning";
@Override
public void onResume() {
super.onResume();
createPreferenceHierarchy();
}
private PreferenceScreen createPreferenceHierarchy() {
PreferenceScreen root = getPreferenceScreen();
if (root != null) {
root.removeAll();
}
addPreferencesFromResource(R.xml.location_scanning);
root = getPreferenceScreen();
initPreferences();
return root;
}
private void initPreferences() {
SwitchPreference scanAlwaysAvailable =
(SwitchPreference) findPreference(KEY_WIFI_SCAN_ALWAYS_AVAILABLE);
scanAlwaysAvailable.setChecked(Global.getInt(getContentResolver(),
Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
String key = preference.getKey();
if (KEY_WIFI_SCAN_ALWAYS_AVAILABLE.equals(key)) {
Global.putInt(getContentResolver(),
Global.WIFI_SCAN_ALWAYS_AVAILABLE,
((SwitchPreference) preference).isChecked() ? 1 : 0);
} else {
return super.onPreferenceTreeClick(screen, preference);
}
return true;
}
}

View File

@@ -58,7 +58,6 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment
private static final String KEY_FREQUENCY_BAND = "frequency_band";
private static final String KEY_NOTIFY_OPEN_NETWORKS = "notify_open_networks";
private static final String KEY_SLEEP_POLICY = "sleep_policy";
private static final String KEY_SCAN_ALWAYS_AVAILABLE = "wifi_scan_always_available";
private static final String KEY_INSTALL_CREDENTIALS = "install_credentials";
private static final String KEY_WIFI_ASSISTANT = "wifi_assistant";
private static final String KEY_WIFI_DIRECT = "wifi_direct";
@@ -119,11 +118,6 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment
Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 0) == 1);
notifyOpenNetworks.setEnabled(mWifiManager.isWifiEnabled());
SwitchPreference scanAlwaysAvailable =
(SwitchPreference) findPreference(KEY_SCAN_ALWAYS_AVAILABLE);
scanAlwaysAvailable.setChecked(Global.getInt(getContentResolver(),
Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
Intent intent = new Intent(Credentials.INSTALL_AS_USER_ACTION);
intent.setClassName("com.android.certinstaller",
"com.android.certinstaller.CertInstallerMain");
@@ -245,10 +239,6 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment
Global.putInt(getContentResolver(),
Settings.Global.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON,
((SwitchPreference) preference).isChecked() ? 1 : 0);
} else if (KEY_SCAN_ALWAYS_AVAILABLE.equals(key)) {
Global.putInt(getContentResolver(),
Global.WIFI_SCAN_ALWAYS_AVAILABLE,
((SwitchPreference) preference).isChecked() ? 1 : 0);
} else {
return super.onPreferenceTreeClick(screen, preference);
}