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

Commit 5a86cd65 authored by Maggie's avatar Maggie
Browse files

Remove location mode menu from location settings

Location modes were introduced in KitKat. It has made location settings over complicated. In P we are removing location modes to provide simple, meaningful and transparent controls for users.

Bug: 63818349
Bug: 70350519
Test: Robo
Test: Manual
Change-Id: Ic8a168b8eeb3cd2c8b1536c378c92a5f377d3bba
parent eb4dceea
Loading
Loading
Loading
Loading
+2 −21
Original line number Diff line number Diff line
@@ -3391,16 +3391,6 @@
    <string name="location_title">My Location</string>
    <!-- [CHAR LIMIT=30] Title for managed profile location switch  -->
    <string name="managed_profile_location_switch_title">Location for work profile</string>
    <!-- [CHAR LIMIT=30] Location settings screen, setting preference screen box label for location mode -->
    <string name="location_mode_title">Mode</string>
    <!-- [CHAR LIMIT=30] Location settings screen, high accuracy location mode -->
    <string name="location_mode_high_accuracy_title">High accuracy</string>
    <!-- [CHAR LIMIT=30] Location settings screen, battery saving location mode -->
    <string name="location_mode_battery_saving_title">Battery saving</string>
    <!-- [CHAR LIMIT=30] Location settings screen, device only location mode -->
    <string name="location_mode_sensors_only_title">Device only</string>
    <!-- [CHAR LIMIT=30] Location settings screen, location off mode -->
    <string name="location_mode_location_off_title">Location off</string>
    <!-- [CHAR LIMIT=30] Location settings screen. It's a link that directs the user to a page that
      shows the location permission setting for each installed app -->
    <string name="location_app_level_permissions">App-level permissions</string>
@@ -3414,14 +3404,6 @@
    <string name="location_high_battery_use">High battery use</string>
    <!-- [CHAR LIMIT=30] Location settings screen, recent location requests low battery use-->
    <string name="location_low_battery_use">Low battery use</string>
    <!-- [CHAR LIMIT=30] Location mode screen, screen title -->
    <string name="location_mode_screen_title">Location mode</string>
    <!-- [CHAR LIMIT=130] Location mode screen, description for high accuracy mode -->
    <string name="location_mode_high_accuracy_description">Use GPS, Wi\u2011Fi, Bluetooth, or mobile networks to determine location </string>
    <!-- [CHAR LIMIT=130] Location mode screen, description for battery saving mode -->
    <string name="location_mode_battery_saving_description">Use Wi\u2011Fi, Bluetooth, or mobile 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 and device sensors to determine location</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 -->
@@ -6709,7 +6691,6 @@
    <string name="keywords_sounds_and_notifications_interruptions">dont don\u2019t disturb, interrupt, interruption, break</string>
    <string name="keywords_app">RAM</string>
    <string name="keywords_location">nearby, location, history, reporting</string>
    <string name="keywords_location_mode">accuracy</string>
    <string name="keywords_accounts">account</string>
    <string name="keywords_users">restriction, restrict, restricted</string>
    <string name="keywords_keyboard_and_ime">text correction, correct, sound, vibrate, auto, language, gesture, suggest, suggestion, theme, offensive, word, type, emoji, international</string>
@@ -8346,8 +8327,8 @@
    <!-- Summary of payment screen [CHAR LIMIT=NONE] -->
    <string name="payment_summary"><xliff:g id="app_name" example="Payment App">%1$s</xliff:g> is default</string>
    <!-- Summary of location screen [CHAR LIMIT=NONE] -->
    <string name="location_on_summary">ON / <xliff:g id="location_mode" example="High accuracy">%1$s</xliff:g></string>
    <!-- Summary of location on screen [CHAR LIMIT=NONE] -->
    <string name="location_on_summary">ON</string>
    <!-- Location off [CHAR LIMIT=NONE] -->
    <string name="location_off_summary">OFF</string>

res/xml/location_mode.xml

