summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/current.txt3
-rw-r--r--api/system-current.txt4
-rw-r--r--api/test-current.txt3
-rw-r--r--core/java/android/app/VrManager.java113
-rw-r--r--core/java/android/app/VrStateCallback.java38
-rw-r--r--core/java/android/hardware/display/DisplayManager.java16
-rw-r--r--core/java/android/hardware/display/DisplayManagerGlobal.java12
-rw-r--r--core/java/android/hardware/display/IDisplayManager.aidl4
-rw-r--r--core/java/android/os/Build.java2
-rw-r--r--core/java/android/service/vr/IVrManager.aidl7
-rw-r--r--core/java/android/text/Layout.java4
-rw-r--r--core/java/android/view/Menu.java7
-rw-r--r--core/java/android/view/View.java14
-rw-r--r--core/java/com/android/internal/view/menu/ListMenuItemView.java92
-rw-r--r--core/java/com/android/internal/view/menu/MenuAdapter.java8
-rw-r--r--core/java/com/android/internal/view/menu/MenuBuilder.java16
-rw-r--r--core/java/com/android/internal/view/menu/SubMenuBuilder.java10
-rw-r--r--core/jni/android_view_DisplayListCanvas.cpp2
-rw-r--r--core/res/AndroidManifest.xml5
-rw-r--r--core/res/res/layout/popup_menu_item_layout.xml104
-rw-r--r--core/res/res/values/config.xml6
-rw-r--r--core/res/res/values/symbols.xml4
-rw-r--r--packages/CarrierDefaultApp/res/values-pa/strings.xml6
-rw-r--r--packages/SettingsLib/res/values-af/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-am/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ar/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ar/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-az/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-b+sr+Latn/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-be/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-bg/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-bn/arrays.xml10
-rw-r--r--packages/SettingsLib/res/values-bn/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-bs/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ca/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-cs/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-da/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-da/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-de/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-el/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-en-rAU/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-en-rCA/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-en-rGB/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-en-rIN/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-en-rXC/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-es-rUS/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-es/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-et/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-eu/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-fa/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-fi/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-fr-rCA/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-fr/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-gl/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-gu/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-hi/arrays.xml12
-rw-r--r--packages/SettingsLib/res/values-hi/strings.xml22
-rw-r--r--packages/SettingsLib/res/values-hr/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-hu/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-hy/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-in/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-is/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-it/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-iw/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-iw/strings.xml4
-rw-r--r--packages/SettingsLib/res/values-ja/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ka/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-kk/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-km/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-kn/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ko/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ky/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-lo/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-lt/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-lv/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-mk/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ml/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ml/strings.xml2
-rw-r--r--packages/SettingsLib/res/values-mn/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-mr/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-mr/strings.xml8
-rw-r--r--packages/SettingsLib/res/values-ms/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-my/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-nb/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ne/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-nl/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-pa/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-pa/strings.xml28
-rw-r--r--packages/SettingsLib/res/values-pl/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-pt-rBR/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-pt-rPT/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-pt/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-ro/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ru/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-si/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-sk/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-sl/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-sq/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-sr/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-sv/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-sw/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-ta/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-te/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-te/strings.xml20
-rw-r--r--packages/SettingsLib/res/values-th/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-tl/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-tr/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-uk/arrays.xml24
-rw-r--r--packages/SettingsLib/res/values-ur/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-uz/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-vi/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-zh-rCN/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-zh-rHK/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-zh-rTW/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values-zu/arrays.xml8
-rw-r--r--packages/SettingsLib/res/values/strings.xml5
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java23
-rw-r--r--packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/SwipeHelper.java73
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java48
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java20
-rw-r--r--services/core/java/com/android/server/TextServicesManagerService.java86
-rw-r--r--services/core/java/com/android/server/content/SyncManager.java16
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java107
-rw-r--r--services/core/java/com/android/server/display/PersistentDataStore.java89
-rw-r--r--services/core/java/com/android/server/job/JobSchedulerInternal.java40
-rw-r--r--services/core/java/com/android/server/job/JobSchedulerService.java19
-rw-r--r--services/core/java/com/android/server/job/JobStore.java43
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java116
-rw-r--r--services/core/java/com/android/server/vr/VrManagerService.java50
-rw-r--r--services/java/com/android/server/SystemServer.java6
-rw-r--r--tools/aapt/SdkConstants.h2
-rw-r--r--tools/aapt2/SdkConstants.h2
-rw-r--r--tools/apilint/apilint.py76
-rwxr-xr-xwifi/java/android/net/wifi/WifiNetworkScoreCache.java63
-rw-r--r--wifi/tests/Android.mk13
-rw-r--r--wifi/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java58
140 files changed, 1617 insertions, 770 deletions
diff --git a/api/current.txt b/api/current.txt
index c147254494dd..d94614b4de9f 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -30671,7 +30671,7 @@ package android.os {
field public static final int N = 24; // 0x18
field public static final int N_MR1 = 25; // 0x19
field public static final int O = 26; // 0x1a
- field public static final int O_MR1 = 10000; // 0x2710
+ field public static final int O_MR1 = 27; // 0x1b
}
public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
@@ -44968,6 +44968,7 @@ package android.view {
method public abstract void removeGroup(int);
method public abstract void removeItem(int);
method public abstract void setGroupCheckable(int, boolean, boolean);
+ method public default void setGroupDividerEnabled(boolean);
method public abstract void setGroupEnabled(int, boolean);
method public abstract void setGroupVisible(int, boolean);
method public abstract void setQwertyMode(boolean);
diff --git a/api/system-current.txt b/api/system-current.txt
index 4ffd8dacf8f3..a43fe2e4ca9f 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -16565,6 +16565,7 @@ package android.hardware.display {
method public android.view.Display getDisplay(int);
method public android.view.Display[] getDisplays();
method public android.view.Display[] getDisplays(java.lang.String);
+ method public android.graphics.Point getStableDisplaySize();
method public void registerDisplayListener(android.hardware.display.DisplayManager.DisplayListener, android.os.Handler);
method public void unregisterDisplayListener(android.hardware.display.DisplayManager.DisplayListener);
field public static final java.lang.String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
@@ -33387,7 +33388,7 @@ package android.os {
field public static final int N = 24; // 0x18
field public static final int N_MR1 = 25; // 0x19
field public static final int O = 26; // 0x1a
- field public static final int O_MR1 = 10000; // 0x2710
+ field public static final int O_MR1 = 27; // 0x1b
}
public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
@@ -48574,6 +48575,7 @@ package android.view {
method public abstract void removeGroup(int);
method public abstract void removeItem(int);
method public abstract void setGroupCheckable(int, boolean, boolean);
+ method public default void setGroupDividerEnabled(boolean);
method public abstract void setGroupEnabled(int, boolean);
method public abstract void setGroupVisible(int, boolean);
method public abstract void setQwertyMode(boolean);
diff --git a/api/test-current.txt b/api/test-current.txt
index 7203cad1cf32..87eb171c54ef 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -30815,7 +30815,7 @@ package android.os {
field public static final int N = 24; // 0x18
field public static final int N_MR1 = 25; // 0x19
field public static final int O = 26; // 0x1a
- field public static final int O_MR1 = 10000; // 0x2710
+ field public static final int O_MR1 = 27; // 0x1b
}
public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable {
@@ -45414,6 +45414,7 @@ package android.view {
method public abstract void removeGroup(int);
method public abstract void removeItem(int);
method public abstract void setGroupCheckable(int, boolean, boolean);
+ method public default void setGroupDividerEnabled(boolean);
method public abstract void setGroupEnabled(int, boolean);
method public abstract void setGroupVisible(int, boolean);
method public abstract void setQwertyMode(boolean);
diff --git a/core/java/android/app/VrManager.java b/core/java/android/app/VrManager.java
index b40c96c6f0c8..363e20a76a1f 100644
--- a/core/java/android/app/VrManager.java
+++ b/core/java/android/app/VrManager.java
@@ -1,13 +1,18 @@
package android.app;
-
+import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
-import android.content.ComponentName;
import android.content.Context;
+import android.os.Handler;
import android.os.RemoteException;
+import android.service.vr.IPersistentVrStateCallbacks;
import android.service.vr.IVrManager;
+import android.service.vr.IVrStateCallbacks;
+import android.util.ArrayMap;
+
+import java.util.Map;
/**
* Used to control aspects of a devices Virtual Reality (VR) capabilities.
@@ -16,7 +21,33 @@ import android.service.vr.IVrManager;
@SystemApi
@SystemService(Context.VR_SERVICE)
public class VrManager {
+
+ private static class CallbackEntry {
+ final IVrStateCallbacks mStateCallback = new IVrStateCallbacks.Stub() {
+ @Override
+ public void onVrStateChanged(boolean enabled) {
+ mHandler.post(() -> mCallback.onVrStateChanged(enabled));
+ }
+
+ };
+ final IPersistentVrStateCallbacks mPersistentStateCallback =
+ new IPersistentVrStateCallbacks.Stub() {
+ @Override
+ public void onPersistentVrStateChanged(boolean enabled) {
+ mHandler.post(() -> mCallback.onPersistentVrStateChanged(enabled));
+ }
+ };
+ final VrStateCallback mCallback;
+ final Handler mHandler;
+
+ CallbackEntry(VrStateCallback callback, Handler handler) {
+ mCallback = callback;
+ mHandler = handler;
+ }
+ }
+
private final IVrManager mService;
+ private Map<VrStateCallback, CallbackEntry> mCallbackMap = new ArrayMap<>();
/**
* {@hide}
@@ -26,6 +57,84 @@ public class VrManager {
}
/**
+ * Registers a callback to be notified of changes to the VR Mode state.
+ *
+ * @param callback The callback to register.
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS)
+ public void registerVrStateCallback(VrStateCallback callback, @NonNull Handler handler) {
+ if (callback == null || mCallbackMap.containsKey(callback)) {
+ return;
+ }
+
+ CallbackEntry entry = new CallbackEntry(callback, handler);
+ mCallbackMap.put(callback, entry);
+ try {
+ mService.registerListener(entry.mStateCallback);
+ mService.registerPersistentVrStateListener(entry.mPersistentStateCallback);
+ } catch (RemoteException e) {
+ try {
+ unregisterVrStateCallback(callback);
+ } catch (Exception ignore) {
+ e.rethrowFromSystemServer();
+ }
+ }
+ }
+
+ /**
+ * Deregisters VR State callbacks.
+ *
+ * @param callback The callback to deregister.
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.RESTRICTED_VR_ACCESS)
+ public void unregisterVrStateCallback(VrStateCallback callback) {
+ CallbackEntry entry = mCallbackMap.remove(callback);
+ if (entry != null) {
+ try {
+ mService.unregisterListener(entry.mStateCallback);
+ } catch (RemoteException ignore) {
+ // Dont rethrow exceptions from requests to unregister.
+ }
+
+ try {
+ mService.unregisterPersistentVrStateListener(entry.mPersistentStateCallback);
+ } catch (RemoteException ignore) {
+ // Dont rethrow exceptions from requests to unregister.
+ }
+ }
+ }
+
+ /**
+ * Returns the current VrMode state.
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.ACCESS_VR_STATE)
+ public boolean getVrModeEnabled() {
+ try {
+ return mService.getVrModeState();
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ return false;
+ }
+
+ /**
+ * Returns the current VrMode state.
+ * @hide
+ */
+ @RequiresPermission(android.Manifest.permission.ACCESS_VR_STATE)
+ public boolean getPersistentVrModeEnabled() {
+ try {
+ return mService.getPersistentVrModeEnabled();
+ } catch (RemoteException e) {
+ e.rethrowFromSystemServer();
+ }
+ return false;
+ }
+
+ /**
* Sets the persistent VR mode state of a device. When a device is in persistent VR mode it will
* remain in VR mode even if the foreground does not specify Vr mode being enabled. Mainly used
* by VR viewers to indicate that a device is placed in a VR viewer.
diff --git a/core/java/android/app/VrStateCallback.java b/core/java/android/app/VrStateCallback.java
new file mode 100644
index 000000000000..742faa06fd1d
--- /dev/null
+++ b/core/java/android/app/VrStateCallback.java
@@ -0,0 +1,38 @@
+/*
+ * 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 android.app;
+
+/**
+ * Listens to VR Mode state changes. Use with methods in {@link VrManager}.
+ *
+ * @hide
+ */
+public abstract class VrStateCallback {
+
+ /**
+ * Callback triggered when there is a change to Persistent VR State.
+ *
+ * @param enabled True when VR State is in persistent mode, false otherwise.
+ */
+ public void onPersistentVrStateChanged(boolean enabled) {}
+
+ /**
+ * Callback triggered when there is a change to Vr State.
+ *
+ * @param enabled True when VR State is in VR mode, false otherwise.
+ */
+ public void onVrStateChanged(boolean enabled) {}
+}
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 3ade2e430a61..6fbacaf32fd6 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -18,8 +18,10 @@ package android.hardware.display;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.content.Context;
+import android.graphics.Point;
import android.media.projection.MediaProjection;
import android.os.Handler;
import android.util.SparseArray;
@@ -586,6 +588,20 @@ public final class DisplayManager {
}
/**
+ * Gets the stable device display size, in pixels.
+ *
+ * This should really only be used for things like server-side filtering of available
+ * applications. Most applications don't need the level of stability guaranteed by this and
+ * should instead query either the size of the display they're currently running on or the
+ * size of the default display.
+ * @hide
+ */
+ @SystemApi
+ public Point getStableDisplaySize() {
+ return mGlobal.getStableDisplaySize();
+ }
+
+ /**
* Listens for changes in available display devices.
*/
public interface DisplayListener {
diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java
index 0b998e58656b..a8a4eb67f580 100644
--- a/core/java/android/hardware/display/DisplayManagerGlobal.java
+++ b/core/java/android/hardware/display/DisplayManagerGlobal.java
@@ -18,6 +18,7 @@ package android.hardware.display;
import android.content.Context;
import android.content.res.Resources;
+import android.graphics.Point;
import android.hardware.display.DisplayManager.DisplayListener;
import android.media.projection.IMediaProjection;
import android.media.projection.MediaProjection;
@@ -444,6 +445,17 @@ public final class DisplayManagerGlobal {
}
}
+ /**
+ * Gets the stable device display size, in pixels.
+ */
+ public Point getStableDisplaySize() {
+ try {
+ return mDm.getStableDisplaySize();
+ } catch (RemoteException ex) {
+ throw ex.rethrowFromSystemServer();
+ }
+ }
+
private final class DisplayManagerCallback extends IDisplayManagerCallback.Stub {
@Override
public void onDisplayEvent(int displayId, int event) {
diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl
index 7ca4dc140eca..505388419c8c 100644
--- a/core/java/android/hardware/display/IDisplayManager.aidl
+++ b/core/java/android/hardware/display/IDisplayManager.aidl
@@ -16,6 +16,7 @@
package android.hardware.display;
+import android.graphics.Point;
import android.hardware.display.IDisplayManagerCallback;
import android.hardware.display.IVirtualDisplayCallback;
import android.hardware.display.WifiDisplay;
@@ -77,4 +78,7 @@ interface IDisplayManager {
// No permissions required but must be same Uid as the creator.
void releaseVirtualDisplay(in IVirtualDisplayCallback token);
+
+ // Get a stable metric for the device's display size. No permissions required.
+ Point getStableDisplaySize();
}
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index 7852125db6f0..062799891ffd 100644
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -773,7 +773,7 @@ public class Build {
/**
* O MR1.
*/
- public static final int O_MR1 = CUR_DEVELOPMENT; // STOPSHIP Replace with the real version.
+ public static final int O_MR1 = 27;
}
/** The type of build, like "user" or "eng". */
diff --git a/core/java/android/service/vr/IVrManager.aidl b/core/java/android/service/vr/IVrManager.aidl
index 9b37a654ab98..c38fab1f9e2c 100644
--- a/core/java/android/service/vr/IVrManager.aidl
+++ b/core/java/android/service/vr/IVrManager.aidl
@@ -59,6 +59,13 @@ interface IVrManager {
boolean getVrModeState();
/**
+ * Returns the current Persistent VR mode state.
+ *
+ * @return {@code true} if Persistent VR mode is enabled.
+ */
+ boolean getPersistentVrModeEnabled();
+
+ /**
* Sets the persistent VR mode state of a device. When a device is in persistent VR mode it will
* remain in VR mode even if the foreground does not specify VR mode being enabled. Mainly used
* by VR viewers to indicate that a device is placed in a VR viewer.
diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java
index 04dadc8eb0f4..62bd6e04bbe0 100644
--- a/core/java/android/text/Layout.java
+++ b/core/java/android/text/Layout.java
@@ -1242,7 +1242,7 @@ public abstract class Layout {
final TextPaint paint = mWorkPaint;
paint.set(mPaint);
paint.setHyphenEdit(getHyphen(line));
- tl.set(mPaint, mText, start, end, dir, directions, hasTabs, tabStops);
+ tl.set(paint, mText, start, end, dir, directions, hasTabs, tabStops);
if (isJustificationRequired(line)) {
tl.justify(getJustifyWidth(line));
}
@@ -1270,7 +1270,7 @@ public abstract class Layout {
final TextPaint paint = mWorkPaint;
paint.set(mPaint);
paint.setHyphenEdit(getHyphen(line));
- tl.set(mPaint, mText, start, end, dir, directions, hasTabs, tabStops);
+ tl.set(paint, mText, start, end, dir, directions, hasTabs, tabStops);
if (isJustificationRequired(line)) {
tl.justify(getJustifyWidth(line));
}
diff --git a/core/java/android/view/Menu.java b/core/java/android/view/Menu.java
index a8ea4dc1b8a0..6d1f740ad1da 100644
--- a/core/java/android/view/Menu.java
+++ b/core/java/android/view/Menu.java
@@ -451,5 +451,10 @@ public interface Menu {
* will use numeric shortcuts.
*/
public void setQwertyMode(boolean isQwerty);
-}
+ /**
+ * Enable or disable the group dividers.
+ */
+ default void setGroupDividerEnabled(boolean groupDividerEnabled) {
+ }
+} \ No newline at end of file
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index d640236ae747..551a1556d859 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -7451,7 +7451,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* {@link ViewStructure#setAutofillOptions(CharSequence[])}.
* </ul>
*
- * <p><b>NOTE:</b> the {@code left} and {@code top} values set in
+ * <p><b>Note:</b> The {@code left} and {@code top} values set in
* {@link ViewStructure#setDimens(int, int, int, int, int, int)} must be relative to the next
* {@link ViewGroup#isImportantForAutofill()} predecessor view included in the structure.
*
@@ -7689,6 +7689,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* {@link AutofillManager#notifyValueChanged(View)} must happen <b>after</b> the value was
* changed to the autofilled value. If not, the view will not be considered autofilled.
*
+ * <p><b>Note:</b> After this method is called, the value returned by
+ * {@link #getAutofillValue()} must be equal to the {@code value} passed to it, otherwise the
+ * view will not be highlighted as autofilled.
+ *
* @param value value to be autofilled.
*/
public void autofill(@SuppressWarnings("unused") AutofillValue value) {
@@ -7712,7 +7716,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* <b>after</b> the value was changed to the autofilled value. If not, the child will not be
* considered autofilled.
*
- * <p><b>NOTE:</b> to indicate that a virtual view was autofilled,
+ * <p><b>Note:</b> To indicate that a virtual view was autofilled,
* <code>?android:attr/autofilledHighlight</code> should be drawn over it until the data
* changes.
*
@@ -7781,8 +7785,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/**
* Gets the {@link View}'s current autofill value.
*
- * <p>By default returns {@code null}, but views should override it to properly support the
- * Autofill Framework.
+ * <p>By default returns {@code null}, but subclasses should override it and return an
+ * appropriate value to properly support the Autofill Framework.
*
* @see #onProvideAutofillStructure(ViewStructure, int)
* @see #autofill(AutofillValue)
@@ -7834,7 +7838,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* be {@link #IMPORTANT_FOR_AUTOFILL_YES_EXCLUDE_DESCENDANTS}.
* </ol>
*
- * <p><b>NOTE:</strong> setting the mode as does {@link #IMPORTANT_FOR_AUTOFILL_NO} or
+ * <p><b>Note:</b> Setting the mode as {@link #IMPORTANT_FOR_AUTOFILL_NO} or
* {@link #IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS} does not guarantee the view (and its
* children) will be always be considered not important; for example, when the user explicitly
* makes an autofill request, all views are considered important. See
diff --git a/core/java/com/android/internal/view/menu/ListMenuItemView.java b/core/java/com/android/internal/view/menu/ListMenuItemView.java
index 83a2838be07e..f76c7247aba9 100644
--- a/core/java/com/android/internal/view/menu/ListMenuItemView.java
+++ b/core/java/com/android/internal/view/menu/ListMenuItemView.java
@@ -16,14 +16,18 @@
package com.android.internal.view.menu;
+import com.android.internal.R;
+
import android.content.Context;
import android.content.res.TypedArray;
+import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityNodeInfo;
+import android.widget.AbsListView;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
@@ -34,25 +38,28 @@ import android.widget.TextView;
/**
* The item view for each item in the ListView-based MenuViews.
*/
-public class ListMenuItemView extends LinearLayout implements MenuView.ItemView {
+public class ListMenuItemView extends LinearLayout
+ implements MenuView.ItemView, AbsListView.SelectionBoundsAdjuster {
private static final String TAG = "ListMenuItemView";
- private MenuItemImpl mItemData;
-
+ private MenuItemImpl mItemData;
+
private ImageView mIconView;
private RadioButton mRadioButton;
private TextView mTitleView;
private CheckBox mCheckBox;
private TextView mShortcutView;
private ImageView mSubMenuArrowView;
-
+ private ImageView mGroupDivider;
+
private Drawable mBackground;
private int mTextAppearance;
private Context mTextAppearanceContext;
private boolean mPreserveIconSpacing;
private Drawable mSubMenuArrow;
-
+ private boolean mHasListDivider;
+
private int mMenuType;
-
+
private LayoutInflater mInflater;
private boolean mForceShowIcon;
@@ -71,8 +78,14 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
com.android.internal.R.styleable.MenuView_preserveIconSpacing, false);
mTextAppearanceContext = context;
mSubMenuArrow = a.getDrawable(com.android.internal.R.styleable.MenuView_subMenuArrow);
-
+
+ final TypedArray b = context.getTheme()
+ .obtainStyledAttributes(null, new int[] { com.android.internal.R.attr.divider },
+ com.android.internal.R.attr.dropDownListViewStyle, 0);
+ mHasListDivider = b.hasValue(0);
+
a.recycle();
+ b.recycle();
}
public ListMenuItemView(Context context, AttributeSet attrs, int defStyleAttr) {
@@ -86,20 +99,21 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
@Override
protected void onFinishInflate() {
super.onFinishInflate();
-
+
setBackgroundDrawable(mBackground);
-
+
mTitleView = findViewById(com.android.internal.R.id.title);
if (mTextAppearance != -1) {
mTitleView.setTextAppearance(mTextAppearanceContext,
mTextAppearance);
}
-
+
mShortcutView = findViewById(com.android.internal.R.id.shortcut);
mSubMenuArrowView = findViewById(com.android.internal.R.id.submenuarrow);
if (mSubMenuArrowView != null) {
mSubMenuArrowView.setImageDrawable(mSubMenuArrow);
}
+ mGroupDivider = findViewById(com.android.internal.R.id.group_divider);
}
public void initialize(MenuItemImpl itemData, int menuType) {
@@ -124,13 +138,13 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
public void setTitle(CharSequence title) {
if (title != null) {
mTitleView.setText(title);
-
+
if (mTitleView.getVisibility() != VISIBLE) mTitleView.setVisibility(VISIBLE);
} else {
if (mTitleView.getVisibility() != GONE) mTitleView.setVisibility(GONE);
}
}
-
+
public MenuItemImpl getItemData() {
return mItemData;
}
@@ -139,11 +153,11 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
if (!checkable && mRadioButton == null && mCheckBox == null) {
return;
}
-
+
// Depending on whether its exclusive check or not, the checkbox or
// radio button will be the one in use (and the other will be otherCompoundButton)
final CompoundButton compoundButton;
- final CompoundButton otherCompoundButton;
+ final CompoundButton otherCompoundButton;
if (mItemData.isExclusiveCheckable()) {
if (mRadioButton == null) {
@@ -158,15 +172,15 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
compoundButton = mCheckBox;
otherCompoundButton = mRadioButton;
}
-
+
if (checkable) {
compoundButton.setChecked(mItemData.isChecked());
-
+
final int newVisibility = checkable ? VISIBLE : GONE;
if (compoundButton.getVisibility() != newVisibility) {
compoundButton.setVisibility(newVisibility);
}
-
+
// Make sure the other compound button isn't visible
if (otherCompoundButton != null && otherCompoundButton.getVisibility() != GONE) {
otherCompoundButton.setVisibility(GONE);
@@ -176,10 +190,10 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
if (mRadioButton != null) mRadioButton.setVisibility(GONE);
}
}
-
+
public void setChecked(boolean checked) {
CompoundButton compoundButton;
-
+
if (mItemData.isExclusiveCheckable()) {
if (mRadioButton == null) {
insertRadioButton();
@@ -191,7 +205,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
}
compoundButton = mCheckBox;
}
-
+
compoundButton.setChecked(checked);
}
@@ -213,21 +227,21 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
mShortcutView.setVisibility(newVisibility);
}
}
-
+
public void setIcon(Drawable icon) {
final boolean showIcon = mItemData.shouldShowIcon() || mForceShowIcon;
if (!showIcon && !mPreserveIconSpacing) {
return;
}
-
+
if (mIconView == null && icon == null && !mPreserveIconSpacing) {
return;
}
-
+
if (mIconView == null) {
insertIconView();
}
-
+
if (icon != null || mPreserveIconSpacing) {
mIconView.setImageDrawable(showIcon ? icon : null);
@@ -238,7 +252,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
mIconView.setVisibility(GONE);
}
}
-
+
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mIconView != null && mPreserveIconSpacing) {
@@ -258,7 +272,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
this, false);
addView(mIconView, 0);
}
-
+
private void insertRadioButton() {
LayoutInflater inflater = getInflater();
mRadioButton =
@@ -266,7 +280,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
this, false);
addView(mRadioButton);
}
-
+
private void insertCheckBox() {
LayoutInflater inflater = getInflater();
mCheckBox =
@@ -282,7 +296,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
public boolean showsIcon() {
return mForceShowIcon;
}
-
+
private LayoutInflater getInflater() {
if (mInflater == null) {
mInflater = LayoutInflater.from(mContext);
@@ -298,4 +312,26 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
info.setCanOpenPopup(true);
}
}
+
+ /**
+ * Enable or disable group dividers for this view.
+ */
+ public void setGroupDividerEnabled(boolean groupDividerEnabled) {
+ // If mHasListDivider is true, disabling the groupDivider.
+ // Otherwise, checking enbling it according to groupDividerEnabled flag.
+ mGroupDivider.setVisibility(!mHasListDivider
+ && groupDividerEnabled ? View.VISIBLE : View.GONE);
+ }
+
+ @Override
+ public void adjustListItemSelectionBounds(Rect rect) {
+ if (mGroupDivider.getVisibility() == View.VISIBLE) {
+ // groupDivider is a part of MenuItemListView.
+ // If ListMenuItem with divider enabled is hovered/clicked, divider also gets selected.
+ // Clipping the selector bounds from the top divider portion when divider is enabled,
+ // so that divider does not get selected on hover or click.
+ final LayoutParams lp = (LayoutParams) mGroupDivider.getLayoutParams();
+ rect.top += mGroupDivider.getHeight() + lp.topMargin + lp.bottomMargin;
+ }
+ }
}
diff --git a/core/java/com/android/internal/view/menu/MenuAdapter.java b/core/java/com/android/internal/view/menu/MenuAdapter.java
index 673cfd12d878..2834d39a4f98 100644
--- a/core/java/com/android/internal/view/menu/MenuAdapter.java
+++ b/core/java/com/android/internal/view/menu/MenuAdapter.java
@@ -81,6 +81,14 @@ public class MenuAdapter extends BaseAdapter {
convertView = mInflater.inflate(ITEM_LAYOUT, parent, false);
}
+ final int currGroupId = getItem(position).getGroupId();
+ final int prevGroupId =
+ position - 1 >= 0 ? getItem(position - 1).getGroupId() : currGroupId;
+ // Show a divider if adjacent items are in different groups.
+ ((ListMenuItemView) convertView)
+ .setGroupDividerEnabled(mAdapterMenu.isGroupDividerEnabled()
+ && (currGroupId != prevGroupId));
+
MenuView.ItemView itemView = (MenuView.ItemView) convertView;
if (mForceShowIcon) {
((ListMenuItemView) convertView).setForceShowIcon(true);
diff --git a/core/java/com/android/internal/view/menu/MenuBuilder.java b/core/java/com/android/internal/view/menu/MenuBuilder.java
index 7eb0f4dbddc7..b53459e072d4 100644
--- a/core/java/com/android/internal/view/menu/MenuBuilder.java
+++ b/core/java/com/android/internal/view/menu/MenuBuilder.java
@@ -156,7 +156,12 @@ public class MenuBuilder implements Menu {
* Currently expanded menu item; must be collapsed when we clear.
*/
private MenuItemImpl mExpandedItem;
-
+
+ /**
+ * Whether group dividers are enabled.
+ */
+ private boolean mGroupDividerEnabled = false;
+
/**
* Called by menu to notify of close and selection changes.
*/
@@ -462,6 +467,15 @@ public class MenuBuilder implements Menu {
return addSubMenu(group, id, categoryOrder, mResources.getString(title));
}
+ @Override
+ public void setGroupDividerEnabled(boolean groupDividerEnabled) {
+ mGroupDividerEnabled = groupDividerEnabled;
+ }
+
+ public boolean isGroupDividerEnabled() {
+ return mGroupDividerEnabled;
+ }
+
public int addIntentOptions(int group, int id, int categoryOrder, ComponentName caller,
Intent[] specifics, Intent intent, int flags, MenuItem[] outSpecificItems) {
PackageManager pm = mContext.getPackageManager();
diff --git a/core/java/com/android/internal/view/menu/SubMenuBuilder.java b/core/java/com/android/internal/view/menu/SubMenuBuilder.java
index cf741bf5bb02..897440ebf893 100644
--- a/core/java/com/android/internal/view/menu/SubMenuBuilder.java
+++ b/core/java/com/android/internal/view/menu/SubMenuBuilder.java
@@ -130,4 +130,14 @@ public class SubMenuBuilder extends MenuBuilder implements SubMenu {
}
return super.getActionViewStatesKey() + ":" + itemId;
}
+
+ @Override
+ public void setGroupDividerEnabled(boolean groupDividerEnabled) {
+ mParentMenu.setGroupDividerEnabled(groupDividerEnabled);
+ }
+
+ @Override
+ public boolean isGroupDividerEnabled() {
+ return mParentMenu.isGroupDividerEnabled();
+ }
}
diff --git a/core/jni/android_view_DisplayListCanvas.cpp b/core/jni/android_view_DisplayListCanvas.cpp
index 2c4771c18d0f..98f47330829b 100644
--- a/core/jni/android_view_DisplayListCanvas.cpp
+++ b/core/jni/android_view_DisplayListCanvas.cpp
@@ -33,6 +33,7 @@
#include <CanvasProperty.h>
#include <hwui/Canvas.h>
#include <hwui/Paint.h>
+#include <minikin/Layout.h>
#include <renderthread/RenderProxy.h>
#include "core_jni_helpers.h"
@@ -94,6 +95,7 @@ static void
android_app_ActivityThread_dumpGraphics(JNIEnv* env, jobject clazz, jobject javaFileDescriptor) {
int fd = jniGetFDFromFileDescriptor(env, javaFileDescriptor);
android::uirenderer::renderthread::RenderProxy::dumpGraphicsMemory(fd);
+ minikin::Layout::dumpMinikinStats(fd);
}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 39046d272c8d..4f435af38c96 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -3530,6 +3530,11 @@
<permission android:name="android.permission.ACCESS_VR_MANAGER"
android:protectionLevel="signature" />
+ <!-- Required to access VR-Mode state and state change events via {android.app.VrStateCallback}
+ @hide -->
+ <permission android:name="android.permission.ACCESS_VR_STATE"
+ android:protectionLevel="signature|preinstalled" />
+
<!-- Allows an application to whitelist tasks during lock task mode
@hide <p>Not for use by third-party applications.</p> -->
<permission android:name="android.permission.UPDATE_LOCK_TASK_PACKAGES"
diff --git a/core/res/res/layout/popup_menu_item_layout.xml b/core/res/res/layout/popup_menu_item_layout.xml
index 8b8c93afffbd..3eecb36f0ea6 100644
--- a/core/res/res/layout/popup_menu_item_layout.xml
+++ b/core/res/res/layout/popup_menu_item_layout.xml
@@ -16,56 +16,72 @@
<com.android.internal.view.menu.ListMenuItemView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
- android:layout_height="?attr/dropdownListPreferredItemHeight"
+ android:layout_height="wrap_content"
android:minWidth="196dip"
- android:paddingEnd="16dip">
-
+ android:orientation="vertical" >
+
+ <ImageView
+ android:id="@+id/group_divider"
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:layout_marginTop="4dip"
+ android:layout_marginBottom="4dip"
+ android:background="@drawable/list_divider_material" />
+
<!-- Icon will be inserted here. -->
-
- <!-- The title and summary have some gap between them, and this 'group' should be centered vertically. -->
- <RelativeLayout
- android:layout_width="0dip"
- android:layout_weight="1"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:layout_marginStart="16dip"
- android:duplicateParentState="true">
-
- <TextView
- android:id="@+id/title"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_alignParentStart="true"
- android:textAppearance="?attr/textAppearanceLargePopupMenu"
- android:singleLine="true"
- android:duplicateParentState="true"
- android:ellipsize="marquee"
- android:fadingEdge="horizontal"
- android:textAlignment="viewStart" />
- <TextView
- android:id="@+id/shortcut"
- android:layout_width="wrap_content"
+ <!-- The title and summary have some gap between them,
+ and this 'group' should be centered vertically. -->
+ <LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="?attr/dropdownListPreferredItemHeight"
+ android:paddingEnd="16dip"
+ android:duplicateParentState="true" >
+
+ <LinearLayout
+ android:layout_width="0dip"
+ android:layout_weight="1"
android:layout_height="wrap_content"
- android:layout_below="@id/title"
- android:layout_alignParentStart="true"
- android:textAppearance="?attr/textAppearanceSmallPopupMenu"
- android:singleLine="true"
- android:duplicateParentState="true"
- android:textAlignment="viewStart" />
+ android:layout_gravity="center_vertical"
+ android:layout_marginStart="16dip"
+ android:duplicateParentState="true">
- </RelativeLayout>
+ <TextView
+ android:id="@+id/title"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_alignParentTop="true"
+ android:layout_alignParentStart="true"
+ android:textAppearance="?attr/textAppearanceLargePopupMenu"
+ android:singleLine="true"
+ android:duplicateParentState="true"
+ android:ellipsize="marquee"
+ android:fadingEdge="horizontal"
+ android:textAlignment="viewStart" />
- <ImageView
- android:id="@+id/submenuarrow"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:layout_marginStart="8dp"
- android:scaleType="center"
- android:visibility="gone" />
+ <TextView
+ android:id="@+id/shortcut"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/title"
+ android:layout_alignParentStart="true"
+ android:textAppearance="?attr/textAppearanceSmallPopupMenu"
+ android:singleLine="true"
+ android:duplicateParentState="true"
+ android:textAlignment="viewStart" />
+
+ </LinearLayout>
+
+ <ImageView
+ android:id="@+id/submenuarrow"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_marginStart="8dp"
+ android:scaleType="center"
+ android:visibility="gone" />
+ </LinearLayout>
<!-- Checkbox, and/or radio button will be inserted here. -->
-
+
</com.android.internal.view.menu.ListMenuItemView>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 4e54f995d416..01212adc0f9d 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -3059,4 +3059,10 @@
<!-- Allow SystemUI to show the shutdown dialog -->
<bool name="config_showSysuiShutdown">true</bool>
+
+ <!-- The stable device width and height in pixels. If these aren't set to a positive number
+ then the device will use the width and height of the default display the first time it's
+ booted. -->
+ <integer name="config_stableDeviceDisplayWidth">-1</integer>
+ <integer name="config_stableDeviceDisplayHeight">-1</integer>
</resources>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 5882be50c994..eb314399e822 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -74,6 +74,7 @@
<java-symbol type="id" name="fillInIntent" />
<java-symbol type="id" name="find" />
<java-symbol type="id" name="fullscreenArea" />
+ <java-symbol type="id" name="group_divider" />
<java-symbol type="id" name="hard_keyboard_section" />
<java-symbol type="id" name="hard_keyboard_switch" />
<java-symbol type="id" name="headers" />
@@ -3075,4 +3076,7 @@
<java-symbol type="layout" name="shutdown_dialog" />
<java-symbol type="dimen" name="chooser_service_spacing" />
<java-symbol type="bool" name="config_showSysuiShutdown" />
+
+ <java-symbol type="integer" name="config_stableDeviceDisplayWidth" />
+ <java-symbol type="integer" name="config_stableDeviceDisplayHeight" />
</resources>
diff --git a/packages/CarrierDefaultApp/res/values-pa/strings.xml b/packages/CarrierDefaultApp/res/values-pa/strings.xml
index 4f77b5d27214..df052af8b487 100644
--- a/packages/CarrierDefaultApp/res/values-pa/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-pa/strings.xml
@@ -3,13 +3,13 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_name" msgid="5247871339820894594">"CarrierDefaultApp"</string>
<string name="android_system_label" msgid="2797790869522345065">"ਮੋਬਾਈਲ ਕੈਰੀਅਰ"</string>
- <string name="portal_notification_id" msgid="5155057562457079297">"ਮੋਬਾਈਲ ਡੈਟਾ ਖਤਮ ਹੋ ਗਿਆ ਹੈ"</string>
- <string name="no_data_notification_id" msgid="668400731803969521">"ਤੁਹਾਡਾ ਮੋਬਾਈਲ ਡੈਟਾ ਅਕਿਰਿਆਸ਼ੀਲ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ"</string>
+ <string name="portal_notification_id" msgid="5155057562457079297">"ਮੋਬਾਈਲ ਡਾਟਾ ਖਤਮ ਹੋ ਗਿਆ ਹੈ"</string>
+ <string name="no_data_notification_id" msgid="668400731803969521">"ਤੁਹਾਡਾ ਮੋਬਾਈਲ ਡਾਟਾ ਅਕਿਰਿਆਸ਼ੀਲ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ"</string>
<string name="portal_notification_detail" msgid="2295729385924660881">"%s ਵੈੱਬਸਾਈਟ \'ਤੇ ਜਾਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="no_data_notification_detail" msgid="3112125343857014825">"ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਸੇਵਾ ਪ੍ਰਦਾਨਕ %s ਨੂੰ ਸੰਪਰਕ ਕਰੋ"</string>
<string name="no_mobile_data_connection_title" msgid="7449525772416200578">"ਕੋਈ ਮੋਬਾਈਲ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਨਹੀਂ"</string>
<string name="no_mobile_data_connection" msgid="544980465184147010">"%s ਰਾਹੀਂ ਡੈਟਾ ਜਾਂ ਰੋਮਿੰਗ ਯੋਜਨਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
- <string name="mobile_data_status_notification_channel_name" msgid="833999690121305708">"ਮੋਬਾਈਲ ਡੈਟੇ ਦੀ ਅਵਸਥਾ"</string>
+ <string name="mobile_data_status_notification_channel_name" msgid="833999690121305708">"ਮੋਬਾਈਲ ਡਾਟੇ ਦੀ ਸਥਿਤੀ"</string>
<string name="action_bar_label" msgid="4290345990334377177">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਵਿੱਚ ਸਾਈਨ-ਇਨ ਕਰੋ"</string>
<string name="ssl_error_warning" msgid="3127935140338254180">"ਤੁਸੀਂ ਜਿਸ ਨੈੱਟਵਰਕ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ ਉਸ ਵਿੱਚ ਸੁਰੱਖਿਆ ਸਬੰਧੀ ਸਮੱਸਿਆਵਾਂ ਹਨ।"</string>
<string name="ssl_error_example" msgid="6188711843183058764">"ਉਦਾਹਰਣ ਵਜੋਂ, ਹੋ ਸਕਦਾ ਹੈ ਲੌਗਇਨ ਪੰਨਾ ਦਿਖਾਈ ਗਈ ਸੰਸਥਾ ਨਾਲ ਸਬੰਧਿਤ ਨਾ ਹੋਵੇ।"</string>
diff --git a/packages/SettingsLib/res/values-af/arrays.xml b/packages/SettingsLib/res/values-af/arrays.xml
index d656a5b11a56..3c76395f2d09 100644
--- a/packages/SettingsLib/res/values-af/arrays.xml
+++ b/packages/SettingsLib/res/values-af/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Gebruik stelselkeuse (verstek)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-am/arrays.xml b/packages/SettingsLib/res/values-am/arrays.xml
index 26ad9efd459e..49a0123a0c23 100644
--- a/packages/SettingsLib/res/values-am/arrays.xml
+++ b/packages/SettingsLib/res/values-am/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"የስርዓቱን ምርጫ (ነባሪ) ተጠቀም"</item>
<item msgid="8895532488906185219">"44.1 ኪኸ"</item>
diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml
index dbf35c7b0cf1..0af10771da0f 100644
--- a/packages/SettingsLib/res/values-ar/arrays.xml
+++ b/packages/SettingsLib/res/values-ar/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"استخدام اختيار النظام (افتراضي)"</item>
<item msgid="8895532488906185219">"44.1 كيلو هرتز"</item>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 3700d55fb4b1..f8f39ce82fd6 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -116,13 +116,13 @@
<string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"ربط"</string>
<string name="tether_settings_title_all" msgid="8356136101061143841">"الربط ونقطة الاتصال المحمولة"</string>
<string name="managed_user_title" msgid="8109605045406748842">"كل تطبيقات العمل"</string>
- <string name="user_guest" msgid="8475274842845401871">"مدعو"</string>
+ <string name="user_guest" msgid="8475274842845401871">"ضيف"</string>
<string name="unknown" msgid="1592123443519355854">"غير معروف"</string>
<string name="running_process_item_user_label" msgid="3129887865552025943">"المستخدم: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
<string name="launch_defaults_some" msgid="313159469856372621">"تم تعيين بعض الإعدادات الافتراضية"</string>
<string name="launch_defaults_none" msgid="4241129108140034876">"لم يتم تعيين إعدادات تلقائية"</string>
<string name="tts_settings" msgid="8186971894801348327">"إعدادات تحويل النص إلى كلام"</string>
- <string name="tts_settings_title" msgid="1237820681016639683">"إخراج تحويل النص إلى كلام"</string>
+ <string name="tts_settings_title" msgid="1237820681016639683">"تحويل النص إلى كلام"</string>
<string name="tts_default_rate_title" msgid="6030550998379310088">"معدل سرعة الكلام"</string>
<string name="tts_default_rate_summary" msgid="4061815292287182801">"سرعة نطق الكلام"</string>
<string name="tts_default_pitch_title" msgid="6135942113172488671">"درجة الصوت"</string>
diff --git a/packages/SettingsLib/res/values-az/arrays.xml b/packages/SettingsLib/res/values-az/arrays.xml
index a20a250a8ace..38e94ec820e5 100644
--- a/packages/SettingsLib/res/values-az/arrays.xml
+++ b/packages/SettingsLib/res/values-az/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Sistem Seçimini istifadə edin (Defolt)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
index efdf34a18323..884f55bbecf8 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Koristi izbor sistema (podrazumevano)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-be/arrays.xml b/packages/SettingsLib/res/values-be/arrays.xml
index bf83692bffe1..0e887e53b99a 100644
--- a/packages/SettingsLib/res/values-be/arrays.xml
+++ b/packages/SettingsLib/res/values-be/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Выбар сістэмы (стандартны)"</item>
<item msgid="8895532488906185219">"44,1 кГц"</item>
diff --git a/packages/SettingsLib/res/values-bg/arrays.xml b/packages/SettingsLib/res/values-bg/arrays.xml
index f118c7699eab..996067ee1bd3 100644
--- a/packages/SettingsLib/res/values-bg/arrays.xml
+++ b/packages/SettingsLib/res/values-bg/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Използване на сист. избор (стандартно)"</item>
<item msgid="8895532488906185219">"44,1 кХц"</item>
diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml
index 3bb85a6f68b8..9f35159a8801 100644
--- a/packages/SettingsLib/res/values-bn/arrays.xml
+++ b/packages/SettingsLib/res/values-bn/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"সিস্টেমের নির্বাচন ব্যবহার করুন (ডিফল্ট)"</item>
<item msgid="8895532488906185219">"৪৪.১ kHz"</item>
@@ -208,7 +208,7 @@
</string-array>
<string-array name="track_frame_time_entries">
<item msgid="2193584639058893150">"বন্ধ করুন"</item>
- <item msgid="2751513398307949636">"দন্ড হিসাবে স্ক্রীনে"</item>
+ <item msgid="2751513398307949636">"দন্ড হিসেবে স্ক্রীনে"</item>
<item msgid="2355151170975410323">"<xliff:g id="AS_TYPED_COMMAND">adb shell dumpsys gfxinfo</xliff:g> এ"</item>
</string-array>
<string-array name="debug_hw_overdraw_entries">
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 39c5e45abb5c..e9fae31e91cf 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -148,7 +148,7 @@
<string name="tts_engine_preference_section_title" msgid="448294500990971413">"পছন্দের ইঞ্জিন"</string>
<string name="tts_general_section_title" msgid="4402572014604490502">"সাধারণ"</string>
<string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"ভাষ্য়ের শব্দ মাত্রাকে আবার সেট করুন"</string>
- <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"ডিফল্ট হিসাবে যে মাত্রায় পাঠ্য উচ্চারিত হয়, সেই শব্দ মাত্রাকে আবার সেট করুন৷"</string>
+ <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"ডিফল্ট হিসেবে যে মাত্রায় পাঠ্য উচ্চারিত হয়, সেই শব্দ মাত্রাকে আবার সেট করুন৷"</string>
<string-array name="tts_rate_entries">
<item msgid="6695494874362656215">"অত্যন্ত ধীরে"</item>
<item msgid="4795095314303559268">"ধীর"</item>
diff --git a/packages/SettingsLib/res/values-bs/arrays.xml b/packages/SettingsLib/res/values-bs/arrays.xml
index 71d09582e3d2..c27f4e819727 100644
--- a/packages/SettingsLib/res/values-bs/arrays.xml
+++ b/packages/SettingsLib/res/values-bs/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Koristi odabir sistema (Zadano)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml
index 1382419058af..ca910cdc5f55 100644
--- a/packages/SettingsLib/res/values-ca/arrays.xml
+++ b/packages/SettingsLib/res/values-ca/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Utilitza selecció del sistema (predeterminada)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"Àudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="2091430979086738145">"Àudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Activa els còdecs opcionals"</item>
+ <item msgid="3304843301758635896">"Desactiva els còdecs opcionals"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Utilitza selecció del sistema (predeterminada)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"Àudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="298198075927343893">"Àudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Activa els còdecs opcionals"</item>
+ <item msgid="741805482892725657">"Desactiva els còdecs opcionals"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Utilitza selecció del sistema (predeterminada)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml
index cbb3cc100ed4..73e41f34e1ba 100644
--- a/packages/SettingsLib/res/values-cs/arrays.xml
+++ b/packages/SettingsLib/res/values-cs/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Použít systémový výběr (výchozí)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-da/arrays.xml b/packages/SettingsLib/res/values-da/arrays.xml
index 055ee514dcc7..fe0b1fc4eafa 100644
--- a/packages/SettingsLib/res/values-da/arrays.xml
+++ b/packages/SettingsLib/res/values-da/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Brug systemvalg (standard)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 5a06613f22ff..830d086c7685 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -303,7 +303,7 @@
<string name="enable_freeform_support_summary" msgid="8247310463288834487">"Aktivér understøttelse af eksperimentelle vinduer i frit format."</string>
<string name="local_backup_password_title" msgid="3860471654439418822">"Kode til lokal sikkerhedskopi"</string>
<string name="local_backup_password_summary_none" msgid="6951095485537767956">"Lokale fuldstændige sikkerhedskopieringer er i øjeblikket ikke beskyttet"</string>
- <string name="local_backup_password_summary_change" msgid="5376206246809190364">"Tryk for at skifte eller fjerne adgangskoden til fuld lokal sikkerhedskopiering"</string>
+ <string name="local_backup_password_summary_change" msgid="5376206246809190364">"Tryk for at skifte eller fjerne adgangskoden til fuld lokal backup"</string>
<string name="local_backup_password_toast_success" msgid="582016086228434290">"Ny adgangskode til sikkerhedskopi er angivet"</string>
<string name="local_backup_password_toast_confirmation_mismatch" msgid="7805892532752708288">"Ny adgangskode og bekræftelse matcher ikke"</string>
<string name="local_backup_password_toast_validation_failure" msgid="5646377234895626531">"Fejl ved angivelse af adgangskode til sikkerhedskopi"</string>
diff --git a/packages/SettingsLib/res/values-de/arrays.xml b/packages/SettingsLib/res/values-de/arrays.xml
index ac61e8da94de..14d9bf1d9be4 100644
--- a/packages/SettingsLib/res/values-de/arrays.xml
+++ b/packages/SettingsLib/res/values-de/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Systemauswahl verwenden (Standard)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-el/arrays.xml b/packages/SettingsLib/res/values-el/arrays.xml
index 3a99fd657af6..a900b240fb62 100644
--- a/packages/SettingsLib/res/values-el/arrays.xml
+++ b/packages/SettingsLib/res/values-el/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Χρήση επιλογής συστήματος (Προεπιλογή)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"Ήχος <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="2091430979086738145">"Ήχος <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Ενεργοποίηση προαιρετικών κωδικοποιητών"</item>
+ <item msgid="3304843301758635896">"Απενεργοποίηση προαιρετικών κωδικοποιητών"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Χρήση επιλογής συστήματος (Προεπιλογή)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"Ήχος <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="298198075927343893">"Ήχος <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Ενεργοποίηση προαιρετικών κωδικοποιητών"</item>
+ <item msgid="741805482892725657">"Απενεργοποίηση προαιρετικών κωδικοποιητών"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Χρήση επιλογής συστήματος (Προεπιλογή)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-en-rAU/arrays.xml b/packages/SettingsLib/res/values-en-rAU/arrays.xml
index bb48f2f29a34..3eec9e8800fb 100644
--- a/packages/SettingsLib/res/values-en-rAU/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rAU/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Use System Selection (Default)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-en-rCA/arrays.xml b/packages/SettingsLib/res/values-en-rCA/arrays.xml
index bb48f2f29a34..3eec9e8800fb 100644
--- a/packages/SettingsLib/res/values-en-rCA/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rCA/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Use System Selection (Default)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-en-rGB/arrays.xml b/packages/SettingsLib/res/values-en-rGB/arrays.xml
index bb48f2f29a34..3eec9e8800fb 100644
--- a/packages/SettingsLib/res/values-en-rGB/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rGB/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Use System Selection (Default)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-en-rIN/arrays.xml b/packages/SettingsLib/res/values-en-rIN/arrays.xml
index bb48f2f29a34..3eec9e8800fb 100644
--- a/packages/SettingsLib/res/values-en-rIN/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rIN/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Use System Selection (Default)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-en-rXC/arrays.xml b/packages/SettingsLib/res/values-en-rXC/arrays.xml
index be061721acab..2e74ce1cf8dd 100644
--- a/packages/SettingsLib/res/values-en-rXC/arrays.xml
+++ b/packages/SettingsLib/res/values-en-rXC/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‎‎‎‏‎‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‏‎‎‏‏‏‎‎‏‏‎‏‏‎‎‎‏‏‎‎‎‏‎‏‎‎‏‎avrcp15‎‏‎‎‏‎"</item>
<item msgid="7142710449249088270">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‏‎‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎avrcp16‎‏‎‎‏‎"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‎‎‎‎‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‏‎‏‏‏‎‎‎Use System Selection (Default)‎‏‎‎‏‎"</item>
+ <item msgid="7539690996561263909">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‎‎‏‎‎‏‎‏‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‎‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎SBC‎‏‎‎‏‎"</item>
+ <item msgid="686685526567131661">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‎‏‏‎‎‏‎‎‏‎‎‎‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‎‏‏‎‏‎AAC‎‏‎‎‏‎"</item>
+ <item msgid="5254942598247222737">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‏‎‎‏‏‏‎‎‏‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‎‎‎‎‎‎‏‏‎‏‏‏‎‏‎‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="QUALCOMM">Qualcomm®</xliff:g>‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎<xliff:g id="APTX">aptX™</xliff:g>‎‏‎‎‏‏‏‎ audio‎‏‎‎‏‎"</item>
+ <item msgid="2091430979086738145">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‎‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="QUALCOMM">Qualcomm®</xliff:g>‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎<xliff:g id="APTX_HD">aptX™ HD</xliff:g>‎‏‎‎‏‏‏‎ audio‎‏‎‎‏‎"</item>
+ <item msgid="6751080638867012696">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‎‎‎‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‎‏‎‎‎‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‎LDAC‎‏‎‎‏‎"</item>
+ <item msgid="723675059572222462">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‎‏‎‎‎‎‎‏‎‏‏‎‎‎‎‎‎‏‎‏‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‏‏‏‏‏‏‏‎‎Enable Optional Codecs‎‏‎‎‏‎"</item>
+ <item msgid="3304843301758635896">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‏‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‎‎‎‏‏‏‏‎‏‏‏‏‎‎‎‎Disable Optional Codecs‎‏‎‎‏‎"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‎‎‎‎‏‏‏‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‏‎‎‏‎‏‏‏‎‎‎‎Use System Selection (Default)‎‏‎‎‏‎"</item>
+ <item msgid="6898329690939802290">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‎‏‏‎‎‏‎‎SBC‎‏‎‎‏‎"</item>
+ <item msgid="6839647709301342559">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‏‎‏‎‏‏‎‏‎‏‎‎‎‎‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎AAC‎‏‎‎‏‎"</item>
+ <item msgid="7848030269621918608">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‏‏‏‏‎‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‎‎‎‎‎‏‎‎‏‏‎<xliff:g id="QUALCOMM">Qualcomm®</xliff:g>‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎<xliff:g id="APTX">aptX™</xliff:g>‎‏‎‎‏‏‏‎ audio‎‏‎‎‏‎"</item>
+ <item msgid="298198075927343893">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‏‏‏‏‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‏‎‎‏‏‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="QUALCOMM">Qualcomm®</xliff:g>‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎<xliff:g id="APTX_HD">aptX™ HD</xliff:g>‎‏‎‎‏‏‏‎ audio‎‏‎‎‏‎"</item>
+ <item msgid="7950781694447359344">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‏‏‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‎‎LDAC‎‏‎‎‏‎"</item>
+ <item msgid="2209680154067241740">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‎‏‎‏‏‎‎‎‎‏‏‎‎‎Enable Optional Codecs‎‏‎‎‏‎"</item>
+ <item msgid="741805482892725657">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‎‏‏‎‏‏‎‏‏‎‎‎‎‏‎‏‎‎‎‎‎‎‎‏‏‎‎‎‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‏‎Disable Optional Codecs‎‏‎‎‏‎"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‏‏‎‏‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‏‎‎‏‎‎Use System Selection (Default)‎‏‎‎‏‎"</item>
<item msgid="8895532488906185219">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‏‎‏‎‏‎‏‏‎‎‎‎‏‎‎‏‎‎‏‏‎‎‏‏‎‎‎‏‏‎‏‎‎‎‎‎‎‎‏‏‎44.1 kHz‎‏‎‎‏‎"</item>
diff --git a/packages/SettingsLib/res/values-es-rUS/arrays.xml b/packages/SettingsLib/res/values-es-rUS/arrays.xml
index 512591f12e06..466d433b49b8 100644
--- a/packages/SettingsLib/res/values-es-rUS/arrays.xml
+++ b/packages/SettingsLib/res/values-es-rUS/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Usar selección del sistema (predeterminado)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="2091430979086738145">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Habilitar códecs opcionales"</item>
+ <item msgid="3304843301758635896">"Inhabilitar códecs opcionales"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Usar selección del sistema (predeterminado)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="298198075927343893">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Habilitar códecs opcionales"</item>
+ <item msgid="741805482892725657">"Inhabilitar códecs opcionales"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Usar selección del sistema (predeterminado)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml
index 55ff28bd1e75..b6d52183597b 100644
--- a/packages/SettingsLib/res/values-es/arrays.xml
+++ b/packages/SettingsLib/res/values-es/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Usar preferencia del sistema (predeter.)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="2091430979086738145">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Habilitar códecs opcionales"</item>
+ <item msgid="3304843301758635896">"Inhabilitar códecs opcionales"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Usar preferencia del sistema (predeter.)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="298198075927343893">"Audio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Habilitar códecs opcionales"</item>
+ <item msgid="741805482892725657">"Inhabilitar códecs opcionales"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Usar preferencia del sistema (predeter.)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-et/arrays.xml b/packages/SettingsLib/res/values-et/arrays.xml
index b4cc90f527fd..191517651718 100644
--- a/packages/SettingsLib/res/values-et/arrays.xml
+++ b/packages/SettingsLib/res/values-et/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Süsteemi valiku kasutamine (vaikeseade)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-eu/arrays.xml b/packages/SettingsLib/res/values-eu/arrays.xml
index 13912c145861..64d59863ca8c 100644
--- a/packages/SettingsLib/res/values-eu/arrays.xml
+++ b/packages/SettingsLib/res/values-eu/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Erabili sistema-hautapena (lehenetsia)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-fa/arrays.xml b/packages/SettingsLib/res/values-fa/arrays.xml
index 711a2e47ba2c..3599c4c72538 100644
--- a/packages/SettingsLib/res/values-fa/arrays.xml
+++ b/packages/SettingsLib/res/values-fa/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"‏avrcp نسخه ۱۵"</item>
<item msgid="7142710449249088270">"‏avrcp نسخه ۱۶"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"استفاده از انتخاب سیستم (پیش‌فرض)"</item>
<item msgid="8895532488906185219">"۴۴٫۱ کیلوهرتز"</item>
diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml
index 2caae5b15474..311d408a7ca0 100644
--- a/packages/SettingsLib/res/values-fi/arrays.xml
+++ b/packages/SettingsLib/res/values-fi/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Käytä järjestelmän valintaa (oletus)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ‑ääni"</item>
+ <item msgid="2091430979086738145">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ‑ääni"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Ota valinnaiset koodekit käyttöön"</item>
+ <item msgid="3304843301758635896">"Poista valinnaiset koodekit käytöstä"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Käytä järjestelmän valintaa (oletus)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ‑ääni"</item>
+ <item msgid="298198075927343893">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g> ‑ääni"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Ota valinnaiset koodekit käyttöön"</item>
+ <item msgid="741805482892725657">"Poista valinnaiset koodekit käytöstä"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Käytä järjestelmän valintaa (oletus)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-fr-rCA/arrays.xml b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
index 996e3c2290ca..8253614dd75a 100644
--- a/packages/SettingsLib/res/values-fr-rCA/arrays.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Utiliser sélect. du système (par défaut)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml
index 7d7706295dee..7fd8a934cdb5 100644
--- a/packages/SettingsLib/res/values-fr/arrays.xml
+++ b/packages/SettingsLib/res/values-fr/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Utiliser sélection système (par défaut)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-gl/arrays.xml b/packages/SettingsLib/res/values-gl/arrays.xml
index 163608cf8418..4b70cb3f8b71 100644
--- a/packages/SettingsLib/res/values-gl/arrays.xml
+++ b/packages/SettingsLib/res/values-gl/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Usar selección sistema (predeterminado)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml
index 51537f2b0cbe..cdb0eb3fccbf 100644
--- a/packages/SettingsLib/res/values-gu/arrays.xml
+++ b/packages/SettingsLib/res/values-gu/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"સિસ્ટમ પસંદગીનો ઉપયોગ કરો (ડિફૉલ્ટ)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml
index d677465e508a..a90e37834693 100644
--- a/packages/SettingsLib/res/values-hi/arrays.xml
+++ b/packages/SettingsLib/res/values-hi/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
@@ -112,13 +112,13 @@
<item msgid="7158319962230727476">"ऑडियो की गुणवत्ता के लिए अनुकूलित किया गया (990kbps/909kbps)"</item>
<item msgid="2921767058740704969">"संतुलित ऑडियो और कनेक्शन गुणवत्ता (660kbps/606kbps)"</item>
<item msgid="8860982705384396512">"कनेक्शन की गुणवत्ता के लिए अनुकूलित किया गया (330kbps/303kbps)"</item>
- <item msgid="4414060457677684127">"सबसे अच्छी कोशिश (अनुकूल बिट दर)"</item>
+ <item msgid="4414060457677684127">"सबसे अच्छी क्वालिटी में चलाएं (अनुकूल बिट रेट)"</item>
</string-array>
<string-array name="bluetooth_a2dp_codec_ldac_playback_quality_summaries">
<item msgid="6398189564246596868">"ऑडियो की गुणवत्ता के लिए अनुकूलित किया गया"</item>
<item msgid="4327143584633311908">"संतुलित ऑडियो और कनेक्शन गुणवत्ता"</item>
<item msgid="4681409244565426925">"कनेक्शन की गुणवत्ता के लिए अनुकूलित किया गया"</item>
- <item msgid="364670732877872677">"सबसे अच्छी कोशिश (अनुकूल बिट दर)"</item>
+ <item msgid="364670732877872677">"सबसे अच्छी क्वालिटी में चलाएं (अनुकूल बिट रेट)"</item>
</string-array>
<string-array name="select_logd_size_titles">
<item msgid="8665206199209698501">"बंद"</item>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 84c710e48159..eddcb564da1b 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -132,7 +132,7 @@
<string name="tts_lang_not_selected" msgid="7395787019276734765">"भाषा नहीं चुनी गई है"</string>
<string name="tts_default_lang_summary" msgid="5219362163902707785">"बोले गए लेख के लिए भाषा-विशिष्ट ध्‍वनि सेट करता है"</string>
<string name="tts_play_example_title" msgid="7094780383253097230">"एक उदाहरण सुनें"</string>
- <string name="tts_play_example_summary" msgid="8029071615047894486">"बोली संश्लेषण का एक संक्षिप्त प्रदर्शन चलाएं"</string>
+ <string name="tts_play_example_summary" msgid="8029071615047894486">"लिखे हुए को बोली में बदलने की सुविधा की एक छोटी सी झलक चलाएं"</string>
<string name="tts_install_data_title" msgid="4264378440508149986">"ध्‍वनि डेटा इंस्टॉल करें"</string>
<string name="tts_install_data_summary" msgid="5742135732511822589">"बोली-संश्लेषण के लिए आवश्‍यक ध्‍वनि डेटा इंस्‍टॉल करें"</string>
<string name="tts_engine_security_warning" msgid="8786238102020223650">"यह बोली संश्लेषण इंजन पासवर्ड और क्रेडिट कार्ड नंबर जैसे निजी डेटा समेत आपके द्वारा बोले जाने वाले सभी लेख को एकत्र कर सकता है. यह <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> इंजन से आता है. इस बोली संश्लेषण इंजन के उपयोग को सक्षम करें?"</string>
@@ -172,9 +172,9 @@
<string name="apn_settings_not_available" msgid="7873729032165324000">"एक्सेस पॉइंट नाम सेटिंग इस उपयोगकर्ता के लिए मौजूद नहीं हैं"</string>
<string name="enable_adb" msgid="7982306934419797485">"USB डीबग करना"</string>
<string name="enable_adb_summary" msgid="4881186971746056635">"डीबग मोड जब USB कनेक्‍ट किया गया हो"</string>
- <string name="clear_adb_keys" msgid="4038889221503122743">"USB डीबगिंग प्राधिकरणों को निरस्त करें"</string>
- <string name="bugreport_in_power" msgid="7923901846375587241">"बग रिपोर्ट शॉर्टकट"</string>
- <string name="bugreport_in_power_summary" msgid="1778455732762984579">"बग रिपोर्ट लेने के लिए पावर मेनू में कोई बटन दिखाएं"</string>
+ <string name="clear_adb_keys" msgid="4038889221503122743">"USB डीबग करने की मंज़ूरी रद्द करें"</string>
+ <string name="bugreport_in_power" msgid="7923901846375587241">"गड़बड़ी की रिपोर्ट का शॉर्टकट"</string>
+ <string name="bugreport_in_power_summary" msgid="1778455732762984579">"गड़बड़ी की रिपोर्ट लेने के लिए पावर मेन्यू में कोई बटन दिखाएं"</string>
<string name="keep_screen_on" msgid="1146389631208760344">"स्क्रीन को चालू रखें"</string>
<string name="keep_screen_on_summary" msgid="2173114350754293009">"चार्ज करते समय स्‍क्रीन कभी भी कम बैटरी मोड में नहीं जाएगी"</string>
<string name="bt_hci_snoop_log" msgid="3340699311158865670">"ब्लूटूथ HCI स्‍नूप लॉग सक्षम करें"</string>
@@ -226,8 +226,8 @@
<string name="mobile_data_always_on_summary" msgid="8149773901431697910">"वाई-फ़ाई के सक्रिय रहने पर भी, हमेशा मोबाइल डेटा सक्रिय रखें (तेज़ी से नेटवर्क स्विच करने के लिए)."</string>
<string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"हार्डवेयर त्‍वरण को टेदर करना उपलब्ध होने पर उसका उपयोग करें"</string>
<string name="adb_warning_title" msgid="6234463310896563253">"USB डीबग करने की अनुमति दें?"</string>
- <string name="adb_warning_message" msgid="7316799925425402244">"USB डीबग करने का उद्देश्‍य केवल विकास है. इसका इस्तेमाल आपके कंप्‍यूटर और आपके डिवाइस के बीच डेटा को कॉपी करने, बिना नोटिफ़िकेशन के आपके डिवाइस पर ऐप इंस्‍टॉल करने और लॉग डेटा पढ़ने के लिए करें."</string>
- <string name="adb_keys_warning_message" msgid="5659849457135841625">"आपके द्वारा पूर्व में प्राधिकृत सभी कंप्यूटर से USB डीबगिंग की पहुंच निरस्त करें?"</string>
+ <string name="adb_warning_message" msgid="7316799925425402244">"USB डीबग करने का मकसद केवल डेवेलप करना है. इसका इस्तेमाल आपके कंप्‍यूटर और आपके डिवाइस के बीच डेटा को कॉपी करने, बिना सूचना के आपके डिवाइस पर ऐप इंस्‍टॉल करने और लॉग डेटा पढ़ने के लिए करें."</string>
+ <string name="adb_keys_warning_message" msgid="5659849457135841625">"उन सभी कंप्यूटरों से USB डीबग करने की पहुंचर रद्द करें, जिन्हें आपने पहले इसकी मंज़ूरी दी थी?"</string>
<string name="dev_settings_warning_title" msgid="7244607768088540165">"विकास सेटिंग की अनुमति दें?"</string>
<string name="dev_settings_warning_message" msgid="2298337781139097964">"ये सेटिंग केवल विकास संबंधी उपयोग के प्रयोजन से हैं. वे आपके डिवाइस और उस पर स्‍थित ऐप्स को खराब कर सकती हैं या उनके दुर्व्यवहार का कारण हो सकती हैं."</string>
<string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USB पर ऐप की पुष्टि करें"</string>
@@ -293,12 +293,12 @@
<string name="app_process_limit_title" msgid="4280600650253107163">"पृष्ठभूमि प्रक्रिया सीमा"</string>
<string name="show_all_anrs" msgid="28462979638729082">"सभी ANR दिखाएं"</string>
<string name="show_all_anrs_summary" msgid="641908614413544127">"पृष्ठभूमि ऐप्स के लिए ऐप्स प्रतिसाद नहीं दे रहा डॉयलॉग दिखाएं"</string>
- <string name="show_notification_channel_warnings" msgid="1399948193466922683">"नोटिफ़िकेशन चैनल चेतावनी दिखाएं"</string>
- <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ऐप्लिकेशन मान्य चैनल के बिना नोटिफ़िकेशन पोस्ट करे तो स्क्रीन पर चेतावनी दिखाएं"</string>
+ <string name="show_notification_channel_warnings" msgid="1399948193466922683">"सूचना चैनल चेतावनी दिखाएं"</string>
+ <string name="show_notification_channel_warnings_summary" msgid="5536803251863694895">"ऐप सही चैनल के बिना सूचना पोस्ट करे तो स्क्रीन पर चेतावनी दिखाएं"</string>
<string name="force_allow_on_external" msgid="3215759785081916381">"ऐप्स को बाहरी मेमोरी पर बाध्‍य करें"</string>
- <string name="force_allow_on_external_summary" msgid="3640752408258034689">"इससे कोई भी ऐप्लिकेशन, मेनिफेस्ट मानों को अनदेखा करके, बाहरी मेमोरी पर लिखने योग्य बन जाता है"</string>
+ <string name="force_allow_on_external_summary" msgid="3640752408258034689">"इससे कोई भी ऐप बाहरी मेमोरी में रखने लायक बन जाता है चाहे उसकी मेनिफ़ेस्ट वैल्यू कुछ भी हो"</string>
<string name="force_resizable_activities" msgid="8615764378147824985">"आकार बदले जाने के लिए गतिविधियों को बाध्य करें"</string>
- <string name="force_resizable_activities_summary" msgid="6667493494706124459">"मेनिफेस्ट मान पर ध्यान दिए बिना, सभी गतिविधियों को मल्टी-विंडो (एक से ज़्यादा ऐप, एक साथ) के लिए आकार बदलने लायक बनाएं."</string>
+ <string name="force_resizable_activities_summary" msgid="6667493494706124459">"सभी गतिविधियों को मल्टी-विंडो (एक से ज़्यादा ऐप, एक साथ) के लिए आकार बदलने लायक बनाएं, चाहे उनकी मेनिफ़ेस्ट वैल्यू कुछ भी हो."</string>
<string name="enable_freeform_support" msgid="1461893351278940416">"फ़्रीफ़ॉर्म विंडो सक्षम करें"</string>
<string name="enable_freeform_support_summary" msgid="8247310463288834487">"प्रयोगात्मक फ़्रीफ़ॉर्म विंडो का समर्थन सक्षम करें."</string>
<string name="local_backup_password_title" msgid="3860471654439418822">"डेस्‍कटॉप बैकअप पासवर्ड"</string>
@@ -379,7 +379,7 @@
<string name="screen_zoom_summary_extremely_large" msgid="7427320168263276227">"सबसे बड़ा"</string>
<string name="screen_zoom_summary_custom" msgid="5611979864124160447">"कस्टम (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string>
<string name="help_feedback_label" msgid="6815040660801785649">"सहायता और फ़ीडबैक"</string>
- <string name="content_description_menu_button" msgid="8182594799812351266">"मेनू"</string>
+ <string name="content_description_menu_button" msgid="8182594799812351266">"मेन्यू"</string>
<string name="retail_demo_reset_message" msgid="118771671364131297">"डेमो मोड में फ़ैक्टरी रीसेट के लिए पासवर्ड डालें"</string>
<string name="retail_demo_reset_next" msgid="8356731459226304963">"आगे"</string>
<string name="retail_demo_reset_title" msgid="696589204029930100">"पासवर्ड आवश्यक"</string>
diff --git a/packages/SettingsLib/res/values-hr/arrays.xml b/packages/SettingsLib/res/values-hr/arrays.xml
index 36ba5c167e0d..fb1f546ecd06 100644
--- a/packages/SettingsLib/res/values-hr/arrays.xml
+++ b/packages/SettingsLib/res/values-hr/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Upotreba odabira sustava (zadano)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-hu/arrays.xml b/packages/SettingsLib/res/values-hu/arrays.xml
index 42e46bb88268..b9a42fc6256c 100644
--- a/packages/SettingsLib/res/values-hu/arrays.xml
+++ b/packages/SettingsLib/res/values-hu/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Rendszerérték (alapértelmezett)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml
index a445eac89dce..851227a23c2b 100644
--- a/packages/SettingsLib/res/values-hy/arrays.xml
+++ b/packages/SettingsLib/res/values-hy/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Օգտագործել համակարգի կարգավորումը (կանխադրված)"</item>
<item msgid="8895532488906185219">"44,1 կՀց"</item>
diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml
index ec1b6c4ff58b..56c14b99578c 100644
--- a/packages/SettingsLib/res/values-in/arrays.xml
+++ b/packages/SettingsLib/res/values-in/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Gunakan Pilihan Sistem (Default)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-is/arrays.xml b/packages/SettingsLib/res/values-is/arrays.xml
index 3c3aca039413..c4edfd57d26a 100644
--- a/packages/SettingsLib/res/values-is/arrays.xml
+++ b/packages/SettingsLib/res/values-is/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Nota val kerfisins (sjálfgefið)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml
index d30befa663cd..40b28f0dbce4 100644
--- a/packages/SettingsLib/res/values-it/arrays.xml
+++ b/packages/SettingsLib/res/values-it/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Usa selezione di sistema (predefinita)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml
index 5d7f220cc540..f069595e654a 100644
--- a/packages/SettingsLib/res/values-iw/arrays.xml
+++ b/packages/SettingsLib/res/values-iw/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"שימוש בבחירת המערכת (ברירת המחדל)"</item>
<item msgid="8895532488906185219">"44.1 קילו-הרץ"</item>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index cf3a92c24922..a3f92d016474 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -147,8 +147,8 @@
<string name="tts_engine_settings_button" msgid="1030512042040722285">"השק הגדרות מנוע"</string>
<string name="tts_engine_preference_section_title" msgid="448294500990971413">"מנוע מועדף"</string>
<string name="tts_general_section_title" msgid="4402572014604490502">"כללי"</string>
- <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"אפס את גובה צליל הדיבור"</string>
- <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"אפס את גובה הצליל שבו מושמע הטקסט לברירת המחדל."</string>
+ <string name="tts_reset_speech_pitch_title" msgid="5789394019544785915">"איפוס של גובה צליל הדיבור"</string>
+ <string name="tts_reset_speech_pitch_summary" msgid="8700539616245004418">"איפוס גובה הצליל שבו מושמע הטקסט לברירת המחדל."</string>
<string-array name="tts_rate_entries">
<item msgid="6695494874362656215">"איטי מאוד"</item>
<item msgid="4795095314303559268">"איטי"</item>
diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml
index 3bec57059076..4f9c2fb3d6dc 100644
--- a/packages/SettingsLib/res/values-ja/arrays.xml
+++ b/packages/SettingsLib/res/values-ja/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"システムの選択(デフォルト)を使用"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-ka/arrays.xml b/packages/SettingsLib/res/values-ka/arrays.xml
index e9cfc61e0848..69ebd3301351 100644
--- a/packages/SettingsLib/res/values-ka/arrays.xml
+++ b/packages/SettingsLib/res/values-ka/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"სისტემის არჩეულის გამოყენება (ნაგულისხმევი)"</item>
<item msgid="8895532488906185219">"44,1 კჰც"</item>
diff --git a/packages/SettingsLib/res/values-kk/arrays.xml b/packages/SettingsLib/res/values-kk/arrays.xml
index c856439eb6a8..2fb35e0a38a8 100644
--- a/packages/SettingsLib/res/values-kk/arrays.xml
+++ b/packages/SettingsLib/res/values-kk/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Жүйені таңдау (әдепкі)"</item>
<item msgid="8895532488906185219">"44,1 кГц"</item>
diff --git a/packages/SettingsLib/res/values-km/arrays.xml b/packages/SettingsLib/res/values-km/arrays.xml
index dcdc63a31a3e..43406c0cbd2e 100644
--- a/packages/SettingsLib/res/values-km/arrays.xml
+++ b/packages/SettingsLib/res/values-km/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"ប្រើ​ការ​ជ្រើសរើស​ប្រព័ន្ធ (លំនាំ​ដើម)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-kn/arrays.xml b/packages/SettingsLib/res/values-kn/arrays.xml
index 2e4db0b1b951..54eebda034bd 100644
--- a/packages/SettingsLib/res/values-kn/arrays.xml
+++ b/packages/SettingsLib/res/values-kn/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"ಸಿಸ್ಟಂ ಆಯ್ಕೆಯನ್ನು ಬಳಸಿ (ಡಿಫಾಲ್ಟ್)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml
index 72ef56448541..57b691125640 100644
--- a/packages/SettingsLib/res/values-ko/arrays.xml
+++ b/packages/SettingsLib/res/values-ko/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"시스템 설정 사용(기본)"</item>
<item msgid="8895532488906185219">"44.1kHz"</item>
diff --git a/packages/SettingsLib/res/values-ky/arrays.xml b/packages/SettingsLib/res/values-ky/arrays.xml
index ecaa146bed4d..bb4da499017a 100644
--- a/packages/SettingsLib/res/values-ky/arrays.xml
+++ b/packages/SettingsLib/res/values-ky/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Тутум тандаганды колдонуу (демейки)"</item>
<item msgid="8895532488906185219">"44,1 кГц"</item>
diff --git a/packages/SettingsLib/res/values-lo/arrays.xml b/packages/SettingsLib/res/values-lo/arrays.xml
index 302c80302ce7..72771b7efa1d 100644
--- a/packages/SettingsLib/res/values-lo/arrays.xml
+++ b/packages/SettingsLib/res/values-lo/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Use System Selection (Default)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-lt/arrays.xml b/packages/SettingsLib/res/values-lt/arrays.xml
index 6def306353bc..1276e2bd810c 100644
--- a/packages/SettingsLib/res/values-lt/arrays.xml
+++ b/packages/SettingsLib/res/values-lt/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Naudoti sistemos pasirink. (numatytasis)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-lv/arrays.xml b/packages/SettingsLib/res/values-lv/arrays.xml
index 00b1e6ea1523..9cc2702e7ddb 100644
--- a/packages/SettingsLib/res/values-lv/arrays.xml
+++ b/packages/SettingsLib/res/values-lv/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Sistēmas atlases izmantošana (nokl.)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml
index 680184edc7a0..a204da6b222a 100644
--- a/packages/SettingsLib/res/values-mk/arrays.xml
+++ b/packages/SettingsLib/res/values-mk/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Користи избор на системот (стандардно)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-ml/arrays.xml b/packages/SettingsLib/res/values-ml/arrays.xml
index 624edfeae649..bf5860878620 100644
--- a/packages/SettingsLib/res/values-ml/arrays.xml
+++ b/packages/SettingsLib/res/values-ml/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"സിസ്റ്റം സെലക്ഷൻ ഉപയോഗിക്കൂ ‌(ഡിഫോൾട്ട്)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index a131ab83ac43..d93916f705ab 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -119,7 +119,7 @@
<string name="user_guest" msgid="8475274842845401871">"അതിഥി"</string>
<string name="unknown" msgid="1592123443519355854">"അജ്ഞാതം"</string>
<string name="running_process_item_user_label" msgid="3129887865552025943">"ഉപയോക്താവ്: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
- <string name="launch_defaults_some" msgid="313159469856372621">"സ്ഥിരമായ ചിലവ സജ്ജീകരിച്ചു"</string>
+ <string name="launch_defaults_some" msgid="313159469856372621">"സ്ഥിരമായ ചിലത് സജ്ജീകരിച്ചു"</string>
<string name="launch_defaults_none" msgid="4241129108140034876">"സ്ഥിരമായൊന്നും സജ്ജീകരിച്ചിട്ടില്ല"</string>
<string name="tts_settings" msgid="8186971894801348327">"ടെക്‌സ്റ്റ്-ടു-സ്‌പീച്ച് ക്രമീകരണങ്ങൾ"</string>
<string name="tts_settings_title" msgid="1237820681016639683">"ടെക്‌സ്റ്റ്-ടു-സ്‌പീച്ച് ഔട്ട്‌പുട്ട്"</string>
diff --git a/packages/SettingsLib/res/values-mn/arrays.xml b/packages/SettingsLib/res/values-mn/arrays.xml
index 66806a79e869..01c36bfd1842 100644
--- a/packages/SettingsLib/res/values-mn/arrays.xml
+++ b/packages/SettingsLib/res/values-mn/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Системийн сонголтыг ашиглах (Өгөгдмөл)"</item>
<item msgid="8895532488906185219">"44.1 кГц"</item>
diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml
index 85e9955ef6df..c983cfd2ef3e 100644
--- a/packages/SettingsLib/res/values-mr/arrays.xml
+++ b/packages/SettingsLib/res/values-mr/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"प्रणाली निवड वापरा (डीफॉल्ट)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index c0cace5170cd..0b2ad7452eb6 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -164,7 +164,7 @@
<string name="category_personal" msgid="1299663247844969448">"वैयक्तिक"</string>
<string name="category_work" msgid="8699184680584175622">"कार्य"</string>
<string name="development_settings_title" msgid="215179176067683667">"डेव्हलपर पर्याय"</string>
- <string name="development_settings_enable" msgid="542530994778109538">"डेव्हलपर पर्याय सक्षम करा"</string>
+ <string name="development_settings_enable" msgid="542530994778109538">"डेव्हलपर पर्याय सुरू करा"</string>
<string name="development_settings_summary" msgid="1815795401632854041">"अॅप विकासासाठी पर्याय सेट करा"</string>
<string name="development_settings_not_available" msgid="4308569041701535607">"या वापरकर्त्यासाठी डेव्हलपर पर्याय उपलब्ध नाहीत"</string>
<string name="vpn_settings_not_available" msgid="956841430176985598">"या वापरकर्त्यासाठी VPN सेटिंग्ज उपलब्ध नाहीत"</string>
@@ -173,8 +173,8 @@
<string name="enable_adb" msgid="7982306934419797485">"USB डीबग करणे"</string>
<string name="enable_adb_summary" msgid="4881186971746056635">"USB कनेक्ट केलेले असताना डीबग मोड"</string>
<string name="clear_adb_keys" msgid="4038889221503122743">"USB डीबग करणारी प्रमाणीकरणे रीव्होक करा"</string>
- <string name="bugreport_in_power" msgid="7923901846375587241">"दोष अहवाल शॉर्टकट"</string>
- <string name="bugreport_in_power_summary" msgid="1778455732762984579">"दोष अहवाल घेण्यासाठी पॉवर मेनूमध्ये एक बटण दर्शवा"</string>
+ <string name="bugreport_in_power" msgid="7923901846375587241">"बग रीपोर्ट शॉर्टकट"</string>
+ <string name="bugreport_in_power_summary" msgid="1778455732762984579">"बग रीपोर्ट घेण्यासाठी पॉवर मेनूमध्ये एक बटण दर्शवा"</string>
<string name="keep_screen_on" msgid="1146389631208760344">"सक्रिय रहा"</string>
<string name="keep_screen_on_summary" msgid="2173114350754293009">"चार्ज होत असताना स्क्रीन कधीही निष्क्रिय होणार नाही"</string>
<string name="bt_hci_snoop_log" msgid="3340699311158865670">"ब्लूटूथ HCI स्नूप लॉग सक्षम करा"</string>
@@ -380,7 +380,7 @@
<string name="screen_zoom_summary_custom" msgid="5611979864124160447">"सानुकूल करा (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string>
<string name="help_feedback_label" msgid="6815040660801785649">"मदत आणि अभिप्राय"</string>
<string name="content_description_menu_button" msgid="8182594799812351266">"मेनू"</string>
- <string name="retail_demo_reset_message" msgid="118771671364131297">"डेमो मोडमध्ये फॅक्टरी रीसेट करण्यासाठी संकेतशब्द प्रविष्ट करा"</string>
+ <string name="retail_demo_reset_message" msgid="118771671364131297">"डेमो मोडमध्ये फॅक्टरी रीसेट करण्यासाठी पासवर्ड एंटर करा"</string>
<string name="retail_demo_reset_next" msgid="8356731459226304963">"पुढील"</string>
<string name="retail_demo_reset_title" msgid="696589204029930100">"संकेतशब्द आवश्यक"</string>
<string name="active_input_method_subtypes" msgid="3596398805424733238">"सक्रिय इनपुट पद्धती"</string>
diff --git a/packages/SettingsLib/res/values-ms/arrays.xml b/packages/SettingsLib/res/values-ms/arrays.xml
index d6fd2ec2a85f..9338c02f3c8e 100644
--- a/packages/SettingsLib/res/values-ms/arrays.xml
+++ b/packages/SettingsLib/res/values-ms/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Gunakan Pilihan Sistem (Lalai)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-my/arrays.xml b/packages/SettingsLib/res/values-my/arrays.xml
index 732599e03cf1..1f2fec46c76a 100644
--- a/packages/SettingsLib/res/values-my/arrays.xml
+++ b/packages/SettingsLib/res/values-my/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"စနစ်ရွေးချယ်မှုကို အသုံးပြုပါ (မူရင်း)"</item>
<item msgid="8895532488906185219">"၄၄.၁ kHz"</item>
diff --git a/packages/SettingsLib/res/values-nb/arrays.xml b/packages/SettingsLib/res/values-nb/arrays.xml
index 86d0c1ec9a0a..1c9186a22f02 100644
--- a/packages/SettingsLib/res/values-nb/arrays.xml
+++ b/packages/SettingsLib/res/values-nb/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Bruk systemvalg (standard)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml
index 6079a758b1db..b22dc12621ea 100644
--- a/packages/SettingsLib/res/values-ne/arrays.xml
+++ b/packages/SettingsLib/res/values-ne/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item>
<item msgid="8895532488906185219">"४४.१ kHz"</item>
diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml
index 996bb1087244..94443c2e1cb7 100644
--- a/packages/SettingsLib/res/values-nl/arrays.xml
+++ b/packages/SettingsLib/res/values-nl/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Systeemselectie gebruiken (standaard)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-pa/arrays.xml b/packages/SettingsLib/res/values-pa/arrays.xml
index ca369d1cec47..af209923f698 100644
--- a/packages/SettingsLib/res/values-pa/arrays.xml
+++ b/packages/SettingsLib/res/values-pa/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 1bbfab340fd4..a6f168f2c8fe 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -135,7 +135,7 @@
<string name="tts_play_example_summary" msgid="8029071615047894486">"ਸਪੀਚ ਸਿੰਥੈਸਿਸ ਦਾ ਇੱਕ ਛੋਟਾ ਪ੍ਰਦਰਸ਼ਨ ਪਲੇ ਕਰੋ"</string>
<string name="tts_install_data_title" msgid="4264378440508149986">"ਵੌਇਸ ਡੈਟਾ ਇੰਸਟੌਲ ਕਰੋ"</string>
<string name="tts_install_data_summary" msgid="5742135732511822589">"ਸਪੀਚ ਸਿੰਥੈਸਿਸ ਲਈ ਲੁੜੀਂਦਾ ਵੌਇਸ ਡੈਟਾ ਇੰਸਟੌਲ ਕਰੋ"</string>
- <string name="tts_engine_security_warning" msgid="8786238102020223650">"ਇਹ ਸਪੀਚ ਸਿੰਥੈਸਿਸ ਇੰਜਣ ਉਹ ਸਾਰਾ ਟੈਕਸਟ ਇਕੱਤਰ ਕਰਨ ਵਿੱਚ ਸਮਰੱਥ ਹੋ ਸਕਦਾ ਹੈ, ਜੋ ਬੋਲਿਆ ਜਾਏਗਾ, ਨਿੱਜੀ ਡੈਟਾ ਸਮੇਤ ਜਿਵੇਂ ਪਾਸਵਰਡ ਅਤੇ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਨੰਬਰ। ਇਹ <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> ਇੰਜਣ ਤੋਂ ਆਉਂਦਾ ਹੈ। ਕੀ ਇਸ ਸਪੀਚ ਸਿੰਥੈਸਿਸ ਇੰਜਣ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ?"</string>
+ <string name="tts_engine_security_warning" msgid="8786238102020223650">"ਇਹ ਸਪੀਚ ਸਿੰਥੈਸਿਸ ਇੰਜਣ ਉਹ ਸਾਰੀ ਲਿਖਤ ਇਕੱਤਰ ਕਰਨ ਵਿੱਚ ਸਮਰੱਥ ਹੋ ਸਕਦਾ ਹੈ, ਜੋ ਬੋਲੀ ਜਾਏ, ਨਿੱਜੀ ਡਾਟਾ ਸਮੇਤ ਜਿਵੇਂ ਪਾਸਵਰਡ ਅਤੇ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਨੰਬਰ। ਇਹ <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> ਇੰਜਣ ਤੋਂ ਆਉਂਦਾ ਹੈ। ਕੀ ਇਸ ਸਪੀਚ ਸਿੰਥੈਸਿਸ ਇੰਜਣ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ?"</string>
<string name="tts_engine_network_required" msgid="1190837151485314743">"ਇਸ ਭਾਸ਼ਾ ਲਈ ਟੈਕਸਟ-ਟੂ-ਸਪੀਚ ਆਊਟਪੁਟ ਲਈ ਇੱਕ ਚਾਲੂ ਨੈੱਟਵਰਕ ਕਨੈਕਸ਼ਨ ਦੀ ਲੋੜ ਹੈ।"</string>
<string name="tts_default_sample_string" msgid="4040835213373086322">"ਇਹ ਸਪੀਚ ਸਿੰਥੈਸਿਸ ਦਾ ਇੱਕ ਉਦਾਹਰਨ ਹੈ"</string>
<string name="tts_status_title" msgid="7268566550242584413">"ਪੂਰਵ-ਨਿਰਧਾਰਤ ਭਾਸ਼ਾ ਸਥਿਤੀ"</string>
@@ -174,7 +174,7 @@
<string name="enable_adb_summary" msgid="4881186971746056635">"ਡੀਬਗ ਮੋਡ ਜਦੋਂ USB ਕਨੈਕਟ ਕੀਤੀ ਜਾਏ"</string>
<string name="clear_adb_keys" msgid="4038889221503122743">"USB ਡੀਬਗਿੰਗ ਅਧਿਕਾਰ ਰੱਦ ਕਰੋ"</string>
<string name="bugreport_in_power" msgid="7923901846375587241">"ਬਗ ਰਿਪੋਰਟ ਸ਼ਾਰਟਕੱਟ"</string>
- <string name="bugreport_in_power_summary" msgid="1778455732762984579">"ਇੱਕ ਬਗ ਰਿਪੋਰਟ ਲੈਣ ਲਈ ਪਾਵਰ ਮੀਨੂ ਵਿੱਚ ਇੱਕ ਬਟਨ ਦਿਖਾਓ"</string>
+ <string name="bugreport_in_power_summary" msgid="1778455732762984579">"ਇੱਕ ਬੱਗ ਰਿਪੋਰਟ ਲੈਣ ਲਈ ਪਾਵਰ ਮੀਨੂ ਵਿੱਚ ਇੱਕ ਬਟਨ ਦਿਖਾਓ"</string>
<string name="keep_screen_on" msgid="1146389631208760344">"ਸਕਿਰਿਆ ਰੱਖੋ"</string>
<string name="keep_screen_on_summary" msgid="2173114350754293009">"ਸਕ੍ਰੀਨ ਚਾਰਜਿੰਗ ਦੇ ਸਮੇਂ ਕਦੇ ਵੀ ਸਲੀਪ ਨਹੀਂ ਹੋਵੇਗੀ"</string>
<string name="bt_hci_snoop_log" msgid="3340699311158865670">"Bluetooth HCI ਸਨੂਪ ਲੌਗ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
@@ -188,10 +188,10 @@
<string name="mock_location_app_set" msgid="8966420655295102685">"ਮੌਕ ਸਥਾਨ ਐਪ: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="debug_networking_category" msgid="7044075693643009662">"ਨੈੱਟਵਰਕਿੰਗ"</string>
<string name="wifi_display_certification" msgid="8611569543791307533">"ਵਾਇਰਲੈਸ ਡਿਸਪਲੇ ਪ੍ਰਮਾਣੀਕਰਨ"</string>
- <string name="wifi_verbose_logging" msgid="4203729756047242344">"Wi‑Fi ਵਰਬੋਸ ਲੌਗਿੰਗ ਸਮਰੱਥ ਬਣਾਓ"</string>
- <string name="wifi_aggressive_handover" msgid="5309131983693661320">"ਆਕਰਮਣਸ਼ੀਲ Wi‑Fi ਤੋਂ ਮੋਬਾਈਲ ਹੈਂਡਓਵਰ"</string>
- <string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"ਹਮੇਸ਼ਾਂ Wi‑Fi Roam Scans ਦੀ ਆਗਿਆ ਦਿਓ"</string>
- <string name="mobile_data_always_on" msgid="8774857027458200434">"ਮੋਬਾਈਲ ਡੈਟਾ ਹਮੇਸ਼ਾਂ ਕਿਰਿਆਸ਼ੀਲ"</string>
+ <string name="wifi_verbose_logging" msgid="4203729756047242344">"ਵਾਈ‑ਫਾਈ ਵਰਬੋਸ ਲੌਗਿੰਗ ਸਮਰੱਥ ਬਣਾਓ"</string>
+ <string name="wifi_aggressive_handover" msgid="5309131983693661320">"ਆਕਰਮਣਸ਼ੀਲ ਵਾਈ‑ਫਾਈ ਤੋਂ ਮੋਬਾਈਲ ਹੈਂਡਓਵਰ"</string>
+ <string name="wifi_allow_scan_with_traffic" msgid="3601853081178265786">"ਹਮੇਸ਼ਾਂ ਵਾਈ‑ਫਾਈ ਰੋਮ ਸਕੈਨਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
+ <string name="mobile_data_always_on" msgid="8774857027458200434">"ਮੋਬਾਈਲ ਡਾਟਾ ਹਮੇਸ਼ਾਂ ਕਿਰਿਆਸ਼ੀਲ"</string>
<string name="tethering_hardware_offload" msgid="7470077827090325814">"ਟੈਦਰਿੰਗ ਹਾਰਡਵੇਅਰ ਐਕਸੇਲਰੇਸ਼ਨ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ਪੂਰਨ ਵੌਲਿਊਮ ਨੂੰ ਅਯੋਗ ਬਣਾਓ"</string>
<string name="bluetooth_enable_inband_ringing" msgid="3291686366721786740">"ਇਨ-ਬੈਂਡ ਘੰਟੀ ਵੱਜਣ ਨੂੰ ਯੋਗ ਬਣਾਓ"</string>
@@ -209,9 +209,9 @@
<string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="3181967377574368400">"ਬਲੂਟੁੱਥ ਔਡੀਓ LDAC ਕੋਡੇਕ ਚੁਣੋ:\nਪਲੇਬੈਕ ਗੁਣਵੱਤਾ"</string>
<string name="bluetooth_select_a2dp_codec_streaming_label" msgid="5347862512596240506">"ਸਟ੍ਰੀਮਿੰਗ: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string>
<string name="wifi_display_certification_summary" msgid="1155182309166746973">"ਵਾਇਰਲੈਸ ਡਿਸਪਲੇ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਚੋਣਾਂ ਦਿਖਾਓ"</string>
- <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"Wi‑Fi ਲੌਗਿੰਗ ਪੱਧਰ ਵਧਾਓ, Wi‑Fi Picker ਵਿੱਚ ਪ੍ਰਤੀ SSID RSSI ਦਿਖਾਓ"</string>
- <string name="wifi_aggressive_handover_summary" msgid="7266329646559808827">"ਜਦੋਂ ਯੋਗ ਬਣਾਇਆ ਹੋਵੇ, ਤਾਂ Wi‑Fi ਸਿਗਨਲ ਘੱਟ ਹੋਣ \'ਤੇ Wi‑Fi ਡੈਟਾ ਕਨੈਕਸ਼ਨ ਮੋਬਾਈਲ ਨੂੰ ਹੈਂਡ ਓਵਰ ਕਰਨ ਵਿੱਚ ਵੱਧ ਆਕਰਮਣਸ਼ੀਲ ਹੋਵੇਗਾ।"</string>
- <string name="wifi_allow_scan_with_traffic_summary" msgid="2575101424972686310">"ਇੰਟਰਫੇਸ ਤੇ ਮੌਜੂਦ ਡੈਟਾ ਟ੍ਰੈਫਿਕ ਦੀ ਮਾਤਰਾ ਦੇ ਆਧਾਰ ਤੇ Wi‑Fi ਰੋਮ ਸਕੈਨ ਦੀ ਆਗਿਆ ਦਿਓ/ਅਸਵੀਕਾਰ ਕਰੋ"</string>
+ <string name="wifi_verbose_logging_summary" msgid="6615071616111731958">"ਵਾਈ‑ਫਾਈ ਲੌਗਿੰਗ ਪੱਧਰ ਵਧਾਓ, ਵਾਈ‑ਫਾਈ Picker ਵਿੱਚ ਪ੍ਰਤੀ SSID RSSI ਦਿਖਾਓ"</string>
+ <string name="wifi_aggressive_handover_summary" msgid="7266329646559808827">"ਜਦੋਂ ਚਾਲੂ ਕੀਤਾ ਹੋਵੇ, ਤਾਂ ਵਾਈ‑ਫਾਈ ਸਿਗਨਲ ਘੱਟ ਹੋਣ \'ਤੇ ਵਾਈ‑ਫਾਈ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਮੋਬਾਈਲ ਨੂੰ ਹੈਂਡਓਵਰ ਕਰਨ ਵਿੱਚ ਵੱਧ ਆਕਰਮਣਸ਼ੀਲ ਹੋਵੇਗਾ।"</string>
+ <string name="wifi_allow_scan_with_traffic_summary" msgid="2575101424972686310">"ਇੰਟਰਫੇਸ ਤੇ ਮੌਜੂਦ ਡਾਟਾ ਟ੍ਰੈਫਿਕ ਦੀ ਮਾਤਰਾ ਦੇ ਆਧਾਰ ਤੇ ਵਾਈ‑ਫਾਈ ਰੋਮ ਸਕੈਨ ਦੀ ਆਗਿਆ ਦਿਓ/ਨਾ ਦਿਓ"</string>
<string name="select_logd_size_title" msgid="7433137108348553508">"ਲੌਗਰ ਬਫਰ ਆਕਾਰ"</string>
<string name="select_logd_size_dialog_title" msgid="1206769310236476760">"ਪ੍ਰਤੀ ਲੌਗ ਬਫਰ ਲੌਗਰ ਆਕਾਰ ਚੁਣੋ"</string>
<string name="dev_logpersist_clear_warning_title" msgid="684806692440237967">"ਕੀ ਲੌਗਰ ਪ੍ਰਸਿੱਸਟੈਂਟ ਸਟੋਰੇਜ ਨੂੰ ਸਾਫ਼ ਕਰਨਾ ਹੈ?"</string>
@@ -223,7 +223,7 @@
<string name="allow_mock_location" msgid="2787962564578664888">"ਨਕਲੀ ਨਿਰਧਾਰਿਤ ਸਥਾਨਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
<string name="allow_mock_location_summary" msgid="317615105156345626">"ਨਕਲੀ ਨਿਰਧਾਰਿਤ ਸਥਾਨਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
<string name="debug_view_attributes" msgid="6485448367803310384">"ਗੁਣ ਛਾਣਬੀਣ ਦੇਖੋ ਨੂੰ ਸਮਰੱਥ ਬਣਾਓ"</string>
- <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"ਹਮੇਸ਼ਾ ਮੋਬਾਈਲ ਡਾਟਾ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਰੱਖੋ ਭਾਵੇਂ ਵਾਈ-ਫਾਈ ਕਿਰਿਆਸ਼ੀਲ ਹੋਵੇ (ਤੇਜ਼ ਨੈੱਟਵਰਕ ਸਵਿੱਚਿੰਗ ਲਈ)।"</string>
+ <string name="mobile_data_always_on_summary" msgid="8149773901431697910">"ਹਮੇਸ਼ਾਂ ਮੋਬਾਈਲ ਡਾਟਾ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਰੱਖੋ, ਭਾਵੇਂ ਵਾਈ‑ਫਾਈ ਕਿਰਿਆਸ਼ੀਲ ਹੋਵੇ (ਤੇਜ਼ ਨੈੱਟਵਰਕ ਸਵਿੱਚਿੰਗ ਲਈ)।"</string>
<string name="tethering_hardware_offload_summary" msgid="7726082075333346982">"ਉਪਲਬਧ ਹੋਣ \'ਤੇ ਟੈਦਰਿੰਗ ਹਾਰਡਵੇਅਰ ਐਕਸੇਲਰੇਸ਼ਨ ਵਰਤੋ"</string>
<string name="adb_warning_title" msgid="6234463310896563253">"ਕੀ USB ਡੀਬਗਿੰਗ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string>
<string name="adb_warning_message" msgid="7316799925425402244">"USB ਡੀਬਗਿੰਗ ਕੇਵਲ ਵਿਕਾਸ ਮੰਤਵਾਂ ਲਈ ਹੁੰਦੀ ਹੈ। ਇਸਨੂੰ ਆਪਣੇ ਕੰਪਿਊਟਰ ਅਤੇ ਆਪਣੇ ਡੀਵਾਈਸ ਵਿਚਕਾਰ ਡਾਟਾ ਕਾਪੀ ਕਰਨ ਲਈ ਵਰਤੋ, ਸੂਚਨਾ ਦੇ ਬਿਨਾਂ ਆਪਣੇ ਡੀਵਾਈਸ ਤੇ ਐਪਾਂ ਸਥਾਪਤ ਕਰੋ ਅਤੇ ਲੌਗ ਡਾਟਾ ਪੜ੍ਹੋ।"</string>
@@ -250,7 +250,7 @@
<string name="telephony_monitor_switch_summary" msgid="7695552966547975635">"ਟੈਲੀਫ਼ੋਨੀ ਮੋਨੀਟਰ ਟੈਲੀਫ਼ੋਨੀ/ਮੌਡਮ ਪ੍ਰਕਾਰਜਾਤਮਕਤਾ ਵਿੱਚ ਕਿਸੇ ਸਮੱਸਿਆ ਦਾ ਪਤਾ ਲੱਗਣ \'ਤੇ ਲੌਗਾਂ ਨੂੰ ਇਕੱਤਰ ਕਰੇਗਾ ਅਤੇ ਵਰਤੋਂਕਾਰ ਨੂੰ ਇੱਕ ਬੱਗ ਦਾਇਰ ਕਰਨ ਲਈ ਸੂਚਨਾ ਦੇਵੇਗਾ"</string>
<string name="debug_input_category" msgid="1811069939601180246">"ਇਨਪੁਟ"</string>
<string name="debug_drawing_category" msgid="6755716469267367852">"ਡਰਾਇੰਗ"</string>
- <string name="debug_hw_drawing_category" msgid="6220174216912308658">"ਹਾਰਡਵੇਅਰ ਤੇਜ਼ ਕੀਤਾ ਪ੍ਰਗਟਾਅ"</string>
+ <string name="debug_hw_drawing_category" msgid="6220174216912308658">"ਹਾਰਡਵੇਅਰ ਐਕਸੇਲਰੇਟਿਡ ਰੈਂਡਰਿੰਗ"</string>
<string name="media_category" msgid="4388305075496848353">"ਮੀਡੀਆ"</string>
<string name="debug_monitoring_category" msgid="7640508148375798343">"ਨਿਰੀਖਣ ਕਰ ਰਿਹਾ ਹੈ"</string>
<string name="strict_mode" msgid="1938795874357830695">"ਸਟ੍ਰਿਕਟ ਮੋਡ ਸਮਰਥਿਤ"</string>
@@ -263,8 +263,8 @@
<string name="show_screen_updates_summary" msgid="2569622766672785529">"ਸਮੁੱਚੀ ਵਿੰਡੋ ਸਰਫੇਸਾਂ ਫਲੈਸ਼ ਕਰੋ ਜਦੋਂ ਉਹ ਅਪਡੇਟ ਹੁੰਦੀਆਂ ਹਨ"</string>
<string name="show_hw_screen_updates" msgid="5036904558145941590">"GPU ਦ੍ਰਿਸ਼ ਅਪਡੇਟਾਂ ਦਿਖਾਓ"</string>
<string name="show_hw_screen_updates_summary" msgid="1115593565980196197">"ਜਦੋਂ GPU ਨਾਲ ਡ੍ਰਾ ਕੀਤਾ ਜਾਏ ਤਾਂ ਵਿੰਡੋਜ ਦੇ ਅੰਦਰ ਦ੍ਰਿਸ਼ ਫਲੈਸ਼ ਕਰੋ"</string>
- <string name="show_hw_layers_updates" msgid="5645728765605699821">"ਹਾਰਡਵੇਅਰ ਲੇਅਰਸ ਅਪਡੇਟਾਂ ਦਿਖਾਓ"</string>
- <string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"ਹਾਰਡਵੇਅਰ ਲੇਅਰਾਂ ਨੂੰ ਹਰੀਆਂ ਫਲੈਸ਼ ਕਰੋ ਜਦੋਂ ਉਹ ਅਪਡੇਟ ਹੁੰਦੀਆਂ ਹਨ"</string>
+ <string name="show_hw_layers_updates" msgid="5645728765605699821">"ਹਾਰਡਵੇਅਰ ਲੇਅਰਾਂ ਦੇ ਅੱਪਡੇਟਾਂ ਦਿਖਾਓ"</string>
+ <string name="show_hw_layers_updates_summary" msgid="5296917233236661465">"ਹਾਰਡਵੇਅਰ ਲੇਅਰਾਂ ਹਰੀਆਂ ਫਲੈਸ਼ ਕਰੋ ਜਦੋਂ ਉਹ ਅੱਪਡੇਟ ਹੁੰਦੀਆਂ ਹਨ"</string>
<string name="debug_hw_overdraw" msgid="2968692419951565417">"GPU ਓਵਰਡ੍ਰਾ ਡੀਬਗ ਕਰੋ"</string>
<string name="debug_hw_renderer" msgid="7568529019431785816">"GPU ਰੈਂਡਰਰ ਸੈੱਟ ਕਰੋ"</string>
<string name="disable_overlays" msgid="2074488440505934665">"HW ਓਵਰਲੇਜ ਨੂੰ ਅਸਮਰੱਥ ਬਣਾਓ"</string>
@@ -386,6 +386,6 @@
<string name="active_input_method_subtypes" msgid="3596398805424733238">"ਸਰਗਰਮ ਇਨਪੁਟ ਵਿਧੀਆਂ"</string>
<string name="use_system_language_to_select_input_method_subtypes" msgid="5747329075020379587">"ਸਿਸਟਮ ਭਾਸ਼ਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="failed_to_open_app_settings_toast" msgid="1251067459298072462">"<xliff:g id="SPELL_APPLICATION_NAME">%1$s</xliff:g> ਲਈ ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹਣ ਵਿੱਚ ਅਸਫਲ"</string>
- <string name="ime_security_warning" msgid="4135828934735934248">"ਇਹ ਇਨਪੁਟ ਵਿਧੀ ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਾਈਪ ਕੀਤਾ ਜਾਣ ਵਾਲਾ ਸਾਰਾ ਟੈਕਸਟ ਇਕੱਤਰ ਕਰਨ ਵਿੱਚ ਸਮਰੱਥ ਹੋ ਸਕਦਾ ਹੈ, ਨਿੱਜੀ ਡੈਟਾ ਸਮੇਤ ਜਿਵੇਂ ਪਾਸਵਰਡ ਅਤੇ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਨੰਬਰ। ਇਹ <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>ਐਪ ਤੋਂ ਆਉਂਦਾ ਹੈ। ਕੀ ਇਹ ਸਪੈੱਲ ਚੈਕਰ ਵਰਤਣਾ ਹੈ?"</string>
+ <string name="ime_security_warning" msgid="4135828934735934248">"ਇਹ ਇਨਪੁੱਟ ਵਿਧੀ ਤੁਹਾਡੇ ਵੱਲੋਂ ਟਾਈਪ ਕੀਤੇ ਜਾਣ ਵਾਲੀ ਸਾਰੀ ਲਿਖਤ ਇਕੱਤਰ ਕਰਨ ਵਿੱਚ ਸਮਰੱਥ ਹੋ ਸਕਦੀ ਹੈ, ਨਿੱਜੀ ਡਾਟਾ ਸਮੇਤ ਜਿਵੇਂ ਪਾਸਵਰਡ ਅਤੇ ਕ੍ਰੈਡਿਟ ਕਾਰਡ ਨੰਬਰ। ਇਹ <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>ਐਪ ਤੋਂ ਆਉਂਦਾ ਹੈ। ਕੀ ਇਸ ਇਨਪੁੱਟ ਵਿਧੀ ਨੂੰ ਵਰਤਣਾ ਹੈ?"</string>
<string name="direct_boot_unaware_dialog_message" msgid="7870273558547549125">"ਨੋਟ ਕਰੋ: ਰੀਬੂਟ ਤੋਂ ਬਾਅਦ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਆਪਣਾ ਫ਼ੋਨ ਅਨਲੌਕ ਨਹੀਂ ਕਰਦੇ ਤਦ ਤੱਕ ਇਹ ਐਪ ਚਾਲੂ ਨਹੀਂ ਹੋ ਸਕਦੀ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pl/arrays.xml b/packages/SettingsLib/res/values-pl/arrays.xml
index 175d11bafcfb..94f497c923e5 100644
--- a/packages/SettingsLib/res/values-pl/arrays.xml
+++ b/packages/SettingsLib/res/values-pl/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Użyj wyboru systemu (domyślnie)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
index 19bd0d32fd79..a5f5f5c0dc0a 100644
--- a/packages/SettingsLib/res/values-pt-rBR/arrays.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Usar seleção do sistema (padrão)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="2091430979086738145">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Ativar codecs opcionais"</item>
+ <item msgid="3304843301758635896">"Desativar codecs opcionais"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Usar seleção do sistema (padrão)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="298198075927343893">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Ativar codecs opcionais"</item>
+ <item msgid="741805482892725657">"Desativar codecs opcionais"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Usar seleção do sistema (padrão)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-pt-rPT/arrays.xml b/packages/SettingsLib/res/values-pt-rPT/arrays.xml
index 833c7959997e..87dbe752c644 100644
--- a/packages/SettingsLib/res/values-pt-rPT/arrays.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Utilizar seleção do sistema (predef.)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="2091430979086738145">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Ativar codecs opcionais"</item>
+ <item msgid="3304843301758635896">"Desativar codecs opcionais"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Utilizar seleção do sistema (predef.)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="298198075927343893">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Ativar codecs opcionais"</item>
+ <item msgid="741805482892725657">"Desativar codecs opcionais"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Utilizar seleção do sistema (predef.)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml
index 19bd0d32fd79..a5f5f5c0dc0a 100644
--- a/packages/SettingsLib/res/values-pt/arrays.xml
+++ b/packages/SettingsLib/res/values-pt/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Usar seleção do sistema (padrão)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="2091430979086738145">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Ativar codecs opcionais"</item>
+ <item msgid="3304843301758635896">"Desativar codecs opcionais"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Usar seleção do sistema (padrão)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="298198075927343893">"Áudio <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Ativar codecs opcionais"</item>
+ <item msgid="741805482892725657">"Desativar codecs opcionais"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Usar seleção do sistema (padrão)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml
index d6488954f45d..62a198298143 100644
--- a/packages/SettingsLib/res/values-ro/arrays.xml
+++ b/packages/SettingsLib/res/values-ro/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Folosiți selectarea sist. (prestabilit)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-ru/arrays.xml b/packages/SettingsLib/res/values-ru/arrays.xml
index a8315cb81f61..abebbe7664bd 100644
--- a/packages/SettingsLib/res/values-ru/arrays.xml
+++ b/packages/SettingsLib/res/values-ru/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Выбор системы (по умолчанию)"</item>
<item msgid="8895532488906185219">"44,1 кГц"</item>
diff --git a/packages/SettingsLib/res/values-si/arrays.xml b/packages/SettingsLib/res/values-si/arrays.xml
index a3c4934dca1a..3fd6b7e3100d 100644
--- a/packages/SettingsLib/res/values-si/arrays.xml
+++ b/packages/SettingsLib/res/values-si/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"පද්ධති තේරීම භාවිත කරන්න (පෙරනිමි)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-sk/arrays.xml b/packages/SettingsLib/res/values-sk/arrays.xml
index dbffb0c120d2..d28e53013d89 100644
--- a/packages/SettingsLib/res/values-sk/arrays.xml
+++ b/packages/SettingsLib/res/values-sk/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Použiť voľbu systému (predvolené)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml
index 699409662c76..e09524088469 100644
--- a/packages/SettingsLib/res/values-sl/arrays.xml
+++ b/packages/SettingsLib/res/values-sl/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Uporabi sistemsko izbiro (privzeto)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-sq/arrays.xml b/packages/SettingsLib/res/values-sq/arrays.xml
index 5f6845013125..7fa2622db8ea 100644
--- a/packages/SettingsLib/res/values-sq/arrays.xml
+++ b/packages/SettingsLib/res/values-sq/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Përdor përzgjedhjen e sistemit (e parazgjedhur)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-sr/arrays.xml b/packages/SettingsLib/res/values-sr/arrays.xml
index 8c79f56f6bff..4e2d1021cd76 100644
--- a/packages/SettingsLib/res/values-sr/arrays.xml
+++ b/packages/SettingsLib/res/values-sr/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Користи избор система (подразумевано)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml
index 008a2df6857a..b9b30be1433f 100644
--- a/packages/SettingsLib/res/values-sv/arrays.xml
+++ b/packages/SettingsLib/res/values-sv/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Använd systemval (standardinställning)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-sw/arrays.xml b/packages/SettingsLib/res/values-sw/arrays.xml
index 70553680186a..556199e3ef61 100644
--- a/packages/SettingsLib/res/values-sw/arrays.xml
+++ b/packages/SettingsLib/res/values-sw/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Tumia Uteuzi wa Mfumo (Chaguo-msingi)"</item>
<item msgid="8895532488906185219">"kHz 44.1"</item>
diff --git a/packages/SettingsLib/res/values-ta/arrays.xml b/packages/SettingsLib/res/values-ta/arrays.xml
index d45034de118f..1c28912eb3fa 100644
--- a/packages/SettingsLib/res/values-ta/arrays.xml
+++ b/packages/SettingsLib/res/values-ta/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"சாதனத் தேர்வைப் பயன்படுத்து (இயல்பு)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml
index 7061ff1f8c93..fbdfbe1ace66 100644
--- a/packages/SettingsLib/res/values-te/arrays.xml
+++ b/packages/SettingsLib/res/values-te/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"సిస్టమ్ ఎంపికను ఉపయోగించండి (డిఫాల్ట్)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index e868f111d9be..6b43c6cc9d61 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -33,14 +33,14 @@
<string name="wifi_check_password_try_again" msgid="516958988102584767">"పాస్‌వర్డ్‌ను తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి"</string>
<string name="wifi_not_in_range" msgid="1136191511238508967">"పరిధిలో లేదు"</string>
<string name="wifi_no_internet_no_reconnect" msgid="5724903347310541706">"స్వయంచాలకంగా కనెక్ట్ కాదు"</string>
- <string name="wifi_no_internet" msgid="3880396223819116454">"ఇంటర్నెట్ ప్రాప్యత లేదు"</string>
+ <string name="wifi_no_internet" msgid="3880396223819116454">"ఇంటర్నెట్ యాక్సెస్ లేదు"</string>
<string name="saved_network" msgid="4352716707126620811">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా సేవ్ చేయబడింది"</string>
<string name="connected_via_network_scorer" msgid="5713793306870815341">"%1$s ద్వారా స్వయంచాలకంగా కనెక్ట్ చేయబడింది"</string>
<string name="connected_via_network_scorer_default" msgid="7867260222020343104">"నెట్‌వర్క్ రేటింగ్ ప్రదాత ద్వారా స్వయంచాలకంగా కనెక్ట్ చేయబడింది"</string>
<string name="connected_via_passpoint" msgid="2826205693803088747">"%1$s ద్వారా కనెక్ట్ చేయబడింది"</string>
<string name="available_via_passpoint" msgid="1617440946846329613">"%1$s ద్వారా అందుబాటులో ఉంది"</string>
<string name="wifi_connected_no_internet" msgid="3149853966840874992">"కనెక్ట్ చేయబడింది, ఇంటర్నెట్ లేదు"</string>
- <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"ప్రాప్యత పాయింట్ తాత్కాలికంగా పూర్తయింది"</string>
+ <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"యాక్సెస్ పాయింట్ తాత్కాలికంగా నిండుకుంది"</string>
<string name="connected_via_carrier" msgid="7583780074526041912">"%1$s ద్వారా కనెక్ట్ చేయబడింది"</string>
<string name="available_via_carrier" msgid="1469036129740799053">"%1$s ద్వారా అందుబాటులో ఉంది"</string>
<string name="speed_label_very_slow" msgid="1867055264243608530">"చాలా నెమ్మది"</string>
@@ -57,7 +57,7 @@
<string name="bluetooth_pairing" msgid="1426882272690346242">"జత చేస్తోంది..."</string>
<string name="bluetooth_connected_no_headset" msgid="2866994875046035609">"కనెక్ట్ చేయబడింది (ఫోన్‌ కాదు)"</string>
<string name="bluetooth_connected_no_a2dp" msgid="4576188601581440337">"కనెక్ట్ చేయబడింది (మీడియా కాదు)"</string>
- <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"కనెక్ట్ చేయబడింది (సందేశ ప్రాప్యత లేదు)"</string>
+ <string name="bluetooth_connected_no_map" msgid="6504436917057479986">"కనెక్ట్ చేయబడింది (సందేశ యాక్సెస్ లేదు)"</string>
<string name="bluetooth_connected_no_headset_no_a2dp" msgid="9195757766755553810">"కనెక్ట్ చేయబడింది (ఫోన్ లేదా మీడియా కాకుండా)"</string>
<string name="bluetooth_connected_battery_level" msgid="7049181126136692368">"కనెక్ట్ చేయబడింది, బ్యాటరీ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="bluetooth_connected_no_headset_battery_level" msgid="5504193961248406027">"కనెక్ట్ చేయబడింది (ఫోన్ కాదు), బ్యాటరీ <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
@@ -67,12 +67,12 @@
<string name="bluetooth_profile_headset" msgid="7815495680863246034">"ఫోన్ కాల్‌లు"</string>
<string name="bluetooth_profile_opp" msgid="9168139293654233697">"ఫైల్ బదిలీ"</string>
<string name="bluetooth_profile_hid" msgid="3680729023366986480">"ఇన్‌పుట్ పరికరం"</string>
- <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ఇంటర్నెట్ ప్రాప్యత"</string>
+ <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ఇంటర్నెట్ యాక్సెస్"</string>
<string name="bluetooth_profile_pbap" msgid="5372051906968576809">"పరిచయ భాగస్వామ్యం"</string>
<string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"పరిచయ భాగస్వామ్యం కోసం ఉపయోగించు"</string>
<string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ఇంటర్నెట్ కనెక్షన్ భాగస్వామ్యం"</string>
<string name="bluetooth_profile_map" msgid="1019763341565580450">"వచన సందేశాలు"</string>
- <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM ప్రాప్యత"</string>
+ <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM యాక్సెస్"</string>
<string name="bluetooth_profile_a2dp_high_quality" msgid="5444517801472820055">"HD ఆడియో: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string>
<string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="8510588052415438887">"HD ఆడియో"</string>
<string name="bluetooth_a2dp_profile_summary_connected" msgid="963376081347721598">"మీడియా ఆడియోకు కనెక్ట్ చేయబడింది"</string>
@@ -82,11 +82,11 @@
<string name="bluetooth_sap_profile_summary_connected" msgid="8561765057453083838">"SAPకి కనెక్ట్ చేయబడింది"</string>
<string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ఫైల్ బదిలీ సర్వర్‌కు కనెక్ట్ చేయబడలేదు"</string>
<string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ఇన్‌పుట్ పరికరానికి కనెక్ట్ చేయబడింది"</string>
- <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ఇంటర్నెట్ ప్రాప్యత కోసం పరికరానికి కనెక్ట్ చేయబడింది"</string>
+ <string name="bluetooth_pan_user_profile_summary_connected" msgid="4602294638909590612">"ఇంటర్నెట్ యాక్సెస్ కోసం పరికరానికి కనెక్ట్ చేయబడింది"</string>
<string name="bluetooth_pan_nap_profile_summary_connected" msgid="1561383706411975199">"స్థానిక ఇంటర్నెట్ కనెక్షన్‌ను పరికరంతో భాగస్వామ్యం చేయడం"</string>
- <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ఇంటర్నెట్ ప్రాప్యత కోసం ఉపయోగించు"</string>
+ <string name="bluetooth_pan_profile_summary_use_for" msgid="5664884523822068653">"ఇంటర్నెట్ యాక్సెస్ కోసం ఉపయోగించు"</string>
<string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"మ్యాప్ కోసం ఉపయోగించు"</string>
- <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM ప్రాప్యత కోసం ఉపయోగించబడుతుంది"</string>
+ <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM యాక్సెస్ కోసం ఉపయోగించబడుతుంది"</string>
<string name="bluetooth_a2dp_profile_summary_use_for" msgid="4630849022250168427">"మీడియా ఆడియో కోసం ఉపయోగించు"</string>
<string name="bluetooth_headset_profile_summary_use_for" msgid="8705753622443862627">"ఫోన్ ఆడియో కోసం ఉపయోగించు"</string>
<string name="bluetooth_opp_profile_summary_use_for" msgid="1255674547144769756">"ఫైల్ బదిలీ కోసం ఉపయోగించు"</string>
@@ -287,7 +287,7 @@
<string name="transition_animation_scale_title" msgid="387527540523595875">"పరివర్తన యానిమేషన్ ప్రమాణం"</string>
<string name="animator_duration_scale_title" msgid="3406722410819934083">"యానిమేటర్ వ్యవధి ప్రమాణం"</string>
<string name="overlay_display_devices_title" msgid="5364176287998398539">"ప్రత్యామ్నాయ ప్రదర్శనలను అనుకరించండి"</string>
- <string name="debug_applications_category" msgid="4206913653849771549">"అనువర్తనాలు"</string>
+ <string name="debug_applications_category" msgid="4206913653849771549">"యాప్‌లు"</string>
<string name="immediately_destroy_activities" msgid="1579659389568133959">"కార్యాచరణలను ఉంచవద్దు"</string>
<string name="immediately_destroy_activities_summary" msgid="3592221124808773368">"ప్రతి కార్యాచరణను వినియోగదారు నిష్క్రమించిన వెంటనే తొలగించండి"</string>
<string name="app_process_limit_title" msgid="4280600650253107163">"నేపథ్య ప్రాసెస్ పరిమితి"</string>
@@ -363,7 +363,7 @@
<string name="disabled" msgid="9206776641295849915">"నిలిపివేయబడింది"</string>
<string name="external_source_trusted" msgid="2707996266575928037">"అనుమతించినవి"</string>
<string name="external_source_untrusted" msgid="2677442511837596726">"అనుమతించబడలేదు"</string>
- <string name="install_other_apps" msgid="6986686991775883017">"తెలియని అనువర్తనాలను ఇన్‌స్టాల్ చేయండి"</string>
+ <string name="install_other_apps" msgid="6986686991775883017">"తెలియని యాప్‌లను ఇన్‌స్టాల్ చేయండి"</string>
<string name="home" msgid="3256884684164448244">"సెట్టింగ్‌ల హోమ్"</string>
<string-array name="battery_labels">
<item msgid="8494684293649631252">"0%"</item>
diff --git a/packages/SettingsLib/res/values-th/arrays.xml b/packages/SettingsLib/res/values-th/arrays.xml
index 4d42934c4fc1..201db5bb6ca9 100644
--- a/packages/SettingsLib/res/values-th/arrays.xml
+++ b/packages/SettingsLib/res/values-th/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"ใช้การเลือกระบบ (ค่าเริ่มต้น)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-tl/arrays.xml b/packages/SettingsLib/res/values-tl/arrays.xml
index e6c47daa13e5..f913bc4d9494 100644
--- a/packages/SettingsLib/res/values-tl/arrays.xml
+++ b/packages/SettingsLib/res/values-tl/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Gamitin ang Pagpili ng System (Default)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml
index a76f0f107cf9..30c44ca9faf6 100644
--- a/packages/SettingsLib/res/values-tr/arrays.xml
+++ b/packages/SettingsLib/res/values-tr/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Sistem Seçimini Kullan (Varsayılan)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-uk/arrays.xml b/packages/SettingsLib/res/values-uk/arrays.xml
index aac23570cd6b..76b1b16ef14e 100644
--- a/packages/SettingsLib/res/values-uk/arrays.xml
+++ b/packages/SettingsLib/res/values-uk/arrays.xml
@@ -68,10 +68,26 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <string-array name="bluetooth_a2dp_codec_titles">
+ <item msgid="7065842274271279580">"Використовувати вибір системи (за умовчанням)"</item>
+ <item msgid="7539690996561263909">"SBC"</item>
+ <item msgid="686685526567131661">"AAC"</item>
+ <item msgid="5254942598247222737">"Аудіо <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="2091430979086738145">"Аудіо <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="6751080638867012696">"LDAC"</item>
+ <item msgid="723675059572222462">"Увімкнути додаткові кодеки"</item>
+ <item msgid="3304843301758635896">"Вимкнути додаткові кодеки"</item>
+ </string-array>
+ <string-array name="bluetooth_a2dp_codec_summaries">
+ <item msgid="5062108632402595000">"Використовувати вибір системи (за умовчанням)"</item>
+ <item msgid="6898329690939802290">"SBC"</item>
+ <item msgid="6839647709301342559">"AAC"</item>
+ <item msgid="7848030269621918608">"Аудіо <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g>"</item>
+ <item msgid="298198075927343893">"Аудіо <xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX_HD">aptX™ HD</xliff:g>"</item>
+ <item msgid="7950781694447359344">"LDAC"</item>
+ <item msgid="2209680154067241740">"Увімкнути додаткові кодеки"</item>
+ <item msgid="741805482892725657">"Вимкнути додаткові кодеки"</item>
+ </string-array>
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Використовувати вибір системи (за умовчанням)"</item>
<item msgid="8895532488906185219">"44,1 кГц"</item>
diff --git a/packages/SettingsLib/res/values-ur/arrays.xml b/packages/SettingsLib/res/values-ur/arrays.xml
index 631d87e0da30..d922361b8fac 100644
--- a/packages/SettingsLib/res/values-ur/arrays.xml
+++ b/packages/SettingsLib/res/values-ur/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"سسٹم انتخاب کا استعمال کریں (ڈیفالٹ)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-uz/arrays.xml b/packages/SettingsLib/res/values-uz/arrays.xml
index 08b4112b9a24..9d75b5184e3c 100644
--- a/packages/SettingsLib/res/values-uz/arrays.xml
+++ b/packages/SettingsLib/res/values-uz/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Tizim tanlovi (birlamchi)"</item>
<item msgid="8895532488906185219">"44.1 kGs"</item>
diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml
index 966fcea80fa5..b87bd62ad64c 100644
--- a/packages/SettingsLib/res/values-vi/arrays.xml
+++ b/packages/SettingsLib/res/values-vi/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Sử dụng lựa chọn hệ thống (Mặc định)"</item>
<item msgid="8895532488906185219">"44,1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-zh-rCN/arrays.xml b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
index f53b8ff70818..ec5915812632 100644
--- a/packages/SettingsLib/res/values-zh-rCN/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"使用系统选择(默认)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-zh-rHK/arrays.xml b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
index 1047c5e81f9b..60d2a95af9aa 100644
--- a/packages/SettingsLib/res/values-zh-rHK/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"使用系統選擇 (預設)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-zh-rTW/arrays.xml b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
index 915fbd82a237..482b871b04d9 100644
--- a/packages/SettingsLib/res/values-zh-rTW/arrays.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"avrcp15"</item>
<item msgid="7142710449249088270">"avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"使用系統選擇 (預設)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values-zu/arrays.xml b/packages/SettingsLib/res/values-zu/arrays.xml
index 98a1bf972dba..6ad5a45e0ff7 100644
--- a/packages/SettingsLib/res/values-zu/arrays.xml
+++ b/packages/SettingsLib/res/values-zu/arrays.xml
@@ -68,10 +68,10 @@
<item msgid="1913619118958233129">"I-avrcp15"</item>
<item msgid="7142710449249088270">"I-avrcp16"</item>
</string-array>
- <!-- no translation found for bluetooth_a2dp_codec_titles:3 (965655874372831982) -->
- <!-- no translation found for bluetooth_a2dp_codec_titles:4 (1736964107585972103) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (3558743545747527853) -->
- <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (9167103241281353659) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:3 (5254942598247222737) -->
+ <!-- no translation found for bluetooth_a2dp_codec_titles:4 (2091430979086738145) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:3 (7848030269621918608) -->
+ <!-- no translation found for bluetooth_a2dp_codec_summaries:4 (298198075927343893) -->
<string-array name="bluetooth_a2dp_codec_sample_rate_titles">
<item msgid="3093023430402746802">"Sebenzisa ukukhetha kwesistimu (Okuzenzakalelayo)"</item>
<item msgid="8895532488906185219">"44.1 kHz"</item>
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index 7b51725f7a16..bd884a3c9729 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -484,6 +484,8 @@
<string name="mobile_data_always_on">Mobile data always active</string>
<!-- Setting Checkbox title whether to enable hardware acceleration for tethering. [CHAR LIMIT=80] -->
<string name="tethering_hardware_offload">Tethering hardware acceleration</string>
+ <!-- Setting Checkbox title for showing Bluetooth devices without names -->
+ <string name="bluetooth_show_devices_without_names">Show Bluetooth devices without names</string>
<!-- Setting Checkbox title for disabling Bluetooth absolute volume -->
<string name="bluetooth_disable_absolute_volume">Disable absolute volume</string>
<!-- Setting Checkbox title for enabling Bluetooth inband ringing -->
@@ -568,12 +570,13 @@
<string name="verify_apps_over_usb_title">Verify apps over USB</string>
<!-- Summary of checkbox setting to perform package verification on apps installed over USB/ADT/ADB [CHAR LIMIT=NONE] -->
<string name="verify_apps_over_usb_summary">Check apps installed via ADB/ADT for harmful behavior.</string>
+ <!-- Summary of checkbox for showing Bluetooth devices without names -->
+ <string name="bluetooth_show_devices_without_names_summary">Bluetooth devices without names (MAC addresses only) will be displayed</string>
<!-- Summary of checkbox for disabling Bluetooth absolute volume -->
<string name="bluetooth_disable_absolute_volume_summary">Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control.</string>
<!-- Summary of checkbox for enabling Bluetooth inband ringing -->
<string name="bluetooth_enable_inband_ringing_summary">Allow ringtones on the phone to be played on Bluetooth headsets</string>
-
<!-- Title of checkbox setting that enables the terminal app. [CHAR LIMIT=32] -->
<string name="enable_terminal_title">Local terminal</string>
<!-- Summary of checkbox setting that enables the terminal app. [CHAR LIMIT=64] -->
diff --git a/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java b/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java
index ebb5d19eb6bb..78a9064f1400 100644
--- a/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java
@@ -76,16 +76,17 @@ public class DeviceInfoUtils {
public static String formatKernelVersion(String rawKernelVersion) {
// Example (see tests for more):
- // Linux version 3.0.31-g6fb96c9 (android-build@xxx.xxx.xxx.xxx.com) \
- // (gcc version 4.6.x-xxx 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT \
- // Thu Jun 28 11:02:39 PDT 2012
-
+ // Linux version 4.9.29-g958411d (android-build@xyz) (Android clang version 3.8.256229 \
+ // (based on LLVM 3.8.256229)) #1 SMP PREEMPT Wed Jun 7 00:06:03 CST 2017
+ // Linux version 4.9.29-geb63318482a7 (android-build@xyz) (gcc version 4.9.x 20150123 \
+ // (prerelease) (GCC) ) #1 SMP PREEMPT Thu Jun 1 03:41:57 UTC 2017
final String PROC_VERSION_REGEX =
"Linux version (\\S+) " + /* group 1: "3.0.31-g6fb96c9" */
- "\\((\\S+)\\)" + /* group 2: "x@y.com" (kernel builder) */
- ".*(#\\d+)" + /* group 3: "#1" */
- /* group 4: "Thu Jun 28 11:02:39 PDT 2012" */
- ".*((?:Sun|Mon|Tue|Wed|Thu|Fri|Sat).+)";
+ "\\((\\S+?)\\) " + /* group 2: "(x@y.com) " */
+ "\\((.+?)\\) " + /* group 3: kernel toolchain version information */
+ "(#\\d+) " + /* group 4: "#1" */
+ "(?:.*?)?" + /* ignore: optional SMP, PREEMPT, and any CONFIG_FLAGS */
+ "((Sun|Mon|Tue|Wed|Thu|Fri|Sat).+)"; /* group 5: "Thu Jun 28 11:02:39 PDT 2012" */
Matcher m = Pattern.compile(PROC_VERSION_REGEX).matcher(rawKernelVersion);
if (!m.matches()) {
@@ -96,9 +97,9 @@ public class DeviceInfoUtils {
+ " groups");
return "Unavailable";
}
- return m.group(1) + "\n" + // 3.0.31-g6fb96c9
- m.group(2) + " " + m.group(3) + "\n" + // x@y.com #1
- m.group(4); // Thu Jun 28 11:02:39 PDT 2012
+ return m.group(1) + " ("+ m.group(3) + ")\n" + // 3.0.31-g6fb96c9 (toolchain version)
+ m.group(2) + " " + m.group(4) + "\n" + // x@y.com #1
+ m.group(5); // Thu Jun 28 11:02:39 PDT 2012
}
/**
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java
index 1285ed87718e..56a3ee3a28f7 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/phone/NavBarButtonProvider.java
@@ -27,7 +27,7 @@ public interface NavBarButtonProvider extends Plugin {
public static final String ACTION = "com.android.systemui.action.PLUGIN_NAV_BUTTON";
- public static final int VERSION = 3;
+ public static final int VERSION = 2;
/**
* Returns a view in the nav bar. If the id is set "back", "home", "recent_apps", "menu",
@@ -46,6 +46,9 @@ public interface NavBarButtonProvider extends Plugin {
void setVertical(boolean vertical);
+ default void setCarMode(boolean carMode) {
+ }
+
void setDarkIntensity(float intensity);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
index 8c1b736d5698..4b377153e558 100644
--- a/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/SwipeHelper.java
@@ -83,6 +83,7 @@ public class SwipeHelper implements Gefingerpoken {
private boolean mMenuRowIntercepting;
private boolean mLongPressSent;
+ private LongPressListener mLongPressListener;
private Runnable mWatchLongPress;
private final long mLongPressTimeout;
@@ -114,6 +115,10 @@ public class SwipeHelper implements Gefingerpoken {
mFlingAnimationUtils = new FlingAnimationUtils(context, getMaxEscapeAnimDuration() / 1000f);
}
+ public void setLongPressListener(LongPressListener listener) {
+ mLongPressListener = listener;
+ }
+
public void setDensityScale(float densityScale) {
mDensityScale = densityScale;
}
@@ -252,7 +257,7 @@ public class SwipeHelper implements Gefingerpoken {
}
}
- public void cancelLongPress() {
+ public void removeLongPressCallback() {
if (mWatchLongPress != null) {
mHandler.removeCallbacks(mWatchLongPress);
mWatchLongPress = null;
@@ -276,14 +281,6 @@ public class SwipeHelper implements Gefingerpoken {
mVelocityTracker.clear();
mCurrView = mCallback.getChildAtPosition(ev);
- // The SwipeHelper sends its own long-press, don't let the view send a dupe.
- // Queue up a cancelLongPress on the view a few ms after we see a down event.
- mHandler.post(() -> {
- if (mCurrView != null) {
- mCurrView.cancelLongPress();
- }
- });
-
if (mCurrView != null) {
onDownUpdate(mCurrView, ev);
mCanCurrViewBeDimissed = mCallback.canChildBeDismissed(mCurrView);
@@ -291,26 +288,33 @@ public class SwipeHelper implements Gefingerpoken {
mInitialTouchPos = getPos(ev);
mPerpendicularInitialTouchPos = getPerpendicularPos(ev);
mTranslation = getTranslation(mCurrView);
- if (mWatchLongPress == null) {
- mWatchLongPress = new Runnable() {
- @Override
- public void run() {
- if (mCurrView != null && !mLongPressSent) {
- mLongPressSent = true;
- mCurrView.getLocationOnScreen(mTmpPos);
- final int x = (int) ev.getRawX() - mTmpPos[0];
- final int y = (int) ev.getRawY() - mTmpPos[1];
- if (mCurrView instanceof ExpandableNotificationRow) {
- ExpandableNotificationRow currRow =
- (ExpandableNotificationRow) mCurrView;
- currRow.setLongPressPosition(x, y);
- currRow.performLongClick(x, y);
+ if (mLongPressListener != null) {
+ if (mWatchLongPress == null) {
+ mWatchLongPress = new Runnable() {
+ @Override
+ public void run() {
+ if (mCurrView != null && !mLongPressSent) {
+ mLongPressSent = true;
+ mCurrView.sendAccessibilityEvent(
+ AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
+ mCurrView.getLocationOnScreen(mTmpPos);
+ final int x = (int) ev.getRawX() - mTmpPos[0];
+ final int y = (int) ev.getRawY() - mTmpPos[1];
+ MenuItem menuItem = null;
+ if (mCurrView instanceof ExpandableNotificationRow) {
+ menuItem = ((ExpandableNotificationRow) mCurrView)
+ .getProvider().getLongpressMenuItem(mContext);
+ }
+ if (menuItem != null) {
+ mLongPressListener.onLongPress(mCurrView, x, y,
+ menuItem);
+ }
}
}
- }
- };
+ };
+ }
+ mHandler.postDelayed(mWatchLongPress, mLongPressTimeout);
}
- mHandler.postDelayed(mWatchLongPress, mLongPressTimeout);
}
break;
@@ -327,7 +331,7 @@ public class SwipeHelper implements Gefingerpoken {
mDragging = true;
mInitialTouchPos = getPos(ev);
mTranslation = getTranslation(mCurrView);
- cancelLongPress();
+ removeLongPressCallback();
}
}
break;
@@ -339,7 +343,7 @@ public class SwipeHelper implements Gefingerpoken {
mCurrView = null;
mLongPressSent = false;
mMenuRowIntercepting = false;
- cancelLongPress();
+ removeLongPressCallback();
if (captured) return true;
break;
}
@@ -582,7 +586,7 @@ public class SwipeHelper implements Gefingerpoken {
// We are not doing anything, make sure the long press callback
// is not still ticking like a bomb waiting to go off.
- cancelLongPress();
+ removeLongPressCallback();
return false;
}
}
@@ -730,4 +734,15 @@ public class SwipeHelper implements Gefingerpoken {
*/
float getFalsingThresholdFactor();
}
+
+ /**
+ * Equivalent to View.OnLongClickListener with coordinates
+ */
+ public interface LongPressListener {
+ /**
+ * Equivalent to {@link View.OnLongClickListener#onLongClick(View)} with coordinates
+ * @return whether the longpress was handled
+ */
+ boolean onLongPress(View v, int x, int y, MenuItem item);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
index b43626fa5003..7bc1a39dfff5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java
@@ -172,14 +172,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
private boolean mShowNoBackground;
private ExpandableNotificationRow mNotificationParent;
private OnExpandClickListener mOnExpandClickListener;
-
- // Listener will be called when receiving a long click event.
- // Use #setLongPressPosition to optionally assign positional data with the long press.
- private LongPressListener mLongPressListener;
- private boolean mLongPressPositionSet = false;
- private int mLongPressX = 0;
- private int mLongPressY = 0;
-
private boolean mGroupExpansionChanging;
/**
@@ -781,16 +773,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
mOnExpandClickListener = onExpandClickListener;
}
- public void setLongPressListener(LongPressListener longPressListener) {
- mLongPressListener = longPressListener;
- }
-
- public void setLongPressPosition(int x, int y) {
- mLongPressPositionSet = true;
- mLongPressX = x;
- mLongPressY = y;
- }
-
@Override
public void setOnClickListener(@Nullable OnClickListener l) {
super.setOnClickListener(l);
@@ -1339,25 +1321,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
mTranslateableViews.remove(mChildrenContainerStub);
mTranslateableViews.remove(mGutsStub);
}
-
- setOnLongClickListener((View v) -> {
- createMenu();
- MenuItem menuItem = getProvider().getLongpressMenuItem(mContext);
- if (mLongPressListener != null && menuItem != null) {
- int x, y;
- if (mLongPressPositionSet) {
- x = mLongPressX;
- y = mLongPressY;
- } else {
- // No position assigned - use the center of the View
- x = getWidth() / 2;
- y = getHeight() / 2;
- }
- mLongPressPositionSet = false;
- return mLongPressListener.onLongPress(this, x, y, menuItem);
- }
- return false;
- });
}
public void resetTranslation() {
@@ -2341,15 +2304,4 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
protected void setChildrenContainer(NotificationChildrenContainer childrenContainer) {
mChildrenContainer = childrenContainer;
}
-
- /**
- * Equivalent to View.OnLongClickListener with coordinates
- */
- public interface LongPressListener {
- /**
- * Equivalent to {@link View.OnLongClickListener#onLongClick(View)} with coordinates
- * @return whether the longpress was handled
- */
- boolean onLongPress(View v, int x, int y, MenuItem item);
- }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
index 2c507363663c..680f693a83f8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -44,7 +44,6 @@ import com.android.systemui.fragments.FragmentHostManager;
import com.android.systemui.recents.Recents;
import com.android.systemui.recents.misc.SystemServicesProxy;
import com.android.systemui.recents.misc.SystemServicesProxy.TaskStackListener;
-import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.NotificationData;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.phone.CollapsedStatusBarFragment;
@@ -248,12 +247,11 @@ public class CarStatusBar extends StatusBar implements
}
/**
- * Returns the
- * {@link com.android.systemui.statusbar.ExpandableNotificationRow.LongPressListener} that will
- * be triggered when a notification card is long-pressed.
+ * Returns the {@link com.android.systemui.SwipeHelper.LongPressListener} that will be
+ * triggered when a notification card is long-pressed.
*/
@Override
- protected ExpandableNotificationRow.LongPressListener getNotificationLongClicker() {
+ protected SwipeHelper.LongPressListener getNotificationLongClicker() {
// For the automative use case, we do not want to the user to be able to interact with
// a notification other than a regular click. As a result, just return null for the
// long click listener.
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 2144f6f146b2..078e8189f5b3 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -703,7 +703,7 @@ public class NotificationPanelView extends PanelView implements
mInitialHeightOnTouch = mQsExpansionHeight;
mQsTracking = true;
mIntercepting = false;
- mNotificationStackScroller.cancelLongPress();
+ mNotificationStackScroller.removeLongPressCallback();
}
break;
case MotionEvent.ACTION_POINTER_UP:
@@ -739,7 +739,7 @@ public class NotificationPanelView extends PanelView implements
mInitialTouchY = y;
mInitialTouchX = x;
mIntercepting = false;
- mNotificationStackScroller.cancelLongPress();
+ mNotificationStackScroller.removeLongPressCallback();
return true;
}
break;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index a96cd790d444..2825c2f8c6b1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -165,6 +165,7 @@ import com.android.systemui.Interpolators;
import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.RecentsComponent;
+import com.android.systemui.SwipeHelper;
import com.android.systemui.SystemUI;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.UiOffloadThread;
@@ -4982,7 +4983,7 @@ public class StatusBar extends SystemUI implements DemoMode,
@Override
public void onTouchSlopExceeded() {
- mStackScroller.cancelLongPress();
+ mStackScroller.removeLongPressCallback();
mStackScroller.checkSnoozeLeavebehind();
}
@@ -5624,7 +5625,7 @@ public class StatusBar extends SystemUI implements DemoMode,
@Override
public void onDoubleTap(float screenX, float screenY) {
- if (screenX > 0 && screenY > 0 && mAmbientIndicationContainer != null
+ if (screenX > 0 && screenY > 0 && mAmbientIndicationContainer != null
&& mAmbientIndicationContainer.getVisibility() == View.VISIBLE) {
mAmbientIndicationContainer.getLocationOnScreen(mTmpInt2);
float viewX = screenX - mTmpInt2[0];
@@ -6470,15 +6471,14 @@ public class StatusBar extends SystemUI implements DemoMode,
true /* removeControls */, x, y, true /* resetMenu */);
}
- protected ExpandableNotificationRow.LongPressListener getNotificationLongClicker() {
- return new ExpandableNotificationRow.LongPressListener() {
+ protected SwipeHelper.LongPressListener getNotificationLongClicker() {
+ return new SwipeHelper.LongPressListener() {
@Override
public boolean onLongPress(View v, final int x, final int y,
MenuItem item) {
if (!(v instanceof ExpandableNotificationRow)) {
return false;
}
-
if (v.getWindowToken() == null) {
Log.e(TAG, "Trying to show notification guts, but not attached to window");
return false;
@@ -6493,7 +6493,7 @@ public class StatusBar extends SystemUI implements DemoMode,
closeAndSaveGuts(false /* removeLeavebehind */, false /* force */,
true /* removeControls */, -1 /* x */, -1 /* y */,
true /* resetMenu */);
- return true;
+ return false;
}
bindGuts(row, item);
NotificationGuts guts = row.getGuts();
@@ -6791,7 +6791,6 @@ public class StatusBar extends SystemUI implements DemoMode,
row.setOnExpandClickListener(this);
row.setRemoteViewClickHandler(mOnClickHandler);
row.setInflationCallback(this);
- row.setLongPressListener(getNotificationLongClicker());
// Get the app name.
// Note that Notification.Builder#bindHeaderAppName has similar logic
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
index 7eebdfa4963c..4e592dbed322 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java
@@ -242,7 +242,7 @@ public class NotificationStackScrollLayout extends ViewGroup
* motion.
*/
private int mMaxScrollAfterExpand;
- private ExpandableNotificationRow.LongPressListener mLongPressListener;
+ private SwipeHelper.LongPressListener mLongPressListener;
private NotificationMenuRowPlugin mCurrMenuRow;
private View mTranslatingParentView;
@@ -412,6 +412,7 @@ public class NotificationStackScrollLayout extends ViewGroup
mExpandHelper.setEventSource(this);
mExpandHelper.setScrollAdapter(this);
mSwipeHelper = new NotificationSwipeHelper(SwipeHelper.X, this, getContext());
+ mSwipeHelper.setLongPressListener(mLongPressListener);
mStackScrollAlgorithm = createStackScrollAlgorithm(context);
initView(context);
mFalsingManager = FalsingManager.getInstance(context);
@@ -885,7 +886,8 @@ public class NotificationStackScrollLayout extends ViewGroup
return firstChild != null ? firstChild.getMinHeight() : mCollapsedSize;
}
- public void setLongPressListener(ExpandableNotificationRow.LongPressListener listener) {
+ public void setLongPressListener(SwipeHelper.LongPressListener listener) {
+ mSwipeHelper.setLongPressListener(listener);
mLongPressListener = listener;
}
@@ -1161,7 +1163,7 @@ public class NotificationStackScrollLayout extends ViewGroup
if (v instanceof ExpandableNotificationRow) {
((ExpandableNotificationRow) v).setUserLocked(userLocked);
}
- cancelLongPress();
+ removeLongPressCallback();
requestDisallowInterceptTouchEvent(true);
}
@@ -2567,7 +2569,7 @@ public class NotificationStackScrollLayout extends ViewGroup
public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {
super.requestDisallowInterceptTouchEvent(disallowIntercept);
if (disallowIntercept) {
- cancelLongPress();
+ mSwipeHelper.removeLongPressCallback();
}
}
@@ -3288,7 +3290,7 @@ public class NotificationStackScrollLayout extends ViewGroup
mIsBeingDragged = isDragged;
if (isDragged) {
requestDisallowInterceptTouchEvent(true);
- cancelLongPress();
+ removeLongPressCallback();
}
}
@@ -3296,7 +3298,7 @@ public class NotificationStackScrollLayout extends ViewGroup
public void onWindowFocusChanged(boolean hasWindowFocus) {
super.onWindowFocusChanged(hasWindowFocus);
if (!hasWindowFocus) {
- cancelLongPress();
+ removeLongPressCallback();
}
}
@@ -3310,7 +3312,7 @@ public class NotificationStackScrollLayout extends ViewGroup
@Override
public void requestDisallowLongPress() {
- cancelLongPress();
+ removeLongPressCallback();
}
@Override
@@ -3318,8 +3320,8 @@ public class NotificationStackScrollLayout extends ViewGroup
mDisallowDismissInThisMotion = true;
}
- public void cancelLongPress() {
- mSwipeHelper.cancelLongPress();
+ public void removeLongPressCallback() {
+ mSwipeHelper.removeLongPressCallback();
}
@Override
diff --git a/services/core/java/com/android/server/TextServicesManagerService.java b/services/core/java/com/android/server/TextServicesManagerService.java
index 951a0734717b..7cd34065c427 100644
--- a/services/core/java/com/android/server/TextServicesManagerService.java
+++ b/services/core/java/com/android/server/TextServicesManagerService.java
@@ -16,7 +16,6 @@
package com.android.server;
-import com.android.internal.annotations.GuardedBy;
import com.android.internal.content.PackageMonitor;
import com.android.internal.inputmethod.InputMethodUtils;
import com.android.internal.textservice.ISpellCheckerService;
@@ -37,6 +36,7 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
@@ -122,13 +122,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
}
private void putSelectedSpellChecker(@Nullable String sciId) {
- if (TextUtils.isEmpty(sciId)) {
- // OK to coalesce to null, since getSelectedSpellChecker() can take care of the
- // empty data scenario.
- putString(Settings.Secure.SELECTED_SPELL_CHECKER, null);
- } else {
- putString(Settings.Secure.SELECTED_SPELL_CHECKER, sciId);
- }
+ putString(Settings.Secure.SELECTED_SPELL_CHECKER, sciId);
}
private void putSelectedSpellCheckerSubtype(int hashCode) {
@@ -157,8 +151,12 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
return mSpellCheckerMap.get(curSpellCheckerId);
}
- public void setCurrentSpellChecker(SpellCheckerInfo sci) {
- putSelectedSpellChecker(sci.getId());
+ public void setCurrentSpellChecker(@Nullable SpellCheckerInfo sci) {
+ if (sci != null) {
+ putSelectedSpellChecker(sci.getId());
+ } else {
+ putSelectedSpellChecker("");
+ }
putSelectedSpellCheckerSubtype(SpellCheckerSubtype.SUBTYPE_ID_NONE);
}
@@ -330,13 +328,11 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
tsd.initializeTextServicesData();
SpellCheckerInfo sci = tsd.getCurrentSpellChecker();
if (sci == null) {
- sci = findAvailSpellCheckerLocked(null, tsd);
- if (sci != null) {
- // Set the current spell checker if there is one or more spell checkers
- // available. In this case, "sci" is the first one in the available spell
- // checkers.
- setCurrentSpellCheckerLocked(sci, tsd);
- }
+ sci = findAvailSystemSpellCheckerLocked(null, tsd);
+ // Set the current spell checker if there is one or more system spell checkers
+ // available. In this case, "sci" is the first one in the available spell
+ // checkers.
+ setCurrentSpellCheckerLocked(sci, tsd);
}
}
@@ -355,20 +351,31 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
// TODO: Update for each locale
SpellCheckerInfo sci = tsd.getCurrentSpellChecker();
tsd.initializeTextServicesData();
- // If no spell checker is enabled, just return. The user should explicitly
+ // If spell checker is disabled, just return. The user should explicitly
// enable the spell checker.
- if (sci == null) return;
- final String packageName = sci.getPackageName();
- final int change = isPackageDisappearing(packageName);
- if (DBG) Slog.d(TAG, "Changing package name: " + packageName);
- if (// Package disappearing
- change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE
- // Package modified
- || isPackageModified(packageName)) {
- SpellCheckerInfo availSci = findAvailSpellCheckerLocked(packageName, tsd);
- // Set the spell checker settings if different than before
- if (availSci != null && !availSci.getId().equals(sci.getId())) {
- setCurrentSpellCheckerLocked(availSci, tsd);
+ if (!tsd.isSpellCheckerEnabled()) return;
+
+ if (sci == null) {
+ sci = findAvailSystemSpellCheckerLocked(null, tsd);
+ // Set the current spell checker if there is one or more system spell checkers
+ // available. In this case, "sci" is the first one in the available spell
+ // checkers.
+ setCurrentSpellCheckerLocked(sci, tsd);
+ } else {
+ final String packageName = sci.getPackageName();
+ final int change = isPackageDisappearing(packageName);
+ if (DBG) Slog.d(TAG, "Changing package name: " + packageName);
+ if (// Package disappearing
+ change == PACKAGE_PERMANENT_CHANGE || change == PACKAGE_TEMPORARY_CHANGE
+ // Package modified
+ || isPackageModified(packageName)) {
+ SpellCheckerInfo availSci =
+ findAvailSystemSpellCheckerLocked(packageName, tsd);
+ // Set the spell checker settings if different than before
+ if (availSci == null
+ || (availSci != null && !availSci.getId().equals(sci.getId()))) {
+ setCurrentSpellCheckerLocked(availSci, tsd);
+ }
}
}
}
@@ -393,9 +400,16 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
spellCheckerBindGroups.clear();
}
- private SpellCheckerInfo findAvailSpellCheckerLocked(String prefPackage,
+ private SpellCheckerInfo findAvailSystemSpellCheckerLocked(String prefPackage,
TextServicesData tsd) {
- ArrayList<SpellCheckerInfo> spellCheckerList = tsd.mSpellCheckerList;
+ // Filter the spell checker list to remove spell checker services that are not pre-installed
+ ArrayList<SpellCheckerInfo> spellCheckerList = new ArrayList<>();
+ for (SpellCheckerInfo sci : tsd.mSpellCheckerList) {
+ if ((sci.getServiceInfo().applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
+ spellCheckerList.add(sci);
+ }
+ }
+
final int spellCheckersCount = spellCheckerList.size();
if (spellCheckersCount == 0) {
Slog.w(TAG, "no available spell checker services found");
@@ -406,7 +420,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
final SpellCheckerInfo sci = spellCheckerList.get(i);
if (prefPackage.equals(sci.getPackageName())) {
if (DBG) {
- Slog.d(TAG, "findAvailSpellCheckerLocked: " + sci.getPackageName());
+ Slog.d(TAG, "findAvailSystemSpellCheckerLocked: " + sci.getPackageName());
}
return sci;
}
@@ -420,7 +434,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
final ArrayList<Locale> suitableLocales =
InputMethodUtils.getSuitableLocalesForSpellChecker(systemLocal);
if (DBG) {
- Slog.w(TAG, "findAvailSpellCheckerLocked suitableLocales="
+ Slog.w(TAG, "findAvailSystemSpellCheckerLocked suitableLocales="
+ Arrays.toString(suitableLocales.toArray(new Locale[suitableLocales.size()])));
}
final int localeCount = suitableLocales.size();
@@ -670,8 +684,8 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
}
}
- private void setCurrentSpellCheckerLocked(SpellCheckerInfo sci, TextServicesData tsd) {
- final String sciId = sci.getId();
+ private void setCurrentSpellCheckerLocked(@Nullable SpellCheckerInfo sci, TextServicesData tsd) {
+ final String sciId = (sci != null) ? sci.getId() : "";
if (DBG) {
Slog.w(TAG, "setCurrentSpellChecker: " + sciId);
}
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 51ed6b2c2937..2f3b55960c13 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -99,6 +99,7 @@ import com.android.server.backup.AccountSyncSettingsBackupHelper;
import com.android.server.content.SyncStorageEngine.AuthorityInfo;
import com.android.server.content.SyncStorageEngine.EndPoint;
import com.android.server.content.SyncStorageEngine.OnSyncRequestListener;
+import com.android.server.job.JobSchedulerInternal.JobStorePersistStats;
import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -403,12 +404,21 @@ public class SyncManager {
return (networkInfo != null) && networkInfo.isConnected();
}
+ private String getJobStats() {
+ JobSchedulerInternal js = LocalServices.getService(JobSchedulerInternal.class);
+ return "JobStats: "
+ + ((js == null) ? "(JobSchedulerInternal==null)"
+ : js.getPersistStats().toString());
+ }
+
private BroadcastReceiver mShutdownIntentReceiver =
new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.w(TAG, "Writing sync state before shutdown...");
getSyncStorageEngine().writeAllState();
+
+ mLogger.log(getJobStats());
mLogger.log("Shutting down.");
}
};
@@ -504,13 +514,11 @@ public class SyncManager {
}
}
}
- final int totalJobs = (mJobSchedulerInternal == null)
- ? -1 : mJobSchedulerInternal.countJobs();
final String summary = "Loaded persisted syncs: "
+ numPersistedPeriodicSyncs + " periodic syncs, "
+ numPersistedOneshotSyncs + " oneshot syncs, "
+ (pendingJobs.size()) + " total system server jobs, "
- + totalJobs + " total jobs.";
+ + getJobStats();
Slog.i(TAG, summary);
mLogger.log(summary);
@@ -720,7 +728,7 @@ public class SyncManager {
// the account (they run before) which is the genie is out of the bottle.
whiteListExistingSyncAdaptersIfNeeded();
- mLogger.log("Sync manager initialized.");
+ mLogger.log("Sync manager initialized: " + Build.FINGERPRINT);
}
public void onStartUser(int userHandle) {
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 8269042da24a..d0a1d9e63141 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -31,6 +31,8 @@ import android.Manifest;
import android.annotation.NonNull;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
+import android.graphics.Point;
import android.hardware.SensorManager;
import android.hardware.display.DisplayManagerGlobal;
import android.hardware.display.DisplayManagerInternal;
@@ -211,6 +213,12 @@ public final class DisplayManagerService extends SystemService {
// The virtual display adapter, or null if not registered.
private VirtualDisplayAdapter mVirtualDisplayAdapter;
+ // The stable device screen height and width. These are not tied to a specific display, even
+ // the default display, because they need to be stable over the course of the device's entire
+ // life, even if the default display changes (e.g. a new monitor is plugged into a PC-like
+ // device).
+ private Point mStableDisplaySize = new Point();
+
// Viewports of the default display and the display that should receive touch
// input from an external source. Used by the input system.
private final DisplayViewport mDefaultViewport = new DisplayViewport();
@@ -284,7 +292,10 @@ public final class DisplayManagerService extends SystemService {
// adapter is up so that we have it's configuration. We could load it lazily, but since
// we're going to have to read it in eventually we may as well do it here rather than after
// we've waited for the display to register itself with us.
- mPersistentDataStore.loadIfNeeded();
+ synchronized(mSyncRoot) {
+ mPersistentDataStore.loadIfNeeded();
+ loadStableDisplayValuesLocked();
+ }
mHandler.sendEmptyMessage(MSG_REGISTER_DEFAULT_DISPLAY_ADAPTERS);
publishBinderService(Context.DISPLAY_SERVICE, new BinderService(),
@@ -346,6 +357,34 @@ public final class DisplayManagerService extends SystemService {
return mHandler;
}
+ private void loadStableDisplayValuesLocked() {
+ final Point size = mPersistentDataStore.getStableDisplaySize();
+ if (size.x > 0 && size.y > 0) {
+ // Just set these values directly so we don't write the display persistent data again
+ // unnecessarily
+ mStableDisplaySize.set(size.x, size.y);
+ } else {
+ final Resources res = mContext.getResources();
+ final int width = res.getInteger(
+ com.android.internal.R.integer.config_stableDeviceDisplayWidth);
+ final int height = res.getInteger(
+ com.android.internal.R.integer.config_stableDeviceDisplayHeight);
+ if (width > 0 && height > 0) {
+ setStableDisplaySizeLocked(width, height);
+ }
+ }
+ }
+
+ private Point getStableDisplaySizeInternal() {
+ Point r = new Point();
+ synchronized (mSyncRoot) {
+ if (mStableDisplaySize.x > 0 && mStableDisplaySize.y > 0) {
+ r.set(mStableDisplaySize.x, mStableDisplaySize.y);
+ }
+ }
+ return r;
+ }
+
private void registerDisplayTransactionListenerInternal(
DisplayTransactionListener listener) {
// List is self-synchronized copy-on-write.
@@ -770,18 +809,6 @@ public final class DisplayManagerService extends SystemService {
if (work != null) {
work.run();
}
- if (display != null && display.getPrimaryDisplayDeviceLocked() == device) {
- int colorMode = mPersistentDataStore.getColorMode(device);
- if (colorMode == Display.COLOR_MODE_INVALID) {
- if ((device.getDisplayDeviceInfoLocked().flags
- & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0) {
- colorMode = mDefaultDisplayDefaultColorMode;
- } else {
- colorMode = Display.COLOR_MODE_DEFAULT;
- }
- }
- display.setRequestedColorModeLocked(colorMode);
- }
scheduleTraversalLocked(false);
}
@@ -886,6 +913,11 @@ public final class DisplayManagerService extends SystemService {
return null;
}
+ configureColorModeLocked(display, device);
+ if (isDefault) {
+ recordStableDisplayStatsIfNeededLocked(display);
+ }
+
mLogicalDisplays.put(displayId, display);
// Wake up waitForDefaultDisplay.
@@ -907,6 +939,40 @@ public final class DisplayManagerService extends SystemService {
return displayId;
}
+ private void configureColorModeLocked(LogicalDisplay display, DisplayDevice device) {
+ if (display.getPrimaryDisplayDeviceLocked() == device) {
+ int colorMode = mPersistentDataStore.getColorMode(device);
+ if (colorMode == Display.COLOR_MODE_INVALID) {
+ if ((device.getDisplayDeviceInfoLocked().flags
+ & DisplayDeviceInfo.FLAG_DEFAULT_DISPLAY) != 0) {
+ colorMode = mDefaultDisplayDefaultColorMode;
+ } else {
+ colorMode = Display.COLOR_MODE_DEFAULT;
+ }
+ }
+ display.setRequestedColorModeLocked(colorMode);
+ }
+ }
+
+ // If we've never recorded stable device stats for this device before and they aren't
+ // explicitly configured, go ahead and record the stable device stats now based on the status
+ // of the default display at first boot.
+ private void recordStableDisplayStatsIfNeededLocked(LogicalDisplay d) {
+ if (mStableDisplaySize.x <= 0 && mStableDisplaySize.y <= 0) {
+ DisplayInfo info = d.getDisplayInfoLocked();
+ setStableDisplaySizeLocked(info.getNaturalWidth(), info.getNaturalHeight());
+ }
+ }
+
+ private void setStableDisplaySizeLocked(int width, int height) {
+ mStableDisplaySize = new Point(width, height);
+ try {
+ mPersistentDataStore.setStableDisplaySize(mStableDisplaySize);
+ } finally {
+ mPersistentDataStore.saveIfNeeded();
+ }
+ }
+
// Updates all existing logical displays given the current set of display devices.
// Removes invalid logical displays.
// Sends notifications if needed.
@@ -1166,6 +1232,8 @@ public final class DisplayManagerService extends SystemService {
pw.println(" mDefaultDisplayDefaultColorMode=" + mDefaultDisplayDefaultColorMode);
pw.println(" mSingleDisplayDemoMode=" + mSingleDisplayDemoMode);
pw.println(" mWifiDisplayScanRequestCount=" + mWifiDisplayScanRequestCount);
+ pw.println(" mStableDisplaySize=" + mStableDisplaySize);
+
IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
ipw.increaseIndent();
@@ -1378,6 +1446,19 @@ public final class DisplayManagerService extends SystemService {
}
}
+ /**
+ * Returns the stable device display size, in pixels.
+ */
+ @Override // Binder call
+ public Point getStableDisplaySize() {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ return getStableDisplaySizeInternal();
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
@Override // Binder call
public void registerCallback(IDisplayManagerCallback callback) {
if (callback == null) {
diff --git a/services/core/java/com/android/server/display/PersistentDataStore.java b/services/core/java/com/android/server/display/PersistentDataStore.java
index 47701b99860a..34c8e22a9f1e 100644
--- a/services/core/java/com/android/server/display/PersistentDataStore.java
+++ b/services/core/java/com/android/server/display/PersistentDataStore.java
@@ -23,6 +23,7 @@ import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
+import android.graphics.Point;
import android.hardware.display.WifiDisplay;
import android.util.AtomicFile;
import android.util.Slog;
@@ -60,6 +61,10 @@ import libcore.util.Objects;
* &lt;color-mode>0&lt;/color-mode>
* &lt;/display>
* &lt;/display-states>
+ * &lt;stable-device-values>
+ * &lt;stable-display-height>1920&lt;stable-display-height>
+ * &lt;stable-display-width>1080&lt;stable-display-width>
+ * &lt;/stable-device-values>
* &lt;/display-manager-state>
* </code>
*
@@ -75,6 +80,9 @@ final class PersistentDataStore {
private final HashMap<String, DisplayState> mDisplayStates =
new HashMap<String, DisplayState>();
+ // Display values which should be stable across the device's lifetime.
+ private final StableDeviceValues mStableDeviceValues = new StableDeviceValues();
+
// The atomic file used to safely read or write the file.
private final AtomicFile mAtomicFile;
@@ -162,6 +170,7 @@ final class PersistentDataStore {
}
public boolean forgetWifiDisplay(String deviceAddress) {
+ loadIfNeeded();
int index = findRememberedWifiDisplay(deviceAddress);
if (index >= 0) {
mRememberedWifiDisplays.remove(index);
@@ -204,6 +213,18 @@ final class PersistentDataStore {
return false;
}
+ public Point getStableDisplaySize() {
+ loadIfNeeded();
+ return mStableDeviceValues.getDisplaySize();
+ }
+
+ public void setStableDisplaySize(Point size) {
+ loadIfNeeded();
+ if (mStableDeviceValues.setDisplaySize(size)) {
+ setDirty();
+ }
+ }
+
private DisplayState getDisplayState(String uniqueId, boolean createIfAbsent) {
loadIfNeeded();
DisplayState state = mDisplayStates.get(uniqueId);
@@ -290,6 +311,9 @@ final class PersistentDataStore {
if (parser.getName().equals("display-states")) {
loadDisplaysFromXml(parser);
}
+ if (parser.getName().equals("stable-device-values")) {
+ mStableDeviceValues.loadFromXml(parser);
+ }
}
}
@@ -363,6 +387,9 @@ final class PersistentDataStore {
serializer.endTag(null, "display");
}
serializer.endTag(null, "display-states");
+ serializer.startTag(null, "stable-device-values");
+ mStableDeviceValues.saveToXml(serializer);
+ serializer.endTag(null, "stable-device-values");
serializer.endTag(null, "display-manager-state");
serializer.endDocument();
}
@@ -382,6 +409,8 @@ final class PersistentDataStore {
pw.println(" " + i++ + ": " + entry.getKey());
entry.getValue().dump(pw, " ");
}
+ pw.println(" StableDeviceValues:");
+ mStableDeviceValues.dump(pw, " ");
}
private static final class DisplayState {
@@ -417,8 +446,66 @@ final class PersistentDataStore {
serializer.endTag(null, "color-mode");
}
- private void dump(final PrintWriter pw, final String prefix) {
+ public void dump(final PrintWriter pw, final String prefix) {
pw.println(prefix + "ColorMode=" + mColorMode);
}
}
+
+ private static final class StableDeviceValues {
+ private int mWidth;
+ private int mHeight;
+
+ private Point getDisplaySize() {
+ return new Point(mWidth, mHeight);
+ }
+
+ public boolean setDisplaySize(Point r) {
+ if (mWidth != r.x || mHeight != r.y) {
+ mWidth = r.x;
+ mHeight = r.y;
+ return true;
+ }
+ return false;
+ }
+
+ public void loadFromXml(XmlPullParser parser) throws IOException, XmlPullParserException {
+ final int outerDepth = parser.getDepth();
+ while (XmlUtils.nextElementWithin(parser, outerDepth)) {
+ switch (parser.getName()) {
+ case "stable-display-width":
+ mWidth = loadIntValue(parser);
+ break;
+ case "stable-display-height":
+ mHeight = loadIntValue(parser);
+ break;
+ }
+ }
+ }
+
+ private static int loadIntValue(XmlPullParser parser)
+ throws IOException, XmlPullParserException {
+ try {
+ String value = parser.nextText();
+ return Integer.parseInt(value);
+ } catch (NumberFormatException nfe) {
+ return 0;
+ }
+ }
+
+ public void saveToXml(XmlSerializer serializer) throws IOException {
+ if (mWidth > 0 && mHeight > 0) {
+ serializer.startTag(null, "stable-display-width");
+ serializer.text(Integer.toString(mWidth));
+ serializer.endTag(null, "stable-display-width");
+ serializer.startTag(null, "stable-display-height");
+ serializer.text(Integer.toString(mHeight));
+ serializer.endTag(null, "stable-display-height");
+ }
+ }
+
+ public void dump(final PrintWriter pw, final String prefix) {
+ pw.println(prefix + "StableDisplayWidth=" + mWidth);
+ pw.println(prefix + "StableDisplayHeight=" + mHeight);
+ }
+ }
}
diff --git a/services/core/java/com/android/server/job/JobSchedulerInternal.java b/services/core/java/com/android/server/job/JobSchedulerInternal.java
index d52b3b760c11..095526dc52fc 100644
--- a/services/core/java/com/android/server/job/JobSchedulerInternal.java
+++ b/services/core/java/com/android/server/job/JobSchedulerInternal.java
@@ -38,8 +38,44 @@ public interface JobSchedulerInternal {
void removeBackingUpUid(int uid);
void clearAllBackingUpUids();
+ JobStorePersistStats getPersistStats();
+
/**
- * @return the total number of jobs across all UIDs.
+ * Stats about the first load after boot and the most recent save.
+ * STOPSHIP Remove it and the relevant code once b/64536115 is fixed.
*/
- int countJobs();
+ public class JobStorePersistStats {
+ public int countAllJobsLoaded = -1;
+ public int countSystemServerJobsLoaded = -1;
+ public int countSystemSyncManagerJobsLoaded = -1;
+
+ public int countAllJobsSaved = -1;
+ public int countSystemServerJobsSaved = -1;
+ public int countSystemSyncManagerJobsSaved = -1;
+
+ public JobStorePersistStats() {
+ }
+
+ public JobStorePersistStats(JobStorePersistStats source) {
+ countAllJobsLoaded = source.countAllJobsLoaded;
+ countSystemServerJobsLoaded = source.countSystemServerJobsLoaded;
+ countSystemSyncManagerJobsLoaded = source.countSystemSyncManagerJobsLoaded;
+
+ countAllJobsSaved = source.countAllJobsSaved;
+ countSystemServerJobsSaved = source.countSystemServerJobsSaved;
+ countSystemSyncManagerJobsSaved = source.countSystemSyncManagerJobsSaved;
+ }
+
+ @Override
+ public String toString() {
+ return "FirstLoad: "
+ + countAllJobsLoaded + "/"
+ + countSystemServerJobsLoaded + "/"
+ + countSystemSyncManagerJobsLoaded
+ + " LastSave: "
+ + countAllJobsSaved + "/"
+ + countSystemServerJobsSaved + "/"
+ + countSystemSyncManagerJobsSaved;
+ }
+ }
}
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java
index 260f05f809cf..79bed73a0ca0 100644
--- a/services/core/java/com/android/server/job/JobSchedulerService.java
+++ b/services/core/java/com/android/server/job/JobSchedulerService.java
@@ -810,6 +810,11 @@ public final class JobSchedulerService extends com.android.server.SystemService
*
*/
public void cancelJobsForUid(int uid, String reason) {
+ if (uid == Process.SYSTEM_UID) {
+ // This really shouldn't happen.
+ Slog.wtfStack(TAG, "cancelJobsForUid() called for system uid");
+ return;
+ }
synchronized (mLock) {
final List<JobStatus> jobsForUid = mJobs.getJobsByUid(uid);
for (int i=0; i<jobsForUid.size(); i++) {
@@ -1867,9 +1872,9 @@ public final class JobSchedulerService extends com.android.server.SystemService
}
@Override
- public int countJobs() {
+ public JobStorePersistStats getPersistStats() {
synchronized (mLock) {
- return mJobs.size();
+ return new JobStorePersistStats(mJobs.getPersistStats());
}
}
}
@@ -2052,13 +2057,6 @@ public final class JobSchedulerService extends com.android.server.SystemService
@Override
public void cancelAll() throws RemoteException {
final int uid = Binder.getCallingUid();
- switch (uid) {
- case Process.SYSTEM_UID:
- // This really shouldn't happen.
- Slog.wtf(TAG, "JobScheduler.cancelAll() called for uid=" + uid);
- return;
- }
-
long ident = Binder.clearCallingIdentity();
try {
JobSchedulerService.this.cancelJobsForUid(uid, "cancelAll() called by app");
@@ -2500,6 +2498,9 @@ public final class JobSchedulerService extends com.android.server.SystemService
pw.print("mReportedActive="); pw.println(mReportedActive);
pw.print("mMaxActiveJobs="); pw.println(mMaxActiveJobs);
}
+ pw.println();
+ pw.print("PersistStats: ");
+ pw.println(mJobs.getPersistStats());
}
pw.println();
}
diff --git a/services/core/java/com/android/server/job/JobStore.java b/services/core/java/com/android/server/job/JobStore.java
index 5317616ad13a..aa9f77c839e5 100644
--- a/services/core/java/com/android/server/job/JobStore.java
+++ b/services/core/java/com/android/server/job/JobStore.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.os.Environment;
import android.os.Handler;
import android.os.PersistableBundle;
+import android.os.Process;
import android.os.SystemClock;
import android.os.UserHandle;
import android.text.format.DateUtils;
@@ -38,6 +39,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastXmlSerializer;
import com.android.server.IoThread;
+import com.android.server.job.JobSchedulerInternal.JobStorePersistStats;
import com.android.server.job.controllers.JobStatus;
import java.io.ByteArrayOutputStream;
@@ -89,6 +91,8 @@ public final class JobStore {
private final Handler mIoHandler = IoThread.getHandler();
private static JobStore sSingleton;
+ private JobStorePersistStats mPersistInfo = new JobStorePersistStats();
+
/** Used by the {@link JobSchedulerService} to instantiate the JobStore. */
static JobStore initAndGet(JobSchedulerService jobManagerService) {
synchronized (sSingletonLock) {
@@ -199,6 +203,10 @@ public final class JobStore {
return mJobSet.size();
}
+ public JobStorePersistStats getPersistStats() {
+ return mPersistInfo;
+ }
+
public int countJobsForUid(int uid) {
return mJobSet.countJobsForUid(uid);
}
@@ -336,6 +344,9 @@ public final class JobStore {
}
private void writeJobsMapImpl(List<JobStatus> jobList) {
+ int numJobs = 0;
+ int numSystemJobs = 0;
+ int numSyncJobs = 0;
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
XmlSerializer out = new FastXmlSerializer();
@@ -356,6 +367,14 @@ public final class JobStore {
writeExecutionCriteriaToXml(out, jobStatus);
writeBundleToXml(jobStatus.getJob().getExtras(), out);
out.endTag(null, "job");
+
+ numJobs++;
+ if (jobStatus.getUid() == Process.SYSTEM_UID) {
+ numSystemJobs++;
+ if (isSyncJob(jobStatus)) {
+ numSyncJobs++;
+ }
+ }
}
out.endTag(null, "job-info");
out.endDocument();
@@ -373,6 +392,10 @@ public final class JobStore {
if (DEBUG) {
Slog.d(TAG, "Error persisting bundle.", e);
}
+ } finally {
+ mPersistInfo.countAllJobsSaved = numJobs;
+ mPersistInfo.countSystemServerJobsSaved = numSystemJobs;
+ mPersistInfo.countSystemSyncManagerJobsSaved = numSyncJobs;
}
}
@@ -525,6 +548,11 @@ public final class JobStore {
return Pair.create(earliest, latest);
}
+ private static boolean isSyncJob(JobStatus status) {
+ return com.android.server.content.SyncJobService.class.getName()
+ .equals(status.getServiceComponent().getClassName());
+ }
+
/**
* Runnable that reads list of persisted job from xml. This is run once at start up, so doesn't
* need to go through {@link JobStore#add(com.android.server.job.controllers.JobStatus)}.
@@ -545,6 +573,8 @@ public final class JobStore {
@Override
public void run() {
int numJobs = 0;
+ int numSystemJobs = 0;
+ int numSyncJobs = 0;
try {
List<JobStatus> jobs;
FileInputStream fis = mJobsFile.openRead();
@@ -558,7 +588,14 @@ public final class JobStore {
js.prepareLocked(am);
js.enqueueTime = now;
this.jobSet.add(js);
+
numJobs++;
+ if (js.getUid() == Process.SYSTEM_UID) {
+ numSystemJobs++;
+ if (isSyncJob(js)) {
+ numSyncJobs++;
+ }
+ }
}
}
}
@@ -569,6 +606,12 @@ public final class JobStore {
}
} catch (XmlPullParserException | IOException e) {
Slog.wtf(TAG, "Error jobstore xml.", e);
+ } finally {
+ if (mPersistInfo.countAllJobsLoaded < 0) { // Only set them once.
+ mPersistInfo.countAllJobsLoaded = numJobs;
+ mPersistInfo.countSystemServerJobsLoaded = numSystemJobs;
+ mPersistInfo.countSystemSyncManagerJobsLoaded = numSyncJobs;
+ }
}
Slog.i(TAG, "Read " + numJobs + " jobs");
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 87c0c02fa9c5..7032d6456007 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -21836,32 +21836,36 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
}
}
- if (callingUid == Process.SHELL_UID
- && (pkgSetting.pkgFlags & ApplicationInfo.FLAG_TEST_ONLY) == 0) {
- // Shell can only change whole packages between ENABLED and DISABLED_USER states
- // unless it is a test package.
- int oldState = pkgSetting.getEnabled(userId);
- if (className == null
- &&
- (oldState == COMPONENT_ENABLED_STATE_DISABLED_USER
- || oldState == COMPONENT_ENABLED_STATE_DEFAULT
- || oldState == COMPONENT_ENABLED_STATE_ENABLED)
- &&
- (newState == COMPONENT_ENABLED_STATE_DISABLED_USER
- || newState == COMPONENT_ENABLED_STATE_DEFAULT
- || newState == COMPONENT_ENABLED_STATE_ENABLED)) {
- // ok
- } else {
- throw new SecurityException(
- "Shell cannot change component state for " + packageName + "/"
- + className + " to " + newState);
+ synchronized (mPackages) {
+ if (callingUid == Process.SHELL_UID
+ && (pkgSetting.pkgFlags & ApplicationInfo.FLAG_TEST_ONLY) == 0) {
+ // Shell can only change whole packages between ENABLED and DISABLED_USER states
+ // unless it is a test package.
+ int oldState = pkgSetting.getEnabled(userId);
+ if (className == null
+ &&
+ (oldState == COMPONENT_ENABLED_STATE_DISABLED_USER
+ || oldState == COMPONENT_ENABLED_STATE_DEFAULT
+ || oldState == COMPONENT_ENABLED_STATE_ENABLED)
+ &&
+ (newState == COMPONENT_ENABLED_STATE_DISABLED_USER
+ || newState == COMPONENT_ENABLED_STATE_DEFAULT
+ || newState == COMPONENT_ENABLED_STATE_ENABLED)) {
+ // ok
+ } else {
+ throw new SecurityException(
+ "Shell cannot change component state for " + packageName + "/"
+ + className + " to " + newState);
+ }
}
}
if (className == null) {
// We're dealing with an application/package level state change
- if (pkgSetting.getEnabled(userId) == newState) {
- // Nothing to do
- return;
+ synchronized (mPackages) {
+ if (pkgSetting.getEnabled(userId) == newState) {
+ // Nothing to do
+ return;
+ }
}
// If we're enabling a system stub, there's a little more work to do.
// Prior to enabling the package, we need to decompress the APK(s) to the
@@ -21975,41 +21979,45 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
// Don't care about who enables an app.
callingPackage = null;
}
- pkgSetting.setEnabled(newState, userId, callingPackage);
- } else {
- // We're dealing with a component level state change
- // First, verify that this is a valid class name.
- PackageParser.Package pkg = pkgSetting.pkg;
- if (pkg == null || !pkg.hasComponentClassName(className)) {
- if (pkg != null &&
- pkg.applicationInfo.targetSdkVersion >=
- Build.VERSION_CODES.JELLY_BEAN) {
- throw new IllegalArgumentException("Component class " + className
- + " does not exist in " + packageName);
- } else {
- Slog.w(TAG, "Failed setComponentEnabledSetting: component class "
- + className + " does not exist in " + packageName);
- }
+ synchronized (mPackages) {
+ pkgSetting.setEnabled(newState, userId, callingPackage);
}
- switch (newState) {
- case COMPONENT_ENABLED_STATE_ENABLED:
- if (!pkgSetting.enableComponentLPw(className, userId)) {
- return;
- }
- break;
- case COMPONENT_ENABLED_STATE_DISABLED:
- if (!pkgSetting.disableComponentLPw(className, userId)) {
- return;
+ } else {
+ synchronized (mPackages) {
+ // We're dealing with a component level state change
+ // First, verify that this is a valid class name.
+ PackageParser.Package pkg = pkgSetting.pkg;
+ if (pkg == null || !pkg.hasComponentClassName(className)) {
+ if (pkg != null &&
+ pkg.applicationInfo.targetSdkVersion >=
+ Build.VERSION_CODES.JELLY_BEAN) {
+ throw new IllegalArgumentException("Component class " + className
+ + " does not exist in " + packageName);
+ } else {
+ Slog.w(TAG, "Failed setComponentEnabledSetting: component class "
+ + className + " does not exist in " + packageName);
+ }
}
- break;
- case COMPONENT_ENABLED_STATE_DEFAULT:
- if (!pkgSetting.restoreComponentLPw(className, userId)) {
- return;
+ switch (newState) {
+ case COMPONENT_ENABLED_STATE_ENABLED:
+ if (!pkgSetting.enableComponentLPw(className, userId)) {
+ return;
+ }
+ break;
+ case COMPONENT_ENABLED_STATE_DISABLED:
+ if (!pkgSetting.disableComponentLPw(className, userId)) {
+ return;
+ }
+ break;
+ case COMPONENT_ENABLED_STATE_DEFAULT:
+ if (!pkgSetting.restoreComponentLPw(className, userId)) {
+ return;
+ }
+ break;
+ default:
+ Slog.e(TAG, "Invalid new component state: " + newState);
+ return;
}
- break;
- default:
- Slog.e(TAG, "Invalid new component state: " + newState);
- return;
}
}
synchronized (mPackages) {
diff --git a/services/core/java/com/android/server/vr/VrManagerService.java b/services/core/java/com/android/server/vr/VrManagerService.java
index b6b964b050e3..1f0b2f000be1 100644
--- a/services/core/java/com/android/server/vr/VrManagerService.java
+++ b/services/core/java/com/android/server/vr/VrManagerService.java
@@ -74,6 +74,7 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.StringBuilder;
import java.text.SimpleDateFormat;
+import java.util.Arrays;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collection;
@@ -414,7 +415,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public void registerListener(IVrStateCallbacks cb) {
- enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER);
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
if (cb == null) {
throw new IllegalArgumentException("Callback binder object is null.");
}
@@ -424,7 +426,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public void unregisterListener(IVrStateCallbacks cb) {
- enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER);
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
if (cb == null) {
throw new IllegalArgumentException("Callback binder object is null.");
}
@@ -434,7 +437,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public void registerPersistentVrStateListener(IPersistentVrStateCallbacks cb) {
- enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER);
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
if (cb == null) {
throw new IllegalArgumentException("Callback binder object is null.");
}
@@ -444,7 +448,8 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public void unregisterPersistentVrStateListener(IPersistentVrStateCallbacks cb) {
- enforceCallerPermission(Manifest.permission.ACCESS_VR_MANAGER);
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
if (cb == null) {
throw new IllegalArgumentException("Callback binder object is null.");
}
@@ -454,19 +459,28 @@ public class VrManagerService extends SystemService implements EnabledComponentC
@Override
public boolean getVrModeState() {
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
return VrManagerService.this.getVrMode();
}
@Override
+ public boolean getPersistentVrModeEnabled() {
+ enforceCallerPermissionAnyOf(Manifest.permission.ACCESS_VR_MANAGER,
+ Manifest.permission.ACCESS_VR_STATE);
+ return VrManagerService.this.getPersistentVrMode();
+ }
+
+ @Override
public void setPersistentVrModeEnabled(boolean enabled) {
- enforceCallerPermission(Manifest.permission.RESTRICTED_VR_ACCESS);
+ enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS);
VrManagerService.this.setPersistentVrModeEnabled(enabled);
}
@Override
public void setVr2dDisplayProperties(
Vr2dDisplayProperties vr2dDisplayProp) {
- enforceCallerPermission(Manifest.permission.RESTRICTED_VR_ACCESS);
+ enforceCallerPermissionAnyOf(Manifest.permission.RESTRICTED_VR_ACCESS);
VrManagerService.this.setVr2dDisplayProperties(vr2dDisplayProp);
}
@@ -530,11 +544,21 @@ public class VrManagerService extends SystemService implements EnabledComponentC
};
- private void enforceCallerPermission(String permission) {
- if (mContext.checkCallingOrSelfPermission(permission)
- != PackageManager.PERMISSION_GRANTED) {
- throw new SecurityException("Caller does not hold the permission " + permission);
+ /**
+ * Enforces that at lease one of the specified permissions is held by the caller.
+ * Throws SecurityException if none of the specified permissions are held.
+ *
+ * @param permissions One or more permissions to check against.
+ */
+ private void enforceCallerPermissionAnyOf(String... permissions) {
+ for (String permission : permissions) {
+ if (mContext.checkCallingOrSelfPermission(permission)
+ == PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
}
+ throw new SecurityException("Caller does not hold at least one of the permissions: "
+ + Arrays.toString(permissions));
}
/**
@@ -1204,4 +1228,10 @@ public class VrManagerService extends SystemService implements EnabledComponentC
return mVrModeEnabled;
}
}
+
+ private boolean getPersistentVrMode() {
+ synchronized (mLock) {
+ return mPersistentVrModeEnabled;
+ }
+ }
}
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 569b3265e997..1620df11f86f 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -828,9 +828,11 @@ public final class SystemServer {
// because it need to connect to SensorManager. This have to start
// after START_SENSOR_SERVICE is done.
SystemServerInitThreadPool.get().submit(() -> {
- traceBeginAndSlog(START_HIDL_SERVICES);
+ TimingsTraceLog traceLog = new TimingsTraceLog(
+ SYSTEM_SERVER_TIMING_ASYNC_TAG, Trace.TRACE_TAG_SYSTEM_SERVER);
+ traceLog.traceBegin(START_HIDL_SERVICES);
startHidlServices();
- traceEnd();
+ traceLog.traceEnd();
}, START_HIDL_SERVICES);
if (!disableVrManager) {
diff --git a/tools/aapt/SdkConstants.h b/tools/aapt/SdkConstants.h
index 0dbf4ee8153e..bf56ec024699 100644
--- a/tools/aapt/SdkConstants.h
+++ b/tools/aapt/SdkConstants.h
@@ -42,7 +42,7 @@ enum {
SDK_NOUGAT = 24,
SDK_NOUGAT_MR1 = 25,
SDK_O = 26,
- SDK_O_MR1 = 10000, // STOPSHIP Replace with the real version.
+ SDK_O_MR1 = 27,
};
#endif // H_AAPT_SDK_CONSTANTS
diff --git a/tools/aapt2/SdkConstants.h b/tools/aapt2/SdkConstants.h
index 864e57d644a6..5c32ed4fd849 100644
--- a/tools/aapt2/SdkConstants.h
+++ b/tools/aapt2/SdkConstants.h
@@ -52,7 +52,7 @@ enum : ApiVersion {
SDK_NOUGAT = 24,
SDK_NOUGAT_MR1 = 25,
SDK_O = 26,
- SDK_O_MR1 = 10000, // STOPSHIP Replace with the real version.
+ SDK_O_MR1 = 27,
};
ApiVersion FindAttributeSdkLevel(const ResourceId& id);
diff --git a/tools/apilint/apilint.py b/tools/apilint/apilint.py
index 77c1c24b17eb..2eab22e8ec14 100644
--- a/tools/apilint/apilint.py
+++ b/tools/apilint/apilint.py
@@ -1127,6 +1127,80 @@ def verify_closable(clazz):
return
+def verify_member_name_not_kotlin_keyword(clazz):
+ """Prevent method names which are keywords in Kotlin."""
+
+ # https://kotlinlang.org/docs/reference/keyword-reference.html#hard-keywords
+ # This list does not include Java keywords as those are already impossible to use.
+ keywords = [
+ 'as',
+ 'fun',
+ 'in',
+ 'is',
+ 'object',
+ 'typealias',
+ 'val',
+ 'var',
+ 'when',
+ ]
+
+ for m in clazz.methods:
+ if m.name in keywords:
+ error(clazz, m, None, "Method name must not be a Kotlin keyword")
+ for f in clazz.fields:
+ if f.name in keywords:
+ error(clazz, f, None, "Field name must not be a Kotlin keyword")
+
+
+def verify_method_name_not_kotlin_operator(clazz):
+ """Warn about method names which become operators in Kotlin."""
+
+ binary = set()
+
+ def unique_binary_op(m, op):
+ if op in binary:
+ error(clazz, m, None, "Only one of '{0}' and '{0}Assign' methods should be present for Kotlin".format(op))
+ binary.add(op)
+
+ for m in clazz.methods:
+ if 'static' in m.split:
+ continue
+
+ # https://kotlinlang.org/docs/reference/operator-overloading.html#unary-prefix-operators
+ if m.name in ['unaryPlus', 'unaryMinus', 'not'] and len(m.args) == 0:
+ warn(clazz, m, None, "Method can be invoked as a unary operator from Kotlin")
+
+ # https://kotlinlang.org/docs/reference/operator-overloading.html#increments-and-decrements
+ if m.name in ['inc', 'dec'] and len(m.args) == 0 and m.typ != 'void':
+ # This only applies if the return type is the same or a subtype of the enclosing class, but we have no
+ # practical way of checking that relationship here.
+ warn(clazz, m, None, "Method can be invoked as a pre/postfix inc/decrement operator from Kotlin")
+
+ # https://kotlinlang.org/docs/reference/operator-overloading.html#arithmetic
+ if m.name in ['plus', 'minus', 'times', 'div', 'rem', 'mod', 'rangeTo'] and len(m.args) == 1:
+ warn(clazz, m, None, "Method can be invoked as a binary operator from Kotlin")
+ unique_binary_op(m, m.name)
+
+ # https://kotlinlang.org/docs/reference/operator-overloading.html#in
+ if m.name == 'contains' and len(m.args) == 1 and m.typ == 'boolean':
+ warn(clazz, m, None, "Method can be invoked as a 'in' operator from Kotlin")
+
+ # https://kotlinlang.org/docs/reference/operator-overloading.html#indexed
+ if (m.name == 'get' and len(m.args) > 0) or (m.name == 'set' and len(m.args) > 1):
+ warn(clazz, m, None, "Method can be invoked with an indexing operator from Kotlin")
+
+ # https://kotlinlang.org/docs/reference/operator-overloading.html#invoke
+ if m.name == 'invoke':
+ warn(clazz, m, None, "Method can be invoked with function call syntax from Kotlin")
+
+ # https://kotlinlang.org/docs/reference/operator-overloading.html#assignments
+ if m.name in ['plusAssign', 'minusAssign', 'timesAssign', 'divAssign', 'remAssign', 'modAssign'] \
+ and len(m.args) == 1 \
+ and m.typ == 'void':
+ warn(clazz, m, None, "Method can be invoked as a compound assignment operator from Kotlin")
+ unique_binary_op(m, m.name[:-6]) # Remove 'Assign' suffix
+
+
def examine_clazz(clazz):
"""Find all style issues in the given class."""
if clazz.pkg.name.startswith("java"): return
@@ -1178,6 +1252,8 @@ def examine_clazz(clazz):
verify_error(clazz)
verify_units(clazz)
verify_closable(clazz)
+ verify_member_name_not_kotlin_keyword(clazz)
+ verify_method_name_not_kotlin_operator(clazz)
def examine_stream(stream):
diff --git a/wifi/java/android/net/wifi/WifiNetworkScoreCache.java b/wifi/java/android/net/wifi/WifiNetworkScoreCache.java
index f61dfdc2f6f9..b22ae07015c8 100755
--- a/wifi/java/android/net/wifi/WifiNetworkScoreCache.java
+++ b/wifi/java/android/net/wifi/WifiNetworkScoreCache.java
@@ -26,15 +26,14 @@ import android.net.ScoredNetwork;
import android.os.Handler;
import android.os.Process;
import android.util.Log;
+import android.util.LruCache;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.Preconditions;
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
/**
* {@link INetworkScoreCache} implementation for Wifi Networks.
@@ -50,18 +49,21 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
// scorer to provide an RSSI threshold below which a network should not be used.
public static final int INVALID_NETWORK_SCORE = Byte.MIN_VALUE;
+ /** Default number entries to be stored in the {@link LruCache}. */
+ private static final int DEFAULT_MAX_CACHE_SIZE = 100;
+
// See {@link #CacheListener}.
@Nullable
- @GuardedBy("mCacheLock")
+ @GuardedBy("mLock")
private CacheListener mListener;
private final Context mContext;
- private final Object mCacheLock = new Object();
+ private final Object mLock = new Object();
// The key is of the form "<ssid>"<bssid>
// TODO: What about SSIDs that can't be encoded as UTF-8?
- private final Map<String, ScoredNetwork> mNetworkCache;
-
+ @GuardedBy("mLock")
+ private final LruCache<String, ScoredNetwork> mCache;
public WifiNetworkScoreCache(Context context) {
this(context, null /* listener */);
@@ -74,9 +76,14 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
* @param listener CacheListener for cache updates
*/
public WifiNetworkScoreCache(Context context, @Nullable CacheListener listener) {
+ this(context, listener, DEFAULT_MAX_CACHE_SIZE);
+ }
+
+ public WifiNetworkScoreCache(
+ Context context, @Nullable CacheListener listener, int maxCacheSize) {
mContext = context.getApplicationContext();
mListener = listener;
- mNetworkCache = new HashMap<>();
+ mCache = new LruCache<>(maxCacheSize);
}
@Override public final void updateScores(List<ScoredNetwork> networks) {
@@ -89,7 +96,7 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
boolean changed = false;
- synchronized(mNetworkCache) {
+ synchronized(mLock) {
for (ScoredNetwork network : networks) {
String networkKey = buildNetworkKey(network);
if (networkKey == null) {
@@ -98,12 +105,10 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
}
continue;
}
- mNetworkCache.put(networkKey, network);
+ mCache.put(networkKey, network);
changed = true;
}
- }
- synchronized (mCacheLock) {
if (mListener != null && changed) {
mListener.post(networks);
}
@@ -111,8 +116,8 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
}
@Override public final void clearScores() {
- synchronized (mNetworkCache) {
- mNetworkCache.clear();
+ synchronized (mLock) {
+ mCache.evictAll();
}
}
@@ -138,7 +143,6 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
}
public int getNetworkScore(ScanResult result) {
-
int score = INVALID_NETWORK_SCORE;
ScoredNetwork network = getScoredNetwork(result);
@@ -164,7 +168,6 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
}
public int getNetworkScore(ScanResult result, boolean isActiveNetwork) {
-
int score = INVALID_NETWORK_SCORE;
ScoredNetwork network = getScoredNetwork(result);
@@ -185,8 +188,8 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
String key = buildNetworkKey(result);
if (key == null) return null;
- synchronized(mNetworkCache) {
- ScoredNetwork network = mNetworkCache.get(key);
+ synchronized(mLock) {
+ ScoredNetwork network = mCache.get(key);
return network;
}
}
@@ -201,8 +204,8 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
}
return null;
}
- synchronized (mNetworkCache) {
- return mNetworkCache.get(key);
+ synchronized (mLock) {
+ return mCache.get(key);
}
}
@@ -248,33 +251,35 @@ public class WifiNetworkScoreCache extends INetworkScoreCache.Stub {
mContext.getPackageName(), Process.myUid());
writer.println(header);
writer.println(" All score curves:");
- for (ScoredNetwork score : mNetworkCache.values()) {
- writer.println(" " + score);
- }
- writer.println(" Current network scores:");
- WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
- for (ScanResult scanResult : wifiManager.getScanResults()) {
- writer.println(" " + buildNetworkKey(scanResult) + ": " + getNetworkScore(scanResult));
+ synchronized (mLock) {
+ for (ScoredNetwork score : mCache.snapshot().values()) {
+ writer.println(" " + score);
+ }
+ writer.println(" Network scores for latest ScanResults:");
+ WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
+ for (ScanResult scanResult : wifiManager.getScanResults()) {
+ writer.println(
+ " " + buildNetworkKey(scanResult) + ": " + getNetworkScore(scanResult));
+ }
}
}
/** Registers a CacheListener instance, replacing the previous listener if it existed. */
public void registerListener(CacheListener listener) {
- synchronized (mCacheLock) {
+ synchronized (mLock) {
mListener = listener;
}
}
/** Removes the registered CacheListener. */
public void unregisterListener() {
- synchronized (mCacheLock) {
+ synchronized (mLock) {
mListener = null;
}
}
/** Listener for updates to the cache inside WifiNetworkScoreCache. */
public abstract static class CacheListener {
-
private Handler mHandler;
/**
diff --git a/wifi/tests/Android.mk b/wifi/tests/Android.mk
index afab1a3721db..c98e40a2c2d9 100644
--- a/wifi/tests/Android.mk
+++ b/wifi/tests/Android.mk
@@ -49,14 +49,15 @@ LOCAL_JACK_COVERAGE_INCLUDE_FILTER := $(jacoco_include)
LOCAL_JACK_COVERAGE_EXCLUDE_FILTER := $(jacoco_exclude)
LOCAL_STATIC_JAVA_LIBRARIES := \
- android-support-test \
- core-test-rules \
- guava \
- mockito-target-minus-junit4 \
- frameworks-base-testutils \
+ android-support-test \
+ core-test-rules \
+ guava \
+ mockito-target-minus-junit4 \
+ frameworks-base-testutils \
+ truth-prebuilt \
LOCAL_JAVA_LIBRARIES := \
- android.test.runner \
+ android.test.runner \
LOCAL_PACKAGE_NAME := FrameworksWifiApiTests
LOCAL_COMPATIBILITY_SUITE := device-tests
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java
index 18f6bc848081..997282b24b46 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkScoreCacheTest.java
@@ -16,9 +16,9 @@
package android.net.wifi;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.timeout;
-import static org.mockito.Mockito.verify;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.junit.Assert.fail;
import static org.mockito.Mockito.when;
import android.content.Context;
@@ -34,12 +34,9 @@ import android.support.test.runner.AndroidJUnit4;
import com.google.common.collect.ImmutableList;
-import org.junit.Rule;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
@@ -54,7 +51,11 @@ import java.util.concurrent.TimeUnit;
public class WifiNetworkScoreCacheTest {
public static final String SSID = "ssid";
+ public static final String SSID2 = "ssid2";
+ public static final String SSID3 = "ssid3";
public static final String FORMATTED_SSID = "\"" + SSID + "\"";
+ public static final String FORMATTED_SSID2 = "\"" + SSID2 + "\"";
+ public static final String FORMATTED_SSID3 = "\"" + SSID3 + "\"";
public static final String BSSID = "AA:AA:AA:AA:AA:AA";
public static final WifiKey VALID_KEY = new WifiKey(FORMATTED_SSID, BSSID);
@@ -120,13 +121,13 @@ public class WifiNetworkScoreCacheTest {
@Test
public void isScoredNetworkShouldReturnTrueAfterUpdateScoresIsCalled() {
- assertTrue(mScoreCache.isScoredNetwork(VALID_SCAN_RESULT));
+ assertThat(mScoreCache.isScoredNetwork(VALID_SCAN_RESULT)).isTrue();
}
@Test
public void isScoredNetworkShouldReturnFalseAfterClearScoresIsCalled() {
mScoreCache.clearScores();
- assertFalse(mScoreCache.isScoredNetwork(VALID_SCAN_RESULT));
+ assertThat(mScoreCache.isScoredNetwork(VALID_SCAN_RESULT)).isFalse();
}
@Test
@@ -137,19 +138,19 @@ public class WifiNetworkScoreCacheTest {
mScoreCache.updateScores(ImmutableList.of(network2));
- assertTrue(mScoreCache.isScoredNetwork(VALID_SCAN_RESULT));
- assertTrue(mScoreCache.isScoredNetwork(result2));
+ assertThat(mScoreCache.isScoredNetwork(VALID_SCAN_RESULT)).isTrue();
+ assertThat(mScoreCache.isScoredNetwork(result2)).isTrue();
}
@Test
public void hasScoreCurveShouldReturnTrue() {
- assertTrue(mScoreCache.hasScoreCurve(VALID_SCAN_RESULT));
+ assertThat(mScoreCache.hasScoreCurve(VALID_SCAN_RESULT)).isTrue();
}
@Test
public void hasScoreCurveShouldReturnFalseWhenNoCachedNetwork() {
ScanResult unscored = buildScanResult("fake", BSSID);
- assertFalse(mScoreCache.hasScoreCurve(unscored));
+ assertThat(mScoreCache.hasScoreCurve(unscored)).isFalse();
}
@Test
@@ -157,7 +158,7 @@ public class WifiNetworkScoreCacheTest {
ScoredNetwork noCurve = buildScoredNetwork(VALID_KEY, null /* rssiCurve */);
mScoreCache.updateScores(ImmutableList.of(noCurve));
- assertFalse(mScoreCache.hasScoreCurve(VALID_SCAN_RESULT));
+ assertThat(mScoreCache.hasScoreCurve(VALID_SCAN_RESULT)).isFalse();
}
@Test
@@ -169,12 +170,12 @@ public class WifiNetworkScoreCacheTest {
when(mockRssiCurve.lookupScore(rssi)).thenReturn(score);
- assertEquals(score, mScoreCache.getNetworkScore(result));
+ assertThat(mScoreCache.getNetworkScore(result)).isEqualTo(score);
}
@Test
public void getMeteredHintShouldReturnFalse() {
- assertFalse(mScoreCache.getMeteredHint(VALID_SCAN_RESULT));
+ assertThat(mScoreCache.getMeteredHint(VALID_SCAN_RESULT)).isFalse();
}
@Test
@@ -184,7 +185,7 @@ public class WifiNetworkScoreCacheTest {
new NetworkKey(VALID_KEY), mockRssiCurve, true /* metered Hint */);
mScoreCache.updateScores(ImmutableList.of(network));
- assertTrue(mScoreCache.getMeteredHint(VALID_SCAN_RESULT));
+ assertThat(mScoreCache.getMeteredHint(VALID_SCAN_RESULT)).isTrue();
}
@Test
@@ -197,7 +198,28 @@ public class WifiNetworkScoreCacheTest {
} catch (InterruptedException e) {
fail("Interrupted Exception while waiting for listener to be invoked.");
}
- assertEquals("One network should be updated", 1, mUpdatedNetworksCaptor.size());
- assertEquals(mValidScoredNetwork, mUpdatedNetworksCaptor.get(0));
+ // One network should be updated.
+ assertThat(mUpdatedNetworksCaptor.size()).isEqualTo(1);
+ assertThat(mUpdatedNetworksCaptor.get(0)).isEqualTo(mValidScoredNetwork);
+ }
+
+ @Test
+ public void leastRecentlyUsedScore_shouldBeEvictedFromCache() {
+ mScoreCache = new WifiNetworkScoreCache(mockContext, mCacheListener, 2 /* maxCacheSize */);
+
+ ScoredNetwork network1 = mValidScoredNetwork;
+ ScoredNetwork network2 = buildScoredNetwork(
+ new WifiKey(FORMATTED_SSID2, BSSID), mockRssiCurve);
+ ScoredNetwork network3 = buildScoredNetwork(
+ new WifiKey(FORMATTED_SSID3, BSSID), mockRssiCurve);
+ mScoreCache.updateScores(ImmutableList.of(network1));
+ mScoreCache.updateScores(ImmutableList.of(network2));
+
+ // First score should be evicted because max cache size has been reached.
+ mScoreCache.updateScores(ImmutableList.of(network3));
+
+ assertThat(mScoreCache.hasScoreCurve(buildScanResult(SSID2, BSSID))).isTrue();
+ assertThat(mScoreCache.hasScoreCurve(buildScanResult(SSID3, BSSID))).isTrue();
+ assertThat(mScoreCache.hasScoreCurve(VALID_SCAN_RESULT)).isFalse();
}
}