diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 44d36c96ac7..150775c2d88 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -140,4 +140,9 @@ Warning: This option may not work properly or lead to data loss and is therefore not recommended! + + + Use assisted GPS + + Download satellite assistance data from the internet which can greatly improve the GPS startup performance. For emergency calls, assisted GPS is always allowed. diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml index 3f26d04287e..0ba5da8fc97 100644 --- a/res/xml/location_settings.xml +++ b/res/xml/location_settings.xml @@ -35,6 +35,12 @@ settings:controller="com.android.settings.location.RecentLocationAccessSeeAllButtonPreferenceController" settings:searchable="false"/> + + diff --git a/src/com/android/settings/location/AgpsPreferenceController.java b/src/com/android/settings/location/AgpsPreferenceController.java new file mode 100644 index 00000000000..0b0bb73a6f0 --- /dev/null +++ b/src/com/android/settings/location/AgpsPreferenceController.java @@ -0,0 +1,74 @@ +/* + * 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. + */ + +package com.android.settings.location; + +import android.content.ContentResolver; +import android.content.Context; +import android.provider.Settings; + +import androidx.preference.SwitchPreferenceCompat; +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; + +public class AgpsPreferenceController extends LocationBasePreferenceController { + private static final String KEY_ASSISTED_GPS = "assisted_gps"; + + private SwitchPreferenceCompat mAgpsPreference; + + public AgpsPreferenceController(Context context, String key) { + super(context, key); + } + + @Override + public String getPreferenceKey() { + return KEY_ASSISTED_GPS; + } + + @AvailabilityStatus + public int getAvailabilityStatus() { + return AVAILABLE; + } + + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mAgpsPreference = (SwitchPreferenceCompat) screen.findPreference(KEY_ASSISTED_GPS); + } + + @Override + public void updateState(Preference preference) { + if (mAgpsPreference != null) { + mAgpsPreference.setChecked(Settings.Global.getInt( + mContext.getContentResolver(), Settings.Global.ASSISTED_GPS_ENABLED, 1) == 1); + } + } + + @Override + public boolean handlePreferenceTreeClick(Preference preference) { + if (KEY_ASSISTED_GPS.equals(preference.getKey())) { + final ContentResolver cr = mContext.getContentResolver(); + final boolean switchState = mAgpsPreference.isChecked(); + Settings.Global.putInt(cr, Settings.Global.ASSISTED_GPS_ENABLED, + switchState ? 1 : 0); + return true; + } + return false; + } + + @Override + public void onLocationModeChanged(int mode, boolean restricted) {} +} diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java index 6a1d3d28dfb..a31c19c042f 100644 --- a/src/com/android/settings/location/LocationSettings.java +++ b/src/com/android/settings/location/LocationSettings.java @@ -122,6 +122,7 @@ public class LocationSettings extends DashboardFragment implements use(LocationForWorkPreferenceController.class).init(this); use(LocationSettingsFooterPreferenceController.class).init(this); use(LocationForPrivateProfilePreferenceController.class).init(this); + use(AgpsPreferenceController.class).init(this); } @Override