deleted100644 → 0
+0 −35
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2011 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:key="location_mode_settings"
    android:title="@string/location_mode_screen_title">

    <com.android.settings.widget.RadioButtonPreference
        android:key="high_accuracy"
        android:title="@string/location_mode_high_accuracy_title"
        android:summary="@string/location_mode_high_accuracy_description" />
    <com.android.settings.widget.RadioButtonPreference
        android:key="battery_saving"
        android:title="@string/location_mode_battery_saving_title"
        android:summary="@string/location_mode_battery_saving_description" />
    <com.android.settings.widget.RadioButtonPreference
        android:key="sensors_only"
        android:title="@string/location_mode_sensors_only_title"
        android:summary="@string/location_mode_sensors_only_description" />

</PreferenceScreen>
+0 −6
Original line number Diff line number Diff line
@@ -50,10 +50,4 @@
        <PreferenceCategory
            android:key="location_services"
            android:title="@string/location_category_location_services" />

        <Preference
            android:key="location_mode"
            android:title="@string/location_mode_title"
            settings:keywords="@string/keywords_location_mode"
            android:summary="@string/summary_placeholder" />
</PreferenceScreen>
+0 −108
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 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.content.Context;
import android.provider.SearchIndexableResource;

import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * A page with 3 radio buttons to choose the location mode.
 *
 * There are 3 location modes when location access is enabled:
 *
 * High accuracy: use both GPS and network location.
 *
 * Battery saving: use network location only to reduce the power consumption.
 *
 * Sensors only: use GPS location only.
 */
public class LocationMode extends DashboardFragment {

    private static final String TAG = "LocationMode";

    @Override
    public int getMetricsCategory() {
        return MetricsEvent.LOCATION_MODE;
    }

    @Override
    protected int getPreferenceScreenResId() {
        return R.xml.location_mode;
    }

    @Override
    protected String getLogTag() {
        return TAG;
    }

    @Override
    protected List<AbstractPreferenceController> getPreferenceControllers(Context context) {
        return buildPreferenceControllers(context, getLifecycle());
    }

    @Override
    public int getHelpResource() {
        return R.string.help_url_location_access;
    }

    private static List<AbstractPreferenceController> buildPreferenceControllers(
            Context context, Lifecycle lifecycle) {
        final List<AbstractPreferenceController> controllers = new ArrayList<>();
        controllers.add(new LocationModeHighAccuracyPreferenceController(context, lifecycle));
        controllers.add(
                new LocationModeBatterySavingPreferenceController(context, lifecycle));
        controllers.add(new LocationModeSensorsOnlyPreferenceController(context, lifecycle));
        return controllers;
    }

    /**
     * For Search.
     */
    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider() {
                @Override
                public List<SearchIndexableResource> getXmlResourcesToIndex(
                        Context context, boolean enabled) {
                    final SearchIndexableResource sir = new SearchIndexableResource(context);
                    sir.xmlResId = R.xml.location_mode;
                    return Arrays.asList(sir);
                }

                @Override
                protected boolean isPageSearchEnabled(Context context) {
                    return context.getResources().getBoolean(R.bool.config_location_mode_available);
                }

                @Override
                public List<AbstractPreferenceController> getPreferenceControllers(Context
                        context) {
                    return buildPreferenceControllers(context, null /* lifecycle */);
                }
            };
}
+0 −40
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 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.content.Context;
import android.provider.Settings;

import com.android.settingslib.core.lifecycle.Lifecycle;

public class LocationModeBatterySavingPreferenceController
        extends LocationModeRadioButtonPreferenceController {

    private static final String KEY_BATTERY_SAVING = "battery_saving";

    public LocationModeBatterySavingPreferenceController(Context context,
            Lifecycle lifecycle) {
        super(context, lifecycle);
    }

    @Override
    public String getPreferenceKey() {
        return KEY_BATTERY_SAVING;
    }

    @Override
    protected int getLocationMode() {
        return Settings.Secure.LOCATION_MODE_BATTERY_SAVING;
    }
}
Loading