Snap for 7506946 from 25a9021b8dc92cae6348f6598721a4bdc1ab2a9c to tm-release
Change-Id: I9861bf94a416335d9c05192efecc632f7fe553e3
diff --git a/Android.bp b/Android.bp
index 4967366..e516ac7 100644
--- a/Android.bp
+++ b/Android.bp
@@ -111,6 +111,7 @@
":framework_native_aidl",
":gatekeeper_aidl",
":gsiservice_aidl",
+ ":guiconstants_aidl",
":idmap2_aidl",
":idmap2_core_aidl",
":incidentcompanion_aidl",
diff --git a/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java b/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java
index 689fb36..21c4491 100644
--- a/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java
+++ b/apct-tests/perftests/inputmethod/src/android/inputmethod/ImePerfTest.java
@@ -18,6 +18,7 @@
import static android.perftests.utils.ManualBenchmarkState.StatsReport;
import static android.perftests.utils.PerfTestActivity.ID_EDITOR;
+import static android.perftests.utils.TestUtils.getOnMainSync;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.WindowInsetsAnimation.Callback.DISPATCH_MODE_STOP;
@@ -25,6 +26,7 @@
import static org.junit.Assert.assertTrue;
+import android.annotation.UiThread;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
@@ -64,6 +66,7 @@
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
@@ -72,6 +75,7 @@
public class ImePerfTest extends ImePerfTestBase
implements ManualBenchmarkState.CustomizedIterationListener {
private static final String TAG = ImePerfTest.class.getSimpleName();
+ private static final long ANIMATION_NOT_STARTED = -1;
@Rule
public final PerfManualStatusReporter mPerfStatusReporter = new PerfManualStatusReporter();
@@ -304,12 +308,18 @@
latchEnd.set(new CountDownLatch(2));
// For measuring hide, lets show IME first.
if (!show) {
- activity.runOnUiThread(() -> {
- controller.show(WindowInsets.Type.ime());
+ AtomicBoolean showCalled = new AtomicBoolean();
+ getInstrumentation().runOnMainSync(() -> {
+ if (!isImeVisible(activity)) {
+ controller.show(WindowInsets.Type.ime());
+ showCalled.set(true);
+ }
});
- PollingCheck.check("IME show animation should finish ", TIMEOUT_1_S_IN_MS,
- () -> latchStart.get().getCount() == 1
- && latchEnd.get().getCount() == 1);
+ if (showCalled.get()) {
+ PollingCheck.check("IME show animation should finish ", TIMEOUT_1_S_IN_MS,
+ () -> latchStart.get().getCount() == 1
+ && latchEnd.get().getCount() == 1);
+ }
}
if (!mIsTraceStarted && !state.isWarmingUp()) {
startAsyncAtrace();
@@ -317,23 +327,35 @@
}
AtomicLong startTime = new AtomicLong();
- activity.runOnUiThread(() -> {
+ AtomicBoolean unexpectedVisibility = new AtomicBoolean();
+ getInstrumentation().runOnMainSync(() -> {
+ boolean isVisible = isImeVisible(activity);
startTime.set(SystemClock.elapsedRealtimeNanos());
- if (show) {
+
+ if (show && !isVisible) {
controller.show(WindowInsets.Type.ime());
- } else {
+ } else if (!show && isVisible) {
controller.hide(WindowInsets.Type.ime());
+ } else {
+ // ignore this iteration as unexpected IME visibility was encountered.
+ unexpectedVisibility.set(true);
}
});
- measuredTimeNs = waitForAnimationStart(latchStart, startTime);
+ if (!unexpectedVisibility.get()) {
+ long timeElapsed = waitForAnimationStart(latchStart, startTime);
+ if (timeElapsed != ANIMATION_NOT_STARTED) {
+ measuredTimeNs = timeElapsed;
+ }
+ }
// hide IME before next iteration.
if (show) {
activity.runOnUiThread(() -> controller.hide(WindowInsets.Type.ime()));
try {
latchEnd.get().await(TIMEOUT_1_S_IN_MS * 5, TimeUnit.MILLISECONDS);
- if (latchEnd.get().getCount() != 0) {
+ if (latchEnd.get().getCount() != 0
+ && getOnMainSync(() -> isImeVisible(activity))) {
Assert.fail("IME hide animation should finish.");
}
} catch (InterruptedException e) {
@@ -350,12 +372,18 @@
addResultToState(state);
}
+ @UiThread
+ private boolean isImeVisible(@NonNull final Activity activity) {
+ return activity.getWindow().getDecorView().getRootWindowInsets().isVisible(
+ WindowInsets.Type.ime());
+ }
+
private long waitForAnimationStart(
AtomicReference<CountDownLatch> latchStart, AtomicLong startTime) {
try {
latchStart.get().await(TIMEOUT_1_S_IN_MS * 5, TimeUnit.MILLISECONDS);
if (latchStart.get().getCount() != 0) {
- Assert.fail("IME animation should start " + latchStart.get().getCount());
+ return ANIMATION_NOT_STARTED;
}
} catch (InterruptedException e) { }
diff --git a/apct-tests/perftests/utils/src/android/perftests/utils/TestUtils.java b/apct-tests/perftests/utils/src/android/perftests/utils/TestUtils.java
new file mode 100644
index 0000000..d8d3ee3
--- /dev/null
+++ b/apct-tests/perftests/utils/src/android/perftests/utils/TestUtils.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 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.perftests.utils;
+
+import android.app.Instrumentation;
+
+import androidx.annotation.NonNull;
+import androidx.test.InstrumentationRegistry;
+
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Supplier;
+
+public final class TestUtils {
+
+ /**
+ * Retrieves a value that needs to be obtained on the main thread.
+ *
+ * <p>A simple utility method that helps to return an object from the UI thread.</p>
+ *
+ * @param supplier callback to be called on the UI thread to return a value
+ * @param <T> Type of the value to be returned
+ * @return Value returned from {@code supplier}
+ */
+ public static <T> T getOnMainSync(@NonNull Supplier<T> supplier) {
+ final AtomicReference<T> result = new AtomicReference<>();
+ final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+ instrumentation.runOnMainSync(() -> result.set(supplier.get()));
+ return result.get();
+ }
+}
diff --git a/apex/appsearch/Android.bp b/apex/appsearch/Android.bp
index 8278426..ac97e04 100644
--- a/apex/appsearch/Android.bp
+++ b/apex/appsearch/Android.bp
@@ -50,6 +50,20 @@
name: "com.android.appsearch-bootclasspath-fragment",
contents: ["framework-appsearch"],
apex_available: ["com.android.appsearch"],
+
+ // The bootclasspath_fragments that provide APIs on which this depends.
+ fragments: [
+ {
+ apex: "com.android.art",
+ module: "art-bootclasspath-fragment",
+ },
+ ],
+
+ // Additional stubs libraries that this fragment's contents use which are
+ // not provided by another bootclasspath_fragment.
+ additional_stubs: [
+ "android-non-updatable",
+ ],
}
// Encapsulate the contributions made by the com.android.appsearch to the systemserverclasspath.
diff --git a/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java b/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java
index 3c89016..b0b9abc 100644
--- a/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java
+++ b/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java
@@ -25,29 +25,19 @@
String TAG = "AppStateTracker";
/**
- * Register a {@link ForcedAppStandbyListener} to listen for forced-app-standby changes that
- * should affect services etc.
+ * Register a {@link ServiceStateListener} to listen for forced-app-standby changes that should
+ * affect services.
*/
- void addForcedAppStandbyListener(@NonNull ForcedAppStandbyListener listener);
+ void addServiceStateListener(@NonNull ServiceStateListener listener);
/**
- * @return {code true} if the given UID/package has been in forced app standby mode.
+ * A listener to listen to forced-app-standby changes that should affect services.
*/
- boolean isAppInForcedAppStandby(int uid, @NonNull String packageName);
-
- /**
- * A listener to listen to forced-app-standby changes that should affect services etc.
- */
- interface ForcedAppStandbyListener {
+ interface ServiceStateListener {
/**
- * Called when an app goes in/out of forced app standby.
+ * Called when an app goes into forced app standby and its foreground
+ * services need to be removed from that state.
*/
- void updateForceAppStandbyForUidPackage(int uid, String packageName, boolean standby);
-
- /**
- * Called when all apps' forced-app-standby states need to be re-evaluated, due to
- * enable/disable certain feature flags.
- */
- void updateForcedAppStandbyForAllApps();
+ void stopForegroundServicesForUidPackage(int uid, String packageName);
}
}
diff --git a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java
index 1deb365..c332a59 100644
--- a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java
+++ b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java
@@ -60,10 +60,8 @@
import java.io.PrintWriter;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
-import java.util.Set;
/**
* Class to keep track of the information related to "force app standby", which includes:
@@ -162,46 +160,16 @@
@GuardedBy("mLock")
boolean mForcedAppStandbyEnabled;
- /**
- * A lock-free set of (uid, packageName) pairs in forced app standby mode.
- *
- * <p>
- * It's bascially shadowing the {@link #mRunAnyRestrictedPackages} together with
- * the {@link #mForcedAppStandbyEnabled} and the {@link #mForceAllAppsStandby} - mutations on
- * them would result in copy-on-write.
- *
- * Note: when {@link #mForcedAppStandbyEnabled} is {@code false}, it'll be set to an empty set.
- * when {@link #mForceAllAppsStandby} is {@code true}, it'll be set to null;
- * </p>
- */
- volatile Set<Pair<Integer, String>> mForcedAppStandbyUidPackages = Collections.emptySet();
-
@Override
- public void addForcedAppStandbyListener(@NonNull ForcedAppStandbyListener listener) {
+ public void addServiceStateListener(@NonNull ServiceStateListener listener) {
addListener(new Listener() {
@Override
- public void updateForceAppStandbyForUidPackage(int uid, String packageName,
- boolean standby) {
- listener.updateForceAppStandbyForUidPackage(uid, packageName, standby);
- }
-
- @Override
- public void updateForcedAppStandbyForAllApps() {
- listener.updateForcedAppStandbyForAllApps();
+ public void stopForegroundServicesForUidPackage(int uid, String packageName) {
+ listener.stopForegroundServicesForUidPackage(uid, packageName);
}
});
}
- @Override
- public boolean isAppInForcedAppStandby(int uid, @NonNull String packageName) {
- final Set<Pair<Integer, String>> fasUidPkgs = mForcedAppStandbyUidPackages;
- if (fasUidPkgs == null) {
- // Meaning the mForceAllAppsStandby is true.
- return true;
- }
- return fasUidPkgs.contains(Pair.create(uid, packageName));
- }
-
interface Stats {
int UID_FG_STATE_CHANGED = 0;
int UID_ACTIVE_STATE_CHANGED = 1;
@@ -265,7 +233,6 @@
return;
}
mForcedAppStandbyEnabled = enabled;
- updateForcedAppStandbyUidPackagesLocked();
if (DEBUG) {
Slog.d(TAG, "Forced app standby feature flag changed: "
+ mForcedAppStandbyEnabled);
@@ -310,11 +277,7 @@
if (!sender.isRunAnyInBackgroundAppOpsAllowed(uid, packageName)) {
Slog.v(TAG, "Package " + packageName + "/" + uid
+ " toggled into fg service restriction");
- updateForceAppStandbyForUidPackage(uid, packageName, true);
- } else {
- Slog.v(TAG, "Package " + packageName + "/" + uid
- + " toggled out of fg service restriction");
- updateForceAppStandbyForUidPackage(uid, packageName, false);
+ stopForegroundServicesForUidPackage(uid, packageName);
}
}
@@ -379,7 +342,6 @@
private void onForceAllAppsStandbyChanged(AppStateTrackerImpl sender) {
updateAllJobs();
updateAllAlarms();
- updateForcedAppStandbyForAllApps();
}
/**
@@ -404,17 +366,10 @@
}
/**
- * Called when an app goes in/out of forced app standby.
+ * Called when an app goes into forced app standby and its foreground
+ * services need to be removed from that state.
*/
- public void updateForceAppStandbyForUidPackage(int uid, String packageName,
- boolean standby) {
- }
-
- /**
- * Called when all apps' forced-app-standby states need to be re-evaluated due to changes of
- * feature flags such as {@link #mForcedAppStandbyEnabled} or {@link #mForceAllAppsStandby}.
- */
- public void updateForcedAppStandbyForAllApps() {
+ public void stopForegroundServicesForUidPackage(int uid, String packageName) {
}
/**
@@ -483,12 +438,9 @@
final int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
// No need to notify for state change as all the alarms and jobs should be
// removed too.
- synchronized (mLock) {
- mExemptedBucketPackages.remove(userId, pkgName);
- mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName));
- updateForcedAppStandbyUidPackagesLocked();
- mActiveUids.delete(uid);
- }
+ mExemptedBucketPackages.remove(userId, pkgName);
+ mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName));
+ mActiveUids.delete(uid);
}
break;
}
@@ -628,29 +580,6 @@
}
}
}
- updateForcedAppStandbyUidPackagesLocked();
- }
-
- /**
- * Update the {@link #mForcedAppStandbyUidPackages} upon mutations on
- * {@link #mRunAnyRestrictedPackages}, {@link #mForcedAppStandbyEnabled} or
- * {@link #mForceAllAppsStandby}.
- */
- @GuardedBy("mLock")
- private void updateForcedAppStandbyUidPackagesLocked() {
- if (!mForcedAppStandbyEnabled) {
- mForcedAppStandbyUidPackages = Collections.emptySet();
- return;
- }
- if (mForceAllAppsStandby) {
- mForcedAppStandbyUidPackages = null;
- return;
- }
- Set<Pair<Integer, String>> fasUidPkgs = new ArraySet<>();
- for (int i = 0, size = mRunAnyRestrictedPackages.size(); i < size; i++) {
- fasUidPkgs.add(mRunAnyRestrictedPackages.valueAt(i));
- }
- mForcedAppStandbyUidPackages = Collections.unmodifiableSet(fasUidPkgs);
}
private void updateForceAllAppStandbyState() {
@@ -672,7 +601,6 @@
return;
}
mForceAllAppsStandby = enable;
- updateForcedAppStandbyUidPackagesLocked();
mHandler.notifyForceAllAppsStandbyChanged();
}
@@ -717,7 +645,6 @@
} else {
mRunAnyRestrictedPackages.removeAt(index);
}
- updateForcedAppStandbyUidPackagesLocked();
return true;
}
@@ -969,7 +896,6 @@
if (unblockAlarms) {
l.unblockAllUnrestrictedAlarms();
}
- l.updateForcedAppStandbyForAllApps();
}
mStatLogger.logDurationStat(
Stats.FORCE_APP_STANDBY_FEATURE_FLAG_CHANGED, start);
@@ -1040,7 +966,6 @@
mRunAnyRestrictedPackages.removeAt(i);
}
}
- updateForcedAppStandbyUidPackagesLocked();
cleanUpArrayForUser(mActiveUids, removedUserId);
mExemptedBucketPackages.remove(removedUserId);
}
diff --git a/boot/hiddenapi/hiddenapi-max-target-o.txt b/boot/hiddenapi/hiddenapi-max-target-o.txt
index 3cc28d9..43a1fcf 100644
--- a/boot/hiddenapi/hiddenapi-max-target-o.txt
+++ b/boot/hiddenapi/hiddenapi-max-target-o.txt
@@ -8961,12 +8961,6 @@
Landroid/app/slice/SliceSpec;-><init>(Landroid/os/Parcel;)V
Landroid/app/slice/SliceSpec;->mRevision:I
Landroid/app/slice/SliceSpec;->mType:Ljava/lang/String;
-Landroid/app/StatsManager;-><init>(Landroid/content/Context;)V
-Landroid/app/StatsManager;->DEBUG:Z
-Landroid/app/StatsManager;->getIStatsManagerLocked()Landroid/os/IStatsManager;
-Landroid/app/StatsManager;->mContext:Landroid/content/Context;
-Landroid/app/StatsManager;->mService:Landroid/os/IStatsManager;
-Landroid/app/StatsManager;->TAG:Ljava/lang/String;
Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER:I
Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP:I
Landroid/app/StatusBarManager;->CAMERA_LAUNCH_SOURCE_WIGGLE:I
@@ -35339,159 +35333,6 @@
Landroid/mtp/MtpStorageManager;->sDebug:Z
Landroid/mtp/MtpStorageManager;->setSubdirectories(Ljava/util/Set;)V
Landroid/mtp/MtpStorageManager;->TAG:Ljava/lang/String;
-Landroid/net/CaptivePortal;-><init>(Landroid/os/IBinder;)V
-Landroid/net/CaptivePortal;->APP_RETURN_DISMISSED:I
-Landroid/net/CaptivePortal;->APP_RETURN_UNWANTED:I
-Landroid/net/CaptivePortal;->APP_RETURN_WANTED_AS_IS:I
-Landroid/net/CaptivePortal;->mBinder:Landroid/os/IBinder;
-Landroid/net/CaptivePortal;->useNetwork()V
-Landroid/net/ConnectivityManager$CallbackHandler;->DBG:Z
-Landroid/net/ConnectivityManager$CallbackHandler;->getObject(Landroid/os/Message;Ljava/lang/Class;)Ljava/lang/Object;
-Landroid/net/ConnectivityManager$CallbackHandler;->TAG:Ljava/lang/String;
-Landroid/net/ConnectivityManager$Errors;->TOO_MANY_REQUESTS:I
-Landroid/net/ConnectivityManager$LegacyRequest;-><init>()V
-Landroid/net/ConnectivityManager$LegacyRequest;->clearDnsBinding()V
-Landroid/net/ConnectivityManager$LegacyRequest;->currentNetwork:Landroid/net/Network;
-Landroid/net/ConnectivityManager$LegacyRequest;->delay:I
-Landroid/net/ConnectivityManager$LegacyRequest;->expireSequenceNumber:I
-Landroid/net/ConnectivityManager$LegacyRequest;->networkCallback:Landroid/net/ConnectivityManager$NetworkCallback;
-Landroid/net/ConnectivityManager$LegacyRequest;->networkCapabilities:Landroid/net/NetworkCapabilities;
-Landroid/net/ConnectivityManager$LegacyRequest;->networkRequest:Landroid/net/NetworkRequest;
-Landroid/net/ConnectivityManager$NetworkCallback;->networkRequest:Landroid/net/NetworkRequest;
-Landroid/net/ConnectivityManager$NetworkCallback;->onAvailable(Landroid/net/Network;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;)V
-Landroid/net/ConnectivityManager$NetworkCallback;->onNetworkResumed(Landroid/net/Network;)V
-Landroid/net/ConnectivityManager$NetworkCallback;->onNetworkSuspended(Landroid/net/Network;)V
-Landroid/net/ConnectivityManager$NetworkCallback;->onPreCheck(Landroid/net/Network;)V
-Landroid/net/ConnectivityManager$PacketKeepalive;->BINDER_DIED:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_HARDWARE_ERROR:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_HARDWARE_UNSUPPORTED:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_INVALID_INTERVAL:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_INVALID_IP_ADDRESS:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_INVALID_LENGTH:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_INVALID_NETWORK:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->ERROR_INVALID_PORT:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->mCallback:Landroid/net/ConnectivityManager$PacketKeepaliveCallback;
-Landroid/net/ConnectivityManager$PacketKeepalive;->MIN_INTERVAL:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->mLooper:Landroid/os/Looper;
-Landroid/net/ConnectivityManager$PacketKeepalive;->mMessenger:Landroid/os/Messenger;
-Landroid/net/ConnectivityManager$PacketKeepalive;->mNetwork:Landroid/net/Network;
-Landroid/net/ConnectivityManager$PacketKeepalive;->mSlot:Ljava/lang/Integer;
-Landroid/net/ConnectivityManager$PacketKeepalive;->NATT_PORT:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->NO_KEEPALIVE:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->stopLooper()V
-Landroid/net/ConnectivityManager$PacketKeepalive;->SUCCESS:I
-Landroid/net/ConnectivityManager$PacketKeepalive;->TAG:Ljava/lang/String;
-Landroid/net/ConnectivityManager$TooManyRequestsException;-><init>()V
-Landroid/net/ConnectivityManager;-><init>(Landroid/content/Context;Landroid/net/IConnectivityManager;)V
-Landroid/net/ConnectivityManager;->ACTION_CAPTIVE_PORTAL_TEST_COMPLETED:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->ACTION_DATA_ACTIVITY_CHANGE:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->ACTION_PROMPT_LOST_VALIDATION:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->ACTION_PROMPT_UNVALIDATED:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->ALREADY_UNREGISTERED:Landroid/net/NetworkRequest;
-Landroid/net/ConnectivityManager;->BASE:I
-Landroid/net/ConnectivityManager;->CALLBACK_AVAILABLE:I
-Landroid/net/ConnectivityManager;->CALLBACK_CAP_CHANGED:I
-Landroid/net/ConnectivityManager;->CALLBACK_IP_CHANGED:I
-Landroid/net/ConnectivityManager;->CALLBACK_LOSING:I
-Landroid/net/ConnectivityManager;->CALLBACK_LOST:I
-Landroid/net/ConnectivityManager;->CALLBACK_PRECHECK:I
-Landroid/net/ConnectivityManager;->CALLBACK_RESUMED:I
-Landroid/net/ConnectivityManager;->CALLBACK_SUSPENDED:I
-Landroid/net/ConnectivityManager;->CALLBACK_UNAVAIL:I
-Landroid/net/ConnectivityManager;->checkCallbackNotNull(Landroid/net/ConnectivityManager$NetworkCallback;)V
-Landroid/net/ConnectivityManager;->checkLegacyRoutingApiAccess()V
-Landroid/net/ConnectivityManager;->checkMobileProvisioning(I)I
-Landroid/net/ConnectivityManager;->checkPendingIntentNotNull(Landroid/app/PendingIntent;)V
-Landroid/net/ConnectivityManager;->checkTimeout(I)V
-Landroid/net/ConnectivityManager;->CONNECTIVITY_ACTION_SUPL:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->convertServiceException(Landroid/os/ServiceSpecificException;)Ljava/lang/RuntimeException;
-Landroid/net/ConnectivityManager;->enforceChangePermission(Landroid/content/Context;)V
-Landroid/net/ConnectivityManager;->enforceTetherChangePermission(Landroid/content/Context;Ljava/lang/String;)V
-Landroid/net/ConnectivityManager;->expireRequest(Landroid/net/NetworkCapabilities;I)V
-Landroid/net/ConnectivityManager;->EXPIRE_LEGACY_REQUEST:I
-Landroid/net/ConnectivityManager;->EXTRA_ACTIVE_LOCAL_ONLY:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_ADD_TETHER_TYPE:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_CAPTIVE_PORTAL_PROBE_SPEC:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_CAPTIVE_PORTAL_USER_AGENT:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_DEVICE_TYPE:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_INET_CONDITION:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_IS_ACTIVE:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_IS_CAPTIVE_PORTAL:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_PROVISION_CALLBACK:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_REALTIME_NS:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_REM_TETHER_TYPE:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_RUN_PROVISION:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->EXTRA_SET_ALARM:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->factoryReset()V
-Landroid/net/ConnectivityManager;->findRequestForFeature(Landroid/net/NetworkCapabilities;)Landroid/net/NetworkRequest;
-Landroid/net/ConnectivityManager;->getActiveNetworkForUid(I)Landroid/net/Network;
-Landroid/net/ConnectivityManager;->getActiveNetworkForUid(IZ)Landroid/net/Network;
-Landroid/net/ConnectivityManager;->getActiveNetworkInfoForUid(IZ)Landroid/net/NetworkInfo;
-Landroid/net/ConnectivityManager;->getAlwaysOnVpnPackageForUser(I)Ljava/lang/String;
-Landroid/net/ConnectivityManager;->getCallbackName(I)Ljava/lang/String;
-Landroid/net/ConnectivityManager;->getDefaultHandler()Landroid/net/ConnectivityManager$CallbackHandler;
-Landroid/net/ConnectivityManager;->getGlobalProxy()Landroid/net/ProxyInfo;
-Landroid/net/ConnectivityManager;->getInstanceOrNull()Landroid/net/ConnectivityManager;
-Landroid/net/ConnectivityManager;->getMobileProvisioningUrl()Ljava/lang/String;
-Landroid/net/ConnectivityManager;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo;
-Landroid/net/ConnectivityManager;->getNetworkManagementService()Landroid/os/INetworkManagementService;
-Landroid/net/ConnectivityManager;->getNetworkPolicyManager()Landroid/net/INetworkPolicyManager;
-Landroid/net/ConnectivityManager;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo;
-Landroid/net/ConnectivityManager;->getTetheredDhcpRanges()[Ljava/lang/String;
-Landroid/net/ConnectivityManager;->inferLegacyTypeForNetworkCapabilities(Landroid/net/NetworkCapabilities;)I
-Landroid/net/ConnectivityManager;->isAlwaysOnVpnPackageSupportedForUser(ILjava/lang/String;)Z
-Landroid/net/ConnectivityManager;->isNetworkTypeWifi(I)Z
-Landroid/net/ConnectivityManager;->legacyTypeForNetworkCapabilities(Landroid/net/NetworkCapabilities;)I
-Landroid/net/ConnectivityManager;->LISTEN:I
-Landroid/net/ConnectivityManager;->MAX_NETWORK_TYPE:I
-Landroid/net/ConnectivityManager;->MAX_RADIO_TYPE:I
-Landroid/net/ConnectivityManager;->mContext:Landroid/content/Context;
-Landroid/net/ConnectivityManager;->MIN_NETWORK_TYPE:I
-Landroid/net/ConnectivityManager;->mNetworkActivityListeners:Landroid/util/ArrayMap;
-Landroid/net/ConnectivityManager;->mNMService:Landroid/os/INetworkManagementService;
-Landroid/net/ConnectivityManager;->mNPManager:Landroid/net/INetworkPolicyManager;
-Landroid/net/ConnectivityManager;->MULTIPATH_PREFERENCE_UNMETERED:I
-Landroid/net/ConnectivityManager;->NETID_UNSET:I
-Landroid/net/ConnectivityManager;->networkCapabilitiesForType(I)Landroid/net/NetworkCapabilities;
-Landroid/net/ConnectivityManager;->PRIVATE_DNS_DEFAULT_MODE_FALLBACK:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->PRIVATE_DNS_MODE_OFF:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->PRIVATE_DNS_MODE_OPPORTUNISTIC:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->PRIVATE_DNS_MODE_PROVIDER_HOSTNAME:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;)I
-Landroid/net/ConnectivityManager;->renewRequestLocked(Landroid/net/ConnectivityManager$LegacyRequest;)V
-Landroid/net/ConnectivityManager;->reportInetCondition(II)V
-Landroid/net/ConnectivityManager;->REQUEST:I
-Landroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;IILandroid/os/Handler;)V
-Landroid/net/ConnectivityManager;->REQUEST_ID_UNSET:I
-Landroid/net/ConnectivityManager;->sCallbackHandler:Landroid/net/ConnectivityManager$CallbackHandler;
-Landroid/net/ConnectivityManager;->sCallbacks:Ljava/util/HashMap;
-Landroid/net/ConnectivityManager;->sendExpireMsgForFeature(Landroid/net/NetworkCapabilities;II)V
-Landroid/net/ConnectivityManager;->sendRequestForNetwork(Landroid/net/NetworkCapabilities;Landroid/net/ConnectivityManager$NetworkCallback;IIILandroid/net/ConnectivityManager$CallbackHandler;)Landroid/net/NetworkRequest;
-Landroid/net/ConnectivityManager;->setAcceptUnvalidated(Landroid/net/Network;ZZ)V
-Landroid/net/ConnectivityManager;->setAlwaysOnVpnPackageForUser(ILjava/lang/String;Z)Z
-Landroid/net/ConnectivityManager;->setAvoidUnvalidated(Landroid/net/Network;)V
-Landroid/net/ConnectivityManager;->setGlobalProxy(Landroid/net/ProxyInfo;)V
-Landroid/net/ConnectivityManager;->setProvisioningNotificationVisible(ZILjava/lang/String;)V
-Landroid/net/ConnectivityManager;->sInstance:Landroid/net/ConnectivityManager;
-Landroid/net/ConnectivityManager;->sLegacyTypeToCapability:Landroid/util/SparseIntArray;
-Landroid/net/ConnectivityManager;->sLegacyTypeToTransport:Landroid/util/SparseIntArray;
-Landroid/net/ConnectivityManager;->startCaptivePortalApp(Landroid/net/Network;)V
-Landroid/net/ConnectivityManager;->TAG:Ljava/lang/String;
-Landroid/net/ConnectivityManager;->TETHERING_INVALID:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_DISABLE_NAT_ERROR:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_ENABLE_NAT_ERROR:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_IFACE_CFG_ERROR:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_MASTER_ERROR:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_NO_ERROR:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_PROVISION_FAILED:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_SERVICE_UNAVAIL:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_TETHER_IFACE_ERROR:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_UNAVAIL_IFACE:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_UNKNOWN_IFACE:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_UNSUPPORTED:I
-Landroid/net/ConnectivityManager;->TETHER_ERROR_UNTETHER_IFACE_ERROR:I
-Landroid/net/ConnectivityManager;->unsupportedStartingFrom(I)V
-Landroid/net/ConnectivityManager;->updateLockdownVpn()Z
Landroid/net/ConnectivityMetricsEvent;-><init>()V
Landroid/net/ConnectivityMetricsEvent;-><init>(Landroid/os/Parcel;)V
Landroid/net/ConnectivityMetricsEvent;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -35500,12 +35341,6 @@
Landroid/net/ConnectivityMetricsEvent;->netId:I
Landroid/net/ConnectivityMetricsEvent;->timestamp:J
Landroid/net/ConnectivityMetricsEvent;->transports:J
-Landroid/net/ConnectivityThread$Singleton;-><init>()V
-Landroid/net/ConnectivityThread$Singleton;->INSTANCE:Landroid/net/ConnectivityThread;
-Landroid/net/ConnectivityThread;-><init>()V
-Landroid/net/ConnectivityThread;->createInstance()Landroid/net/ConnectivityThread;
-Landroid/net/ConnectivityThread;->get()Landroid/net/ConnectivityThread;
-Landroid/net/ConnectivityThread;->getInstanceLooper()Landroid/os/Looper;
Landroid/net/Credentials;->gid:I
Landroid/net/Credentials;->pid:I
Landroid/net/Credentials;->uid:I
@@ -35516,9 +35351,6 @@
Landroid/net/DataUsageRequest;->REQUEST_ID_UNSET:I
Landroid/net/DataUsageRequest;->template:Landroid/net/NetworkTemplate;
Landroid/net/DataUsageRequest;->thresholdInBytes:J
-Landroid/net/DhcpInfo;-><init>(Landroid/net/DhcpInfo;)V
-Landroid/net/DhcpInfo;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/DhcpInfo;->putAddress(Ljava/lang/StringBuffer;I)V
Landroid/net/DhcpResults;->addDns(Ljava/lang/String;)Z
Landroid/net/DhcpResults;->clear()V
Landroid/net/DhcpResults;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -35572,224 +35404,6 @@
Landroid/net/http/X509TrustManagerExtensions;->mDelegate:Lcom/android/org/conscrypt/TrustManagerImpl;
Landroid/net/http/X509TrustManagerExtensions;->mIsSameTrustConfiguration:Ljava/lang/reflect/Method;
Landroid/net/http/X509TrustManagerExtensions;->mTrustManager:Ljavax/net/ssl/X509TrustManager;
-Landroid/net/ICaptivePortal$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/ICaptivePortal$Stub$Proxy;->appResponse(I)V
-Landroid/net/ICaptivePortal$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/ICaptivePortal$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/ICaptivePortal$Stub;-><init>()V
-Landroid/net/ICaptivePortal$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/ICaptivePortal;
-Landroid/net/ICaptivePortal$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/ICaptivePortal$Stub;->TRANSACTION_appResponse:I
-Landroid/net/ICaptivePortal;->appResponse(I)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->addVpnAddress(Ljava/lang/String;I)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->checkMobileProvisioning(I)I
-Landroid/net/IConnectivityManager$Stub$Proxy;->establishVpn(Lcom/android/internal/net/VpnConfig;)Landroid/os/ParcelFileDescriptor;
-Landroid/net/IConnectivityManager$Stub$Proxy;->factoryReset()V
-Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetwork()Landroid/net/Network;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetworkForUid(IZ)Landroid/net/Network;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetworkInfoForUid(IZ)Landroid/net/NetworkInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetworkQuotaInfo()Landroid/net/NetworkQuotaInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getAllNetworkState()[Landroid/net/NetworkState;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getAlwaysOnVpnPackage(I)Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getCaptivePortalServerUrl()Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getGlobalProxy()Landroid/net/ProxyInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getLastTetherError(Ljava/lang/String;)I
-Landroid/net/IConnectivityManager$Stub$Proxy;->getLegacyVpnInfo(I)Lcom/android/internal/net/LegacyVpnInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getLinkPropertiesForType(I)Landroid/net/LinkProperties;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getMobileProvisioningUrl()Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getMultipathPreference(Landroid/net/Network;)I
-Landroid/net/IConnectivityManager$Stub$Proxy;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getNetworkForType(I)Landroid/net/Network;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getNetworkInfo(I)Landroid/net/NetworkInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getNetworkWatchlistConfigHash()[B
-Landroid/net/IConnectivityManager$Stub$Proxy;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getRestoreDefaultNetworkDelay(I)I
-Landroid/net/IConnectivityManager$Stub$Proxy;->getTetherableBluetoothRegexs()[Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getTetherableWifiRegexs()[Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getTetheredDhcpRanges()[Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getTetheringErroredIfaces()[Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig;
-Landroid/net/IConnectivityManager$Stub$Proxy;->isActiveNetworkMetered()Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->isAlwaysOnVpnPackageSupported(ILjava/lang/String;)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->isNetworkSupported(I)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->isTetheringSupported(Ljava/lang/String;)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest;
-Landroid/net/IConnectivityManager$Stub$Proxy;->pendingListenForNetwork(Landroid/net/NetworkCapabilities;Landroid/app/PendingIntent;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->pendingRequestForNetwork(Landroid/net/NetworkCapabilities;Landroid/app/PendingIntent;)Landroid/net/NetworkRequest;
-Landroid/net/IConnectivityManager$Stub$Proxy;->prepareVpn(Ljava/lang/String;Ljava/lang/String;I)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;)I
-Landroid/net/IConnectivityManager$Stub$Proxy;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->releasePendingNetworkRequest(Landroid/app/PendingIntent;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->removeVpnAddress(Ljava/lang/String;I)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->reportInetCondition(II)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->reportNetworkConnectivity(Landroid/net/Network;Z)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->requestBandwidthUpdate(Landroid/net/Network;)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->requestNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;ILandroid/os/IBinder;I)Landroid/net/NetworkRequest;
-Landroid/net/IConnectivityManager$Stub$Proxy;->requestRouteToHostAddress(I[B)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->setAcceptUnvalidated(Landroid/net/Network;ZZ)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->setAirplaneMode(Z)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->setAlwaysOnVpnPackage(ILjava/lang/String;Z)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->setAvoidUnvalidated(Landroid/net/Network;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->setGlobalProxy(Landroid/net/ProxyInfo;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->setProvisioningNotificationVisible(ZILjava/lang/String;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->setUnderlyingNetworksForVpn([Landroid/net/Network;)Z
-Landroid/net/IConnectivityManager$Stub$Proxy;->setUsbTethering(ZLjava/lang/String;)I
-Landroid/net/IConnectivityManager$Stub$Proxy;->setVpnPackageAuthorization(Ljava/lang/String;IZ)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->startCaptivePortalApp(Landroid/net/Network;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->startLegacyVpn(Lcom/android/internal/net/VpnProfile;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->startNattKeepalive(Landroid/net/Network;ILandroid/os/Messenger;Landroid/os/IBinder;Ljava/lang/String;ILjava/lang/String;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->startTethering(ILandroid/os/ResultReceiver;ZLjava/lang/String;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->stopKeepalive(Landroid/net/Network;I)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->stopTethering(ILjava/lang/String;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->tether(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/net/IConnectivityManager$Stub$Proxy;->unregisterNetworkFactory(Landroid/os/Messenger;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->untether(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/net/IConnectivityManager$Stub$Proxy;->updateLockdownVpn()Z
-Landroid/net/IConnectivityManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_addVpnAddress:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_checkMobileProvisioning:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_establishVpn:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_factoryReset:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getActiveLinkProperties:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getActiveNetwork:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getActiveNetworkForUid:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getActiveNetworkInfo:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getActiveNetworkInfoForUid:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getActiveNetworkQuotaInfo:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getAllNetworkInfo:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getAllNetworks:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getAllNetworkState:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getAllVpnInfo:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getAlwaysOnVpnPackage:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getCaptivePortalServerUrl:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getDefaultNetworkCapabilitiesForUser:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getGlobalProxy:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getLastTetherError:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getLegacyVpnInfo:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getLinkProperties:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getLinkPropertiesForType:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getMobileProvisioningUrl:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getMultipathPreference:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getNetworkCapabilities:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getNetworkForType:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getNetworkInfo:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getNetworkInfoForUid:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getNetworkWatchlistConfigHash:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getProxyForNetwork:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getRestoreDefaultNetworkDelay:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getTetherableBluetoothRegexs:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getTetherableIfaces:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getTetherableUsbRegexs:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getTetherableWifiRegexs:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getTetheredDhcpRanges:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getTetheredIfaces:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getTetheringErroredIfaces:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_getVpnConfig:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_isActiveNetworkMetered:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_isAlwaysOnVpnPackageSupported:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_isNetworkSupported:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_isTetheringSupported:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_listenForNetwork:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_pendingListenForNetwork:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_pendingRequestForNetwork:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_prepareVpn:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_registerNetworkAgent:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_registerNetworkFactory:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_releaseNetworkRequest:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_releasePendingNetworkRequest:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_removeVpnAddress:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_reportInetCondition:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_reportNetworkConnectivity:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_requestBandwidthUpdate:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_requestNetwork:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_requestRouteToHostAddress:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setAcceptUnvalidated:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setAirplaneMode:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setAlwaysOnVpnPackage:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setAvoidUnvalidated:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setGlobalProxy:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setProvisioningNotificationVisible:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setUnderlyingNetworksForVpn:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setUsbTethering:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_setVpnPackageAuthorization:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_startCaptivePortalApp:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_startLegacyVpn:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_startNattKeepalive:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_startTethering:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_stopKeepalive:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_stopTethering:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_tether:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_unregisterNetworkFactory:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_untether:I
-Landroid/net/IConnectivityManager$Stub;->TRANSACTION_updateLockdownVpn:I
-Landroid/net/IConnectivityManager;->addVpnAddress(Ljava/lang/String;I)Z
-Landroid/net/IConnectivityManager;->checkMobileProvisioning(I)I
-Landroid/net/IConnectivityManager;->establishVpn(Lcom/android/internal/net/VpnConfig;)Landroid/os/ParcelFileDescriptor;
-Landroid/net/IConnectivityManager;->factoryReset()V
-Landroid/net/IConnectivityManager;->getActiveNetwork()Landroid/net/Network;
-Landroid/net/IConnectivityManager;->getActiveNetworkForUid(IZ)Landroid/net/Network;
-Landroid/net/IConnectivityManager;->getActiveNetworkInfoForUid(IZ)Landroid/net/NetworkInfo;
-Landroid/net/IConnectivityManager;->getActiveNetworkQuotaInfo()Landroid/net/NetworkQuotaInfo;
-Landroid/net/IConnectivityManager;->getAllNetworks()[Landroid/net/Network;
-Landroid/net/IConnectivityManager;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo;
-Landroid/net/IConnectivityManager;->getAlwaysOnVpnPackage(I)Ljava/lang/String;
-Landroid/net/IConnectivityManager;->getCaptivePortalServerUrl()Ljava/lang/String;
-Landroid/net/IConnectivityManager;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities;
-Landroid/net/IConnectivityManager;->getGlobalProxy()Landroid/net/ProxyInfo;
-Landroid/net/IConnectivityManager;->getLegacyVpnInfo(I)Lcom/android/internal/net/LegacyVpnInfo;
-Landroid/net/IConnectivityManager;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;
-Landroid/net/IConnectivityManager;->getLinkPropertiesForType(I)Landroid/net/LinkProperties;
-Landroid/net/IConnectivityManager;->getMobileProvisioningUrl()Ljava/lang/String;
-Landroid/net/IConnectivityManager;->getMultipathPreference(Landroid/net/Network;)I
-Landroid/net/IConnectivityManager;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;
-Landroid/net/IConnectivityManager;->getNetworkForType(I)Landroid/net/Network;
-Landroid/net/IConnectivityManager;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo;
-Landroid/net/IConnectivityManager;->getNetworkWatchlistConfigHash()[B
-Landroid/net/IConnectivityManager;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo;
-Landroid/net/IConnectivityManager;->getRestoreDefaultNetworkDelay(I)I
-Landroid/net/IConnectivityManager;->getTetherableBluetoothRegexs()[Ljava/lang/String;
-Landroid/net/IConnectivityManager;->getTetheredDhcpRanges()[Ljava/lang/String;
-Landroid/net/IConnectivityManager;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig;
-Landroid/net/IConnectivityManager;->isActiveNetworkMetered()Z
-Landroid/net/IConnectivityManager;->isAlwaysOnVpnPackageSupported(ILjava/lang/String;)Z
-Landroid/net/IConnectivityManager;->isNetworkSupported(I)Z
-Landroid/net/IConnectivityManager;->isTetheringSupported(Ljava/lang/String;)Z
-Landroid/net/IConnectivityManager;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest;
-Landroid/net/IConnectivityManager;->pendingListenForNetwork(Landroid/net/NetworkCapabilities;Landroid/app/PendingIntent;)V
-Landroid/net/IConnectivityManager;->pendingRequestForNetwork(Landroid/net/NetworkCapabilities;Landroid/app/PendingIntent;)Landroid/net/NetworkRequest;
-Landroid/net/IConnectivityManager;->prepareVpn(Ljava/lang/String;Ljava/lang/String;I)Z
-Landroid/net/IConnectivityManager;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;)I
-Landroid/net/IConnectivityManager;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V
-Landroid/net/IConnectivityManager;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V
-Landroid/net/IConnectivityManager;->releasePendingNetworkRequest(Landroid/app/PendingIntent;)V
-Landroid/net/IConnectivityManager;->removeVpnAddress(Ljava/lang/String;I)Z
-Landroid/net/IConnectivityManager;->reportNetworkConnectivity(Landroid/net/Network;Z)V
-Landroid/net/IConnectivityManager;->requestBandwidthUpdate(Landroid/net/Network;)Z
-Landroid/net/IConnectivityManager;->requestNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;ILandroid/os/IBinder;I)Landroid/net/NetworkRequest;
-Landroid/net/IConnectivityManager;->requestRouteToHostAddress(I[B)Z
-Landroid/net/IConnectivityManager;->setAcceptUnvalidated(Landroid/net/Network;ZZ)V
-Landroid/net/IConnectivityManager;->setAlwaysOnVpnPackage(ILjava/lang/String;Z)Z
-Landroid/net/IConnectivityManager;->setAvoidUnvalidated(Landroid/net/Network;)V
-Landroid/net/IConnectivityManager;->setGlobalProxy(Landroid/net/ProxyInfo;)V
-Landroid/net/IConnectivityManager;->setProvisioningNotificationVisible(ZILjava/lang/String;)V
-Landroid/net/IConnectivityManager;->setUnderlyingNetworksForVpn([Landroid/net/Network;)Z
-Landroid/net/IConnectivityManager;->setUsbTethering(ZLjava/lang/String;)I
-Landroid/net/IConnectivityManager;->setVpnPackageAuthorization(Ljava/lang/String;IZ)V
-Landroid/net/IConnectivityManager;->startCaptivePortalApp(Landroid/net/Network;)V
-Landroid/net/IConnectivityManager;->startNattKeepalive(Landroid/net/Network;ILandroid/os/Messenger;Landroid/os/IBinder;Ljava/lang/String;ILjava/lang/String;)V
-Landroid/net/IConnectivityManager;->startTethering(ILandroid/os/ResultReceiver;ZLjava/lang/String;)V
-Landroid/net/IConnectivityManager;->stopKeepalive(Landroid/net/Network;I)V
-Landroid/net/IConnectivityManager;->stopTethering(ILjava/lang/String;)V
-Landroid/net/IConnectivityManager;->tether(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/net/IConnectivityManager;->unregisterNetworkFactory(Landroid/os/Messenger;)V
-Landroid/net/IConnectivityManager;->untether(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/net/IConnectivityManager;->updateLockdownVpn()Z
Landroid/net/IEthernetManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/IEthernetManager$Stub$Proxy;->addListener(Landroid/net/IEthernetServiceListener;)V
Landroid/net/IEthernetManager$Stub$Proxy;->getAvailableInterfaces()[Ljava/lang/String;
@@ -36306,41 +35920,6 @@
Landroid/net/InterfaceConfiguration;->mHwAddr:Ljava/lang/String;
Landroid/net/InterfaceConfiguration;->setHardwareAddress(Ljava/lang/String;)V
Landroid/net/InterfaceConfiguration;->validateFlag(Ljava/lang/String;)V
-Landroid/net/IpConfiguration$IpAssignment;->DHCP:Landroid/net/IpConfiguration$IpAssignment;
-Landroid/net/IpConfiguration$IpAssignment;->UNASSIGNED:Landroid/net/IpConfiguration$IpAssignment;
-Landroid/net/IpConfiguration$IpAssignment;->valueOf(Ljava/lang/String;)Landroid/net/IpConfiguration$IpAssignment;
-Landroid/net/IpConfiguration$IpAssignment;->values()[Landroid/net/IpConfiguration$IpAssignment;
-Landroid/net/IpConfiguration$ProxySettings;->PAC:Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration$ProxySettings;->STATIC:Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration$ProxySettings;->UNASSIGNED:Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration$ProxySettings;->valueOf(Ljava/lang/String;)Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration$ProxySettings;->values()[Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration;-><init>()V
-Landroid/net/IpConfiguration;-><init>(Landroid/net/IpConfiguration;)V
-Landroid/net/IpConfiguration;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/IpConfiguration;->getHttpProxy()Landroid/net/ProxyInfo;
-Landroid/net/IpConfiguration;->getIpAssignment()Landroid/net/IpConfiguration$IpAssignment;
-Landroid/net/IpConfiguration;->getProxySettings()Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration;->getStaticIpConfiguration()Landroid/net/StaticIpConfiguration;
-Landroid/net/IpConfiguration;->init(Landroid/net/IpConfiguration$IpAssignment;Landroid/net/IpConfiguration$ProxySettings;Landroid/net/StaticIpConfiguration;Landroid/net/ProxyInfo;)V
-Landroid/net/IpConfiguration;->ipAssignment:Landroid/net/IpConfiguration$IpAssignment;
-Landroid/net/IpConfiguration;->proxySettings:Landroid/net/IpConfiguration$ProxySettings;
-Landroid/net/IpConfiguration;->setHttpProxy(Landroid/net/ProxyInfo;)V
-Landroid/net/IpConfiguration;->setIpAssignment(Landroid/net/IpConfiguration$IpAssignment;)V
-Landroid/net/IpConfiguration;->setProxySettings(Landroid/net/IpConfiguration$ProxySettings;)V
-Landroid/net/IpConfiguration;->setStaticIpConfiguration(Landroid/net/StaticIpConfiguration;)V
-Landroid/net/IpConfiguration;->staticIpConfiguration:Landroid/net/StaticIpConfiguration;
-Landroid/net/IpConfiguration;->TAG:Ljava/lang/String;
-Landroid/net/IpPrefix;-><init>(Ljava/lang/String;)V
-Landroid/net/IpPrefix;-><init>(Ljava/net/InetAddress;I)V
-Landroid/net/IpPrefix;-><init>([BI)V
-Landroid/net/IpPrefix;->address:[B
-Landroid/net/IpPrefix;->checkAndMaskAddressAndPrefixLength()V
-Landroid/net/IpPrefix;->containsPrefix(Landroid/net/IpPrefix;)Z
-Landroid/net/IpPrefix;->isIPv4()Z
-Landroid/net/IpPrefix;->isIPv6()Z
-Landroid/net/IpPrefix;->lengthComparator()Ljava/util/Comparator;
-Landroid/net/IpPrefix;->prefixLength:I
Landroid/net/IpSecAlgorithm;->checkValidOrThrow(Ljava/lang/String;II)V
Landroid/net/IpSecAlgorithm;->CRYPT_NULL:Ljava/lang/String;
Landroid/net/IpSecAlgorithm;->equals(Landroid/net/IpSecAlgorithm;Landroid/net/IpSecAlgorithm;)Z
@@ -36522,73 +36101,6 @@
Landroid/net/ITetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats;
Landroid/net/ITetheringStatsProvider;->QUOTA_UNLIMITED:I
Landroid/net/ITetheringStatsProvider;->setInterfaceQuota(Ljava/lang/String;J)V
-Landroid/net/KeepalivePacketData$InvalidPacketException;-><init>(I)V
-Landroid/net/KeepalivePacketData$InvalidPacketException;->error:I
-Landroid/net/KeepalivePacketData;-><init>(Landroid/os/Parcel;)V
-Landroid/net/KeepalivePacketData;-><init>(Ljava/net/InetAddress;ILjava/net/InetAddress;I[B)V
-Landroid/net/KeepalivePacketData;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/KeepalivePacketData;->dstAddress:Ljava/net/InetAddress;
-Landroid/net/KeepalivePacketData;->dstPort:I
-Landroid/net/KeepalivePacketData;->getPacket()[B
-Landroid/net/KeepalivePacketData;->IPV4_HEADER_LENGTH:I
-Landroid/net/KeepalivePacketData;->mPacket:[B
-Landroid/net/KeepalivePacketData;->nattKeepalivePacket(Ljava/net/InetAddress;ILjava/net/InetAddress;I)Landroid/net/KeepalivePacketData;
-Landroid/net/KeepalivePacketData;->srcAddress:Ljava/net/InetAddress;
-Landroid/net/KeepalivePacketData;->srcPort:I
-Landroid/net/KeepalivePacketData;->TAG:Ljava/lang/String;
-Landroid/net/KeepalivePacketData;->UDP_HEADER_LENGTH:I
-Landroid/net/LinkAddress;-><init>(Ljava/lang/String;II)V
-Landroid/net/LinkAddress;-><init>(Ljava/net/InetAddress;III)V
-Landroid/net/LinkAddress;-><init>(Ljava/net/InterfaceAddress;)V
-Landroid/net/LinkAddress;->flags:I
-Landroid/net/LinkAddress;->init(Ljava/net/InetAddress;III)V
-Landroid/net/LinkAddress;->isGlobalPreferred()Z
-Landroid/net/LinkAddress;->isIPv4()Z
-Landroid/net/LinkAddress;->isIPv6ULA()Z
-Landroid/net/LinkAddress;->scope:I
-Landroid/net/LinkAddress;->scopeForUnicastAddress(Ljava/net/InetAddress;)I
-Landroid/net/LinkProperties$CompareResult;-><init>()V
-Landroid/net/LinkProperties$CompareResult;-><init>(Ljava/util/Collection;Ljava/util/Collection;)V
-Landroid/net/LinkProperties$CompareResult;->added:Ljava/util/List;
-Landroid/net/LinkProperties$CompareResult;->removed:Ljava/util/List;
-Landroid/net/LinkProperties$ProvisioningChange;->valueOf(Ljava/lang/String;)Landroid/net/LinkProperties$ProvisioningChange;
-Landroid/net/LinkProperties;->addValidatedPrivateDnsServer(Ljava/net/InetAddress;)Z
-Landroid/net/LinkProperties;->compareAddresses(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$CompareResult;
-Landroid/net/LinkProperties;->compareAllInterfaceNames(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$CompareResult;
-Landroid/net/LinkProperties;->compareAllRoutes(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$CompareResult;
-Landroid/net/LinkProperties;->compareDnses(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$CompareResult;
-Landroid/net/LinkProperties;->compareValidatedPrivateDnses(Landroid/net/LinkProperties;)Landroid/net/LinkProperties$CompareResult;
-Landroid/net/LinkProperties;->ensureDirectlyConnectedRoutes()V
-Landroid/net/LinkProperties;->findLinkAddressIndex(Landroid/net/LinkAddress;)I
-Landroid/net/LinkProperties;->getValidatedPrivateDnsServers()Ljava/util/List;
-Landroid/net/LinkProperties;->hasIPv4AddressOnInterface(Ljava/lang/String;)Z
-Landroid/net/LinkProperties;->isIdenticalMtu(Landroid/net/LinkProperties;)Z
-Landroid/net/LinkProperties;->isIdenticalPrivateDns(Landroid/net/LinkProperties;)Z
-Landroid/net/LinkProperties;->isIdenticalTcpBufferSizes(Landroid/net/LinkProperties;)Z
-Landroid/net/LinkProperties;->isIdenticalValidatedPrivateDnses(Landroid/net/LinkProperties;)Z
-Landroid/net/LinkProperties;->isIPv4Provisioned()Z
-Landroid/net/LinkProperties;->isValidMtu(IZ)Z
-Landroid/net/LinkProperties;->MAX_MTU:I
-Landroid/net/LinkProperties;->mDnses:Ljava/util/ArrayList;
-Landroid/net/LinkProperties;->mDomains:Ljava/lang/String;
-Landroid/net/LinkProperties;->mHttpProxy:Landroid/net/ProxyInfo;
-Landroid/net/LinkProperties;->MIN_MTU:I
-Landroid/net/LinkProperties;->MIN_MTU_V6:I
-Landroid/net/LinkProperties;->mLinkAddresses:Ljava/util/ArrayList;
-Landroid/net/LinkProperties;->mMtu:I
-Landroid/net/LinkProperties;->mPrivateDnsServerName:Ljava/lang/String;
-Landroid/net/LinkProperties;->mRoutes:Ljava/util/ArrayList;
-Landroid/net/LinkProperties;->mStackedLinks:Ljava/util/Hashtable;
-Landroid/net/LinkProperties;->mTcpBufferSizes:Ljava/lang/String;
-Landroid/net/LinkProperties;->mUsePrivateDns:Z
-Landroid/net/LinkProperties;->mValidatedPrivateDnses:Ljava/util/ArrayList;
-Landroid/net/LinkProperties;->removeLinkAddress(Landroid/net/LinkAddress;)Z
-Landroid/net/LinkProperties;->removeStackedLink(Ljava/lang/String;)Z
-Landroid/net/LinkProperties;->removeValidatedPrivateDnsServer(Ljava/net/InetAddress;)Z
-Landroid/net/LinkProperties;->routeWithInterface(Landroid/net/RouteInfo;)Landroid/net/RouteInfo;
-Landroid/net/LinkProperties;->setPrivateDnsServerName(Ljava/lang/String;)V
-Landroid/net/LinkProperties;->setUsePrivateDns(Z)V
-Landroid/net/LinkProperties;->setValidatedPrivateDnsServers(Ljava/util/Collection;)V
Landroid/net/LinkQualityInfo;-><init>()V
Landroid/net/LinkQualityInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/LinkQualityInfo;->getDataSampleDuration()I
@@ -36677,29 +36189,6 @@
Landroid/net/LocalSocketImpl;->writeba_native([BIILjava/io/FileDescriptor;)V
Landroid/net/LocalSocketImpl;->writeMonitor:Ljava/lang/Object;
Landroid/net/LocalSocketImpl;->write_native(ILjava/io/FileDescriptor;)V
-Landroid/net/MacAddress;-><init>(J)V
-Landroid/net/MacAddress;->BASE_GOOGLE_MAC:Landroid/net/MacAddress;
-Landroid/net/MacAddress;->byteAddrFromLongAddr(J)[B
-Landroid/net/MacAddress;->byteAddrFromStringAddr(Ljava/lang/String;)[B
-Landroid/net/MacAddress;->createRandomUnicastAddress()Landroid/net/MacAddress;
-Landroid/net/MacAddress;->createRandomUnicastAddress(Landroid/net/MacAddress;Ljava/util/Random;)Landroid/net/MacAddress;
-Landroid/net/MacAddress;->createRandomUnicastAddressWithGoogleBase()Landroid/net/MacAddress;
-Landroid/net/MacAddress;->ETHER_ADDR_BROADCAST:[B
-Landroid/net/MacAddress;->ETHER_ADDR_LEN:I
-Landroid/net/MacAddress;->isMacAddress([B)Z
-Landroid/net/MacAddress;->isMulticastAddress()Z
-Landroid/net/MacAddress;->LOCALLY_ASSIGNED_MASK:J
-Landroid/net/MacAddress;->longAddrFromByteAddr([B)J
-Landroid/net/MacAddress;->longAddrFromStringAddr(Ljava/lang/String;)J
-Landroid/net/MacAddress;->macAddressType([B)I
-Landroid/net/MacAddress;->mAddr:J
-Landroid/net/MacAddress;->MULTICAST_MASK:J
-Landroid/net/MacAddress;->NIC_MASK:J
-Landroid/net/MacAddress;->OUI_MASK:J
-Landroid/net/MacAddress;->stringAddrFromByteAddr([B)Ljava/lang/String;
-Landroid/net/MacAddress;->stringAddrFromLongAddr(J)Ljava/lang/String;
-Landroid/net/MacAddress;->TYPE_UNKNOWN:I
-Landroid/net/MacAddress;->VALID_LONG_MASK:J
Landroid/net/MailTo;-><init>()V
Landroid/net/MailTo;->BODY:Ljava/lang/String;
Landroid/net/MailTo;->CC:Ljava/lang/String;
@@ -36958,666 +36447,6 @@
Landroid/net/MobileLinkQualityInfo;->mLteSignalStrength:I
Landroid/net/MobileLinkQualityInfo;->mMobileNetworkType:I
Landroid/net/MobileLinkQualityInfo;->mRssi:I
-Landroid/net/Network$NetworkBoundSocketFactory;->connectToHost(Ljava/lang/String;ILjava/net/SocketAddress;)Ljava/net/Socket;
-Landroid/net/Network$NetworkBoundSocketFactory;->mNetId:I
-Landroid/net/Network;-><init>(Landroid/net/Network;)V
-Landroid/net/Network;->getNetIdForResolv()I
-Landroid/net/Network;->HANDLE_MAGIC:J
-Landroid/net/Network;->HANDLE_MAGIC_SIZE:I
-Landroid/net/Network;->httpKeepAlive:Z
-Landroid/net/Network;->httpKeepAliveDurationMs:J
-Landroid/net/Network;->httpMaxConnections:I
-Landroid/net/Network;->maybeInitUrlConnectionFactory()V
-Landroid/net/Network;->mLock:Ljava/lang/Object;
-Landroid/net/Network;->mNetworkBoundSocketFactory:Landroid/net/Network$NetworkBoundSocketFactory;
-Landroid/net/Network;->mPrivateDnsBypass:Z
-Landroid/net/Network;->mUrlConnectionFactory:Lcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;
-Landroid/net/Network;->setPrivateDnsBypass(Z)V
-Landroid/net/Network;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkAgent;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;I)V
-Landroid/net/NetworkAgent;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;)V
-Landroid/net/NetworkAgent;->BASE:I
-Landroid/net/NetworkAgent;->BW_REFRESH_MIN_WIN_MS:J
-Landroid/net/NetworkAgent;->CMD_PREVENT_AUTOMATIC_RECONNECT:I
-Landroid/net/NetworkAgent;->CMD_REPORT_NETWORK_STATUS:I
-Landroid/net/NetworkAgent;->CMD_REQUEST_BANDWIDTH_UPDATE:I
-Landroid/net/NetworkAgent;->CMD_SAVE_ACCEPT_UNVALIDATED:I
-Landroid/net/NetworkAgent;->CMD_SET_SIGNAL_STRENGTH_THRESHOLDS:I
-Landroid/net/NetworkAgent;->CMD_START_PACKET_KEEPALIVE:I
-Landroid/net/NetworkAgent;->CMD_STOP_PACKET_KEEPALIVE:I
-Landroid/net/NetworkAgent;->CMD_SUSPECT_BAD:I
-Landroid/net/NetworkAgent;->DBG:Z
-Landroid/net/NetworkAgent;->EVENT_NETWORK_CAPABILITIES_CHANGED:I
-Landroid/net/NetworkAgent;->EVENT_NETWORK_INFO_CHANGED:I
-Landroid/net/NetworkAgent;->EVENT_NETWORK_PROPERTIES_CHANGED:I
-Landroid/net/NetworkAgent;->EVENT_NETWORK_SCORE_CHANGED:I
-Landroid/net/NetworkAgent;->EVENT_PACKET_KEEPALIVE:I
-Landroid/net/NetworkAgent;->EVENT_SET_EXPLICITLY_SELECTED:I
-Landroid/net/NetworkAgent;->explicitlySelected(Z)V
-Landroid/net/NetworkAgent;->INVALID_NETWORK:I
-Landroid/net/NetworkAgent;->log(Ljava/lang/String;)V
-Landroid/net/NetworkAgent;->LOG_TAG:Ljava/lang/String;
-Landroid/net/NetworkAgent;->mAsyncChannel:Lcom/android/internal/util/AsyncChannel;
-Landroid/net/NetworkAgent;->mContext:Landroid/content/Context;
-Landroid/net/NetworkAgent;->mLastBwRefreshTime:J
-Landroid/net/NetworkAgent;->mPollLcePending:Ljava/util/concurrent/atomic/AtomicBoolean;
-Landroid/net/NetworkAgent;->mPollLceScheduled:Z
-Landroid/net/NetworkAgent;->mPreConnectedQueue:Ljava/util/ArrayList;
-Landroid/net/NetworkAgent;->netId:I
-Landroid/net/NetworkAgent;->networkStatus(ILjava/lang/String;)V
-Landroid/net/NetworkAgent;->onPacketKeepaliveEvent(II)V
-Landroid/net/NetworkAgent;->pollLceData()V
-Landroid/net/NetworkAgent;->preventAutomaticReconnect()V
-Landroid/net/NetworkAgent;->queueOrSendMessage(III)V
-Landroid/net/NetworkAgent;->queueOrSendMessage(IIILjava/lang/Object;)V
-Landroid/net/NetworkAgent;->queueOrSendMessage(ILjava/lang/Object;)V
-Landroid/net/NetworkAgent;->queueOrSendMessage(Landroid/os/Message;)V
-Landroid/net/NetworkAgent;->REDIRECT_URL_KEY:Ljava/lang/String;
-Landroid/net/NetworkAgent;->saveAcceptUnvalidated(Z)V
-Landroid/net/NetworkAgent;->sendLinkProperties(Landroid/net/LinkProperties;)V
-Landroid/net/NetworkAgent;->sendNetworkCapabilities(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkAgent;->sendNetworkScore(I)V
-Landroid/net/NetworkAgent;->setSignalStrengthThresholds([I)V
-Landroid/net/NetworkAgent;->startPacketKeepalive(Landroid/os/Message;)V
-Landroid/net/NetworkAgent;->stopPacketKeepalive(Landroid/os/Message;)V
-Landroid/net/NetworkAgent;->unwanted()V
-Landroid/net/NetworkAgent;->VALID_NETWORK:I
-Landroid/net/NetworkAgent;->VDBG:Z
-Landroid/net/NetworkAgent;->WIFI_BASE_SCORE:I
-Landroid/net/NetworkBadging;-><init>()V
-Landroid/net/NetworkBadging;->getBadgedWifiSignalResource(I)I
-Landroid/net/NetworkBadging;->getWifiSignalResource(I)I
-Landroid/net/NetworkCapabilities$NameOf;->nameOf(I)Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->addUnwantedCapability(I)V
-Landroid/net/NetworkCapabilities;->appendStringRepresentationOfBitMaskToStringBuilder(Ljava/lang/StringBuilder;JLandroid/net/NetworkCapabilities$NameOf;Ljava/lang/String;)V
-Landroid/net/NetworkCapabilities;->appliesToUid(I)Z
-Landroid/net/NetworkCapabilities;->appliesToUidRange(Landroid/net/UidRange;)Z
-Landroid/net/NetworkCapabilities;->capabilityNameOf(I)Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->capabilityNamesOf([I)Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->checkValidCapability(I)V
-Landroid/net/NetworkCapabilities;->checkValidTransportType(I)V
-Landroid/net/NetworkCapabilities;->clearAll()V
-Landroid/net/NetworkCapabilities;->combineCapabilities(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->combineLinkBandwidths(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->combineNetCapabilities(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->combineSignalStrength(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->combineSpecifiers(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->combineSSIDs(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->combineTransportTypes(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->combineUids(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->DEFAULT_CAPABILITIES:J
-Landroid/net/NetworkCapabilities;->describeFirstNonRequestableCapability()Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->describeImmutableDifferences(Landroid/net/NetworkCapabilities;)Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->equalRequestableCapabilities(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->equalsLinkBandwidths(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->equalsNetCapabilities(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->equalsNetCapabilitiesRequestable(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->equalsSignalStrength(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->equalsSpecifier(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->equalsSSID(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->equalsTransportTypes(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->equalsUids(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->FORCE_RESTRICTED_CAPABILITIES:J
-Landroid/net/NetworkCapabilities;->getSSID()Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->getUids()Ljava/util/Set;
-Landroid/net/NetworkCapabilities;->getUnwantedCapabilities()[I
-Landroid/net/NetworkCapabilities;->hasUnwantedCapability(I)Z
-Landroid/net/NetworkCapabilities;->INVALID_UID:I
-Landroid/net/NetworkCapabilities;->isValidCapability(I)Z
-Landroid/net/NetworkCapabilities;->isValidTransport(I)Z
-Landroid/net/NetworkCapabilities;->LINK_BANDWIDTH_UNSPECIFIED:I
-Landroid/net/NetworkCapabilities;->maxBandwidth(II)I
-Landroid/net/NetworkCapabilities;->MAX_NET_CAPABILITY:I
-Landroid/net/NetworkCapabilities;->MAX_TRANSPORT:I
-Landroid/net/NetworkCapabilities;->maybeMarkCapabilitiesRestricted()V
-Landroid/net/NetworkCapabilities;->mEstablishingVpnAppUid:I
-Landroid/net/NetworkCapabilities;->minBandwidth(II)I
-Landroid/net/NetworkCapabilities;->MIN_NET_CAPABILITY:I
-Landroid/net/NetworkCapabilities;->MIN_TRANSPORT:I
-Landroid/net/NetworkCapabilities;->mLinkDownBandwidthKbps:I
-Landroid/net/NetworkCapabilities;->mLinkUpBandwidthKbps:I
-Landroid/net/NetworkCapabilities;->mNetworkSpecifier:Landroid/net/NetworkSpecifier;
-Landroid/net/NetworkCapabilities;->mSSID:Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->mTransportTypes:J
-Landroid/net/NetworkCapabilities;->mUids:Landroid/util/ArraySet;
-Landroid/net/NetworkCapabilities;->mUnwantedNetworkCapabilities:J
-Landroid/net/NetworkCapabilities;->MUTABLE_CAPABILITIES:J
-Landroid/net/NetworkCapabilities;->NON_REQUESTABLE_CAPABILITIES:J
-Landroid/net/NetworkCapabilities;->removeTransportType(I)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->RESTRICTED_CAPABILITIES:J
-Landroid/net/NetworkCapabilities;->satisfiedByImmutableNetworkCapabilities(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->satisfiedByLinkBandwidths(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->satisfiedByNetCapabilities(Landroid/net/NetworkCapabilities;Z)Z
-Landroid/net/NetworkCapabilities;->satisfiedByNetworkCapabilities(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->satisfiedByNetworkCapabilities(Landroid/net/NetworkCapabilities;Z)Z
-Landroid/net/NetworkCapabilities;->satisfiedBySignalStrength(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->satisfiedBySpecifier(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->satisfiedBySSID(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->satisfiedByTransportTypes(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->satisfiedByUids(Landroid/net/NetworkCapabilities;)Z
-Landroid/net/NetworkCapabilities;->set(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkCapabilities;->setCapabilities([I)V
-Landroid/net/NetworkCapabilities;->setCapabilities([I[I)V
-Landroid/net/NetworkCapabilities;->setCapability(IZ)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->setEstablishingVpnAppUid(I)V
-Landroid/net/NetworkCapabilities;->setLinkDownstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->setLinkUpstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->setSingleUid(I)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->setSSID(Ljava/lang/String;)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->setTransportType(IZ)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->setTransportTypes([I)V
-Landroid/net/NetworkCapabilities;->setUids(Ljava/util/Set;)Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkCapabilities;->SIGNAL_STRENGTH_UNSPECIFIED:I
-Landroid/net/NetworkCapabilities;->TAG:Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->transportNameOf(I)Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->TRANSPORT_NAMES:[Ljava/lang/String;
-Landroid/net/NetworkCapabilities;->UNRESTRICTED_CAPABILITIES:J
-Landroid/net/NetworkCapabilities;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkCapabilitiesProto;-><init>()V
-Landroid/net/NetworkCapabilitiesProto;->CAN_REPORT_SIGNAL_STRENGTH:J
-Landroid/net/NetworkCapabilitiesProto;->CAPABILITIES:J
-Landroid/net/NetworkCapabilitiesProto;->LINK_DOWN_BANDWIDTH_KBPS:J
-Landroid/net/NetworkCapabilitiesProto;->LINK_UP_BANDWIDTH_KBPS:J
-Landroid/net/NetworkCapabilitiesProto;->NETWORK_SPECIFIER:J
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_CAPTIVE_PORTAL:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_CBS:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_DUN:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_EIMS:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_FOREGROUND:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_FOTA:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_IA:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_IMS:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_INTERNET:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_MMS:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_NOT_METERED:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_NOT_RESTRICTED:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_NOT_ROAMING:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_NOT_VPN:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_RCS:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_SUPL:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_TRUSTED:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_VALIDATED:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_WIFI_P2P:I
-Landroid/net/NetworkCapabilitiesProto;->NET_CAPABILITY_XCAP:I
-Landroid/net/NetworkCapabilitiesProto;->SIGNAL_STRENGTH:J
-Landroid/net/NetworkCapabilitiesProto;->TRANSPORTS:J
-Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_BLUETOOTH:I
-Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_CELLULAR:I
-Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_ETHERNET:I
-Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_LOWPAN:I
-Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_VPN:I
-Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_WIFI:I
-Landroid/net/NetworkCapabilitiesProto;->TRANSPORT_WIFI_AWARE:I
-Landroid/net/NetworkConfig;-><init>(Ljava/lang/String;)V
-Landroid/net/NetworkConfig;->dependencyMet:Z
-Landroid/net/NetworkConfig;->isDefault()Z
-Landroid/net/NetworkConfig;->name:Ljava/lang/String;
-Landroid/net/NetworkConfig;->priority:I
-Landroid/net/NetworkConfig;->radio:I
-Landroid/net/NetworkConfig;->restoreTime:I
-Landroid/net/NetworkConfig;->type:I
-Landroid/net/NetworkFactory$NetworkRequestInfo;->request:Landroid/net/NetworkRequest;
-Landroid/net/NetworkFactory$NetworkRequestInfo;->requested:Z
-Landroid/net/NetworkFactory$NetworkRequestInfo;->score:I
-Landroid/net/NetworkFactory;->acceptRequest(Landroid/net/NetworkRequest;I)Z
-Landroid/net/NetworkFactory;->addNetworkRequest(Landroid/net/NetworkRequest;I)V
-Landroid/net/NetworkFactory;->BASE:I
-Landroid/net/NetworkFactory;->CMD_CANCEL_REQUEST:I
-Landroid/net/NetworkFactory;->CMD_REQUEST_NETWORK:I
-Landroid/net/NetworkFactory;->CMD_SET_FILTER:I
-Landroid/net/NetworkFactory;->CMD_SET_SCORE:I
-Landroid/net/NetworkFactory;->DBG:Z
-Landroid/net/NetworkFactory;->evalRequest(Landroid/net/NetworkFactory$NetworkRequestInfo;)V
-Landroid/net/NetworkFactory;->evalRequests()V
-Landroid/net/NetworkFactory;->getRequestCount()I
-Landroid/net/NetworkFactory;->handleAddRequest(Landroid/net/NetworkRequest;I)V
-Landroid/net/NetworkFactory;->handleRemoveRequest(Landroid/net/NetworkRequest;)V
-Landroid/net/NetworkFactory;->handleSetFilter(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkFactory;->handleSetScore(I)V
-Landroid/net/NetworkFactory;->log(Ljava/lang/String;)V
-Landroid/net/NetworkFactory;->LOG_TAG:Ljava/lang/String;
-Landroid/net/NetworkFactory;->mCapabilityFilter:Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkFactory;->mContext:Landroid/content/Context;
-Landroid/net/NetworkFactory;->mMessenger:Landroid/os/Messenger;
-Landroid/net/NetworkFactory;->mNetworkRequests:Landroid/util/SparseArray;
-Landroid/net/NetworkFactory;->mRefCount:I
-Landroid/net/NetworkFactory;->mScore:I
-Landroid/net/NetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V
-Landroid/net/NetworkFactory;->reevaluateAllRequests()V
-Landroid/net/NetworkFactory;->register()V
-Landroid/net/NetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V
-Landroid/net/NetworkFactory;->removeNetworkRequest(Landroid/net/NetworkRequest;)V
-Landroid/net/NetworkFactory;->setCapabilityFilter(Landroid/net/NetworkCapabilities;)V
-Landroid/net/NetworkFactory;->startNetwork()V
-Landroid/net/NetworkFactory;->stopNetwork()V
-Landroid/net/NetworkFactory;->unregister()V
-Landroid/net/NetworkFactory;->VDBG:Z
-Landroid/net/NetworkIdentity;-><init>(IILjava/lang/String;Ljava/lang/String;ZZZ)V
-Landroid/net/NetworkIdentity;->buildNetworkIdentity(Landroid/content/Context;Landroid/net/NetworkState;Z)Landroid/net/NetworkIdentity;
-Landroid/net/NetworkIdentity;->COMBINE_SUBTYPE_ENABLED:Z
-Landroid/net/NetworkIdentity;->compareTo(Landroid/net/NetworkIdentity;)I
-Landroid/net/NetworkIdentity;->getDefaultNetwork()Z
-Landroid/net/NetworkIdentity;->getMetered()Z
-Landroid/net/NetworkIdentity;->getNetworkId()Ljava/lang/String;
-Landroid/net/NetworkIdentity;->getRoaming()Z
-Landroid/net/NetworkIdentity;->getSubscriberId()Ljava/lang/String;
-Landroid/net/NetworkIdentity;->getSubType()I
-Landroid/net/NetworkIdentity;->getType()I
-Landroid/net/NetworkIdentity;->mDefaultNetwork:Z
-Landroid/net/NetworkIdentity;->mMetered:Z
-Landroid/net/NetworkIdentity;->mNetworkId:Ljava/lang/String;
-Landroid/net/NetworkIdentity;->mRoaming:Z
-Landroid/net/NetworkIdentity;->mSubscriberId:Ljava/lang/String;
-Landroid/net/NetworkIdentity;->mSubType:I
-Landroid/net/NetworkIdentity;->mType:I
-Landroid/net/NetworkIdentity;->scrubSubscriberId(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/NetworkIdentity;->scrubSubscriberId([Ljava/lang/String;)[Ljava/lang/String;
-Landroid/net/NetworkIdentity;->SUBTYPE_COMBINED:I
-Landroid/net/NetworkIdentity;->TAG:Ljava/lang/String;
-Landroid/net/NetworkIdentity;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkInfo;->mDetailedState:Landroid/net/NetworkInfo$DetailedState;
-Landroid/net/NetworkInfo;->mExtraInfo:Ljava/lang/String;
-Landroid/net/NetworkInfo;->mIsAvailable:Z
-Landroid/net/NetworkInfo;->mIsFailover:Z
-Landroid/net/NetworkInfo;->mIsRoaming:Z
-Landroid/net/NetworkInfo;->mNetworkType:I
-Landroid/net/NetworkInfo;->mReason:Ljava/lang/String;
-Landroid/net/NetworkInfo;->mState:Landroid/net/NetworkInfo$State;
-Landroid/net/NetworkInfo;->mSubtype:I
-Landroid/net/NetworkInfo;->mSubtypeName:Ljava/lang/String;
-Landroid/net/NetworkInfo;->mTypeName:Ljava/lang/String;
-Landroid/net/NetworkInfo;->setExtraInfo(Ljava/lang/String;)V
-Landroid/net/NetworkInfo;->setType(I)V
-Landroid/net/NetworkInfo;->stateMap:Ljava/util/EnumMap;
-Landroid/net/NetworkKey;-><init>(Landroid/os/Parcel;)V
-Landroid/net/NetworkKey;->createFromScanResult(Landroid/net/wifi/ScanResult;)Landroid/net/NetworkKey;
-Landroid/net/NetworkKey;->createFromWifiInfo(Landroid/net/wifi/WifiInfo;)Landroid/net/NetworkKey;
-Landroid/net/NetworkKey;->TAG:Ljava/lang/String;
-Landroid/net/NetworkMisc;-><init>()V
-Landroid/net/NetworkMisc;-><init>(Landroid/net/NetworkMisc;)V
-Landroid/net/NetworkMisc;->acceptUnvalidated:Z
-Landroid/net/NetworkMisc;->allowBypass:Z
-Landroid/net/NetworkMisc;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/NetworkMisc;->explicitlySelected:Z
-Landroid/net/NetworkMisc;->provisioningNotificationDisabled:Z
-Landroid/net/NetworkMisc;->subscriberId:Ljava/lang/String;
-Landroid/net/NetworkPolicy;-><init>(Landroid/net/NetworkTemplate;ILjava/lang/String;JJZ)V
-Landroid/net/NetworkPolicy;-><init>(Landroid/net/NetworkTemplate;Landroid/util/RecurrenceRule;JJJJJZZ)V
-Landroid/net/NetworkPolicy;-><init>(Landroid/net/NetworkTemplate;Landroid/util/RecurrenceRule;JJJJZZ)V
-Landroid/net/NetworkPolicy;-><init>(Landroid/os/Parcel;)V
-Landroid/net/NetworkPolicy;->buildRule(ILjava/time/ZoneId;)Landroid/util/RecurrenceRule;
-Landroid/net/NetworkPolicy;->cycleIterator()Ljava/util/Iterator;
-Landroid/net/NetworkPolicy;->cycleRule:Landroid/util/RecurrenceRule;
-Landroid/net/NetworkPolicy;->CYCLE_NONE:I
-Landroid/net/NetworkPolicy;->DEFAULT_MTU:J
-Landroid/net/NetworkPolicy;->getBytesForBackup()[B
-Landroid/net/NetworkPolicy;->getNetworkPolicyFromBackup(Ljava/io/DataInputStream;)Landroid/net/NetworkPolicy;
-Landroid/net/NetworkPolicy;->hasCycle()Z
-Landroid/net/NetworkPolicy;->lastLimitSnooze:J
-Landroid/net/NetworkPolicy;->lastRapidSnooze:J
-Landroid/net/NetworkPolicy;->lastWarningSnooze:J
-Landroid/net/NetworkPolicy;->LIMIT_DISABLED:J
-Landroid/net/NetworkPolicy;->SNOOZE_NEVER:J
-Landroid/net/NetworkPolicy;->VERSION_INIT:I
-Landroid/net/NetworkPolicy;->VERSION_RAPID:I
-Landroid/net/NetworkPolicy;->VERSION_RULE:I
-Landroid/net/NetworkPolicy;->WARNING_DISABLED:J
-Landroid/net/NetworkPolicyManager$Listener;-><init>()V
-Landroid/net/NetworkPolicyManager$Listener;->onMeteredIfacesChanged([Ljava/lang/String;)V
-Landroid/net/NetworkPolicyManager$Listener;->onRestrictBackgroundChanged(Z)V
-Landroid/net/NetworkPolicyManager$Listener;->onSubscriptionOverride(III)V
-Landroid/net/NetworkPolicyManager$Listener;->onUidPoliciesChanged(II)V
-Landroid/net/NetworkPolicyManager$Listener;->onUidRulesChanged(II)V
-Landroid/net/NetworkPolicyManager;-><init>(Landroid/content/Context;Landroid/net/INetworkPolicyManager;)V
-Landroid/net/NetworkPolicyManager;->addUidPolicy(II)V
-Landroid/net/NetworkPolicyManager;->ALLOW_PLATFORM_APP_POLICY:Z
-Landroid/net/NetworkPolicyManager;->cycleIterator(Landroid/net/NetworkPolicy;)Ljava/util/Iterator;
-Landroid/net/NetworkPolicyManager;->EXTRA_NETWORK_TEMPLATE:Ljava/lang/String;
-Landroid/net/NetworkPolicyManager;->factoryReset(Ljava/lang/String;)V
-Landroid/net/NetworkPolicyManager;->FIREWALL_CHAIN_DOZABLE:I
-Landroid/net/NetworkPolicyManager;->FIREWALL_CHAIN_NAME_DOZABLE:Ljava/lang/String;
-Landroid/net/NetworkPolicyManager;->FIREWALL_CHAIN_NAME_NONE:Ljava/lang/String;
-Landroid/net/NetworkPolicyManager;->FIREWALL_CHAIN_NAME_POWERSAVE:Ljava/lang/String;
-Landroid/net/NetworkPolicyManager;->FIREWALL_CHAIN_NAME_STANDBY:Ljava/lang/String;
-Landroid/net/NetworkPolicyManager;->FIREWALL_CHAIN_NONE:I
-Landroid/net/NetworkPolicyManager;->FIREWALL_CHAIN_POWERSAVE:I
-Landroid/net/NetworkPolicyManager;->FIREWALL_CHAIN_STANDBY:I
-Landroid/net/NetworkPolicyManager;->FIREWALL_RULE_ALLOW:I
-Landroid/net/NetworkPolicyManager;->FIREWALL_RULE_DEFAULT:I
-Landroid/net/NetworkPolicyManager;->FIREWALL_RULE_DENY:I
-Landroid/net/NetworkPolicyManager;->FIREWALL_TYPE_BLACKLIST:I
-Landroid/net/NetworkPolicyManager;->FIREWALL_TYPE_WHITELIST:I
-Landroid/net/NetworkPolicyManager;->FOREGROUND_THRESHOLD_STATE:I
-Landroid/net/NetworkPolicyManager;->isProcStateAllowedWhileIdleOrPowerSaveMode(I)Z
-Landroid/net/NetworkPolicyManager;->isProcStateAllowedWhileOnRestrictBackground(I)Z
-Landroid/net/NetworkPolicyManager;->isUidValidForPolicy(Landroid/content/Context;I)Z
-Landroid/net/NetworkPolicyManager;->MASK_ALL_NETWORKS:I
-Landroid/net/NetworkPolicyManager;->MASK_METERED_NETWORKS:I
-Landroid/net/NetworkPolicyManager;->mContext:Landroid/content/Context;
-Landroid/net/NetworkPolicyManager;->OVERRIDE_CONGESTED:I
-Landroid/net/NetworkPolicyManager;->OVERRIDE_UNMETERED:I
-Landroid/net/NetworkPolicyManager;->POLICY_ALLOW_METERED_BACKGROUND:I
-Landroid/net/NetworkPolicyManager;->POLICY_NONE:I
-Landroid/net/NetworkPolicyManager;->POLICY_REJECT_METERED_BACKGROUND:I
-Landroid/net/NetworkPolicyManager;->removeUidPolicy(II)V
-Landroid/net/NetworkPolicyManager;->resolveNetworkId(Landroid/net/wifi/WifiConfiguration;)Ljava/lang/String;
-Landroid/net/NetworkPolicyManager;->resolveNetworkId(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/NetworkPolicyManager;->RULE_ALLOW_ALL:I
-Landroid/net/NetworkPolicyManager;->RULE_ALLOW_METERED:I
-Landroid/net/NetworkPolicyManager;->RULE_NONE:I
-Landroid/net/NetworkPolicyManager;->RULE_REJECT_ALL:I
-Landroid/net/NetworkPolicyManager;->RULE_REJECT_METERED:I
-Landroid/net/NetworkPolicyManager;->RULE_TEMPORARY_ALLOW_METERED:I
-Landroid/net/NetworkPolicyManager;->setNetworkPolicies([Landroid/net/NetworkPolicy;)V
-Landroid/net/NetworkPolicyManager;->uidPoliciesToString(I)Ljava/lang/String;
-Landroid/net/NetworkPolicyManager;->uidRulesToString(I)Ljava/lang/String;
-Landroid/net/NetworkProto;-><init>()V
-Landroid/net/NetworkProto;->NET_ID:J
-Landroid/net/NetworkQuotaInfo;-><init>()V
-Landroid/net/NetworkQuotaInfo;-><init>(Landroid/os/Parcel;)V
-Landroid/net/NetworkQuotaInfo;->NO_LIMIT:J
-Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->enforceCallingPermission()V
-Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->execute(Ljava/lang/Runnable;)V
-Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->mContext:Landroid/content/Context;
-Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->mExecutor:Ljava/util/concurrent/Executor;
-Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->mHandler:Landroid/os/Handler;
-Landroid/net/NetworkRecommendationProvider$ServiceWrapper;->requestScores([Landroid/net/NetworkKey;)V
-Landroid/net/NetworkRecommendationProvider;->mService:Landroid/os/IBinder;
-Landroid/net/NetworkRecommendationProvider;->TAG:Ljava/lang/String;
-Landroid/net/NetworkRecommendationProvider;->VERBOSE:Z
-Landroid/net/NetworkRequest$Builder;->addUnwantedCapability(I)Landroid/net/NetworkRequest$Builder;
-Landroid/net/NetworkRequest$Builder;->mNetworkCapabilities:Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkRequest$Builder;->setCapabilities(Landroid/net/NetworkCapabilities;)Landroid/net/NetworkRequest$Builder;
-Landroid/net/NetworkRequest$Builder;->setLinkDownstreamBandwidthKbps(I)Landroid/net/NetworkRequest$Builder;
-Landroid/net/NetworkRequest$Builder;->setLinkUpstreamBandwidthKbps(I)Landroid/net/NetworkRequest$Builder;
-Landroid/net/NetworkRequest$Builder;->setUids(Ljava/util/Set;)Landroid/net/NetworkRequest$Builder;
-Landroid/net/NetworkRequest$Type;->BACKGROUND_REQUEST:Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest$Type;->LISTEN:Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest$Type;->NONE:Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest$Type;->REQUEST:Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest$Type;->TRACK_DEFAULT:Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest$Type;->valueOf(Ljava/lang/String;)Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest$Type;->values()[Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest;-><init>(Landroid/net/NetworkCapabilities;IILandroid/net/NetworkRequest$Type;)V
-Landroid/net/NetworkRequest;-><init>(Landroid/net/NetworkRequest;)V
-Landroid/net/NetworkRequest;->hasUnwantedCapability(I)Z
-Landroid/net/NetworkRequest;->isBackgroundRequest()Z
-Landroid/net/NetworkRequest;->isForegroundRequest()Z
-Landroid/net/NetworkRequest;->isListen()Z
-Landroid/net/NetworkRequest;->isRequest()Z
-Landroid/net/NetworkRequest;->type:Landroid/net/NetworkRequest$Type;
-Landroid/net/NetworkRequest;->typeToProtoEnum(Landroid/net/NetworkRequest$Type;)I
-Landroid/net/NetworkRequest;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkRequestProto;-><init>()V
-Landroid/net/NetworkRequestProto;->LEGACY_TYPE:J
-Landroid/net/NetworkRequestProto;->NETWORK_CAPABILITIES:J
-Landroid/net/NetworkRequestProto;->REQUEST_ID:J
-Landroid/net/NetworkRequestProto;->TYPE:J
-Landroid/net/NetworkRequestProto;->TYPE_BACKGROUND_REQUEST:I
-Landroid/net/NetworkRequestProto;->TYPE_LISTEN:I
-Landroid/net/NetworkRequestProto;->TYPE_NONE:I
-Landroid/net/NetworkRequestProto;->TYPE_REQUEST:I
-Landroid/net/NetworkRequestProto;->TYPE_TRACK_DEFAULT:I
-Landroid/net/NetworkRequestProto;->TYPE_UNKNOWN:I
-Landroid/net/NetworkScoreManager;-><init>(Landroid/content/Context;)V
-Landroid/net/NetworkScoreManager;->CACHE_FILTER_CURRENT_NETWORK:I
-Landroid/net/NetworkScoreManager;->CACHE_FILTER_NONE:I
-Landroid/net/NetworkScoreManager;->CACHE_FILTER_SCAN_RESULTS:I
-Landroid/net/NetworkScoreManager;->getActiveScorer()Landroid/net/NetworkScorerAppData;
-Landroid/net/NetworkScoreManager;->getAllValidScorers()Ljava/util/List;
-Landroid/net/NetworkScoreManager;->isCallerActiveScorer(I)Z
-Landroid/net/NetworkScoreManager;->mContext:Landroid/content/Context;
-Landroid/net/NetworkScoreManager;->mService:Landroid/net/INetworkScoreService;
-Landroid/net/NetworkScoreManager;->NETWORK_AVAILABLE_NOTIFICATION_CHANNEL_ID_META_DATA:Ljava/lang/String;
-Landroid/net/NetworkScoreManager;->RECOMMENDATIONS_ENABLED_FORCED_OFF:I
-Landroid/net/NetworkScoreManager;->RECOMMENDATIONS_ENABLED_OFF:I
-Landroid/net/NetworkScoreManager;->RECOMMENDATIONS_ENABLED_ON:I
-Landroid/net/NetworkScoreManager;->RECOMMENDATION_SERVICE_LABEL_META_DATA:Ljava/lang/String;
-Landroid/net/NetworkScoreManager;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;)V
-Landroid/net/NetworkScoreManager;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V
-Landroid/net/NetworkScoreManager;->requestScores([Landroid/net/NetworkKey;)Z
-Landroid/net/NetworkScoreManager;->unregisterNetworkScoreCache(ILandroid/net/INetworkScoreCache;)V
-Landroid/net/NetworkScoreManager;->USE_OPEN_WIFI_PACKAGE_META_DATA:Ljava/lang/String;
-Landroid/net/NetworkScorerAppData;-><init>(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/String;)V
-Landroid/net/NetworkScorerAppData;-><init>(Landroid/os/Parcel;)V
-Landroid/net/NetworkScorerAppData;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/NetworkScorerAppData;->getEnableUseOpenWifiActivity()Landroid/content/ComponentName;
-Landroid/net/NetworkScorerAppData;->getNetworkAvailableNotificationChannelId()Ljava/lang/String;
-Landroid/net/NetworkScorerAppData;->getRecommendationServiceComponent()Landroid/content/ComponentName;
-Landroid/net/NetworkScorerAppData;->getRecommendationServiceLabel()Ljava/lang/String;
-Landroid/net/NetworkScorerAppData;->getRecommendationServicePackageName()Ljava/lang/String;
-Landroid/net/NetworkScorerAppData;->mEnableUseOpenWifiActivity:Landroid/content/ComponentName;
-Landroid/net/NetworkScorerAppData;->mNetworkAvailableNotificationChannelId:Ljava/lang/String;
-Landroid/net/NetworkScorerAppData;->mRecommendationService:Landroid/content/ComponentName;
-Landroid/net/NetworkScorerAppData;->mRecommendationServiceLabel:Ljava/lang/String;
-Landroid/net/NetworkScorerAppData;->packageUid:I
-Landroid/net/NetworkSpecifier;-><init>()V
-Landroid/net/NetworkSpecifier;->assertValidFromUid(I)V
-Landroid/net/NetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-Landroid/net/NetworkState;-><init>(Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;Landroid/net/Network;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/NetworkState;->EMPTY:Landroid/net/NetworkState;
-Landroid/net/NetworkState;->linkProperties:Landroid/net/LinkProperties;
-Landroid/net/NetworkState;->networkCapabilities:Landroid/net/NetworkCapabilities;
-Landroid/net/NetworkState;->networkId:Ljava/lang/String;
-Landroid/net/NetworkState;->networkInfo:Landroid/net/NetworkInfo;
-Landroid/net/NetworkState;->SANITY_CHECK_ROAMING:Z
-Landroid/net/NetworkState;->subscriberId:Ljava/lang/String;
-Landroid/net/NetworkStats$Entry;-><init>(JJJJJ)V
-Landroid/net/NetworkStats$Entry;-><init>(Ljava/lang/String;IIIIIIJJJJJ)V
-Landroid/net/NetworkStats$Entry;-><init>(Ljava/lang/String;IIIJJJJJ)V
-Landroid/net/NetworkStats$Entry;->add(Landroid/net/NetworkStats$Entry;)V
-Landroid/net/NetworkStats$Entry;->defaultNetwork:I
-Landroid/net/NetworkStats$Entry;->isEmpty()Z
-Landroid/net/NetworkStats$Entry;->isNegative()Z
-Landroid/net/NetworkStats$Entry;->metered:I
-Landroid/net/NetworkStats$Entry;->operations:J
-Landroid/net/NetworkStats$Entry;->roaming:I
-Landroid/net/NetworkStats$NonMonotonicObserver;->foundNonMonotonic(Landroid/net/NetworkStats;ILandroid/net/NetworkStats;ILjava/lang/Object;)V
-Landroid/net/NetworkStats$NonMonotonicObserver;->foundNonMonotonic(Landroid/net/NetworkStats;ILjava/lang/Object;)V
-Landroid/net/NetworkStats;->addIfaceValues(Ljava/lang/String;JJJJ)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->addTrafficToApplications(ILjava/lang/String;Ljava/lang/String;Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats$Entry;
-Landroid/net/NetworkStats;->addValues(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->addValues(Ljava/lang/String;IIIIIIJJJJJ)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->addValues(Ljava/lang/String;IIIJJJJJ)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->apply464xlatAdjustments(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Ljava/util/Map;)V
-Landroid/net/NetworkStats;->apply464xlatAdjustments(Ljava/util/Map;)V
-Landroid/net/NetworkStats;->CLATD_INTERFACE_PREFIX:Ljava/lang/String;
-Landroid/net/NetworkStats;->clear()V
-Landroid/net/NetworkStats;->combineValues(Ljava/lang/String;IIIJJJJJ)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->combineValues(Ljava/lang/String;IIJJJJJ)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->deductTrafficFromVpnApp(ILjava/lang/String;Landroid/net/NetworkStats$Entry;)V
-Landroid/net/NetworkStats;->defaultNetworkToString(I)Ljava/lang/String;
-Landroid/net/NetworkStats;->DEFAULT_NETWORK_ALL:I
-Landroid/net/NetworkStats;->DEFAULT_NETWORK_NO:I
-Landroid/net/NetworkStats;->DEFAULT_NETWORK_YES:I
-Landroid/net/NetworkStats;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
-Landroid/net/NetworkStats;->elapsedRealtime:J
-Landroid/net/NetworkStats;->filter(I[Ljava/lang/String;I)V
-Landroid/net/NetworkStats;->findIndex(Ljava/lang/String;IIIIII)I
-Landroid/net/NetworkStats;->findIndexHinted(Ljava/lang/String;IIIIIII)I
-Landroid/net/NetworkStats;->getElapsedRealtime()J
-Landroid/net/NetworkStats;->getElapsedRealtimeAge()J
-Landroid/net/NetworkStats;->getTotal(Landroid/net/NetworkStats$Entry;Ljava/util/HashSet;)Landroid/net/NetworkStats$Entry;
-Landroid/net/NetworkStats;->getTotal(Landroid/net/NetworkStats$Entry;Ljava/util/HashSet;IZ)Landroid/net/NetworkStats$Entry;
-Landroid/net/NetworkStats;->getTotalPackets()J
-Landroid/net/NetworkStats;->getUniqueIfaces()[Ljava/lang/String;
-Landroid/net/NetworkStats;->groupedByIface()Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->groupedByUid()Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->IFACE_ALL:Ljava/lang/String;
-Landroid/net/NetworkStats;->INTERFACES_ALL:[Ljava/lang/String;
-Landroid/net/NetworkStats;->internalSize()I
-Landroid/net/NetworkStats;->IPV4V6_HEADER_DELTA:I
-Landroid/net/NetworkStats;->meteredToString(I)Ljava/lang/String;
-Landroid/net/NetworkStats;->METERED_ALL:I
-Landroid/net/NetworkStats;->METERED_NO:I
-Landroid/net/NetworkStats;->METERED_YES:I
-Landroid/net/NetworkStats;->migrateTun(ILjava/lang/String;Ljava/lang/String;)Z
-Landroid/net/NetworkStats;->roamingToString(I)Ljava/lang/String;
-Landroid/net/NetworkStats;->ROAMING_ALL:I
-Landroid/net/NetworkStats;->ROAMING_NO:I
-Landroid/net/NetworkStats;->ROAMING_YES:I
-Landroid/net/NetworkStats;->setElapsedRealtime(J)V
-Landroid/net/NetworkStats;->setMatches(II)Z
-Landroid/net/NetworkStats;->setToCheckinString(I)Ljava/lang/String;
-Landroid/net/NetworkStats;->setToString(I)Ljava/lang/String;
-Landroid/net/NetworkStats;->setValues(ILandroid/net/NetworkStats$Entry;)V
-Landroid/net/NetworkStats;->SET_ALL:I
-Landroid/net/NetworkStats;->SET_DBG_VPN_IN:I
-Landroid/net/NetworkStats;->SET_DBG_VPN_OUT:I
-Landroid/net/NetworkStats;->SET_DEBUG_START:I
-Landroid/net/NetworkStats;->SET_DEFAULT:I
-Landroid/net/NetworkStats;->SET_FOREGROUND:I
-Landroid/net/NetworkStats;->spliceOperationsFrom(Landroid/net/NetworkStats;)V
-Landroid/net/NetworkStats;->STATS_PER_IFACE:I
-Landroid/net/NetworkStats;->STATS_PER_UID:I
-Landroid/net/NetworkStats;->subtract(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->subtract(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/net/NetworkStats$NonMonotonicObserver;Ljava/lang/Object;)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->subtract(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/net/NetworkStats$NonMonotonicObserver;Ljava/lang/Object;Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
-Landroid/net/NetworkStats;->TAG:Ljava/lang/String;
-Landroid/net/NetworkStats;->tagToString(I)Ljava/lang/String;
-Landroid/net/NetworkStats;->TAG_ALL:I
-Landroid/net/NetworkStats;->TAG_NONE:I
-Landroid/net/NetworkStats;->tunAdjustmentInit(ILjava/lang/String;Ljava/lang/String;Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;)V
-Landroid/net/NetworkStats;->tunGetPool(Landroid/net/NetworkStats$Entry;Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats$Entry;
-Landroid/net/NetworkStats;->tunSubtract(ILandroid/net/NetworkStats;Landroid/net/NetworkStats$Entry;)V
-Landroid/net/NetworkStats;->UID_ALL:I
-Landroid/net/NetworkStats;->withoutUids([I)Landroid/net/NetworkStats;
-Landroid/net/NetworkStatsHistory$DataStreamUtils;-><init>()V
-Landroid/net/NetworkStatsHistory$DataStreamUtils;->readFullLongArray(Ljava/io/DataInputStream;)[J
-Landroid/net/NetworkStatsHistory$DataStreamUtils;->readVarLong(Ljava/io/DataInputStream;)J
-Landroid/net/NetworkStatsHistory$DataStreamUtils;->readVarLongArray(Ljava/io/DataInputStream;)[J
-Landroid/net/NetworkStatsHistory$DataStreamUtils;->writeVarLong(Ljava/io/DataOutputStream;J)V
-Landroid/net/NetworkStatsHistory$DataStreamUtils;->writeVarLongArray(Ljava/io/DataOutputStream;[JI)V
-Landroid/net/NetworkStatsHistory$Entry;-><init>()V
-Landroid/net/NetworkStatsHistory$Entry;->activeTime:J
-Landroid/net/NetworkStatsHistory$Entry;->operations:J
-Landroid/net/NetworkStatsHistory$Entry;->UNKNOWN:J
-Landroid/net/NetworkStatsHistory$ParcelUtils;-><init>()V
-Landroid/net/NetworkStatsHistory$ParcelUtils;->readLongArray(Landroid/os/Parcel;)[J
-Landroid/net/NetworkStatsHistory$ParcelUtils;->writeLongArray(Landroid/os/Parcel;[JI)V
-Landroid/net/NetworkStatsHistory;-><init>(JI)V
-Landroid/net/NetworkStatsHistory;-><init>(JII)V
-Landroid/net/NetworkStatsHistory;-><init>(Landroid/net/NetworkStatsHistory;J)V
-Landroid/net/NetworkStatsHistory;-><init>(Ljava/io/DataInputStream;)V
-Landroid/net/NetworkStatsHistory;->activeTime:[J
-Landroid/net/NetworkStatsHistory;->addLong([JIJ)V
-Landroid/net/NetworkStatsHistory;->bucketCount:I
-Landroid/net/NetworkStatsHistory;->bucketDuration:J
-Landroid/net/NetworkStatsHistory;->bucketStart:[J
-Landroid/net/NetworkStatsHistory;->clear()V
-Landroid/net/NetworkStatsHistory;->dump(Lcom/android/internal/util/IndentingPrintWriter;Z)V
-Landroid/net/NetworkStatsHistory;->dumpCheckin(Ljava/io/PrintWriter;)V
-Landroid/net/NetworkStatsHistory;->ensureBuckets(JJ)V
-Landroid/net/NetworkStatsHistory;->estimateResizeBuckets(J)I
-Landroid/net/NetworkStatsHistory;->FIELD_ACTIVE_TIME:I
-Landroid/net/NetworkStatsHistory;->FIELD_ALL:I
-Landroid/net/NetworkStatsHistory;->FIELD_OPERATIONS:I
-Landroid/net/NetworkStatsHistory;->FIELD_RX_BYTES:I
-Landroid/net/NetworkStatsHistory;->FIELD_RX_PACKETS:I
-Landroid/net/NetworkStatsHistory;->FIELD_TX_BYTES:I
-Landroid/net/NetworkStatsHistory;->FIELD_TX_PACKETS:I
-Landroid/net/NetworkStatsHistory;->generateRandom(JJJ)V
-Landroid/net/NetworkStatsHistory;->generateRandom(JJJJJJJLjava/util/Random;)V
-Landroid/net/NetworkStatsHistory;->getBucketDuration()J
-Landroid/net/NetworkStatsHistory;->getIndexAfter(J)I
-Landroid/net/NetworkStatsHistory;->getLong([JIJ)J
-Landroid/net/NetworkStatsHistory;->getTotalBytes()J
-Landroid/net/NetworkStatsHistory;->insertBucket(IJ)V
-Landroid/net/NetworkStatsHistory;->intersects(JJ)Z
-Landroid/net/NetworkStatsHistory;->operations:[J
-Landroid/net/NetworkStatsHistory;->randomLong(Ljava/util/Random;JJ)J
-Landroid/net/NetworkStatsHistory;->recordData(JJJJ)V
-Landroid/net/NetworkStatsHistory;->recordData(JJLandroid/net/NetworkStats$Entry;)V
-Landroid/net/NetworkStatsHistory;->recordHistory(Landroid/net/NetworkStatsHistory;JJ)V
-Landroid/net/NetworkStatsHistory;->removeBucketsBefore(J)V
-Landroid/net/NetworkStatsHistory;->rxBytes:[J
-Landroid/net/NetworkStatsHistory;->rxPackets:[J
-Landroid/net/NetworkStatsHistory;->setLong([JIJ)V
-Landroid/net/NetworkStatsHistory;->setValues(ILandroid/net/NetworkStatsHistory$Entry;)V
-Landroid/net/NetworkStatsHistory;->totalBytes:J
-Landroid/net/NetworkStatsHistory;->txBytes:[J
-Landroid/net/NetworkStatsHistory;->txPackets:[J
-Landroid/net/NetworkStatsHistory;->VERSION_ADD_ACTIVE:I
-Landroid/net/NetworkStatsHistory;->VERSION_ADD_PACKETS:I
-Landroid/net/NetworkStatsHistory;->VERSION_INIT:I
-Landroid/net/NetworkStatsHistory;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-Landroid/net/NetworkStatsHistory;->writeToProto(Landroid/util/proto/ProtoOutputStream;J[JI)V
-Landroid/net/NetworkStatsHistory;->writeToStream(Ljava/io/DataOutputStream;)V
-Landroid/net/NetworkTemplate;-><init>(ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/NetworkTemplate;-><init>(ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;III)V
-Landroid/net/NetworkTemplate;-><init>(Landroid/os/Parcel;)V
-Landroid/net/NetworkTemplate;->BACKUP_VERSION:I
-Landroid/net/NetworkTemplate;->buildTemplateBluetooth()Landroid/net/NetworkTemplate;
-Landroid/net/NetworkTemplate;->buildTemplateProxy()Landroid/net/NetworkTemplate;
-Landroid/net/NetworkTemplate;->buildTemplateWifi(Ljava/lang/String;)Landroid/net/NetworkTemplate;
-Landroid/net/NetworkTemplate;->forceAllNetworkTypes()V
-Landroid/net/NetworkTemplate;->getBytesForBackup()[B
-Landroid/net/NetworkTemplate;->getMatchRuleName(I)Ljava/lang/String;
-Landroid/net/NetworkTemplate;->getNetworkId()Ljava/lang/String;
-Landroid/net/NetworkTemplate;->getNetworkTemplateFromBackup(Ljava/io/DataInputStream;)Landroid/net/NetworkTemplate;
-Landroid/net/NetworkTemplate;->isKnownMatchRule(I)Z
-Landroid/net/NetworkTemplate;->isMatchRuleMobile()Z
-Landroid/net/NetworkTemplate;->isPersistable()Z
-Landroid/net/NetworkTemplate;->matches(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesBluetooth(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesDefaultNetwork(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesEthernet(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesMetered(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesMobile(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesMobileWildcard(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesProxy(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesRoaming(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesSubscriberId(Ljava/lang/String;)Z
-Landroid/net/NetworkTemplate;->matchesWifi(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->matchesWifiWildcard(Landroid/net/NetworkIdentity;)Z
-Landroid/net/NetworkTemplate;->MATCH_BLUETOOTH:I
-Landroid/net/NetworkTemplate;->MATCH_ETHERNET:I
-Landroid/net/NetworkTemplate;->MATCH_MOBILE:I
-Landroid/net/NetworkTemplate;->MATCH_MOBILE_WILDCARD:I
-Landroid/net/NetworkTemplate;->MATCH_PROXY:I
-Landroid/net/NetworkTemplate;->MATCH_WIFI:I
-Landroid/net/NetworkTemplate;->MATCH_WIFI_WILDCARD:I
-Landroid/net/NetworkTemplate;->mDefaultNetwork:I
-Landroid/net/NetworkTemplate;->mMatchRule:I
-Landroid/net/NetworkTemplate;->mMatchSubscriberIds:[Ljava/lang/String;
-Landroid/net/NetworkTemplate;->mMetered:I
-Landroid/net/NetworkTemplate;->mNetworkId:Ljava/lang/String;
-Landroid/net/NetworkTemplate;->mRoaming:I
-Landroid/net/NetworkTemplate;->mSubscriberId:Ljava/lang/String;
-Landroid/net/NetworkTemplate;->sForceAllNetworkTypes:Z
-Landroid/net/NetworkTemplate;->TAG:Ljava/lang/String;
-Landroid/net/NetworkUtils;-><init>()V
-Landroid/net/NetworkUtils;->addressTypeMatches(Ljava/net/InetAddress;Ljava/net/InetAddress;)Z
-Landroid/net/NetworkUtils;->bindProcessToNetwork(I)Z
-Landroid/net/NetworkUtils;->bindProcessToNetworkForHostResolution(I)Z
-Landroid/net/NetworkUtils;->bindSocketToNetwork(II)I
-Landroid/net/NetworkUtils;->deduplicatePrefixSet(Ljava/util/TreeSet;)Ljava/util/TreeSet;
-Landroid/net/NetworkUtils;->getBoundNetworkForProcess()I
-Landroid/net/NetworkUtils;->getNetworkPart(Ljava/net/InetAddress;I)Ljava/net/InetAddress;
-Landroid/net/NetworkUtils;->hexToInet6Address(Ljava/lang/String;)Ljava/net/InetAddress;
-Landroid/net/NetworkUtils;->inetAddressToInt(Ljava/net/Inet4Address;)I
-Landroid/net/NetworkUtils;->makeStrings(Ljava/util/Collection;)[Ljava/lang/String;
-Landroid/net/NetworkUtils;->maskRawAddress([BI)V
-Landroid/net/NetworkUtils;->netmaskIntToPrefixLength(I)I
-Landroid/net/NetworkUtils;->parcelInetAddress(Landroid/os/Parcel;Ljava/net/InetAddress;I)V
-Landroid/net/NetworkUtils;->parseIpAndMask(Ljava/lang/String;)Landroid/util/Pair;
-Landroid/net/NetworkUtils;->protectFromVpn(I)Z
-Landroid/net/NetworkUtils;->queryUserAccess(II)Z
-Landroid/net/NetworkUtils;->routedIPv4AddressCount(Ljava/util/TreeSet;)J
-Landroid/net/NetworkUtils;->routedIPv6AddressCount(Ljava/util/TreeSet;)Ljava/math/BigInteger;
-Landroid/net/NetworkUtils;->setupRaSocket(Ljava/io/FileDescriptor;I)V
-Landroid/net/NetworkUtils;->TAG:Ljava/lang/String;
-Landroid/net/NetworkUtils;->unparcelInetAddress(Landroid/os/Parcel;)Ljava/net/InetAddress;
-Landroid/net/NetworkWatchlistManager;-><init>(Landroid/content/Context;)V
-Landroid/net/NetworkWatchlistManager;-><init>(Landroid/content/Context;Lcom/android/internal/net/INetworkWatchlistManager;)V
-Landroid/net/NetworkWatchlistManager;->getWatchlistConfigHash()[B
-Landroid/net/NetworkWatchlistManager;->mContext:Landroid/content/Context;
-Landroid/net/NetworkWatchlistManager;->mNetworkWatchlistManager:Lcom/android/internal/net/INetworkWatchlistManager;
-Landroid/net/NetworkWatchlistManager;->reloadWatchlist()V
-Landroid/net/NetworkWatchlistManager;->reportWatchlistIfNecessary()V
-Landroid/net/NetworkWatchlistManager;->SHARED_MEMORY_TAG:Ljava/lang/String;
-Landroid/net/NetworkWatchlistManager;->TAG:Ljava/lang/String;
Landroid/net/nsd/DnsSdTxtRecord;-><init>()V
Landroid/net/nsd/DnsSdTxtRecord;-><init>(Landroid/net/nsd/DnsSdTxtRecord;)V
Landroid/net/nsd/DnsSdTxtRecord;-><init>([B)V
@@ -37733,43 +36562,6 @@
Landroid/net/Proxy;->setHttpProxySystemProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V
Landroid/net/Proxy;->TAG:Ljava/lang/String;
Landroid/net/Proxy;->validate(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
-Landroid/net/ProxyInfo;-><init>(Landroid/net/ProxyInfo;)V
-Landroid/net/ProxyInfo;-><init>(Landroid/net/Uri;)V
-Landroid/net/ProxyInfo;-><init>(Landroid/net/Uri;I)V
-Landroid/net/ProxyInfo;-><init>(Ljava/lang/String;)V
-Landroid/net/ProxyInfo;-><init>(Ljava/lang/String;ILjava/lang/String;[Ljava/lang/String;)V
-Landroid/net/ProxyInfo;->getExclusionListAsString()Ljava/lang/String;
-Landroid/net/ProxyInfo;->getSocketAddress()Ljava/net/InetSocketAddress;
-Landroid/net/ProxyInfo;->isValid()Z
-Landroid/net/ProxyInfo;->LOCAL_EXCL_LIST:Ljava/lang/String;
-Landroid/net/ProxyInfo;->LOCAL_HOST:Ljava/lang/String;
-Landroid/net/ProxyInfo;->LOCAL_PORT:I
-Landroid/net/ProxyInfo;->makeProxy()Ljava/net/Proxy;
-Landroid/net/ProxyInfo;->mExclusionList:Ljava/lang/String;
-Landroid/net/ProxyInfo;->mHost:Ljava/lang/String;
-Landroid/net/ProxyInfo;->mPacFileUrl:Landroid/net/Uri;
-Landroid/net/ProxyInfo;->mParsedExclusionList:[Ljava/lang/String;
-Landroid/net/ProxyInfo;->mPort:I
-Landroid/net/ProxyInfo;->setExclusionList(Ljava/lang/String;)V
-Landroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;)V
-Landroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;I)V
-Landroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;Ljava/net/InetAddress;)V
-Landroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;I)V
-Landroid/net/RouteInfo;-><init>(Landroid/net/LinkAddress;)V
-Landroid/net/RouteInfo;->getDestinationLinkAddress()Landroid/net/LinkAddress;
-Landroid/net/RouteInfo;->getType()I
-Landroid/net/RouteInfo;->isHostRoute()Z
-Landroid/net/RouteInfo;->isIPv4Default()Z
-Landroid/net/RouteInfo;->isIPv6Default()Z
-Landroid/net/RouteInfo;->makeHostRoute(Ljava/net/InetAddress;Ljava/lang/String;)Landroid/net/RouteInfo;
-Landroid/net/RouteInfo;->makeHostRoute(Ljava/net/InetAddress;Ljava/net/InetAddress;Ljava/lang/String;)Landroid/net/RouteInfo;
-Landroid/net/RouteInfo;->mDestination:Landroid/net/IpPrefix;
-Landroid/net/RouteInfo;->mHasGateway:Z
-Landroid/net/RouteInfo;->mInterface:Ljava/lang/String;
-Landroid/net/RouteInfo;->mType:I
-Landroid/net/RouteInfo;->RTN_THROW:I
-Landroid/net/RouteInfo;->RTN_UNICAST:I
-Landroid/net/RouteInfo;->RTN_UNREACHABLE:I
Landroid/net/RssiCurve;-><init>(Landroid/os/Parcel;)V
Landroid/net/RssiCurve;->DEFAULT_ACTIVE_NETWORK_RSSI_BOOST:I
Landroid/net/rtp/AudioCodec;-><init>(ILjava/lang/String;Ljava/lang/String;)V
@@ -38040,11 +36832,6 @@
Landroid/net/SSLSessionCache;-><init>(Ljava/lang/Object;)V
Landroid/net/SSLSessionCache;->install(Landroid/net/SSLSessionCache;Ljavax/net/ssl/SSLContext;)V
Landroid/net/SSLSessionCache;->TAG:Ljava/lang/String;
-Landroid/net/StaticIpConfiguration;-><init>(Landroid/net/StaticIpConfiguration;)V
-Landroid/net/StaticIpConfiguration;->clear()V
-Landroid/net/StaticIpConfiguration;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/StaticIpConfiguration;->readFromParcel(Landroid/net/StaticIpConfiguration;Landroid/os/Parcel;)V
-Landroid/net/StaticIpConfiguration;->toLinkProperties(Ljava/lang/String;)Landroid/net/LinkProperties;
Landroid/net/StringNetworkSpecifier;-><init>(Ljava/lang/String;)V
Landroid/net/StringNetworkSpecifier;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/StringNetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
@@ -38083,15 +36870,6 @@
Landroid/net/TrafficStats;->TYPE_TX_PACKETS:I
Landroid/net/TrafficStats;->UID_REMOVED:I
Landroid/net/TrafficStats;->UID_TETHERING:I
-Landroid/net/UidRange;-><init>(II)V
-Landroid/net/UidRange;->contains(I)Z
-Landroid/net/UidRange;->containsRange(Landroid/net/UidRange;)Z
-Landroid/net/UidRange;->count()I
-Landroid/net/UidRange;->createForUser(I)Landroid/net/UidRange;
-Landroid/net/UidRange;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/UidRange;->getStartUser()I
-Landroid/net/UidRange;->start:I
-Landroid/net/UidRange;->stop:I
Landroid/net/Uri$AbstractHierarchicalUri;-><init>()V
Landroid/net/Uri$AbstractHierarchicalUri;->getUserInfoPart()Landroid/net/Uri$Part;
Landroid/net/Uri$AbstractHierarchicalUri;->host:Ljava/lang/String;
@@ -38253,837 +37031,6 @@
Landroid/net/WebAddress;->setAuthInfo(Ljava/lang/String;)V
Landroid/net/WebAddress;->setPort(I)V
Landroid/net/WebAddress;->setScheme(Ljava/lang/String;)V
-Landroid/net/wifi/AnqpInformationElement;-><init>(II[B)V
-Landroid/net/wifi/AnqpInformationElement;->ANQP_3GPP_NETWORK:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_CAPABILITY_LIST:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_CIVIC_LOC:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_DOM_NAME:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_EMERGENCY_ALERT:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_EMERGENCY_NAI:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_EMERGENCY_NUMBER:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_GEO_LOC:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_IP_ADDR_AVAILABILITY:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_LOC_URI:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_NAI_REALM:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_NEIGHBOR_REPORT:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_NWK_AUTH_TYPE:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_QUERY_LIST:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_ROAMING_CONSORTIUM:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_TDLS_CAP:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_VENDOR_SPEC:I
-Landroid/net/wifi/AnqpInformationElement;->ANQP_VENUE_NAME:I
-Landroid/net/wifi/AnqpInformationElement;->getElementId()I
-Landroid/net/wifi/AnqpInformationElement;->getPayload()[B
-Landroid/net/wifi/AnqpInformationElement;->getVendorId()I
-Landroid/net/wifi/AnqpInformationElement;->HOTSPOT20_VENDOR_ID:I
-Landroid/net/wifi/AnqpInformationElement;->HS_CAPABILITY_LIST:I
-Landroid/net/wifi/AnqpInformationElement;->HS_CONN_CAPABILITY:I
-Landroid/net/wifi/AnqpInformationElement;->HS_FRIENDLY_NAME:I
-Landroid/net/wifi/AnqpInformationElement;->HS_ICON_FILE:I
-Landroid/net/wifi/AnqpInformationElement;->HS_ICON_REQUEST:I
-Landroid/net/wifi/AnqpInformationElement;->HS_NAI_HOME_REALM_QUERY:I
-Landroid/net/wifi/AnqpInformationElement;->HS_OPERATING_CLASS:I
-Landroid/net/wifi/AnqpInformationElement;->HS_OSU_PROVIDERS:I
-Landroid/net/wifi/AnqpInformationElement;->HS_QUERY_LIST:I
-Landroid/net/wifi/AnqpInformationElement;->HS_WAN_METRICS:I
-Landroid/net/wifi/AnqpInformationElement;->mElementId:I
-Landroid/net/wifi/AnqpInformationElement;->mPayload:[B
-Landroid/net/wifi/AnqpInformationElement;->mVendorId:I
-Landroid/net/wifi/aware/Characteristics;-><init>(Landroid/os/Bundle;)V
-Landroid/net/wifi/aware/Characteristics;->KEY_MAX_MATCH_FILTER_LENGTH:Ljava/lang/String;
-Landroid/net/wifi/aware/Characteristics;->KEY_MAX_SERVICE_NAME_LENGTH:Ljava/lang/String;
-Landroid/net/wifi/aware/Characteristics;->KEY_MAX_SERVICE_SPECIFIC_INFO_LENGTH:Ljava/lang/String;
-Landroid/net/wifi/aware/Characteristics;->mCharacteristics:Landroid/os/Bundle;
-Landroid/net/wifi/aware/ConfigRequest$Builder;-><init>()V
-Landroid/net/wifi/aware/ConfigRequest$Builder;->build()Landroid/net/wifi/aware/ConfigRequest;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mClusterHigh:I
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mClusterLow:I
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mDiscoveryWindowInterval:[I
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mMasterPreference:I
-Landroid/net/wifi/aware/ConfigRequest$Builder;->mSupport5gBand:Z
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setClusterHigh(I)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setClusterLow(I)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setDiscoveryWindowInterval(II)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setMasterPreference(I)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest$Builder;->setSupport5gBand(Z)Landroid/net/wifi/aware/ConfigRequest$Builder;
-Landroid/net/wifi/aware/ConfigRequest;-><init>(ZIII[I)V
-Landroid/net/wifi/aware/ConfigRequest;->CLUSTER_ID_MAX:I
-Landroid/net/wifi/aware/ConfigRequest;->CLUSTER_ID_MIN:I
-Landroid/net/wifi/aware/ConfigRequest;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/aware/ConfigRequest;->DW_DISABLE:I
-Landroid/net/wifi/aware/ConfigRequest;->DW_INTERVAL_NOT_INIT:I
-Landroid/net/wifi/aware/ConfigRequest;->mClusterHigh:I
-Landroid/net/wifi/aware/ConfigRequest;->mClusterLow:I
-Landroid/net/wifi/aware/ConfigRequest;->mDiscoveryWindowInterval:[I
-Landroid/net/wifi/aware/ConfigRequest;->mMasterPreference:I
-Landroid/net/wifi/aware/ConfigRequest;->mSupport5gBand:Z
-Landroid/net/wifi/aware/ConfigRequest;->NAN_BAND_24GHZ:I
-Landroid/net/wifi/aware/ConfigRequest;->NAN_BAND_5GHZ:I
-Landroid/net/wifi/aware/ConfigRequest;->validate()V
-Landroid/net/wifi/aware/DiscoverySession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;II)V
-Landroid/net/wifi/aware/DiscoverySession;->DBG:Z
-Landroid/net/wifi/aware/DiscoverySession;->getClientId()I
-Landroid/net/wifi/aware/DiscoverySession;->getMaxSendRetryCount()I
-Landroid/net/wifi/aware/DiscoverySession;->getSessionId()I
-Landroid/net/wifi/aware/DiscoverySession;->MAX_SEND_RETRY_COUNT:I
-Landroid/net/wifi/aware/DiscoverySession;->mClientId:I
-Landroid/net/wifi/aware/DiscoverySession;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/aware/DiscoverySession;->mMgr:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/aware/DiscoverySession;->mSessionId:I
-Landroid/net/wifi/aware/DiscoverySession;->mTerminated:Z
-Landroid/net/wifi/aware/DiscoverySession;->sendMessage(Landroid/net/wifi/aware/PeerHandle;I[BI)V
-Landroid/net/wifi/aware/DiscoverySession;->setTerminated()V
-Landroid/net/wifi/aware/DiscoverySession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/DiscoverySession;->VDBG:Z
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMatch(I[B[B)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMatchWithDistance(I[B[BI)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMessageReceived(I[B)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMessageSendFail(II)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onMessageSendSuccess(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionConfigFail(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionConfigSuccess()V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionStarted(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub$Proxy;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;-><init>()V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMatch:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMatchWithDistance:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMessageReceived:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMessageSendFail:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onMessageSendSuccess:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionConfigFail:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionConfigSuccess:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionStarted:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback$Stub;->TRANSACTION_onSessionTerminated:I
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMatch(I[B[B)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMatchWithDistance(I[B[BI)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMessageReceived(I[B)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMessageSendFail(II)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onMessageSendSuccess(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionConfigFail(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionConfigSuccess()V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionStarted(I)V
-Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onConnectFail(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onConnectSuccess(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub$Proxy;->onIdentityChanged([B)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;-><init>()V
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareEventCallback;
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onConnectFail:I
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onConnectSuccess:I
-Landroid/net/wifi/aware/IWifiAwareEventCallback$Stub;->TRANSACTION_onIdentityChanged:I
-Landroid/net/wifi/aware/IWifiAwareEventCallback;->onConnectFail(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback;->onConnectSuccess(I)V
-Landroid/net/wifi/aware/IWifiAwareEventCallback;->onIdentityChanged([B)V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->macAddress(Ljava/util/Map;)V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;-><init>()V
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider$Stub;->TRANSACTION_macAddress:I
-Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;->macAddress(Ljava/util/Map;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->connect(Landroid/os/IBinder;Ljava/lang/String;Landroid/net/wifi/aware/IWifiAwareEventCallback;Landroid/net/wifi/aware/ConfigRequest;Z)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->disconnect(ILandroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->getCharacteristics()Landroid/net/wifi/aware/Characteristics;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->isUsageEnabled()Z
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->publish(Ljava/lang/String;ILandroid/net/wifi/aware/PublishConfig;Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->requestMacAddresses(ILjava/util/List;Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->sendMessage(III[BII)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->subscribe(Ljava/lang/String;ILandroid/net/wifi/aware/SubscribeConfig;Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->terminateSession(II)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->updatePublish(IILandroid/net/wifi/aware/PublishConfig;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub$Proxy;->updateSubscribe(IILandroid/net/wifi/aware/SubscribeConfig;)V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;-><init>()V
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/aware/IWifiAwareManager;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_connect:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_disconnect:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_getCharacteristics:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_isUsageEnabled:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_publish:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_requestMacAddresses:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_sendMessage:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_subscribe:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_terminateSession:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_updatePublish:I
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;->TRANSACTION_updateSubscribe:I
-Landroid/net/wifi/aware/IWifiAwareManager;->connect(Landroid/os/IBinder;Ljava/lang/String;Landroid/net/wifi/aware/IWifiAwareEventCallback;Landroid/net/wifi/aware/ConfigRequest;Z)V
-Landroid/net/wifi/aware/IWifiAwareManager;->disconnect(ILandroid/os/IBinder;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->getCharacteristics()Landroid/net/wifi/aware/Characteristics;
-Landroid/net/wifi/aware/IWifiAwareManager;->isUsageEnabled()Z
-Landroid/net/wifi/aware/IWifiAwareManager;->publish(Ljava/lang/String;ILandroid/net/wifi/aware/PublishConfig;Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->requestMacAddresses(ILjava/util/List;Landroid/net/wifi/aware/IWifiAwareMacAddressProvider;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->sendMessage(III[BII)V
-Landroid/net/wifi/aware/IWifiAwareManager;->subscribe(Ljava/lang/String;ILandroid/net/wifi/aware/SubscribeConfig;Landroid/net/wifi/aware/IWifiAwareDiscoverySessionCallback;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->terminateSession(II)V
-Landroid/net/wifi/aware/IWifiAwareManager;->updatePublish(IILandroid/net/wifi/aware/PublishConfig;)V
-Landroid/net/wifi/aware/IWifiAwareManager;->updateSubscribe(IILandroid/net/wifi/aware/SubscribeConfig;)V
-Landroid/net/wifi/aware/PeerHandle;-><init>(I)V
-Landroid/net/wifi/aware/PeerHandle;->peerId:I
-Landroid/net/wifi/aware/PublishConfig$Builder;->mEnableRanging:Z
-Landroid/net/wifi/aware/PublishConfig$Builder;->mEnableTerminateNotification:Z
-Landroid/net/wifi/aware/PublishConfig$Builder;->mMatchFilter:[B
-Landroid/net/wifi/aware/PublishConfig$Builder;->mPublishType:I
-Landroid/net/wifi/aware/PublishConfig$Builder;->mServiceName:[B
-Landroid/net/wifi/aware/PublishConfig$Builder;->mServiceSpecificInfo:[B
-Landroid/net/wifi/aware/PublishConfig$Builder;->mTtlSec:I
-Landroid/net/wifi/aware/PublishConfig;-><init>([B[B[BIIZZ)V
-Landroid/net/wifi/aware/PublishConfig;->assertValid(Landroid/net/wifi/aware/Characteristics;Z)V
-Landroid/net/wifi/aware/PublishConfig;->mEnableRanging:Z
-Landroid/net/wifi/aware/PublishConfig;->mEnableTerminateNotification:Z
-Landroid/net/wifi/aware/PublishConfig;->mMatchFilter:[B
-Landroid/net/wifi/aware/PublishConfig;->mPublishType:I
-Landroid/net/wifi/aware/PublishConfig;->mServiceName:[B
-Landroid/net/wifi/aware/PublishConfig;->mServiceSpecificInfo:[B
-Landroid/net/wifi/aware/PublishConfig;->mTtlSec:I
-Landroid/net/wifi/aware/PublishDiscoverySession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;II)V
-Landroid/net/wifi/aware/PublishDiscoverySession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mEnableTerminateNotification:Z
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMatchFilter:[B
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMaxDistanceMm:I
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMaxDistanceMmSet:Z
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMinDistanceMm:I
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mMinDistanceMmSet:Z
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mServiceName:[B
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mServiceSpecificInfo:[B
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mSubscribeType:I
-Landroid/net/wifi/aware/SubscribeConfig$Builder;->mTtlSec:I
-Landroid/net/wifi/aware/SubscribeConfig;-><init>([B[B[BIIZZIZI)V
-Landroid/net/wifi/aware/SubscribeConfig;->assertValid(Landroid/net/wifi/aware/Characteristics;Z)V
-Landroid/net/wifi/aware/SubscribeConfig;->mEnableTerminateNotification:Z
-Landroid/net/wifi/aware/SubscribeConfig;->mMatchFilter:[B
-Landroid/net/wifi/aware/SubscribeConfig;->mMaxDistanceMm:I
-Landroid/net/wifi/aware/SubscribeConfig;->mMaxDistanceMmSet:Z
-Landroid/net/wifi/aware/SubscribeConfig;->mMinDistanceMm:I
-Landroid/net/wifi/aware/SubscribeConfig;->mMinDistanceMmSet:Z
-Landroid/net/wifi/aware/SubscribeConfig;->mServiceName:[B
-Landroid/net/wifi/aware/SubscribeConfig;->mServiceSpecificInfo:[B
-Landroid/net/wifi/aware/SubscribeConfig;->mSubscribeType:I
-Landroid/net/wifi/aware/SubscribeConfig;->mTtlSec:I
-Landroid/net/wifi/aware/SubscribeDiscoverySession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;II)V
-Landroid/net/wifi/aware/SubscribeDiscoverySession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;-><init>(II)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->addHeader(II)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->allocate(I)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->allocateAndPut(Ljava/util/List;)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->checkLength(I)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->getActualLength()I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->getArray()[B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mArray:[B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mArrayLength:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mLengthSize:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mPosition:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->mTypeSize:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putByte(IB)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putByteArray(I[B)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putByteArray(I[BII)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putInt(II)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putShort(IS)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putString(ILjava/lang/String;)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->putZeroLengthElement(I)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;->wrap([B)Landroid/net/wifi/aware/TlvBufferUtils$TlvConstructor;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;-><init>(II[BI)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getByte()B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getInt()I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getShort()S
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->getString()Ljava/lang/String;
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->length:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->offset:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->refArray:[B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvElement;->type:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;-><init>(II[B)V
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mArray:[B
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mArrayLength:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mLengthSize:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->mTypeSize:I
-Landroid/net/wifi/aware/TlvBufferUtils$TlvIterable;->toList()Ljava/util/List;
-Landroid/net/wifi/aware/TlvBufferUtils;-><init>()V
-Landroid/net/wifi/aware/TlvBufferUtils;->isValid([BII)Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;-><init>([B)V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;->mData:[B
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>()V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>(Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;-><init>([Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->assertValidFromUid(I)V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->convert(Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier$ByteArrayWrapper;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->initialize()V
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->isEmpty()Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->mDigester:Ljava/security/MessageDigest;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->mNetworkSpecifiers:Ljava/util/Set;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->satisfiesAwareNetworkSpecifier(Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;)Z
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareAgentNetworkSpecifier;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;-><init>(Landroid/net/wifi/aware/WifiAwareManager;Landroid/os/Looper;ZLandroid/net/wifi/aware/DiscoverySessionCallback;I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MATCH:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MATCH_WITH_DISTANCE:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MESSAGE_RECEIVED:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MESSAGE_SEND_FAIL:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_MESSAGE_SEND_SUCCESS:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_SESSION_CONFIG_FAIL:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_SESSION_CONFIG_SUCCESS:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_SESSION_STARTED:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->CALLBACK_SESSION_TERMINATED:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mAwareManager:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mClientId:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->MESSAGE_BUNDLE_KEY_MESSAGE2:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->MESSAGE_BUNDLE_KEY_MESSAGE:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mIsPublish:Z
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mOriginalCallback:Landroid/net/wifi/aware/DiscoverySessionCallback;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->mSession:Landroid/net/wifi/aware/DiscoverySession;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMatch(I[B[B)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMatchCommon(II[B[BI)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMatchWithDistance(I[B[BI)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMessageReceived(I[B)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMessageSendFail(II)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onMessageSendSuccess(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onProxySessionStarted(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onProxySessionTerminated(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionConfigFail(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionConfigSuccess()V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionStarted(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareDiscoverySessionCallbackProxy;->onSessionTerminated(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;-><init>(Landroid/net/wifi/aware/WifiAwareManager;Landroid/os/Looper;Landroid/os/Binder;Landroid/net/wifi/aware/AttachCallback;Landroid/net/wifi/aware/IdentityChangedListener;)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->CALLBACK_CONNECT_FAIL:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->CALLBACK_CONNECT_SUCCESS:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->CALLBACK_IDENTITY_CHANGED:I
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->mAwareManager:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->mBinder:Landroid/os/Binder;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->mLooper:Landroid/os/Looper;
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->onConnectFail(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->onConnectSuccess(I)V
-Landroid/net/wifi/aware/WifiAwareManager$WifiAwareEventCallbackProxy;->onIdentityChanged([B)V
-Landroid/net/wifi/aware/WifiAwareManager;-><init>(Landroid/content/Context;Landroid/net/wifi/aware/IWifiAwareManager;)V
-Landroid/net/wifi/aware/WifiAwareManager;->attach(Landroid/os/Handler;Landroid/net/wifi/aware/ConfigRequest;Landroid/net/wifi/aware/AttachCallback;Landroid/net/wifi/aware/IdentityChangedListener;)V
-Landroid/net/wifi/aware/WifiAwareManager;->createNetworkSpecifier(IIILandroid/net/wifi/aware/PeerHandle;[BLjava/lang/String;)Landroid/net/NetworkSpecifier;
-Landroid/net/wifi/aware/WifiAwareManager;->createNetworkSpecifier(II[B[BLjava/lang/String;)Landroid/net/NetworkSpecifier;
-Landroid/net/wifi/aware/WifiAwareManager;->DBG:Z
-Landroid/net/wifi/aware/WifiAwareManager;->disconnect(ILandroid/os/Binder;)V
-Landroid/net/wifi/aware/WifiAwareManager;->mContext:Landroid/content/Context;
-Landroid/net/wifi/aware/WifiAwareManager;->mLock:Ljava/lang/Object;
-Landroid/net/wifi/aware/WifiAwareManager;->mService:Landroid/net/wifi/aware/IWifiAwareManager;
-Landroid/net/wifi/aware/WifiAwareManager;->publish(ILandroid/os/Looper;Landroid/net/wifi/aware/PublishConfig;Landroid/net/wifi/aware/DiscoverySessionCallback;)V
-Landroid/net/wifi/aware/WifiAwareManager;->sendMessage(IILandroid/net/wifi/aware/PeerHandle;[BII)V
-Landroid/net/wifi/aware/WifiAwareManager;->subscribe(ILandroid/os/Looper;Landroid/net/wifi/aware/SubscribeConfig;Landroid/net/wifi/aware/DiscoverySessionCallback;)V
-Landroid/net/wifi/aware/WifiAwareManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareManager;->terminateSession(II)V
-Landroid/net/wifi/aware/WifiAwareManager;->updatePublish(IILandroid/net/wifi/aware/PublishConfig;)V
-Landroid/net/wifi/aware/WifiAwareManager;->updateSubscribe(IILandroid/net/wifi/aware/SubscribeConfig;)V
-Landroid/net/wifi/aware/WifiAwareManager;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;-><init>(IIIII[B[BLjava/lang/String;I)V
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->assertValidFromUid(I)V
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->clientId:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->isOutOfBand()Z
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_IB:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_IB_ANY_PEER:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_MAX_VALID:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_OOB:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->NETWORK_SPECIFIER_TYPE_OOB_ANY_PEER:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->passphrase:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->peerId:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->peerMac:[B
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->pmk:[B
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->requestorUid:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->role:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->sessionId:I
-Landroid/net/wifi/aware/WifiAwareNetworkSpecifier;->type:I
-Landroid/net/wifi/aware/WifiAwareSession;-><init>(Landroid/net/wifi/aware/WifiAwareManager;Landroid/os/Binder;I)V
-Landroid/net/wifi/aware/WifiAwareSession;->DBG:Z
-Landroid/net/wifi/aware/WifiAwareSession;->getClientId()I
-Landroid/net/wifi/aware/WifiAwareSession;->mBinder:Landroid/os/Binder;
-Landroid/net/wifi/aware/WifiAwareSession;->mClientId:I
-Landroid/net/wifi/aware/WifiAwareSession;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/aware/WifiAwareSession;->mMgr:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/aware/WifiAwareSession;->mTerminated:Z
-Landroid/net/wifi/aware/WifiAwareSession;->TAG:Ljava/lang/String;
-Landroid/net/wifi/aware/WifiAwareSession;->VDBG:Z
-Landroid/net/wifi/aware/WifiAwareUtils;-><init>()V
-Landroid/net/wifi/aware/WifiAwareUtils;->isLegacyVersion(Landroid/content/Context;I)Z
-Landroid/net/wifi/aware/WifiAwareUtils;->validatePassphrase(Ljava/lang/String;)Z
-Landroid/net/wifi/aware/WifiAwareUtils;->validatePmk([B)Z
-Landroid/net/wifi/aware/WifiAwareUtils;->validateServiceName([B)V
-Landroid/net/wifi/BatchedScanResult;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/BatchedScanResult;->TAG:Ljava/lang/String;
-Landroid/net/wifi/EAPConstants;-><init>()V
-Landroid/net/wifi/EAPConstants;->EAP_3Com:I
-Landroid/net/wifi/EAPConstants;->EAP_ActiontecWireless:I
-Landroid/net/wifi/EAPConstants;->EAP_AKA:I
-Landroid/net/wifi/EAPConstants;->EAP_AKA_PRIME:I
-Landroid/net/wifi/EAPConstants;->EAP_EKE:I
-Landroid/net/wifi/EAPConstants;->EAP_FAST:I
-Landroid/net/wifi/EAPConstants;->EAP_GPSK:I
-Landroid/net/wifi/EAPConstants;->EAP_HTTPDigest:I
-Landroid/net/wifi/EAPConstants;->EAP_IKEv2:I
-Landroid/net/wifi/EAPConstants;->EAP_KEA:I
-Landroid/net/wifi/EAPConstants;->EAP_KEA_VALIDATE:I
-Landroid/net/wifi/EAPConstants;->EAP_LEAP:I
-Landroid/net/wifi/EAPConstants;->EAP_Link:I
-Landroid/net/wifi/EAPConstants;->EAP_MD5:I
-Landroid/net/wifi/EAPConstants;->EAP_MOBAC:I
-Landroid/net/wifi/EAPConstants;->EAP_MSCHAPv2:I
-Landroid/net/wifi/EAPConstants;->EAP_OTP:I
-Landroid/net/wifi/EAPConstants;->EAP_PAX:I
-Landroid/net/wifi/EAPConstants;->EAP_PEAP:I
-Landroid/net/wifi/EAPConstants;->EAP_POTP:I
-Landroid/net/wifi/EAPConstants;->EAP_PSK:I
-Landroid/net/wifi/EAPConstants;->EAP_PWD:I
-Landroid/net/wifi/EAPConstants;->EAP_RSA:I
-Landroid/net/wifi/EAPConstants;->EAP_SAKE:I
-Landroid/net/wifi/EAPConstants;->EAP_SIM:I
-Landroid/net/wifi/EAPConstants;->EAP_SPEKE:I
-Landroid/net/wifi/EAPConstants;->EAP_TEAP:I
-Landroid/net/wifi/EAPConstants;->EAP_TLS:I
-Landroid/net/wifi/EAPConstants;->EAP_TTLS:I
-Landroid/net/wifi/EAPConstants;->EAP_ZLXEAP:I
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;-><init>()V
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->boundary:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->contentType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;->encodingType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;-><init>()V
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;->data:[B
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;->isLast:Z
-Landroid/net/wifi/hotspot2/ConfigParser$MimePart;->type:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;-><init>()V
-Landroid/net/wifi/hotspot2/ConfigParser;->BOUNDARY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->CONTENT_TRANSFER_ENCODING:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->CONTENT_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->createPasspointConfig(Ljava/util/Map;)Landroid/net/wifi/hotspot2/PasspointConfiguration;
-Landroid/net/wifi/hotspot2/ConfigParser;->ENCODING_BASE64:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseCACert([B)Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseContentType(Ljava/lang/String;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseHeaders(Ljava/io/LineNumberReader;)Landroid/net/wifi/hotspot2/ConfigParser$MimeHeader;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseMimeMultipartMessage(Ljava/io/LineNumberReader;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/ConfigParser;->parseMimePart(Ljava/io/LineNumberReader;Ljava/lang/String;)Landroid/net/wifi/hotspot2/ConfigParser$MimePart;
-Landroid/net/wifi/hotspot2/ConfigParser;->parsePkcs12([B)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/ConfigParser;->readHeaders(Ljava/io/LineNumberReader;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/ConfigParser;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_CA_CERT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_MULTIPART_MIXED:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_PASSPOINT_PROFILE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_PKCS12:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/ConfigParser;->TYPE_WIFI_CONFIG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->onProvisioningFailure(I)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;->onProvisioningStatus(I)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;-><init>()V
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/hotspot2/IProvisioningCallback;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->TRANSACTION_onProvisioningFailure:I
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;->TRANSACTION_onProvisioningStatus:I
-Landroid/net/wifi/hotspot2/IProvisioningCallback;->onProvisioningFailure(I)V
-Landroid/net/wifi/hotspot2/IProvisioningCallback;->onProvisioningStatus(I)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;-><init>(Ljava/lang/String;Ljava/util/List;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->getChildren()Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->getValue()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->isLeaf()Z
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$InternalNode;->mChildren:Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->getChildren()Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->getValue()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->isLeaf()Z
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$LeafNode;->mValue:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$ParsingException;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->getChildren()Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->getName()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->getValue()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->isLeaf()Z
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;->mName:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;-><init>()V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->buildPpsNode(Landroid/net/wifi/hotspot2/omadm/XMLNode;)Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->convertFromLongList(Ljava/util/List;)[J
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->getPpsNodeValue(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_AAA_SERVER_TRUST_ROOT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_ABLE_TO_SHARE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CERTIFICATE_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CERT_SHA256_FINGERPRINT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CERT_URL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CHECK_AAA_SERVER_CERT_STATUS:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_COUNTRY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CREATION_DATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CREDENTIAL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_CREDENTIAL_PRIORITY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_DATA_LIMIT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_DIGITAL_CERTIFICATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_DOWNLINK_BANDWIDTH:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_EAP_METHOD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_EAP_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_EXPIRATION_DATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_EXTENSION:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_FQDN:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_FQDN_MATCH:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_FRIENDLY_NAME:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HESSID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HOMESP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HOME_OI:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HOME_OI_LIST:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_HOME_OI_REQUIRED:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_ICON_URL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_INNER_EAP_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_INNER_METHOD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_INNER_VENDOR_ID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_INNER_VENDOR_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_IP_PROTOCOL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_MACHINE_MANAGED:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_MAXIMUM_BSS_LOAD_VALUE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_MIN_BACKHAUL_THRESHOLD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_NETWORK_ID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_NETWORK_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_OTHER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_OTHER_HOME_PARTNERS:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PASSWORD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PER_PROVIDER_SUBSCRIPTION:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_POLICY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_POLICY_UPDATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PORT_NUMBER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PREFERRED_ROAMING_PARTNER_LIST:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_PRIORITY:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_REALM:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_REQUIRED_PROTO_PORT_TUPLE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_RESTRICTION:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_ROAMING_CONSORTIUM_OI:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SIM:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SIM_IMSI:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SOFT_TOKEN_APP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SP_EXCLUSION_LIST:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SSID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_START_DATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SUBSCRIPTION_PARAMETER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_SUBSCRIPTION_UPDATE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_TIME_LIMIT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_TRUST_ROOT:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_TYPE_OF_SUBSCRIPTION:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_UPDATE_IDENTIFIER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_UPDATE_INTERVAL:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_UPDATE_METHOD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_UPLINK_BANDWIDTH:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_URI:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_USAGE_LIMITS:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_USAGE_TIME_PERIOD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_USERNAME:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_USERNAME_PASSWORD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_VENDOR_ID:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->NODE_VENDOR_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseAAAServerTrustRootList(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseCertificateCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Credential;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseDate(Ljava/lang/String;)J
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseEAPMethod(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseHexString(Ljava/lang/String;)[B
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseHomeOIInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseHomeOIList(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseHomeSP(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/HomeSp;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseInteger(Ljava/lang/String;)I
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseLong(Ljava/lang/String;I)J
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseMinBackhaulThreshold(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/pps/Policy;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseMinBackhaulThresholdInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/pps/Policy;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseNetworkIdInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseNetworkIds(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseOtherHomePartnerInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseOtherHomePartners(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePolicy(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Policy;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePpsInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/PasspointConfiguration;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePpsNode(Landroid/net/wifi/hotspot2/omadm/XMLNode;)Landroid/net/wifi/hotspot2/PasspointConfiguration;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePreferredRoamingPartner(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parsePreferredRoamingPartnerList(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseProtoPortTuple(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseRequiredProtoPortTuple(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/util/Map;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseRoamingConsortiumOI(Ljava/lang/String;)[J
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseSimCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseSpExclusionInstance(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseSpExclusionList(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseSubscriptionParameter(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/PasspointConfiguration;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseTrustRoot(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUpdateParameter(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUpdateUserCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/util/Pair;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUrn(Landroid/net/wifi/hotspot2/omadm/XMLNode;)Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUsageLimits(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;Landroid/net/wifi/hotspot2/PasspointConfiguration;)V
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->parseUserCredential(Landroid/net/wifi/hotspot2/omadm/PpsMoParser$PPSNode;)Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->PPS_MO_URN:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_DDF_NAME:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_MANAGEMENT_TREE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_NODE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_NODE_NAME:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_RT_PROPERTIES:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_TYPE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_VALUE:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/PpsMoParser;->TAG_VER_DTD:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;-><init>(Landroid/net/wifi/hotspot2/omadm/XMLNode;Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->addChild(Landroid/net/wifi/hotspot2/omadm/XMLNode;)V
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->addText(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->close()V
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->getChildren()Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->getParent()Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->getTag()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->getText()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mChildren:Ljava/util/List;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mParent:Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mTag:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mText:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/omadm/XMLNode;->mTextBuilder:Ljava/lang/StringBuilder;
-Landroid/net/wifi/hotspot2/omadm/XMLParser;-><init>()V
-Landroid/net/wifi/hotspot2/omadm/XMLParser;->mCurrent:Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/omadm/XMLParser;->mRoot:Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/omadm/XMLParser;->parse(Ljava/lang/String;)Landroid/net/wifi/hotspot2/omadm/XMLNode;
-Landroid/net/wifi/hotspot2/OsuProvider;-><init>(Landroid/net/wifi/hotspot2/OsuProvider;)V
-Landroid/net/wifi/hotspot2/OsuProvider;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Ljava/util/List;Landroid/graphics/drawable/Icon;)V
-Landroid/net/wifi/hotspot2/OsuProvider;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/hotspot2/OsuProvider;->getFriendlyName()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->getIcon()Landroid/graphics/drawable/Icon;
-Landroid/net/wifi/hotspot2/OsuProvider;->getMethodList()Ljava/util/List;
-Landroid/net/wifi/hotspot2/OsuProvider;->getNetworkAccessIdentifier()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->getOsuSsid()Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/hotspot2/OsuProvider;->getServerUri()Landroid/net/Uri;
-Landroid/net/wifi/hotspot2/OsuProvider;->getServiceDescription()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->METHOD_OMA_DM:I
-Landroid/net/wifi/hotspot2/OsuProvider;->METHOD_SOAP_XML_SPP:I
-Landroid/net/wifi/hotspot2/OsuProvider;->mFriendlyName:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->mIcon:Landroid/graphics/drawable/Icon;
-Landroid/net/wifi/hotspot2/OsuProvider;->mMethodList:Ljava/util/List;
-Landroid/net/wifi/hotspot2/OsuProvider;->mNetworkAccessIdentifier:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/OsuProvider;->mOsuSsid:Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/hotspot2/OsuProvider;->mServerUri:Landroid/net/Uri;
-Landroid/net/wifi/hotspot2/OsuProvider;->mServiceDescription:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->CERTIFICATE_SHA256_BYTES:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getCredentialPriority()I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getPolicy()Landroid/net/wifi/hotspot2/pps/Policy;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getSubscriptionCreationTimeInMillis()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getSubscriptionExpirationTimeInMillis()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getSubscriptionType()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getSubscriptionUpdate()Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getTrustRootCertList()Ljava/util/Map;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUpdateIdentifier()I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUsageLimitDataLimit()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUsageLimitStartTimeInMillis()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUsageLimitTimeLimitInMinutes()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->getUsageLimitUsageTimePeriodInMinutes()J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->isTrustRootCertListEquals(Ljava/util/Map;Ljava/util/Map;)Z
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->MAX_URL_BYTES:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mCredential:Landroid/net/wifi/hotspot2/pps/Credential;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mCredentialPriority:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mHomeSp:Landroid/net/wifi/hotspot2/pps/HomeSp;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mPolicy:Landroid/net/wifi/hotspot2/pps/Policy;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mSubscriptionCreationTimeInMillis:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mSubscriptionExpirationTimeInMillis:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mSubscriptionType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mSubscriptionUpdate:Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mTrustRootCertList:Ljava/util/Map;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUpdateIdentifier:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUsageLimitDataLimit:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUsageLimitStartTimeInMillis:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUsageLimitTimeLimitInMinutes:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->mUsageLimitUsageTimePeriodInMinutes:J
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->NULL_VALUE:I
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setCredentialPriority(I)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setPolicy(Landroid/net/wifi/hotspot2/pps/Policy;)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setSubscriptionCreationTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setSubscriptionExpirationTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setSubscriptionType(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setSubscriptionUpdate(Landroid/net/wifi/hotspot2/pps/UpdateParameter;)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setTrustRootCertList(Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUpdateIdentifier(I)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUsageLimitDataLimit(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUsageLimitStartTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUsageLimitTimeLimitInMinutes(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->setUsageLimitUsageTimePeriodInMinutes(J)V
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->validate()Z
-Landroid/net/wifi/hotspot2/PasspointConfiguration;->writeTrustRootCerts(Landroid/os/Parcel;Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->CERT_SHA256_FINGER_PRINT_LENGTH:I
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->CERT_TYPE_X509V3:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->mCertSha256Fingerprint:[B
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->mCertType:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->MAX_IMSI_LENGTH:I
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->mEapType:I
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->mImsi:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;->verifyImsi()Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->AUTH_METHOD_MSCHAP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->AUTH_METHOD_MSCHAPV2:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->AUTH_METHOD_PAP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->getAbleToShare()Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->getMachineManaged()Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->getSoftTokenApp()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mAbleToShare:Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->MAX_PASSWORD_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->MAX_USERNAME_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mEapType:I
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mMachineManaged:Z
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mNonEapInnerMethod:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mPassword:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mSoftTokenApp:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->mUsername:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->setAbleToShare(Z)V
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->setMachineManaged(Z)V
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->setSoftTokenApp(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->SUPPORTED_AUTH:Ljava/util/Set;
-Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->getCheckAaaServerCertStatus()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->getCreationTimeInMillis()J
-Landroid/net/wifi/hotspot2/pps/Credential;->getExpirationTimeInMillis()J
-Landroid/net/wifi/hotspot2/pps/Credential;->isPrivateKeyEquals(Ljava/security/PrivateKey;Ljava/security/PrivateKey;)Z
-Landroid/net/wifi/hotspot2/pps/Credential;->isX509CertificateEquals(Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
-Landroid/net/wifi/hotspot2/pps/Credential;->isX509CertificatesEquals([Ljava/security/cert/X509Certificate;[Ljava/security/cert/X509Certificate;)Z
-Landroid/net/wifi/hotspot2/pps/Credential;->MAX_REALM_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Credential;->mCaCertificate:Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/hotspot2/pps/Credential;->mCertCredential:Landroid/net/wifi/hotspot2/pps/Credential$CertificateCredential;
-Landroid/net/wifi/hotspot2/pps/Credential;->mCheckAaaServerCertStatus:Z
-Landroid/net/wifi/hotspot2/pps/Credential;->mClientCertificateChain:[Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/hotspot2/pps/Credential;->mClientPrivateKey:Ljava/security/PrivateKey;
-Landroid/net/wifi/hotspot2/pps/Credential;->mCreationTimeInMillis:J
-Landroid/net/wifi/hotspot2/pps/Credential;->mExpirationTimeInMillis:J
-Landroid/net/wifi/hotspot2/pps/Credential;->mRealm:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential;->mSimCredential:Landroid/net/wifi/hotspot2/pps/Credential$SimCredential;
-Landroid/net/wifi/hotspot2/pps/Credential;->mUserCredential:Landroid/net/wifi/hotspot2/pps/Credential$UserCredential;
-Landroid/net/wifi/hotspot2/pps/Credential;->setCheckAaaServerCertStatus(Z)V
-Landroid/net/wifi/hotspot2/pps/Credential;->setCreationTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/pps/Credential;->setExpirationTimeInMillis(J)V
-Landroid/net/wifi/hotspot2/pps/Credential;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Credential;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->verifyCertCredential()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->verifySha256Fingerprint([Ljava/security/cert/X509Certificate;[B)Z
-Landroid/net/wifi/hotspot2/pps/Credential;->verifySimCredential()Z
-Landroid/net/wifi/hotspot2/pps/Credential;->verifyUserCredential()Z
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getHomeNetworkIds()Ljava/util/Map;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getIconUrl()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getMatchAllOis()[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getMatchAnyOis()[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->getOtherHomePartners()[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->MAX_SSID_BYTES:I
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mFqdn:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mFriendlyName:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mHomeNetworkIds:Ljava/util/Map;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mIconUrl:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mMatchAllOis:[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mMatchAnyOis:[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mOtherHomePartners:[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->mRoamingConsortiumOis:[J
-Landroid/net/wifi/hotspot2/pps/HomeSp;->NULL_VALUE:I
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setHomeNetworkIds(Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setIconUrl(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setMatchAllOis([J)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setMatchAnyOis([J)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->setOtherHomePartners([Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/HomeSp;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/HomeSp;->validate()Z
-Landroid/net/wifi/hotspot2/pps/HomeSp;->writeHomeNetworkIds(Landroid/os/Parcel;Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;-><init>()V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;-><init>(Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->getCountries()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->getFqdn()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->getFqdnExactMatch()Z
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->getPriority()I
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->mCountries:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->mFqdn:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->mFqdnExactMatch:Z
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->mPriority:I
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setCountries(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setFqdn(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setFqdnExactMatch(Z)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->setPriority(I)V
-Landroid/net/wifi/hotspot2/pps/Policy$RoamingPartner;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Policy;-><init>()V
-Landroid/net/wifi/hotspot2/pps/Policy;-><init>(Landroid/net/wifi/hotspot2/pps/Policy;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/hotspot2/pps/Policy;->getExcludedSsidList()[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy;->getMaximumBssLoadValue()I
-Landroid/net/wifi/hotspot2/pps/Policy;->getMinHomeDownlinkBandwidth()J
-Landroid/net/wifi/hotspot2/pps/Policy;->getMinHomeUplinkBandwidth()J
-Landroid/net/wifi/hotspot2/pps/Policy;->getMinRoamingDownlinkBandwidth()J
-Landroid/net/wifi/hotspot2/pps/Policy;->getMinRoamingUplinkBandwidth()J
-Landroid/net/wifi/hotspot2/pps/Policy;->getPolicyUpdate()Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/pps/Policy;->getPreferredRoamingPartnerList()Ljava/util/List;
-Landroid/net/wifi/hotspot2/pps/Policy;->getRequiredProtoPortMap()Ljava/util/Map;
-Landroid/net/wifi/hotspot2/pps/Policy;->MAX_EXCLUSION_SSIDS:I
-Landroid/net/wifi/hotspot2/pps/Policy;->MAX_PORT_STRING_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Policy;->MAX_SSID_BYTES:I
-Landroid/net/wifi/hotspot2/pps/Policy;->mExcludedSsidList:[Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy;->mMaximumBssLoadValue:I
-Landroid/net/wifi/hotspot2/pps/Policy;->mMinHomeDownlinkBandwidth:J
-Landroid/net/wifi/hotspot2/pps/Policy;->mMinHomeUplinkBandwidth:J
-Landroid/net/wifi/hotspot2/pps/Policy;->mMinRoamingDownlinkBandwidth:J
-Landroid/net/wifi/hotspot2/pps/Policy;->mMinRoamingUplinkBandwidth:J
-Landroid/net/wifi/hotspot2/pps/Policy;->mPolicyUpdate:Landroid/net/wifi/hotspot2/pps/UpdateParameter;
-Landroid/net/wifi/hotspot2/pps/Policy;->mPreferredRoamingPartnerList:Ljava/util/List;
-Landroid/net/wifi/hotspot2/pps/Policy;->mRequiredProtoPortMap:Ljava/util/Map;
-Landroid/net/wifi/hotspot2/pps/Policy;->NULL_VALUE:I
-Landroid/net/wifi/hotspot2/pps/Policy;->setExcludedSsidList([Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMaximumBssLoadValue(I)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMinHomeDownlinkBandwidth(J)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMinHomeUplinkBandwidth(J)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMinRoamingDownlinkBandwidth(J)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setMinRoamingUplinkBandwidth(J)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setPolicyUpdate(Landroid/net/wifi/hotspot2/pps/UpdateParameter;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setPreferredRoamingPartnerList(Ljava/util/List;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->setRequiredProtoPortMap(Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/Policy;->validate()Z
-Landroid/net/wifi/hotspot2/pps/Policy;->writeProtoPortMap(Landroid/os/Parcel;Ljava/util/Map;)V
-Landroid/net/wifi/hotspot2/pps/Policy;->writeRoamingPartnerList(Landroid/os/Parcel;ILjava/util/List;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;-><init>()V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;-><init>(Landroid/net/wifi/hotspot2/pps/UpdateParameter;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->CERTIFICATE_SHA256_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getBase64EncodedPassword()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getRestriction()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getServerUri()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getTrustRootCertSha256Fingerprint()[B
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getTrustRootCertUrl()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getUpdateIntervalInMinutes()J
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getUpdateMethod()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->getUsername()Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->MAX_PASSWORD_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->MAX_URI_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->MAX_URL_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->MAX_USERNAME_BYTES:I
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mBase64EncodedPassword:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mRestriction:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mServerUri:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mTrustRootCertSha256Fingerprint:[B
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mTrustRootCertUrl:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mUpdateIntervalInMinutes:J
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mUpdateMethod:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->mUsername:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setBase64EncodedPassword(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setRestriction(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setServerUri(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setTrustRootCertSha256Fingerprint([B)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setTrustRootCertUrl(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setUpdateIntervalInMinutes(J)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setUpdateMethod(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->setUsername(Ljava/lang/String;)V
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->TAG:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_CHECK_INTERVAL_NEVER:J
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_METHOD_OMADM:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_METHOD_SSP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_RESTRICTION_HOMESP:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_RESTRICTION_ROAMING_PARTNER:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->UPDATE_RESTRICTION_UNRESTRICTED:Ljava/lang/String;
-Landroid/net/wifi/hotspot2/pps/UpdateParameter;->validate()Z
Landroid/net/wifi/hotspot2/ProvisioningCallback;-><init>()V
Landroid/net/wifi/hotspot2/ProvisioningCallback;->onProvisioningFailure(I)V
Landroid/net/wifi/hotspot2/ProvisioningCallback;->onProvisioningStatus(I)V
@@ -39099,539 +37046,6 @@
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_PROVIDER_VERIFIED:I
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_SERVER_CONNECTED:I
Landroid/net/wifi/hotspot2/ProvisioningCallback;->OSU_STATUS_SERVER_VALIDATED:I
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->onNumClientsChanged(I)V
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;->onStateChanged(II)V
-Landroid/net/wifi/ISoftApCallback$Stub;-><init>()V
-Landroid/net/wifi/ISoftApCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/ISoftApCallback;
-Landroid/net/wifi/ISoftApCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/ISoftApCallback$Stub;->TRANSACTION_onNumClientsChanged:I
-Landroid/net/wifi/ISoftApCallback$Stub;->TRANSACTION_onStateChanged:I
-Landroid/net/wifi/ISoftApCallback;->onNumClientsChanged(I)V
-Landroid/net/wifi/ISoftApCallback;->onStateChanged(II)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->addOrUpdatePasspointConfiguration(Landroid/net/wifi/hotspot2/PasspointConfiguration;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->deauthenticateNetwork(JZ)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->disableEphemeralNetwork(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->disableNetwork(ILjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->disconnect(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableNetwork(IZLjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableTdls(Ljava/lang/String;Z)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableTdlsWithMacAddress(Ljava/lang/String;Z)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableVerboseLogging(I)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->enableWifiConnectivityManager(Z)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->factoryReset(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getAllMatchingWifiConfigs(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getCountryCode()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getCurrentNetwork()Landroid/net/Network;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getCurrentNetworkWpsNfcConfigurationToken()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getDhcpInfo()Landroid/net/DhcpInfo;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getMatchingOsuProviders(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getMatchingWifiConfig(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getPasspointConfigurations()Ljava/util/List;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getPrivilegedConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getScanResults(Ljava/lang/String;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getSupportedFeatures()I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getVerboseLoggingLevel()I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApEnabledState()I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiEnabledState()I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiServiceMessenger(Ljava/lang/String;)Landroid/os/Messenger;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->initializeMulticastFiltering()V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->isDualBandSupported()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->isMulticastEnabled()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->isScanAlwaysAvailable()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->matchProviderWithCurrentNetwork(Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->needs5GHzToAnyApBandConversion()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->queryPasspointIcon(JLjava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->reassociate(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->reconnect(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->registerSoftApCallback(Landroid/os/IBinder;Landroid/net/wifi/ISoftApCallback;I)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->releaseMulticastLock()V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->releaseWifiLock(Landroid/os/IBinder;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->removeNetwork(ILjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->removePasspointConfiguration(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->requestActivityInfo(Landroid/os/ResultReceiver;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->restoreBackupData([B)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->restoreSupplicantBackupData([B[B)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->retrieveBackupData()[B
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->setCountryCode(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->setWifiApConfiguration(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->setWifiEnabled(Ljava/lang/String;Z)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startScan(Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startSoftAp(Landroid/net/wifi/WifiConfiguration;)Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startSubscriptionProvisioning(Landroid/net/wifi/hotspot2/OsuProvider;Landroid/net/wifi/hotspot2/IProvisioningCallback;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->startWatchLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->stopLocalOnlyHotspot()V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->stopSoftAp()Z
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->stopWatchLocalOnlyHotspot()V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->unregisterSoftApCallback(I)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->updateInterfaceIpState(Ljava/lang/String;I)V
-Landroid/net/wifi/IWifiManager$Stub$Proxy;->updateWifiLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;)V
-Landroid/net/wifi/IWifiManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_acquireMulticastLock:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_acquireWifiLock:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_addOrUpdateNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_addOrUpdatePasspointConfiguration:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_deauthenticateNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_disableEphemeralNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_disableNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_disconnect:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableTdls:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableTdlsWithMacAddress:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableVerboseLogging:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_enableWifiConnectivityManager:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_factoryReset:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getAllMatchingWifiConfigs:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getConfiguredNetworks:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getConnectionInfo:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getCountryCode:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getCurrentNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getCurrentNetworkWpsNfcConfigurationToken:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getDhcpInfo:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getMatchingOsuProviders:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getMatchingWifiConfig:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getPasspointConfigurations:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getPrivilegedConfiguredNetworks:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getSupportedFeatures:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getVerboseLoggingLevel:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getWifiApConfiguration:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getWifiApEnabledState:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getWifiEnabledState:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getWifiServiceMessenger:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_initializeMulticastFiltering:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_isDualBandSupported:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_isMulticastEnabled:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_isScanAlwaysAvailable:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_matchProviderWithCurrentNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_needs5GHzToAnyApBandConversion:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_queryPasspointIcon:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_reassociate:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_reconnect:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_registerSoftApCallback:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_releaseMulticastLock:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_releaseWifiLock:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_removeNetwork:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_removePasspointConfiguration:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_reportActivityInfo:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_requestActivityInfo:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_restoreBackupData:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_restoreSupplicantBackupData:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_retrieveBackupData:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_setCountryCode:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_setWifiApConfiguration:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_setWifiEnabled:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startLocalOnlyHotspot:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startScan:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startSoftAp:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startSubscriptionProvisioning:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_startWatchLocalOnlyHotspot:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_stopLocalOnlyHotspot:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_stopSoftAp:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_stopWatchLocalOnlyHotspot:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_unregisterSoftApCallback:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_updateInterfaceIpState:I
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_updateWifiLockWorkSource:I
-Landroid/net/wifi/IWifiManager;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
-Landroid/net/wifi/IWifiManager;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager;->addOrUpdatePasspointConfiguration(Landroid/net/wifi/hotspot2/PasspointConfiguration;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->deauthenticateNetwork(JZ)V
-Landroid/net/wifi/IWifiManager;->disableEphemeralNetwork(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->disableNetwork(ILjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->disconnect(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->enableNetwork(IZLjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->enableTdls(Ljava/lang/String;Z)V
-Landroid/net/wifi/IWifiManager;->enableTdlsWithMacAddress(Ljava/lang/String;Z)V
-Landroid/net/wifi/IWifiManager;->enableVerboseLogging(I)V
-Landroid/net/wifi/IWifiManager;->enableWifiConnectivityManager(Z)V
-Landroid/net/wifi/IWifiManager;->factoryReset(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->getAllMatchingWifiConfigs(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager;->getConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-Landroid/net/wifi/IWifiManager;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo;
-Landroid/net/wifi/IWifiManager;->getCountryCode()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager;->getCurrentNetworkWpsNfcConfigurationToken()Ljava/lang/String;
-Landroid/net/wifi/IWifiManager;->getDhcpInfo()Landroid/net/DhcpInfo;
-Landroid/net/wifi/IWifiManager;->getMatchingOsuProviders(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager;->getMatchingWifiConfig(Landroid/net/wifi/ScanResult;)Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/IWifiManager;->getPasspointConfigurations()Ljava/util/List;
-Landroid/net/wifi/IWifiManager;->getPrivilegedConfiguredNetworks()Landroid/content/pm/ParceledListSlice;
-Landroid/net/wifi/IWifiManager;->getScanResults(Ljava/lang/String;)Ljava/util/List;
-Landroid/net/wifi/IWifiManager;->getSupportedFeatures()I
-Landroid/net/wifi/IWifiManager;->getVerboseLoggingLevel()I
-Landroid/net/wifi/IWifiManager;->getWifiEnabledState()I
-Landroid/net/wifi/IWifiManager;->getWifiServiceMessenger(Ljava/lang/String;)Landroid/os/Messenger;
-Landroid/net/wifi/IWifiManager;->initializeMulticastFiltering()V
-Landroid/net/wifi/IWifiManager;->isDualBandSupported()Z
-Landroid/net/wifi/IWifiManager;->isMulticastEnabled()Z
-Landroid/net/wifi/IWifiManager;->isScanAlwaysAvailable()Z
-Landroid/net/wifi/IWifiManager;->matchProviderWithCurrentNetwork(Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager;->needs5GHzToAnyApBandConversion()Z
-Landroid/net/wifi/IWifiManager;->queryPasspointIcon(JLjava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->reassociate(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->reconnect(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->registerSoftApCallback(Landroid/os/IBinder;Landroid/net/wifi/ISoftApCallback;I)V
-Landroid/net/wifi/IWifiManager;->releaseMulticastLock()V
-Landroid/net/wifi/IWifiManager;->releaseWifiLock(Landroid/os/IBinder;)Z
-Landroid/net/wifi/IWifiManager;->removeNetwork(ILjava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->removePasspointConfiguration(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->reportActivityInfo()Landroid/net/wifi/WifiActivityEnergyInfo;
-Landroid/net/wifi/IWifiManager;->requestActivityInfo(Landroid/os/ResultReceiver;)V
-Landroid/net/wifi/IWifiManager;->restoreBackupData([B)V
-Landroid/net/wifi/IWifiManager;->restoreSupplicantBackupData([B[B)V
-Landroid/net/wifi/IWifiManager;->retrieveBackupData()[B
-Landroid/net/wifi/IWifiManager;->setCountryCode(Ljava/lang/String;)V
-Landroid/net/wifi/IWifiManager;->setWifiApConfiguration(Landroid/net/wifi/WifiConfiguration;Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->setWifiEnabled(Ljava/lang/String;Z)Z
-Landroid/net/wifi/IWifiManager;->startLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;Ljava/lang/String;)I
-Landroid/net/wifi/IWifiManager;->startScan(Ljava/lang/String;)Z
-Landroid/net/wifi/IWifiManager;->startSoftAp(Landroid/net/wifi/WifiConfiguration;)Z
-Landroid/net/wifi/IWifiManager;->startSubscriptionProvisioning(Landroid/net/wifi/hotspot2/OsuProvider;Landroid/net/wifi/hotspot2/IProvisioningCallback;)V
-Landroid/net/wifi/IWifiManager;->startWatchLocalOnlyHotspot(Landroid/os/Messenger;Landroid/os/IBinder;)V
-Landroid/net/wifi/IWifiManager;->stopLocalOnlyHotspot()V
-Landroid/net/wifi/IWifiManager;->stopSoftAp()Z
-Landroid/net/wifi/IWifiManager;->stopWatchLocalOnlyHotspot()V
-Landroid/net/wifi/IWifiManager;->unregisterSoftApCallback(I)V
-Landroid/net/wifi/IWifiManager;->updateInterfaceIpState(Ljava/lang/String;I)V
-Landroid/net/wifi/IWifiManager;->updateWifiLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;)V
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getAvailableChannels(I)Landroid/os/Bundle;
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/IWifiScanner$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/IWifiScanner$Stub;->TRANSACTION_getAvailableChannels:I
-Landroid/net/wifi/IWifiScanner$Stub;->TRANSACTION_getMessenger:I
-Landroid/net/wifi/IWifiScanner;->getAvailableChannels(I)Landroid/os/Bundle;
-Landroid/net/wifi/IWifiScanner;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->checkConfigureWifiDisplayPermission()V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->close(Landroid/os/IBinder;)V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->getMessenger(Landroid/os/IBinder;)Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->getP2pStateMachineMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;->setMiracastMode(I)V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;-><init>()V
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_checkConfigureWifiDisplayPermission:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_close:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_getMessenger:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_getP2pStateMachineMessenger:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->TRANSACTION_setMiracastMode:I
-Landroid/net/wifi/p2p/IWifiP2pManager;->checkConfigureWifiDisplayPermission()V
-Landroid/net/wifi/p2p/IWifiP2pManager;->close(Landroid/os/IBinder;)V
-Landroid/net/wifi/p2p/IWifiP2pManager;->getMessenger(Landroid/os/IBinder;)Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager;->getP2pStateMachineMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/IWifiP2pManager;->setMiracastMode(I)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;-><init>(Ljava/util/List;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->compressDnsName(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->createPtrServiceQuery(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->createTxtServiceQuery(Ljava/lang/String;Ljava/lang/String;Landroid/net/nsd/DnsSdTxtRecord;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->DNS_TYPE_PTR:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->DNS_TYPE_TXT:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->sVmPacket:Ljava/util/Map;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceInfo;->VERSION_1:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>()V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceRequest;-><init>(Ljava/lang/String;II)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;-><init>(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getDnsQueryName()Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getDnsType()I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getInstanceName()Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getTxtRecord()Ljava/util/Map;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->getVersion()I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mDnsQueryName:Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mDnsType:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mInstanceName:Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mTxtRecord:Ljava/util/HashMap;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->mVersion:I
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->newInstance(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->parse()Z
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->readDnsName(Ljava/io/DataInputStream;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->readTxtData(Ljava/io/DataInputStream;)Z
-Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;->sVmpack:Ljava/util/Map;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;->bin2HexStr([B)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;->getSupplicantQueryList()Ljava/util/List;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;->SERVICE_TYPE_WS_DISCOVERY:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;-><init>(IIILjava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->getSupplicantQuery()Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->getTransactionId()I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mLength:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mProtocolType:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mQuery:Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->mTransId:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->setTransactionId(I)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;->validateQuery(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;-><init>()V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->BAD_REQUEST:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->REQUESTED_INFORMATION_NOT_AVAILABLE:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->SERVICE_PROTOCOL_NOT_AVAILABLE:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->SUCCESS:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse$Status;->toString(I)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;-><init>(IIILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getRawData()[B
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getServiceType()I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getSrcDevice()Landroid/net/wifi/p2p/WifiP2pDevice;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getStatus()I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->getTransactionId()I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->hexStr2Bin(Ljava/lang/String;)[B
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->MAX_BUF_SIZE:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mData:[B
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mDevice:Landroid/net/wifi/p2p/WifiP2pDevice;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mServiceType:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mStatus:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->mTransId:I
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->newInstance(Ljava/lang/String;[B)Ljava/util/List;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;->setSrcDevice(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;-><init>(Ljava/util/List;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;->createSupplicantQuery(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceInfo;->VERSION_1_0:I
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;-><init>()V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceRequest;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;-><init>(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)V
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->getUniqueServiceNames()Ljava/util/List;
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->getVersion()I
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->mUniqueServiceNames:Ljava/util/List;
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->mVersion:I
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->newInstance(IILandroid/net/wifi/p2p/WifiP2pDevice;[B)Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;
-Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;->parse()Z
-Landroid/net/wifi/p2p/WifiP2pConfig;->invalidate()V
-Landroid/net/wifi/p2p/WifiP2pConfig;->MAX_GROUP_OWNER_INTENT:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->detailedDevicePattern:Ljava/util/regex/Pattern;
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_CLIENT_DISCOVERABILITY:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_CONCURRENT_OPER:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_DEVICE_LIMIT:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_INFRA_MANAGED:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_INVITATION_PROCEDURE:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->DEVICE_CAPAB_SERVICE_DISCOVERY:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_CROSS_CONN:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_GROUP_FORMATION:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_GROUP_LIMIT:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_GROUP_OWNER:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_INTRA_BSS_DIST:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_PERSISTENT_GROUP:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->GROUP_CAPAB_PERSISTENT_RECONN:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->isDeviceLimit()Z
-Landroid/net/wifi/p2p/WifiP2pDevice;->isGroupLimit()Z
-Landroid/net/wifi/p2p/WifiP2pDevice;->isInvitationCapable()Z
-Landroid/net/wifi/p2p/WifiP2pDevice;->parseHex(Ljava/lang/String;)I
-Landroid/net/wifi/p2p/WifiP2pDevice;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pDevice;->threeTokenPattern:Ljava/util/regex/Pattern;
-Landroid/net/wifi/p2p/WifiP2pDevice;->twoTokenPattern:Ljava/util/regex/Pattern;
-Landroid/net/wifi/p2p/WifiP2pDevice;->updateSupplicantDetails(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pDevice;->WPS_CONFIG_DISPLAY:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->WPS_CONFIG_KEYPAD:I
-Landroid/net/wifi/p2p/WifiP2pDevice;->WPS_CONFIG_PUSHBUTTON:I
-Landroid/net/wifi/p2p/WifiP2pDeviceList;-><init>(Ljava/util/ArrayList;)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->clear()Z
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->isGroupOwner(Ljava/lang/String;)Z
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->mDevices:Ljava/util/HashMap;
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->remove(Landroid/net/wifi/p2p/WifiP2pDevice;)Z
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->remove(Landroid/net/wifi/p2p/WifiP2pDeviceList;)Z
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->updateGroupCapability(Ljava/lang/String;I)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->updateStatus(Ljava/lang/String;I)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->updateSupplicantDetails(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->validateDevice(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pDeviceList;->validateDeviceAddress(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->addClient(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->addClient(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->contains(Landroid/net/wifi/p2p/WifiP2pDevice;)Z
-Landroid/net/wifi/p2p/WifiP2pGroup;->groupStartedPattern:Ljava/util/regex/Pattern;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mClients:Ljava/util/List;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mInterface:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mIsGroupOwner:Z
-Landroid/net/wifi/p2p/WifiP2pGroup;->mNetId:I
-Landroid/net/wifi/p2p/WifiP2pGroup;->mNetworkName:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mOwner:Landroid/net/wifi/p2p/WifiP2pDevice;
-Landroid/net/wifi/p2p/WifiP2pGroup;->mPassphrase:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pGroup;->PERSISTENT_NET_ID:I
-Landroid/net/wifi/p2p/WifiP2pGroup;->removeClient(Landroid/net/wifi/p2p/WifiP2pDevice;)Z
-Landroid/net/wifi/p2p/WifiP2pGroup;->removeClient(Ljava/lang/String;)Z
-Landroid/net/wifi/p2p/WifiP2pGroup;->setNetworkName(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->setOwner(Landroid/net/wifi/p2p/WifiP2pDevice;)V
-Landroid/net/wifi/p2p/WifiP2pGroup;->setPassphrase(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;->onDeleteGroup(I)V
-Landroid/net/wifi/p2p/WifiP2pGroupList;-><init>()V
-Landroid/net/wifi/p2p/WifiP2pGroupList;->add(Landroid/net/wifi/p2p/WifiP2pGroup;)V
-Landroid/net/wifi/p2p/WifiP2pGroupList;->clear()Z
-Landroid/net/wifi/p2p/WifiP2pGroupList;->contains(I)Z
-Landroid/net/wifi/p2p/WifiP2pGroupList;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/p2p/WifiP2pGroupList;->CREDENTIAL_MAX_NUM:I
-Landroid/net/wifi/p2p/WifiP2pGroupList;->getNetworkId(Ljava/lang/String;)I
-Landroid/net/wifi/p2p/WifiP2pGroupList;->getNetworkId(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/net/wifi/p2p/WifiP2pGroupList;->getOwnerAddr(I)Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pGroupList;->isClearCalled:Z
-Landroid/net/wifi/p2p/WifiP2pGroupList;->mListener:Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;
-Landroid/net/wifi/p2p/WifiP2pGroupList;->remove(I)V
-Landroid/net/wifi/p2p/WifiP2pGroupList;->remove(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;-><init>(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;Landroid/os/Binder;Landroid/net/wifi/p2p/WifiP2pManager;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->getListener(I)Ljava/lang/Object;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->handleDnsSdServiceResponse(Landroid/net/wifi/p2p/nsd/WifiP2pDnsSdServiceResponse;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->handleServiceResponse(Landroid/net/wifi/p2p/nsd/WifiP2pServiceResponse;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->handleUpnpServiceResponse(Landroid/net/wifi/p2p/nsd/WifiP2pUpnpServiceResponse;)V
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->INVALID_LISTENER_KEY:I
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mBinder:Landroid/os/Binder;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mChannelListener:Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mContext:Landroid/content/Context;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mDnsSdServRspListener:Landroid/net/wifi/p2p/WifiP2pManager$DnsSdServiceResponseListener;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mDnsSdTxtListener:Landroid/net/wifi/p2p/WifiP2pManager$DnsSdTxtRecordListener;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mHandler:Landroid/net/wifi/p2p/WifiP2pManager$Channel$P2pHandler;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mListenerKey:I
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mListenerMap:Ljava/util/HashMap;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mListenerMapLock:Ljava/lang/Object;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mP2pManager:Landroid/net/wifi/p2p/WifiP2pManager;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mServRspListener:Landroid/net/wifi/p2p/WifiP2pManager$ServiceResponseListener;
-Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mUpnpServRspListener:Landroid/net/wifi/p2p/WifiP2pManager$UpnpServiceResponseListener;
-Landroid/net/wifi/p2p/WifiP2pManager$HandoverMessageListener;->onHandoverMessageAvailable(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pManager$PersistentGroupInfoListener;->onPersistentGroupInfoAvailable(Landroid/net/wifi/p2p/WifiP2pGroupList;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_LOCAL_SERVICE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_LOCAL_SERVICE_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_LOCAL_SERVICE_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_SERVICE_REQUEST:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_SERVICE_REQUEST_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->ADD_SERVICE_REQUEST_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->BASE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CALLING_PACKAGE:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pManager;->CANCEL_CONNECT:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CANCEL_CONNECT_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CANCEL_CONNECT_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->checkChannel(Landroid/net/wifi/p2p/WifiP2pManager$Channel;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->checkP2pConfig(Landroid/net/wifi/p2p/WifiP2pConfig;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->checkServiceInfo(Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->checkServiceRequest(Landroid/net/wifi/p2p/nsd/WifiP2pServiceRequest;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_LOCAL_SERVICES:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_LOCAL_SERVICES_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_LOCAL_SERVICES_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_SERVICE_REQUESTS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_SERVICE_REQUESTS_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CLEAR_SERVICE_REQUESTS_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CONNECT:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CONNECT_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CONNECT_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CREATE_GROUP_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->CREATE_GROUP_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DELETE_PERSISTENT_GROUP:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DELETE_PERSISTENT_GROUP_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DELETE_PERSISTENT_GROUP_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_PEERS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_PEERS_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_PEERS_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_SERVICES:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_SERVICES_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->DISCOVER_SERVICES_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->EXTRA_HANDOVER_MESSAGE:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pManager;->getMessenger(Landroid/os/Binder;)Landroid/os/Messenger;
-Landroid/net/wifi/p2p/WifiP2pManager;->getNfcHandoverRequest(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$HandoverMessageListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->getNfcHandoverSelect(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$HandoverMessageListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->getP2pStateMachineMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/p2p/WifiP2pManager;->GET_HANDOVER_REQUEST:I
-Landroid/net/wifi/p2p/WifiP2pManager;->GET_HANDOVER_SELECT:I
-Landroid/net/wifi/p2p/WifiP2pManager;->initalizeChannel(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;Landroid/os/Messenger;Landroid/os/Binder;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;
-Landroid/net/wifi/p2p/WifiP2pManager;->initializeInternal(Landroid/content/Context;Landroid/os/Looper;Landroid/net/wifi/p2p/WifiP2pManager$ChannelListener;)Landroid/net/wifi/p2p/WifiP2pManager$Channel;
-Landroid/net/wifi/p2p/WifiP2pManager;->initiatorReportNfcHandover(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Ljava/lang/String;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->INITIATOR_REPORT_NFC_HANDOVER:I
-Landroid/net/wifi/p2p/WifiP2pManager;->listen(Landroid/net/wifi/p2p/WifiP2pManager$Channel;ZLandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->MIRACAST_DISABLED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->MIRACAST_SINK:I
-Landroid/net/wifi/p2p/WifiP2pManager;->MIRACAST_SOURCE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->mService:Landroid/net/wifi/p2p/IWifiP2pManager;
-Landroid/net/wifi/p2p/WifiP2pManager;->PING:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_GROUP:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_GROUP_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_GROUP_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_LOCAL_SERVICE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_LOCAL_SERVICE_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_LOCAL_SERVICE_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_SERVICE_REQUEST:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_SERVICE_REQUEST_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REMOVE_SERVICE_REQUEST_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REPORT_NFC_HANDOVER_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REPORT_NFC_HANDOVER_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REQUEST_CONNECTION_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REQUEST_GROUP_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REQUEST_PEERS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->REQUEST_PERSISTENT_GROUP_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->responderReportNfcHandover(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Ljava/lang/String;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONDER_REPORT_NFC_HANDOVER:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_CONNECTION_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_GET_HANDOVER_MESSAGE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_GROUP_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_PEERS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_PERSISTENT_GROUP_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->RESPONSE_SERVICE:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_CHANNEL:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_CHANNEL_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_CHANNEL_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_DEVICE_NAME:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_DEVICE_NAME_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_DEVICE_NAME_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_WFD_INFO:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_WFD_INFO_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->SET_WFD_INFO_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_LISTEN:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_LISTEN_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_LISTEN_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_WPS:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_WPS_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->START_WPS_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_DISCOVERY:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_DISCOVERY_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_DISCOVERY_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_LISTEN:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_LISTEN_FAILED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->STOP_LISTEN_SUCCEEDED:I
-Landroid/net/wifi/p2p/WifiP2pManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pManager;->WIFI_P2P_PERSISTENT_GROUPS_CHANGED_ACTION:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->ENTER_PIN:I
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->PBC_REQ:I
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->PBC_RSP:I
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->SHOW_PIN:I
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->COUPLED_SINK_SUPPORT_AT_SINK:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->COUPLED_SINK_SUPPORT_AT_SOURCE:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->DEVICE_TYPE:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->getControlPort()I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->getDeviceInfoHex()Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->getMaxThroughput()I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->isCoupledSinkSupportedAtSink()Z
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->isCoupledSinkSupportedAtSource()Z
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->isSessionAvailable()Z
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->mCtrlPort:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->mDeviceInfo:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->mMaxThroughput:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->mWfdEnabled:Z
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->PRIMARY_SINK:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SECONDARY_SINK:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SESSION_AVAILABLE:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SESSION_AVAILABLE_BIT1:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SESSION_AVAILABLE_BIT2:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->setCoupledSinkSupportAtSink(Z)V
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->setCoupledSinkSupportAtSource(Z)V
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->SOURCE_OR_PRIMARY_SINK:I
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->TAG:Ljava/lang/String;
-Landroid/net/wifi/p2p/WifiP2pWfdInfo;->WFD_SOURCE:I
-Landroid/net/wifi/ParcelUtil;-><init>()V
-Landroid/net/wifi/ParcelUtil;->readCertificate(Landroid/os/Parcel;)Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/ParcelUtil;->readCertificates(Landroid/os/Parcel;)[Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/ParcelUtil;->readPrivateKey(Landroid/os/Parcel;)Ljava/security/PrivateKey;
-Landroid/net/wifi/ParcelUtil;->writeCertificate(Landroid/os/Parcel;Ljava/security/cert/X509Certificate;)V
-Landroid/net/wifi/ParcelUtil;->writeCertificates(Landroid/os/Parcel;[Ljava/security/cert/X509Certificate;)V
-Landroid/net/wifi/ParcelUtil;->writePrivateKey(Landroid/os/Parcel;Ljava/security/PrivateKey;)V
Landroid/net/wifi/PasspointManagementObjectDefinition;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
Landroid/net/wifi/PasspointManagementObjectDefinition;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/PasspointManagementObjectDefinition;->getBaseUri()Ljava/lang/String;
@@ -39647,121 +37061,6 @@
Landroid/net/wifi/RssiPacketCountInfo;->rxgood:I
Landroid/net/wifi/RssiPacketCountInfo;->txbad:I
Landroid/net/wifi/RssiPacketCountInfo;->txgood:I
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->onRangingFailure(I)V
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;->onRangingResults(Ljava/util/List;)V
-Landroid/net/wifi/rtt/IRttCallback$Stub;-><init>()V
-Landroid/net/wifi/rtt/IRttCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/rtt/IRttCallback;
-Landroid/net/wifi/rtt/IRttCallback$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/rtt/IRttCallback$Stub;->TRANSACTION_onRangingFailure:I
-Landroid/net/wifi/rtt/IRttCallback$Stub;->TRANSACTION_onRangingResults:I
-Landroid/net/wifi/rtt/IRttCallback;->onRangingFailure(I)V
-Landroid/net/wifi/rtt/IRttCallback;->onRangingResults(Ljava/util/List;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->cancelRanging(Landroid/os/WorkSource;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->isAvailable()Z
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub$Proxy;->startRanging(Landroid/os/IBinder;Ljava/lang/String;Landroid/os/WorkSource;Landroid/net/wifi/rtt/RangingRequest;Landroid/net/wifi/rtt/IRttCallback;)V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;-><init>()V
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/rtt/IWifiRttManager;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_cancelRanging:I
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_isAvailable:I
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;->TRANSACTION_startRanging:I
-Landroid/net/wifi/rtt/IWifiRttManager;->cancelRanging(Landroid/os/WorkSource;)V
-Landroid/net/wifi/rtt/IWifiRttManager;->isAvailable()Z
-Landroid/net/wifi/rtt/IWifiRttManager;->startRanging(Landroid/os/IBinder;Ljava/lang/String;Landroid/os/WorkSource;Landroid/net/wifi/rtt/RangingRequest;Landroid/net/wifi/rtt/IRttCallback;)V
-Landroid/net/wifi/rtt/RangingRequest$Builder;->mRttPeers:Ljava/util/List;
-Landroid/net/wifi/rtt/RangingRequest;-><init>(Ljava/util/List;)V
-Landroid/net/wifi/rtt/RangingRequest;->enforceValidity(Z)V
-Landroid/net/wifi/rtt/RangingRequest;->MAX_PEERS:I
-Landroid/net/wifi/rtt/RangingRequest;->mRttPeers:Ljava/util/List;
-Landroid/net/wifi/rtt/RangingResult;-><init>(ILandroid/net/MacAddress;IIIII[B[BJ)V
-Landroid/net/wifi/rtt/RangingResult;-><init>(ILandroid/net/wifi/aware/PeerHandle;IIIII[B[BJ)V
-Landroid/net/wifi/rtt/RangingResult;->EMPTY_BYTE_ARRAY:[B
-Landroid/net/wifi/rtt/RangingResult;->mDistanceMm:I
-Landroid/net/wifi/rtt/RangingResult;->mDistanceStdDevMm:I
-Landroid/net/wifi/rtt/RangingResult;->mLci:[B
-Landroid/net/wifi/rtt/RangingResult;->mLcr:[B
-Landroid/net/wifi/rtt/RangingResult;->mMac:Landroid/net/MacAddress;
-Landroid/net/wifi/rtt/RangingResult;->mNumAttemptedMeasurements:I
-Landroid/net/wifi/rtt/RangingResult;->mNumSuccessfulMeasurements:I
-Landroid/net/wifi/rtt/RangingResult;->mPeerHandle:Landroid/net/wifi/aware/PeerHandle;
-Landroid/net/wifi/rtt/RangingResult;->mRssi:I
-Landroid/net/wifi/rtt/RangingResult;->mStatus:I
-Landroid/net/wifi/rtt/RangingResult;->mTimestamp:J
-Landroid/net/wifi/rtt/RangingResult;->TAG:Ljava/lang/String;
-Landroid/net/wifi/rtt/ResponderConfig;-><init>(Landroid/net/MacAddress;Landroid/net/wifi/aware/PeerHandle;IZIIIII)V
-Landroid/net/wifi/rtt/ResponderConfig;->AWARE_BAND_2_DISCOVERY_CHANNEL:I
-Landroid/net/wifi/rtt/ResponderConfig;->isValid(Z)Z
-Landroid/net/wifi/rtt/ResponderConfig;->TAG:Ljava/lang/String;
-Landroid/net/wifi/rtt/ResponderConfig;->translateScanResultChannelWidth(I)I
-Landroid/net/wifi/rtt/WifiRttManager;-><init>(Landroid/content/Context;Landroid/net/wifi/rtt/IWifiRttManager;)V
-Landroid/net/wifi/rtt/WifiRttManager;->mContext:Landroid/content/Context;
-Landroid/net/wifi/rtt/WifiRttManager;->mService:Landroid/net/wifi/rtt/IWifiRttManager;
-Landroid/net/wifi/rtt/WifiRttManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/rtt/WifiRttManager;->VDBG:Z
-Landroid/net/wifi/RttManager$ParcelableRttParams;-><init>([Landroid/net/wifi/RttManager$RttParams;)V
-Landroid/net/wifi/RttManager$ParcelableRttParams;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/RttManager$ParcelableRttResults;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/RttManager$RttCapabilities;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/RttManager;-><init>(Landroid/content/Context;Landroid/net/wifi/rtt/WifiRttManager;)V
-Landroid/net/wifi/RttManager;->CMD_OP_REG_BINDER:I
-Landroid/net/wifi/RttManager;->DBG:Z
-Landroid/net/wifi/RttManager;->mContext:Landroid/content/Context;
-Landroid/net/wifi/RttManager;->mNewService:Landroid/net/wifi/rtt/WifiRttManager;
-Landroid/net/wifi/RttManager;->mRttCapabilities:Landroid/net/wifi/RttManager$RttCapabilities;
-Landroid/net/wifi/RttManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/ScanResult$InformationElement;-><init>()V
-Landroid/net/wifi/ScanResult$InformationElement;-><init>(Landroid/net/wifi/ScanResult$InformationElement;)V
-Landroid/net/wifi/ScanResult$InformationElement;->EID_HT_CAPABILITIES:I
-Landroid/net/wifi/ScanResult$InformationElement;->EID_VHT_CAPABILITIES:I
-Landroid/net/wifi/ScanResult$RadioChainInfo;-><init>()V
-Landroid/net/wifi/ScanResult$RadioChainInfo;->id:I
-Landroid/net/wifi/ScanResult$RadioChainInfo;->level:I
-Landroid/net/wifi/ScanResult;-><init>()V
-Landroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;JI[BLjava/lang/String;IIJ)V
-Landroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;IIJII)V
-Landroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;JILjava/lang/String;IIJIIIIIZ)V
-Landroid/net/wifi/ScanResult;-><init>(Ljava/lang/String;Ljava/lang/String;JILjava/lang/String;IIJIIIIIZ)V
-Landroid/net/wifi/ScanResult;->anqpElements:[Landroid/net/wifi/AnqpInformationElement;
-Landroid/net/wifi/ScanResult;->carrierApEapType:I
-Landroid/net/wifi/ScanResult;->carrierName:Ljava/lang/String;
-Landroid/net/wifi/ScanResult;->CIPHER_CCMP:I
-Landroid/net/wifi/ScanResult;->CIPHER_NONE:I
-Landroid/net/wifi/ScanResult;->CIPHER_NO_GROUP_ADDRESSED:I
-Landroid/net/wifi/ScanResult;->CIPHER_TKIP:I
-Landroid/net/wifi/ScanResult;->clearFlag(J)V
-Landroid/net/wifi/ScanResult;->FLAG_80211mc_RESPONDER:J
-Landroid/net/wifi/ScanResult;->FLAG_PASSPOINT_NETWORK:J
-Landroid/net/wifi/ScanResult;->is24GHz()Z
-Landroid/net/wifi/ScanResult;->is24GHz(I)Z
-Landroid/net/wifi/ScanResult;->is5GHz()Z
-Landroid/net/wifi/ScanResult;->is5GHz(I)Z
-Landroid/net/wifi/ScanResult;->isCarrierAp:Z
-Landroid/net/wifi/ScanResult;->KEY_MGMT_EAP:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_EAP_SHA256:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_FT_EAP:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_FT_PSK:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_NONE:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_OSEN:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_PSK:I
-Landroid/net/wifi/ScanResult;->KEY_MGMT_PSK_SHA256:I
-Landroid/net/wifi/ScanResult;->PROTOCOL_NONE:I
-Landroid/net/wifi/ScanResult;->PROTOCOL_OSEN:I
-Landroid/net/wifi/ScanResult;->PROTOCOL_WPA2:I
-Landroid/net/wifi/ScanResult;->PROTOCOL_WPA:I
-Landroid/net/wifi/ScanResult;->radioChainInfos:[Landroid/net/wifi/ScanResult$RadioChainInfo;
-Landroid/net/wifi/ScanResult;->setFlag(J)V
-Landroid/net/wifi/ScanResult;->UNSPECIFIED:I
-Landroid/net/wifi/SupplicantState;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/SupplicantState;->isConnecting(Landroid/net/wifi/SupplicantState;)Z
-Landroid/net/wifi/SupplicantState;->isDriverActive(Landroid/net/wifi/SupplicantState;)Z
-Landroid/net/wifi/SupplicantState;->isHandshakeState(Landroid/net/wifi/SupplicantState;)Z
Landroid/net/wifi/WifiActivityEnergyInfo;-><init>(JIJ[JJJJJ)V
Landroid/net/wifi/WifiActivityEnergyInfo;->CREATOR:Landroid/os/Parcelable$Creator;
Landroid/net/wifi/WifiActivityEnergyInfo;->getControllerEnergyUsed()J
@@ -39785,460 +37084,6 @@
Landroid/net/wifi/WifiActivityEnergyInfo;->STACK_STATE_STATE_ACTIVE:I
Landroid/net/wifi/WifiActivityEnergyInfo;->STACK_STATE_STATE_IDLE:I
Landroid/net/wifi/WifiActivityEnergyInfo;->STACK_STATE_STATE_SCANNING:I
-Landroid/net/wifi/WifiConfiguration$AuthAlgorithm;-><init>()V
-Landroid/net/wifi/WifiConfiguration$GroupCipher;-><init>()V
-Landroid/net/wifi/WifiConfiguration$GroupCipher;->GTK_NOT_USED:I
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;-><init>()V
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;->FT_EAP:I
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;->FT_PSK:I
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;->OSEN:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;-><init>()V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter()V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->CONNECT_CHOICE_EXISTS:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->CONNECT_CHOICE_NOT_EXISTS:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->copy(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_ASSOCIATION_REJECTION:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_AUTHENTICATION_FAILURE:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_AUTHENTICATION_NO_CREDENTIALS:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_BAD_LINK:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_BY_WIFI_MANAGER:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_BY_WRONG_PASSWORD:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_DHCP_FAILURE:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_DNS_FAILURE:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_DUE_TO_USER_SWITCH:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_NO_INTERNET_PERMANENT:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_NO_INTERNET_TEMPORARY:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_TLS_VERSION_MISMATCH:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->DISABLED_WPS_START:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidate()Landroid/net/wifi/ScanResult;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidateScore()I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getConnectChoice()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getConnectChoiceTimestamp()J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getDisableReasonCounter(I)I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getDisableTime()J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getHasEverConnected()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkDisableReasonString()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkDisableReasonString(I)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionBSSID()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionDisableReason()I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionStatus()I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkStatusString()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getSeenInLastQualifiedNetworkSelection()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->incrementDisableReasonCounter(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->INVALID_NETWORK_SELECTION_DISABLE_TIMESTAMP:J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isDisabledByReason(I)Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkEnabled()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkPermanentlyDisabled()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkTemporaryDisabled()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNotRecommended()Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mCandidate:Landroid/net/wifi/ScanResult;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mCandidateScore:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mConnectChoice:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mConnectChoiceTimestamp:J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mHasEverConnected:Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mNetworkSeclectionDisableCounter:[I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mNetworkSelectionBSSID:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mNetworkSelectionDisableReason:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mNotRecommended:Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mSeenInLastQualifiedNetworkSelection:Z
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mStatus:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->mTemporarilyDisabledTimestamp:J
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_DISABLED_MAX:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_DISABLED_STARTING_INDEX:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_ENABLE:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_ENABLED:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_PERMANENTLY_DISABLED:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_STATUS_MAX:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->NETWORK_SELECTION_TEMPORARY_DISABLED:I
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->QUALITY_NETWORK_SELECTION_DISABLE_REASON:[Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->QUALITY_NETWORK_SELECTION_STATUS:[Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->readFromParcel(Landroid/os/Parcel;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setCandidate(Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setCandidateScore(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setConnectChoice(Ljava/lang/String;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setConnectChoiceTimestamp(J)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setDisableReasonCounter(II)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setDisableTime(J)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setHasEverConnected(Z)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionBSSID(Ljava/lang/String;)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionDisableReason(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionStatus(I)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNotRecommended(Z)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setSeenInLastQualifiedNetworkSelection(Z)V
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->writeToParcel(Landroid/os/Parcel;)V
-Landroid/net/wifi/WifiConfiguration$PairwiseCipher;-><init>()V
-Landroid/net/wifi/WifiConfiguration$Protocol;-><init>()V
-Landroid/net/wifi/WifiConfiguration$Protocol;->OSEN:I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;-><init>()V
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->clear()V
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->getAssociationStatus()I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->mAssociationStatus:I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->NONE:I
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->setAssociationStatus(I)V
-Landroid/net/wifi/WifiConfiguration$RecentFailure;->STATUS_AP_UNABLE_TO_HANDLE_NEW_STA:I
-Landroid/net/wifi/WifiConfiguration$Status;-><init>()V
-Landroid/net/wifi/WifiConfiguration;->AP_BAND_2GHZ:I
-Landroid/net/wifi/WifiConfiguration;->AP_BAND_5GHZ:I
-Landroid/net/wifi/WifiConfiguration;->AP_BAND_ANY:I
-Landroid/net/wifi/WifiConfiguration;->BACKUP_VERSION:I
-Landroid/net/wifi/WifiConfiguration;->bssidVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->configKey()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->configKey(Z)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->creationTime:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->dhcpServer:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->didSelfAdd:Z
-Landroid/net/wifi/WifiConfiguration;->dtimInterval:I
-Landroid/net/wifi/WifiConfiguration;->ephemeral:Z
-Landroid/net/wifi/WifiConfiguration;->getBytesForBackup()[B
-Landroid/net/wifi/WifiConfiguration;->getKeyIdForCredentials(Landroid/net/wifi/WifiConfiguration;)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->getMoTree()Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->getNetworkSelectionStatus()Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;
-Landroid/net/wifi/WifiConfiguration;->getOrCreateRandomizedMacAddress()Landroid/net/MacAddress;
-Landroid/net/wifi/WifiConfiguration;->getRandomizedMacAddress()Landroid/net/MacAddress;
-Landroid/net/wifi/WifiConfiguration;->getWifiConfigFromBackup(Ljava/io/DataInputStream;)Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/WifiConfiguration;->hiddenSSIDVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->HOME_NETWORK_RSSI_BOOST:I
-Landroid/net/wifi/WifiConfiguration;->INVALID_NETWORK_ID:I
-Landroid/net/wifi/WifiConfiguration;->isLegacyPasspointConfig:Z
-Landroid/net/wifi/WifiConfiguration;->isLinked(Landroid/net/wifi/WifiConfiguration;)Z
-Landroid/net/wifi/WifiConfiguration;->isMetered(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiInfo;)Z
-Landroid/net/wifi/WifiConfiguration;->isOpenNetwork()Z
-Landroid/net/wifi/WifiConfiguration;->isValidMacAddressForRandomization(Landroid/net/MacAddress;)Z
-Landroid/net/wifi/WifiConfiguration;->lastConnected:J
-Landroid/net/wifi/WifiConfiguration;->lastDisconnected:J
-Landroid/net/wifi/WifiConfiguration;->linkedConfigurations:Ljava/util/HashMap;
-Landroid/net/wifi/WifiConfiguration;->LOCAL_ONLY_NETWORK_ID:I
-Landroid/net/wifi/WifiConfiguration;->MAXIMUM_RANDOM_MAC_GENERATION_RETRY:I
-Landroid/net/wifi/WifiConfiguration;->mCachedConfigKey:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->meteredOverride:I
-Landroid/net/wifi/WifiConfiguration;->METERED_OVERRIDE_METERED:I
-Landroid/net/wifi/WifiConfiguration;->METERED_OVERRIDE_NONE:I
-Landroid/net/wifi/WifiConfiguration;->METERED_OVERRIDE_NOT_METERED:I
-Landroid/net/wifi/WifiConfiguration;->mNetworkSelectionStatus:Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;
-Landroid/net/wifi/WifiConfiguration;->mPasspointManagementObjectTree:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->mRandomizedMacAddress:Landroid/net/MacAddress;
-Landroid/net/wifi/WifiConfiguration;->peerWifiConfiguration:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->pmfVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->priorityVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->pskVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->readBitSet(Landroid/os/Parcel;)Ljava/util/BitSet;
-Landroid/net/wifi/WifiConfiguration;->recentFailure:Landroid/net/wifi/WifiConfiguration$RecentFailure;
-Landroid/net/wifi/WifiConfiguration;->requirePMF:Z
-Landroid/net/wifi/WifiConfiguration;->setNetworkSelectionStatus(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V
-Landroid/net/wifi/WifiConfiguration;->setPasspointManagementObjectTree(Ljava/lang/String;)V
-Landroid/net/wifi/WifiConfiguration;->setRandomizedMacAddress(Landroid/net/MacAddress;)V
-Landroid/net/wifi/WifiConfiguration;->ssidVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->trimStringForKeyId(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->UNKNOWN_UID:I
-Landroid/net/wifi/WifiConfiguration;->updateIdentiferVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->updateIdentifier:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->updateTime:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->userApproved:I
-Landroid/net/wifi/WifiConfiguration;->userApprovedAsString(I)Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->USER_APPROVED:I
-Landroid/net/wifi/WifiConfiguration;->USER_BANNED:I
-Landroid/net/wifi/WifiConfiguration;->USER_PENDING:I
-Landroid/net/wifi/WifiConfiguration;->USER_UNSPECIFIED:I
-Landroid/net/wifi/WifiConfiguration;->wepTxKeyIdxVarName:Ljava/lang/String;
-Landroid/net/wifi/WifiConfiguration;->writeBitSet(Landroid/os/Parcel;Ljava/util/BitSet;)V
-Landroid/net/wifi/WifiEnterpriseConfig$Eap;-><init>()V
-Landroid/net/wifi/WifiEnterpriseConfig$Eap;->strings:[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$Phase2;-><init>()V
-Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->AUTHEAP_PREFIX:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->AUTH_PREFIX:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$Phase2;->strings:[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$SupplicantLoader;->loadValue(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig$SupplicantSaver;->saveValue(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/net/wifi/WifiEnterpriseConfig;->ALTSUBJECT_MATCH_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ANON_IDENTITY_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CA_CERT_ALIAS_DELIMITER:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CA_CERT_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CA_CERT_PREFIX:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CA_PATH_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CLIENT_CERT_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->CLIENT_CERT_PREFIX:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->convertToQuotedString(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->copyFrom(Landroid/net/wifi/WifiEnterpriseConfig;ZLjava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->copyFromExternal(Landroid/net/wifi/WifiEnterpriseConfig;Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->decodeCaCertificateAlias(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->DOM_SUFFIX_MATCH_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->EAP_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->EMPTY_VALUE:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->encodeCaCertificateAlias(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_DISABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_ENABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_ID_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_ID_KEYSTORE:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->ENGINE_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getCaCertificateAliases()[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getCaPath()Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getClientPrivateKey()Ljava/security/PrivateKey;
-Landroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getKeyId(Landroid/net/wifi/WifiEnterpriseConfig;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->getStringIndex([Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/net/wifi/WifiEnterpriseConfig;->IDENTITY_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->isEapMethodValid()Z
-Landroid/net/wifi/WifiEnterpriseConfig;->KEYSTORES_URI:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->KEYSTORE_URI:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->loadFromSupplicant(Landroid/net/wifi/WifiEnterpriseConfig$SupplicantLoader;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->mCaCerts:[Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/WifiEnterpriseConfig;->mClientCertificateChain:[Ljava/security/cert/X509Certificate;
-Landroid/net/wifi/WifiEnterpriseConfig;->mClientPrivateKey:Ljava/security/PrivateKey;
-Landroid/net/wifi/WifiEnterpriseConfig;->mEapMethod:I
-Landroid/net/wifi/WifiEnterpriseConfig;->mPhase2Method:I
-Landroid/net/wifi/WifiEnterpriseConfig;->OPP_KEY_CACHING:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->PASSWORD_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->PHASE2_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->PLMN_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->PRIVATE_KEY_ID_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->REALM_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->removeDoubleQuotes(Ljava/lang/String;)Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->resetCaCertificate()V
-Landroid/net/wifi/WifiEnterpriseConfig;->resetClientKeyEntry()V
-Landroid/net/wifi/WifiEnterpriseConfig;->saveToSupplicant(Landroid/net/wifi/WifiEnterpriseConfig$SupplicantSaver;)Z
-Landroid/net/wifi/WifiEnterpriseConfig;->setCaCertificateAliases([Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->setCaPath(Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->setFieldValue(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->setFieldValue(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/net/wifi/WifiEnterpriseConfig;->SUBJECT_MATCH_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->SUPPLICANT_CONFIG_KEYS:[Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiEnterpriseConfig;->UNQUOTED_KEYS:Ljava/util/List;
-Landroid/net/wifi/WifiInfo;-><init>(Landroid/net/wifi/WifiInfo;)V
-Landroid/net/wifi/WifiInfo;->hasRealMacAddress()Z
-Landroid/net/wifi/WifiInfo;->is24GHz()Z
-Landroid/net/wifi/WifiInfo;->MAX_RSSI:I
-Landroid/net/wifi/WifiInfo;->mEphemeral:Z
-Landroid/net/wifi/WifiInfo;->mFrequency:I
-Landroid/net/wifi/WifiInfo;->MIN_RSSI:I
-Landroid/net/wifi/WifiInfo;->mLinkSpeed:I
-Landroid/net/wifi/WifiInfo;->mMeteredHint:Z
-Landroid/net/wifi/WifiInfo;->mNetworkId:I
-Landroid/net/wifi/WifiInfo;->mRssi:I
-Landroid/net/wifi/WifiInfo;->mSupplicantState:Landroid/net/wifi/SupplicantState;
-Landroid/net/wifi/WifiInfo;->reset()V
-Landroid/net/wifi/WifiInfo;->rxSuccess:J
-Landroid/net/wifi/WifiInfo;->rxSuccessRate:D
-Landroid/net/wifi/WifiInfo;->setEphemeral(Z)V
-Landroid/net/wifi/WifiInfo;->setFrequency(I)V
-Landroid/net/wifi/WifiInfo;->setInetAddress(Ljava/net/InetAddress;)V
-Landroid/net/wifi/WifiInfo;->setMeteredHint(Z)V
-Landroid/net/wifi/WifiInfo;->setSSID(Landroid/net/wifi/WifiSsid;)V
-Landroid/net/wifi/WifiInfo;->stateMap:Ljava/util/EnumMap;
-Landroid/net/wifi/WifiInfo;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiInfo;->txBad:J
-Landroid/net/wifi/WifiInfo;->txBadRate:D
-Landroid/net/wifi/WifiInfo;->txRetries:J
-Landroid/net/wifi/WifiInfo;->txRetriesRate:D
-Landroid/net/wifi/WifiInfo;->txSuccess:J
-Landroid/net/wifi/WifiInfo;->txSuccessRate:D
-Landroid/net/wifi/WifiInfo;->valueOf(Ljava/lang/String;)Landroid/net/wifi/SupplicantState;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallback;->REQUEST_REGISTERED:I
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;-><init>(Landroid/net/wifi/WifiManager;Landroid/os/Looper;Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallback;)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mLooper:Landroid/os/Looper;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mMessenger:Landroid/os/Messenger;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->mWifiManager:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;->notifyFailed(I)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;-><init>()V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onRegistered(Landroid/net/wifi/WifiManager$LocalOnlyHotspotSubscription;)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onStarted(Landroid/net/wifi/WifiConfiguration;)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;->onStopped()V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;-><init>(Landroid/net/wifi/WifiManager;Landroid/os/Looper;Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;)V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->getMessenger()Landroid/os/Messenger;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mLooper:Landroid/os/Looper;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mMessenger:Landroid/os/Messenger;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->mWifiManager:Ljava/lang/ref/WeakReference;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;->registered()V
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotReservation;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotReservation;->mConfig:Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/WifiManager$LocalOnlyHotspotSubscription;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/net/wifi/WifiManager$MulticastLock;->mBinder:Landroid/os/IBinder;
-Landroid/net/wifi/WifiManager$MulticastLock;->mHeld:Z
-Landroid/net/wifi/WifiManager$MulticastLock;->mRefCount:I
-Landroid/net/wifi/WifiManager$MulticastLock;->mRefCounted:Z
-Landroid/net/wifi/WifiManager$MulticastLock;->mTag:Ljava/lang/String;
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;-><init>(Landroid/os/Looper;Landroid/net/wifi/hotspot2/ProvisioningCallback;)V
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->mCallback:Landroid/net/wifi/hotspot2/ProvisioningCallback;
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->onProvisioningFailure(I)V
-Landroid/net/wifi/WifiManager$ProvisioningCallbackProxy;->onProvisioningStatus(I)V
-Landroid/net/wifi/WifiManager$ServiceHandler;->dispatchMessageToListeners(Landroid/os/Message;)V
-Landroid/net/wifi/WifiManager$SoftApCallback;->onNumClientsChanged(I)V
-Landroid/net/wifi/WifiManager$SoftApCallback;->onStateChanged(II)V
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;-><init>(Landroid/os/Looper;Landroid/net/wifi/WifiManager$SoftApCallback;)V
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->mCallback:Landroid/net/wifi/WifiManager$SoftApCallback;
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->mHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->onNumClientsChanged(I)V
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;->onStateChanged(II)V
-Landroid/net/wifi/WifiManager$TxPacketCountListener;->onFailure(I)V
-Landroid/net/wifi/WifiManager$TxPacketCountListener;->onSuccess(I)V
-Landroid/net/wifi/WifiManager$WifiLock;->mBinder:Landroid/os/IBinder;
-Landroid/net/wifi/WifiManager$WifiLock;->mHeld:Z
-Landroid/net/wifi/WifiManager$WifiLock;->mLockType:I
-Landroid/net/wifi/WifiManager$WifiLock;->mRefCount:I
-Landroid/net/wifi/WifiManager$WifiLock;->mRefCounted:Z
-Landroid/net/wifi/WifiManager$WifiLock;->mTag:Ljava/lang/String;
-Landroid/net/wifi/WifiManager$WifiLock;->mWorkSource:Landroid/os/WorkSource;
-Landroid/net/wifi/WifiManager;-><init>(Landroid/content/Context;Landroid/net/wifi/IWifiManager;Landroid/os/Looper;)V
-Landroid/net/wifi/WifiManager;->ACTION_PASSPOINT_DEAUTH_IMMINENT:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_PASSPOINT_ICON:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_PASSPOINT_OSU_PROVIDERS_LIST:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_PASSPOINT_SUBSCRIPTION_REMEDIATION:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_REQUEST_DISABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->ACTION_REQUEST_ENABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->addOrUpdateNetwork(Landroid/net/wifi/WifiConfiguration;)I
-Landroid/net/wifi/WifiManager;->BASE:I
-Landroid/net/wifi/WifiManager;->BATCHED_SCAN_RESULTS_AVAILABLE_ACTION:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->BUSY:I
-Landroid/net/wifi/WifiManager;->CANCEL_WPS:I
-Landroid/net/wifi/WifiManager;->CANCEL_WPS_FAILED:I
-Landroid/net/wifi/WifiManager;->CANCEL_WPS_SUCCEDED:I
-Landroid/net/wifi/WifiManager;->CONNECT_NETWORK:I
-Landroid/net/wifi/WifiManager;->CONNECT_NETWORK_FAILED:I
-Landroid/net/wifi/WifiManager;->CONNECT_NETWORK_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_IN:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_INOUT:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_NONE:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_NOTIFICATION:I
-Landroid/net/wifi/WifiManager;->DATA_ACTIVITY_OUT:I
-Landroid/net/wifi/WifiManager;->deauthenticateNetwork(JZ)V
-Landroid/net/wifi/WifiManager;->DEFAULT_POOR_NETWORK_AVOIDANCE_ENABLED:Z
-Landroid/net/wifi/WifiManager;->disableEphemeralNetwork(Ljava/lang/String;)V
-Landroid/net/wifi/WifiManager;->DISABLE_NETWORK:I
-Landroid/net/wifi/WifiManager;->DISABLE_NETWORK_FAILED:I
-Landroid/net/wifi/WifiManager;->DISABLE_NETWORK_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->enableWifiConnectivityManager(Z)V
-Landroid/net/wifi/WifiManager;->ERROR:I
-Landroid/net/wifi/WifiManager;->ERROR_AUTH_FAILURE_EAP_FAILURE:I
-Landroid/net/wifi/WifiManager;->ERROR_AUTH_FAILURE_NONE:I
-Landroid/net/wifi/WifiManager;->ERROR_AUTH_FAILURE_TIMEOUT:I
-Landroid/net/wifi/WifiManager;->ERROR_AUTH_FAILURE_WRONG_PSWD:I
-Landroid/net/wifi/WifiManager;->EXTRA_ANQP_ELEMENT_DATA:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_BSSID_LONG:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_DELAY:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_ESS:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_FILENAME:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_ICON:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_LINK_PROPERTIES:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_NETWORK_CAPABILITIES:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_SCAN_AVAILABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_SUBSCRIPTION_REMEDIATION_METHOD:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_SUPPLICANT_ERROR_REASON:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_URL:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_FAILURE_REASON:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_INTERFACE_NAME:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->EXTRA_WIFI_AP_MODE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->factoryReset()V
-Landroid/net/wifi/WifiManager;->FORGET_NETWORK:I
-Landroid/net/wifi/WifiManager;->FORGET_NETWORK_FAILED:I
-Landroid/net/wifi/WifiManager;->FORGET_NETWORK_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->getAllMatchingWifiConfigs(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/WifiManager;->getChannel()Lcom/android/internal/util/AsyncChannel;
-Landroid/net/wifi/WifiManager;->getControllerActivityEnergyInfo(I)Landroid/net/wifi/WifiActivityEnergyInfo;
-Landroid/net/wifi/WifiManager;->getCurrentNetworkWpsNfcConfigurationToken()Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->getEnableAutoJoinWhenAssociated()Z
-Landroid/net/wifi/WifiManager;->getMatchingOsuProviders(Landroid/net/wifi/ScanResult;)Ljava/util/List;
-Landroid/net/wifi/WifiManager;->getSupportedFeatures()I
-Landroid/net/wifi/WifiManager;->getTxPacketCount(Landroid/net/wifi/WifiManager$TxPacketCountListener;)V
-Landroid/net/wifi/WifiManager;->HOTSPOT_FAILED:I
-Landroid/net/wifi/WifiManager;->HOTSPOT_OBSERVER_REGISTERED:I
-Landroid/net/wifi/WifiManager;->HOTSPOT_STARTED:I
-Landroid/net/wifi/WifiManager;->HOTSPOT_STOPPED:I
-Landroid/net/wifi/WifiManager;->IFACE_IP_MODE_CONFIGURATION_ERROR:I
-Landroid/net/wifi/WifiManager;->IFACE_IP_MODE_LOCAL_ONLY:I
-Landroid/net/wifi/WifiManager;->IFACE_IP_MODE_TETHERED:I
-Landroid/net/wifi/WifiManager;->IFACE_IP_MODE_UNSPECIFIED:I
-Landroid/net/wifi/WifiManager;->INVALID_ARGS:I
-Landroid/net/wifi/WifiManager;->INVALID_KEY:I
-Landroid/net/wifi/WifiManager;->IN_PROGRESS:I
-Landroid/net/wifi/WifiManager;->isAdditionalStaSupported()Z
-Landroid/net/wifi/WifiManager;->isDualModeSupported()Z
-Landroid/net/wifi/WifiManager;->isFeatureSupported(I)Z
-Landroid/net/wifi/WifiManager;->isMulticastEnabled()Z
-Landroid/net/wifi/WifiManager;->isOffChannelTdlsSupported()Z
-Landroid/net/wifi/WifiManager;->isPasspointSupported()Z
-Landroid/net/wifi/WifiManager;->isWifiAwareSupported()Z
-Landroid/net/wifi/WifiManager;->mAsyncChannel:Lcom/android/internal/util/AsyncChannel;
-Landroid/net/wifi/WifiManager;->matchProviderWithCurrentNetwork(Ljava/lang/String;)I
-Landroid/net/wifi/WifiManager;->MAX_ACTIVE_LOCKS:I
-Landroid/net/wifi/WifiManager;->mConnected:Ljava/util/concurrent/CountDownLatch;
-Landroid/net/wifi/WifiManager;->mContext:Landroid/content/Context;
-Landroid/net/wifi/WifiManager;->mListenerKey:I
-Landroid/net/wifi/WifiManager;->mListenerMap:Landroid/util/SparseArray;
-Landroid/net/wifi/WifiManager;->mListenerMapLock:Ljava/lang/Object;
-Landroid/net/wifi/WifiManager;->mLock:Ljava/lang/Object;
-Landroid/net/wifi/WifiManager;->mLOHSCallbackProxy:Landroid/net/wifi/WifiManager$LocalOnlyHotspotCallbackProxy;
-Landroid/net/wifi/WifiManager;->mLOHSObserverProxy:Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserverProxy;
-Landroid/net/wifi/WifiManager;->mLooper:Landroid/os/Looper;
-Landroid/net/wifi/WifiManager;->mTargetSdkVersion:I
-Landroid/net/wifi/WifiManager;->NOT_AUTHORIZED:I
-Landroid/net/wifi/WifiManager;->putListener(Ljava/lang/Object;)I
-Landroid/net/wifi/WifiManager;->queryPasspointIcon(JLjava/lang/String;)V
-Landroid/net/wifi/WifiManager;->registerSoftApCallback(Landroid/net/wifi/WifiManager$SoftApCallback;Landroid/os/Handler;)V
-Landroid/net/wifi/WifiManager;->removeListener(I)Ljava/lang/Object;
-Landroid/net/wifi/WifiManager;->restoreBackupData([B)V
-Landroid/net/wifi/WifiManager;->restoreSupplicantBackupData([B[B)V
-Landroid/net/wifi/WifiManager;->retrieveBackupData()[B
-Landroid/net/wifi/WifiManager;->RSSI_PKTCNT_FETCH:I
-Landroid/net/wifi/WifiManager;->RSSI_PKTCNT_FETCH_FAILED:I
-Landroid/net/wifi/WifiManager;->RSSI_PKTCNT_FETCH_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->SAP_START_FAILURE_GENERAL:I
-Landroid/net/wifi/WifiManager;->SAP_START_FAILURE_NO_CHANNEL:I
-Landroid/net/wifi/WifiManager;->SAVE_NETWORK:I
-Landroid/net/wifi/WifiManager;->SAVE_NETWORK_FAILED:I
-Landroid/net/wifi/WifiManager;->SAVE_NETWORK_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->setCountryCode(Ljava/lang/String;)V
-Landroid/net/wifi/WifiManager;->setEnableAutoJoinWhenAssociated(Z)Z
-Landroid/net/wifi/WifiManager;->sServiceHandlerDispatchLock:Ljava/lang/Object;
-Landroid/net/wifi/WifiManager;->startSoftAp(Landroid/net/wifi/WifiConfiguration;)Z
-Landroid/net/wifi/WifiManager;->startSubscriptionProvisioning(Landroid/net/wifi/hotspot2/OsuProvider;Landroid/net/wifi/hotspot2/ProvisioningCallback;Landroid/os/Handler;)V
-Landroid/net/wifi/WifiManager;->START_WPS:I
-Landroid/net/wifi/WifiManager;->START_WPS_SUCCEEDED:I
-Landroid/net/wifi/WifiManager;->stopLocalOnlyHotspot()V
-Landroid/net/wifi/WifiManager;->stopSoftAp()Z
-Landroid/net/wifi/WifiManager;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->unregisterLocalOnlyHotspotObserver()V
-Landroid/net/wifi/WifiManager;->unregisterSoftApCallback(Landroid/net/wifi/WifiManager$SoftApCallback;)V
-Landroid/net/wifi/WifiManager;->updateInterfaceIpState(Ljava/lang/String;I)V
-Landroid/net/wifi/WifiManager;->watchLocalOnlyHotspot(Landroid/net/wifi/WifiManager$LocalOnlyHotspotObserver;Landroid/os/Handler;)V
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_ADDITIONAL_STA:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_AP_STA:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_AWARE:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_BATCH_SCAN:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_CONFIG_NDO:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_CONTROL_ROAMING:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_D2AP_RTT:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_D2D_RTT:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_EPR:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_HAL_EPNO:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_IE_WHITELIST:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_INFRA:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_INFRA_5G:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_LINK_LAYER_STATS:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_LOGGER:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_MKEEP_ALIVE:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_MOBILE_HOTSPOT:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_P2P:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_PASSPOINT:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_PNO:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_RSSI_MONITOR:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_SCANNER:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_SCAN_RAND:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_TDLS:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_TDLS_OFFCHANNEL:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_TRANSMIT_POWER:I
-Landroid/net/wifi/WifiManager;->WIFI_FEATURE_TX_POWER_LIMIT:I
-Landroid/net/wifi/WifiManager;->WIFI_MODE_NO_LOCKS_HELD:I
-Landroid/net/wifi/WifiManager;->WIFI_SCAN_AVAILABLE:Ljava/lang/String;
-Landroid/net/wifi/WifiManager;->WPS_COMPLETED:I
-Landroid/net/wifi/WifiManager;->WPS_FAILED:I
-Landroid/net/wifi/WifiNetworkConnectionStatistics;->TAG:Ljava/lang/String;
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;-><init>(Landroid/os/Handler;)V
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;->mHandler:Landroid/os/Handler;
Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;->networkCacheUpdated(Ljava/util/List;)V
@@ -40268,116 +37113,6 @@
Landroid/net/wifi/WifiNetworkScoreCache;->TAG:Ljava/lang/String;
Landroid/net/wifi/WifiNetworkScoreCache;->unregisterListener()V
Landroid/net/wifi/WifiNetworkScoreCache;->updateScores(Ljava/util/List;)V
-Landroid/net/wifi/WifiScanner$ChannelSpec;->dwellTimeMS:I
-Landroid/net/wifi/WifiScanner$ChannelSpec;->passive:Z
-Landroid/net/wifi/WifiScanner$HotlistSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$OperationResult;-><init>(ILjava/lang/String;)V
-Landroid/net/wifi/WifiScanner$OperationResult;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$OperationResult;->description:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner$OperationResult;->reason:I
-Landroid/net/wifi/WifiScanner$ParcelableScanData;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$ParcelableScanResults;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$PnoScanListener;->onPnoNetworkFound([Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->authBitField:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->AUTH_CODE_EAPOL:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->AUTH_CODE_OPEN:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->AUTH_CODE_PSK:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->flags:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_A_BAND:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_DIRECTED_SCAN:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_G_BAND:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_SAME_NETWORK:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->FLAG_STRICT_MATCH:B
-Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;->ssid:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner$PnoSettings;-><init>()V
-Landroid/net/wifi/WifiScanner$PnoSettings;->band5GHzBonus:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$PnoSettings;->currentConnectionBonus:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->initialScoreMax:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->isConnected:Z
-Landroid/net/wifi/WifiScanner$PnoSettings;->min24GHzRssi:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->min5GHzRssi:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->networkList:[Landroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;
-Landroid/net/wifi/WifiScanner$PnoSettings;->sameNetworkBonus:I
-Landroid/net/wifi/WifiScanner$PnoSettings;->secureBonus:I
-Landroid/net/wifi/WifiScanner$ScanData;-><init>()V
-Landroid/net/wifi/WifiScanner$ScanData;-><init>(IIIZ[Landroid/net/wifi/ScanResult;)V
-Landroid/net/wifi/WifiScanner$ScanData;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$ScanData;->getBucketsScanned()I
-Landroid/net/wifi/WifiScanner$ScanData;->isAllChannelsScanned()Z
-Landroid/net/wifi/WifiScanner$ScanData;->mAllChannelsScanned:Z
-Landroid/net/wifi/WifiScanner$ScanData;->mBucketsScanned:I
-Landroid/net/wifi/WifiScanner$ScanData;->mFlags:I
-Landroid/net/wifi/WifiScanner$ScanData;->mId:I
-Landroid/net/wifi/WifiScanner$ScanData;->mResults:[Landroid/net/wifi/ScanResult;
-Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;-><init>(Ljava/lang/String;)V
-Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;->ssid:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner$ScanSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner$ScanSettings;->hiddenNetworks:[Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;
-Landroid/net/wifi/WifiScanner$ScanSettings;->isPnoScan:Z
-Landroid/net/wifi/WifiScanner$ScanSettings;->type:I
-Landroid/net/wifi/WifiScanner$WifiChangeSettings;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/net/wifi/WifiScanner;-><init>(Landroid/content/Context;Landroid/net/wifi/IWifiScanner;Landroid/os/Looper;)V
-Landroid/net/wifi/WifiScanner;->addListener(Landroid/net/wifi/WifiScanner$ActionListener;)I
-Landroid/net/wifi/WifiScanner;->BASE:I
-Landroid/net/wifi/WifiScanner;->CMD_DEREGISTER_SCAN_LISTENER:I
-Landroid/net/wifi/WifiScanner;->CMD_FULL_SCAN_RESULT:I
-Landroid/net/wifi/WifiScanner;->CMD_GET_SCAN_RESULTS:I
-Landroid/net/wifi/WifiScanner;->CMD_GET_SINGLE_SCAN_RESULTS:I
-Landroid/net/wifi/WifiScanner;->CMD_OP_FAILED:I
-Landroid/net/wifi/WifiScanner;->CMD_OP_SUCCEEDED:I
-Landroid/net/wifi/WifiScanner;->CMD_PNO_NETWORK_FOUND:I
-Landroid/net/wifi/WifiScanner;->CMD_REGISTER_SCAN_LISTENER:I
-Landroid/net/wifi/WifiScanner;->CMD_SCAN_RESULT:I
-Landroid/net/wifi/WifiScanner;->CMD_SINGLE_SCAN_COMPLETED:I
-Landroid/net/wifi/WifiScanner;->CMD_START_BACKGROUND_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_START_PNO_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_START_SINGLE_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_STOP_BACKGROUND_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_STOP_PNO_SCAN:I
-Landroid/net/wifi/WifiScanner;->CMD_STOP_SINGLE_SCAN:I
-Landroid/net/wifi/WifiScanner;->DBG:Z
-Landroid/net/wifi/WifiScanner;->deregisterScanListener(Landroid/net/wifi/WifiScanner$ScanListener;)V
-Landroid/net/wifi/WifiScanner;->getAvailableChannels(I)Ljava/util/List;
-Landroid/net/wifi/WifiScanner;->getListener(I)Ljava/lang/Object;
-Landroid/net/wifi/WifiScanner;->getListenerKey(Ljava/lang/Object;)I
-Landroid/net/wifi/WifiScanner;->getSingleScanResults()Ljava/util/List;
-Landroid/net/wifi/WifiScanner;->GET_AVAILABLE_CHANNELS_EXTRA:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->INVALID_KEY:I
-Landroid/net/wifi/WifiScanner;->mAsyncChannel:Lcom/android/internal/util/AsyncChannel;
-Landroid/net/wifi/WifiScanner;->mContext:Landroid/content/Context;
-Landroid/net/wifi/WifiScanner;->mInternalHandler:Landroid/os/Handler;
-Landroid/net/wifi/WifiScanner;->mListenerKey:I
-Landroid/net/wifi/WifiScanner;->mListenerMap:Landroid/util/SparseArray;
-Landroid/net/wifi/WifiScanner;->mListenerMapLock:Ljava/lang/Object;
-Landroid/net/wifi/WifiScanner;->mService:Landroid/net/wifi/IWifiScanner;
-Landroid/net/wifi/WifiScanner;->PNO_PARAMS_PNO_SETTINGS_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->PNO_PARAMS_SCAN_SETTINGS_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->putListener(Ljava/lang/Object;)I
-Landroid/net/wifi/WifiScanner;->registerScanListener(Landroid/net/wifi/WifiScanner$ScanListener;)V
-Landroid/net/wifi/WifiScanner;->removeListener(I)Ljava/lang/Object;
-Landroid/net/wifi/WifiScanner;->removeListener(Ljava/lang/Object;)I
-Landroid/net/wifi/WifiScanner;->SCAN_PARAMS_SCAN_SETTINGS_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->SCAN_PARAMS_WORK_SOURCE_KEY:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->startConnectedPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;Landroid/net/wifi/WifiScanner$PnoScanListener;)V
-Landroid/net/wifi/WifiScanner;->startDisconnectedPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;Landroid/net/wifi/WifiScanner$PnoScanListener;)V
-Landroid/net/wifi/WifiScanner;->startPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;I)V
-Landroid/net/wifi/WifiScanner;->stopPnoScan(Landroid/net/wifi/WifiScanner$ScanListener;)V
-Landroid/net/wifi/WifiScanner;->TAG:Ljava/lang/String;
-Landroid/net/wifi/WifiScanner;->TYPE_HIGH_ACCURACY:I
-Landroid/net/wifi/WifiScanner;->TYPE_LOW_LATENCY:I
-Landroid/net/wifi/WifiScanner;->TYPE_LOW_POWER:I
-Landroid/net/wifi/WifiScanner;->validateChannel()V
-Landroid/net/wifi/WifiSsid;-><init>()V
-Landroid/net/wifi/WifiSsid;->convertToBytes(Ljava/lang/String;)V
-Landroid/net/wifi/WifiSsid;->createFromByteArray([B)Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/WifiSsid;->createFromHex(Ljava/lang/String;)Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/WifiSsid;->getHexString()Ljava/lang/String;
-Landroid/net/wifi/WifiSsid;->HEX_RADIX:I
-Landroid/net/wifi/WifiSsid;->isArrayAllZeroes([B)Z
-Landroid/net/wifi/WifiSsid;->isHidden()Z
-Landroid/net/wifi/WifiSsid;->TAG:Ljava/lang/String;
Landroid/net/wifi/WifiWakeReasonAndCounts;-><init>()V
Landroid/net/wifi/WifiWakeReasonAndCounts;->cmdEventWakeCntArray:[I
Landroid/net/wifi/WifiWakeReasonAndCounts;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -43626,45 +40361,6 @@
Landroid/os/IServiceManager;->LIST_SERVICES_TRANSACTION:I
Landroid/os/IServiceManager;->setPermissionController(Landroid/os/IPermissionController;)V
Landroid/os/IServiceManager;->SET_PERMISSION_CONTROLLER_TRANSACTION:I
-Landroid/os/IStatsCompanionService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->cancelAlarmForSubscriberTriggering()V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->cancelAnomalyAlarm()V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->cancelPullingAlarm()V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->getInterfaceDescriptor()Ljava/lang/String;
-Landroid/os/IStatsCompanionService$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/os/IStatsCompanionService$Stub$Proxy;->pullData(I)[Landroid/os/StatsLogEventWrapper;
-Landroid/os/IStatsCompanionService$Stub$Proxy;->sendDataBroadcast(Landroid/os/IBinder;J)V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->sendSubscriberBroadcast(Landroid/os/IBinder;JJJJ[Ljava/lang/String;Landroid/os/StatsDimensionsValue;)V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->setAlarmForSubscriberTriggering(J)V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->setAnomalyAlarm(J)V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->setPullingAlarm(J)V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->statsdReady()V
-Landroid/os/IStatsCompanionService$Stub$Proxy;->triggerUidSnapshot()V
-Landroid/os/IStatsCompanionService$Stub;-><init>()V
-Landroid/os/IStatsCompanionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStatsCompanionService;
-Landroid/os/IStatsCompanionService$Stub;->DESCRIPTOR:Ljava/lang/String;
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_cancelAlarmForSubscriberTriggering:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_cancelAnomalyAlarm:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_cancelPullingAlarm:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_pullData:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_sendDataBroadcast:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_sendSubscriberBroadcast:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_setAlarmForSubscriberTriggering:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_setAnomalyAlarm:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_setPullingAlarm:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_statsdReady:I
-Landroid/os/IStatsCompanionService$Stub;->TRANSACTION_triggerUidSnapshot:I
-Landroid/os/IStatsCompanionService;->cancelAlarmForSubscriberTriggering()V
-Landroid/os/IStatsCompanionService;->cancelAnomalyAlarm()V
-Landroid/os/IStatsCompanionService;->cancelPullingAlarm()V
-Landroid/os/IStatsCompanionService;->pullData(I)[Landroid/os/StatsLogEventWrapper;
-Landroid/os/IStatsCompanionService;->sendDataBroadcast(Landroid/os/IBinder;J)V
-Landroid/os/IStatsCompanionService;->sendSubscriberBroadcast(Landroid/os/IBinder;JJJJ[Ljava/lang/String;Landroid/os/StatsDimensionsValue;)V
-Landroid/os/IStatsCompanionService;->setAlarmForSubscriberTriggering(J)V
-Landroid/os/IStatsCompanionService;->setAnomalyAlarm(J)V
-Landroid/os/IStatsCompanionService;->setPullingAlarm(J)V
-Landroid/os/IStatsCompanionService;->statsdReady()V
-Landroid/os/IStatsCompanionService;->triggerUidSnapshot()V
Landroid/os/IStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IStatsManager$Stub$Proxy;->addConfiguration(J[BLjava/lang/String;)V
Landroid/os/IStatsManager$Stub$Proxy;->getData(JLjava/lang/String;)[B
@@ -45217,13 +41913,6 @@
Landroid/os/SimpleClock;-><init>(Ljava/time/ZoneId;)V
Landroid/os/SimpleClock;->zone:Ljava/time/ZoneId;
Landroid/os/StatFs;->doStat(Ljava/lang/String;)Landroid/system/StructStatVfs;
-Landroid/os/StatsDimensionsValue;-><init>(Landroid/os/Parcel;)V
-Landroid/os/StatsDimensionsValue;->mField:I
-Landroid/os/StatsDimensionsValue;->mValue:Ljava/lang/Object;
-Landroid/os/StatsDimensionsValue;->mValueType:I
-Landroid/os/StatsDimensionsValue;->readValueFromParcel(ILandroid/os/Parcel;)Ljava/lang/Object;
-Landroid/os/StatsDimensionsValue;->TAG:Ljava/lang/String;
-Landroid/os/StatsDimensionsValue;->writeValueToParcel(ILjava/lang/Object;Landroid/os/Parcel;I)Z
Landroid/os/StatsLogEventWrapper;-><init>(JII)V
Landroid/os/StatsLogEventWrapper;-><init>(Landroid/os/Parcel;)V
Landroid/os/StatsLogEventWrapper;->CREATOR:Landroid/os/Parcelable$Creator;
@@ -48671,33 +45360,6 @@
Landroid/provider/FontsContract;->TAG:Ljava/lang/String;
Landroid/provider/FontsContract;->THREAD_RENEWAL_THRESHOLD_MS:I
Landroid/provider/LiveFolders;-><init>()V
-Landroid/provider/MediaStore$Audio$AudioColumns;->ALBUM_ARTIST:Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$AudioColumns;->COMPILATION:Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$AudioColumns;->GENRE:Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$AudioColumns;->TITLE_RESOURCE_URI:Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$Media;->EXTERNAL_PATHS:[Ljava/lang/String;
-Landroid/provider/MediaStore$Audio$Radio;-><init>()V
-Landroid/provider/MediaStore$Files;->getDirectoryUri(Ljava/lang/String;)Landroid/net/Uri;
-Landroid/provider/MediaStore$Images$Media;->StoreThumbnail(Landroid/content/ContentResolver;Landroid/graphics/Bitmap;JFFI)Landroid/graphics/Bitmap;
-Landroid/provider/MediaStore$InternalThumbnails;-><init>()V
-Landroid/provider/MediaStore$InternalThumbnails;->cancelThumbnailRequest(Landroid/content/ContentResolver;JLandroid/net/Uri;J)V
-Landroid/provider/MediaStore$InternalThumbnails;->DEFAULT_GROUP_ID:I
-Landroid/provider/MediaStore$InternalThumbnails;->FULL_SCREEN_KIND:I
-Landroid/provider/MediaStore$InternalThumbnails;->getMiniThumbFromFile(Landroid/database/Cursor;Landroid/net/Uri;Landroid/content/ContentResolver;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
-Landroid/provider/MediaStore$InternalThumbnails;->getThumbnail(Landroid/content/ContentResolver;JJILandroid/graphics/BitmapFactory$Options;Landroid/net/Uri;Z)Landroid/graphics/Bitmap;
-Landroid/provider/MediaStore$InternalThumbnails;->MICRO_KIND:I
-Landroid/provider/MediaStore$InternalThumbnails;->MINI_KIND:I
-Landroid/provider/MediaStore$InternalThumbnails;->PROJECTION:[Ljava/lang/String;
-Landroid/provider/MediaStore$InternalThumbnails;->sThumbBuf:[B
-Landroid/provider/MediaStore$InternalThumbnails;->sThumbBufLock:Ljava/lang/Object;
-Landroid/provider/MediaStore$MediaColumns;->MEDIA_SCANNER_NEW_OBJECT_ID:Ljava/lang/String;
-Landroid/provider/MediaStore;->CONTENT_AUTHORITY_SLASH:Ljava/lang/String;
-Landroid/provider/MediaStore;->getDocumentUri(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Landroid/net/Uri;
-Landroid/provider/MediaStore;->getFilePath(Landroid/content/ContentResolver;Landroid/net/Uri;)Ljava/lang/String;
-Landroid/provider/MediaStore;->PARAM_DELETE_DATA:Ljava/lang/String;
-Landroid/provider/MediaStore;->RETRANSLATE_CALL:Ljava/lang/String;
-Landroid/provider/MediaStore;->TAG:Ljava/lang/String;
-Landroid/provider/MediaStore;->UNHIDE_CALL:Ljava/lang/String;
Landroid/provider/MetadataReader;-><init>()V
Landroid/provider/MetadataReader;->DEFAULT_EXIF_TAGS:[Ljava/lang/String;
Landroid/provider/MetadataReader;->getExifData(Ljava/io/InputStream;[Ljava/lang/String;)Landroid/os/Bundle;
@@ -65005,412 +61667,6 @@
Landroid/util/StateSet;->VIEW_STATE_SELECTED:I
Landroid/util/StateSet;->VIEW_STATE_SETS:[[I
Landroid/util/StateSet;->VIEW_STATE_WINDOW_FOCUSED:I
-Landroid/util/StatsLog;-><init>()V
-Landroid/util/StatsLog;->DEBUG:Z
-Landroid/util/StatsLog;->getIStatsManagerLocked()Landroid/os/IStatsManager;
-Landroid/util/StatsLog;->sService:Landroid/os/IStatsManager;
-Landroid/util/StatsLog;->TAG:Ljava/lang/String;
-Landroid/util/StatsLogInternal;-><init>()V
-Landroid/util/StatsLogInternal;->ACTIVITY_FOREGROUND_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__BACKGROUND:I
-Landroid/util/StatsLogInternal;->ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__FOREGROUND:I
-Landroid/util/StatsLogInternal;->ANOMALY_DETECTED:I
-Landroid/util/StatsLogInternal;->ANROCCURRED__FOREGROUND_STATE__BACKGROUND:I
-Landroid/util/StatsLogInternal;->ANROCCURRED__FOREGROUND_STATE__FOREGROUND:I
-Landroid/util/StatsLogInternal;->ANROCCURRED__FOREGROUND_STATE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->ANROCCURRED__IS_INSTANT_APP__FALSE:I
-Landroid/util/StatsLogInternal;->ANROCCURRED__IS_INSTANT_APP__TRUE:I
-Landroid/util/StatsLogInternal;->ANROCCURRED__IS_INSTANT_APP__UNAVAILABLE:I
-Landroid/util/StatsLogInternal;->ANR_OCCURRED:I
-Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED:I
-Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED__STATE__START:I
-Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED__STATE__STOP:I
-Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED__STATE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->APP_BREADCRUMB_REPORTED__STATE__UNSPECIFIED:I
-Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED:I
-Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__FOREGROUND_STATE__BACKGROUND:I
-Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__FOREGROUND_STATE__FOREGROUND:I
-Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__FOREGROUND_STATE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__IS_INSTANT_APP__FALSE:I
-Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__IS_INSTANT_APP__TRUE:I
-Landroid/util/StatsLogInternal;->APP_CRASH_OCCURRED__IS_INSTANT_APP__UNAVAILABLE:I
-Landroid/util/StatsLogInternal;->APP_DIED:I
-Landroid/util/StatsLogInternal;->APP_START_CANCELED:I
-Landroid/util/StatsLogInternal;->APP_START_CANCELED__TYPE__COLD:I
-Landroid/util/StatsLogInternal;->APP_START_CANCELED__TYPE__HOT:I
-Landroid/util/StatsLogInternal;->APP_START_CANCELED__TYPE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->APP_START_CANCELED__TYPE__WARM:I
-Landroid/util/StatsLogInternal;->APP_START_FULLY_DRAWN:I
-Landroid/util/StatsLogInternal;->APP_START_FULLY_DRAWN__TYPE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->APP_START_FULLY_DRAWN__TYPE__WITHOUT_BUNDLE:I
-Landroid/util/StatsLogInternal;->APP_START_FULLY_DRAWN__TYPE__WITH_BUNDLE:I
-Landroid/util/StatsLogInternal;->APP_START_MEMORY_STATE_CAPTURED:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_REASON_UNKNOWN:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_RECENTS_ANIM:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_SNAPSHOT:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_SPLASH_SCREEN:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_TIMEOUT:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__REASON__APP_TRANSITION_WINDOWS_DRAWN:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__TYPE__COLD:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__TYPE__HOT:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__TYPE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->APP_START_OCCURRED__TYPE__WARM:I
-Landroid/util/StatsLogInternal;->AUDIO_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->AUDIO_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->AUDIO_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->AUDIO_STATE_CHANGED__STATE__RESET:I
-Landroid/util/StatsLogInternal;->BATTERY_LEVEL_CHANGED:I
-Landroid/util/StatsLogInternal;->BATTERY_SAVER_MODE_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->BATTERY_SAVER_MODE_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->BATTERY_SAVER_MODE_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->BLE_SCAN_RESULT_RECEIVED:I
-Landroid/util/StatsLogInternal;->BLE_SCAN_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->BLE_SCAN_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->BLE_SCAN_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->BLE_SCAN_STATE_CHANGED__STATE__RESET:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ACTIVITY_INFO:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_BYTES_TRANSFER:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED__STATE__CONNECTION_STATE_CONNECTED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED__STATE__CONNECTION_STATE_CONNECTING:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED__STATE__CONNECTION_STATE_DISCONNECTED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_CONNECTION_STATE_CHANGED__STATE__CONNECTION_STATE_DISCONNECTING:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_AIRPLANE_MODE:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_APPLICATION_REQUEST:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_CRASH:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_DISALLOWED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_RESTARTED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_RESTORE_USER_SETTING:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_START_ERROR:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_SYSTEM_BOOT:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_UNSPECIFIED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__REASON__ENABLE_DISABLE_REASON_USER_SWITCH:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__STATE__DISABLED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__STATE__ENABLED:I
-Landroid/util/StatsLogInternal;->BLUETOOTH_ENABLED_STATE_CHANGED__STATE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->BOOT_SEQUENCE_REPORTED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__ABORTED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__ACTIVE:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__CONNECTING:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__DIALING:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__DISCONNECTED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__DISCONNECTING:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__NEW:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__ON_HOLD:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__PULLING:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__RINGING:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__CALL_STATE__SELECT_PHONE_ACCOUNT:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__ANSWERED_ELSEWHERE:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__BUSY:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__CALL_PULLED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__CANCELED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__CONNECTION_MANAGER_NOT_SUPPORTED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__ERROR:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__LOCAL:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__MISSED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__OTHER:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__REJECTED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__REMOTE:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__RESTRICTED:I
-Landroid/util/StatsLogInternal;->CALL_STATE_CHANGED__DISCONNECT_CAUSE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->CAMERA_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->CAMERA_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->CAMERA_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->CAMERA_STATE_CHANGED__STATE__RESET:I
-Landroid/util/StatsLogInternal;->CHARGE_CYCLES_REPORTED:I
-Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_CHARGING:I
-Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_DISCHARGING:I
-Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_FULL:I
-Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_INVALID:I
-Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_NOT_CHARGING:I
-Landroid/util/StatsLogInternal;->CHARGING_STATE_CHANGED__STATE__BATTERY_STATUS_UNKNOWN:I
-Landroid/util/StatsLogInternal;->CPU_ACTIVE_TIME:I
-Landroid/util/StatsLogInternal;->CPU_CLUSTER_TIME:I
-Landroid/util/StatsLogInternal;->CPU_TIME_PER_FREQ:I
-Landroid/util/StatsLogInternal;->CPU_TIME_PER_UID:I
-Landroid/util/StatsLogInternal;->CPU_TIME_PER_UID_FREQ:I
-Landroid/util/StatsLogInternal;->DAVEY_OCCURRED:I
-Landroid/util/StatsLogInternal;->DEVICE_IDLE_MODE_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->DEVICE_IDLE_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_DEEP:I
-Landroid/util/StatsLogInternal;->DEVICE_IDLE_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_LIGHT:I
-Landroid/util/StatsLogInternal;->DEVICE_IDLE_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_OFF:I
-Landroid/util/StatsLogInternal;->DEVICE_IDLING_MODE_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->DEVICE_IDLING_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_DEEP:I
-Landroid/util/StatsLogInternal;->DEVICE_IDLING_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_LIGHT:I
-Landroid/util/StatsLogInternal;->DEVICE_IDLING_MODE_STATE_CHANGED__STATE__DEVICE_IDLE_MODE_OFF:I
-Landroid/util/StatsLogInternal;->DISK_SPACE:I
-Landroid/util/StatsLogInternal;->FLASHLIGHT_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->FLASHLIGHT_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->FLASHLIGHT_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->FLASHLIGHT_STATE_CHANGED__STATE__RESET:I
-Landroid/util/StatsLogInternal;->FOREGROUND_SERVICE_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER:I
-Landroid/util/StatsLogInternal;->FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT:I
-Landroid/util/StatsLogInternal;->FULL_BATTERY_CAPACITY:I
-Landroid/util/StatsLogInternal;->GPS_SCAN_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->GPS_SCAN_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->GPS_SCAN_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->HARDWARE_FAILED:I
-Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_CODEC:I
-Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_FINGERPRINT:I
-Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_MICROPHONE:I
-Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_SPEAKER:I
-Landroid/util/StatsLogInternal;->HARDWARE_FAILED__HARDWARE_TYPE__HARDWARE_FAILED_UNKNOWN:I
-Landroid/util/StatsLogInternal;->ISOLATED_UID_CHANGED:I
-Landroid/util/StatsLogInternal;->ISOLATED_UID_CHANGED__EVENT__CREATED:I
-Landroid/util/StatsLogInternal;->ISOLATED_UID_CHANGED__EVENT__REMOVED:I
-Landroid/util/StatsLogInternal;->KERNEL_WAKELOCK:I
-Landroid/util/StatsLogInternal;->KERNEL_WAKEUP_REPORTED:I
-Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_PASSWORD_ENTERED:I
-Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_PASSWORD_ENTERED__RESULT__FAILURE:I
-Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_PASSWORD_ENTERED__RESULT__SUCCESS:I
-Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_PASSWORD_ENTERED__RESULT__UNKNOWN:I
-Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_STATE_CHANGED__STATE__HIDDEN:I
-Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_STATE_CHANGED__STATE__SHOWN:I
-Landroid/util/StatsLogInternal;->KEYGUARD_BOUNCER_STATE_CHANGED__STATE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED__STATE__HIDDEN:I
-Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED__STATE__OCCLUDED:I
-Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED__STATE__SHOWN:I
-Landroid/util/StatsLogInternal;->KEYGUARD_STATE_CHANGED__STATE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->LMK_KILL_OCCURRED:I
-Landroid/util/StatsLogInternal;->LMK_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->LMK_STATE_CHANGED__STATE__START:I
-Landroid/util/StatsLogInternal;->LMK_STATE_CHANGED__STATE__STOP:I
-Landroid/util/StatsLogInternal;->LMK_STATE_CHANGED__STATE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->LONG_PARTIAL_WAKELOCK_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->LOW_MEM_REPORTED:I
-Landroid/util/StatsLogInternal;->MEDIA_CODEC_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->MEDIA_CODEC_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->MEDIA_CODEC_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->MEDIA_CODEC_STATE_CHANGED__STATE__RESET:I
-Landroid/util/StatsLogInternal;->MOBILE_BYTES_TRANSFER:I
-Landroid/util/StatsLogInternal;->MOBILE_BYTES_TRANSFER_BY_FG_BG:I
-Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__ACTIVATING:I
-Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__ACTIVE:I
-Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__DISCONNECTING:I
-Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__DISCONNECTION_ERROR_CREATING_CONNECTION:I
-Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__INACTIVE:I
-Landroid/util/StatsLogInternal;->MOBILE_CONNECTION_STATE_CHANGED__STATE__UNKNOWN:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_HIGH:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_LOW:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_MEDIUM:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_UNKNOWN:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_1XRTT:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_CDMA:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EDGE:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EHRPD:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EVDO_0:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EVDO_A:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_EVDO_B:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_GPRS:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_GSM:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_HSDPA:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_HSPA:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_HSPAP:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_HSUPA:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_IDEN:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_IWLAN:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_LTE:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_LTE_CA:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_TD_SCDMA:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_UMTS:I
-Landroid/util/StatsLogInternal;->MOBILE_RADIO_TECHNOLOGY_CHANGED__STATE__NETWORK_TYPE_UNKNOWN:I
-Landroid/util/StatsLogInternal;->MODEM_ACTIVITY_INFO:I
-Landroid/util/StatsLogInternal;->OVERLAY_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->OVERLAY_STATE_CHANGED__STATE__ENTERED:I
-Landroid/util/StatsLogInternal;->OVERLAY_STATE_CHANGED__STATE__EXITED:I
-Landroid/util/StatsLogInternal;->PACKET_WAKEUP_OCCURRED:I
-Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED:I
-Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_GOOD:I
-Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_GREAT:I
-Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_MODERATE:I
-Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_NONE_OR_UNKNOWN:I
-Landroid/util/StatsLogInternal;->PHONE_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_POOR:I
-Landroid/util/StatsLogInternal;->PHYSICAL_DROP_DETECTED:I
-Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED__STATE__DISMISSED:I
-Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED__STATE__ENTERED:I
-Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED__STATE__EXPANDED_TO_FULL_SCREEN:I
-Landroid/util/StatsLogInternal;->PICTURE_IN_PICTURE_STATE_CHANGED__STATE__MINIMIZED:I
-Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED__STATE__BATTERY_PLUGGED_AC:I
-Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED__STATE__BATTERY_PLUGGED_NONE:I
-Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED__STATE__BATTERY_PLUGGED_USB:I
-Landroid/util/StatsLogInternal;->PLUGGED_STATE_CHANGED__STATE__BATTERY_PLUGGED_WIRELESS:I
-Landroid/util/StatsLogInternal;->PROCESS_LIFE_CYCLE_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__CRASHED:I
-Landroid/util/StatsLogInternal;->PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__FINISHED:I
-Landroid/util/StatsLogInternal;->PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__STARTED:I
-Landroid/util/StatsLogInternal;->PROCESS_MEMORY_STATE:I
-Landroid/util/StatsLogInternal;->REMAINING_BATTERY_CAPACITY:I
-Landroid/util/StatsLogInternal;->RESOURCE_CONFIGURATION_CHANGED:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_CANCELLED:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_CONSTRAINTS_NOT_SATISFIED:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_DEVICE_IDLE:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_PREEMPT:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_TIMEOUT:I
-Landroid/util/StatsLogInternal;->SCHEDULED_JOB_STATE_CHANGED__STOP_REASON__STOP_REASON_UNKNOWN:I
-Landroid/util/StatsLogInternal;->SCREEN_BRIGHTNESS_CHANGED:I
-Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_DOZE:I
-Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_DOZE_SUSPEND:I
-Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_OFF:I
-Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_ON:I
-Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_ON_SUSPEND:I
-Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_UNKNOWN:I
-Landroid/util/StatsLogInternal;->SCREEN_STATE_CHANGED__STATE__DISPLAY_STATE_VR:I
-Landroid/util/StatsLogInternal;->SENSOR_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->SENSOR_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->SENSOR_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->SETTING_CHANGED:I
-Landroid/util/StatsLogInternal;->SETTING_CHANGED__REASON__DELETED:I
-Landroid/util/StatsLogInternal;->SETTING_CHANGED__REASON__UPDATED:I
-Landroid/util/StatsLogInternal;->SHUTDOWN_SEQUENCE_REPORTED:I
-Landroid/util/StatsLogInternal;->SPEAKER_IMPEDANCE_REPORTED:I
-Landroid/util/StatsLogInternal;->SUBSYSTEM_SLEEP_STATE:I
-Landroid/util/StatsLogInternal;->SYNC_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->SYNC_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->SYNC_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->SYSTEM_ELAPSED_REALTIME:I
-Landroid/util/StatsLogInternal;->SYSTEM_UPTIME:I
-Landroid/util/StatsLogInternal;->TEMPERATURE:I
-Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_BATTERY:I
-Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_CPU:I
-Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_GPU:I
-Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_SKIN:I
-Landroid/util/StatsLogInternal;->TEMPERATURE__SENSOR_LOCATION__TEMPERATURE_TYPE_UNKNOWN:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_BACKUP:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_BOUND_FOREGROUND_SERVICE:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_CACHED_ACTIVITY:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_CACHED_ACTIVITY_CLIENT:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_CACHED_EMPTY:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_CACHED_RECENT:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_FOREGROUND_SERVICE:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_HEAVY_WEIGHT:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_HOME:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_IMPORTANT_BACKGROUND:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_IMPORTANT_FOREGROUND:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_LAST_ACTIVITY:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_NONEXISTENT:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_PERSISTENT:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_PERSISTENT_UI:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_RECEIVER:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_SERVICE:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_TOP:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_TOP_SLEEPING:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_TRANSIENT_BACKGROUND:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_UNKNOWN:I
-Landroid/util/StatsLogInternal;->UID_PROCESS_STATE_CHANGED__STATE__PROCESS_STATE_UNKNOWN_TO_PROTO:I
-Landroid/util/StatsLogInternal;->USB_CONNECTOR_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->USB_CONNECTOR_STATE_CHANGED__STATE__CONNECTED:I
-Landroid/util/StatsLogInternal;->USB_CONNECTOR_STATE_CHANGED__STATE__DISCONNECTED:I
-Landroid/util/StatsLogInternal;->USB_DEVICE_ATTACHED:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__DOZE_WAKE_LOCK:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__DRAW_WAKE_LOCK:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__FULL_WAKE_LOCK:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__PARTIAL_WAKE_LOCK:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__PROXIMITY_SCREEN_OFF_WAKE_LOCK:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__SCREEN_BRIGHT_WAKE_LOCK:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__LEVEL__SCREEN_DIM_WAKE_LOCK:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__STATE__ACQUIRE:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__STATE__CHANGE_ACQUIRE:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__STATE__CHANGE_RELEASE:I
-Landroid/util/StatsLogInternal;->WAKELOCK_STATE_CHANGED__STATE__RELEASE:I
-Landroid/util/StatsLogInternal;->WAKEUP_ALARM_OCCURRED:I
-Landroid/util/StatsLogInternal;->WIFI_ACTIVITY_INFO:I
-Landroid/util/StatsLogInternal;->WIFI_BYTES_TRANSFER:I
-Landroid/util/StatsLogInternal;->WIFI_BYTES_TRANSFER_BY_FG_BG:I
-Landroid/util/StatsLogInternal;->WIFI_LOCK_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->WIFI_LOCK_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->WIFI_LOCK_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->WIFI_MULTICAST_LOCK_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->WIFI_MULTICAST_LOCK_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->WIFI_MULTICAST_LOCK_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_HIGH:I
-Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_LOW:I
-Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_MEDIUM:I
-Landroid/util/StatsLogInternal;->WIFI_RADIO_POWER_STATE_CHANGED__STATE__DATA_CONNECTION_POWER_STATE_UNKNOWN:I
-Landroid/util/StatsLogInternal;->WIFI_SCAN_STATE_CHANGED:I
-Landroid/util/StatsLogInternal;->WIFI_SCAN_STATE_CHANGED__STATE__OFF:I
-Landroid/util/StatsLogInternal;->WIFI_SCAN_STATE_CHANGED__STATE__ON:I
-Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED:I
-Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_GOOD:I
-Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_GREAT:I
-Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_MODERATE:I
-Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_NONE_OR_UNKNOWN:I
-Landroid/util/StatsLogInternal;->WIFI_SIGNAL_STRENGTH_CHANGED__SIGNAL_STRENGTH__SIGNAL_STRENGTH_POOR:I
-Landroid/util/StatsLogInternal;->write(I)I
-Landroid/util/StatsLogInternal;->write(II)I
-Landroid/util/StatsLogInternal;->write(III)I
-Landroid/util/StatsLogInternal;->write(IIIFIIIIIIIIIIIIII)I
-Landroid/util/StatsLogInternal;->write(IIII)I
-Landroid/util/StatsLogInternal;->write(IIIIIIIII)I
-Landroid/util/StatsLogInternal;->write(IIIIJZ)I
-Landroid/util/StatsLogInternal;->write(IIIJ)I
-Landroid/util/StatsLogInternal;->write(IIIZZ)I
-Landroid/util/StatsLogInternal;->write(IIIZZZ)I
-Landroid/util/StatsLogInternal;->write(IIJ)I
-Landroid/util/StatsLogInternal;->write(IIJJ)I
-Landroid/util/StatsLogInternal;->write(IIJJJJ)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;IJJJJJ)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ILjava/lang/String;)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;III)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ILjava/lang/String;Ljava/lang/String;ZJIIIIILjava/lang/String;II)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ILjava/lang/String;ZJ)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;Ljava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;II)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;Ljava/lang/String;JJJJJ)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;II)I
-Landroid/util/StatsLogInternal;->write(IILjava/lang/String;ZI)I
-Landroid/util/StatsLogInternal;->write(IIZJJJJ)I
-Landroid/util/StatsLogInternal;->write(IJ)I
-Landroid/util/StatsLogInternal;->write(IJIJJJJ)I
-Landroid/util/StatsLogInternal;->write(IJJJ)I
-Landroid/util/StatsLogInternal;->write(IJJJJJJJJJJ)I
-Landroid/util/StatsLogInternal;->write(ILjava/lang/String;IIJ)I
-Landroid/util/StatsLogInternal;->write(ILjava/lang/String;J)I
-Landroid/util/StatsLogInternal;->write(ILjava/lang/String;Ljava/lang/String;JJ)I
-Landroid/util/StatsLogInternal;->write(ILjava/lang/String;Ljava/lang/String;JJJJ)I
-Landroid/util/StatsLogInternal;->write(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZII)I
-Landroid/util/StatsLogInternal;->write(IZLjava/lang/String;JJ)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;II)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;IILjava/lang/String;)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;ILjava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;IZZZ)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;Ljava/lang/String;)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;Ljava/lang/String;II)I
-Landroid/util/StatsLogInternal;->write(I[I[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;II)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;IILjava/lang/String;)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;ILjava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;IZZZ)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;I)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;II)I
-Landroid/util/StatsLogInternal;->write_non_chained(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
-Landroid/util/StatsLogInternal;->WTF_OCCURRED:I
Landroid/util/StringBuilderPrinter;->mBuilder:Ljava/lang/StringBuilder;
Landroid/util/SuperNotCalledException;-><init>(Ljava/lang/String;)V
Landroid/util/TextLogEntry;-><init>()V
diff --git a/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt b/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt
index 753bc69b..79d2521 100644
--- a/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt
+++ b/boot/hiddenapi/hiddenapi-max-target-r-loprio.txt
@@ -23,8 +23,6 @@
Landroid/net/INetworkPolicyListener$Stub;-><init>()V
Landroid/net/nsd/INsdManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/nsd/INsdManager;
Landroid/net/sip/ISipSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/sip/ISipSession;
-Landroid/net/wifi/IWifiManager$Stub;->TRANSACTION_getScanResults:I
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/p2p/IWifiP2pManager;
Landroid/nfc/INfcAdapter$Stub;->TRANSACTION_enable:I
Landroid/os/IPowerManager$Stub;->TRANSACTION_acquireWakeLock:I
Landroid/os/IPowerManager$Stub;->TRANSACTION_goToSleep:I
diff --git a/boot/hiddenapi/hiddenapi-unsupported.txt b/boot/hiddenapi/hiddenapi-unsupported.txt
index 4281b0d..002d42d 100644
--- a/boot/hiddenapi/hiddenapi-unsupported.txt
+++ b/boot/hiddenapi/hiddenapi-unsupported.txt
@@ -167,28 +167,12 @@
Landroid/media/IMediaScannerService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaScannerService;
Landroid/media/session/ISessionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionManager;
Landroid/media/tv/ITvRemoteProvider$Stub;-><init>()V
-Landroid/net/IConnectivityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveLinkProperties()Landroid/net/LinkProperties;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetworkInfo()Landroid/net/NetworkInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getAllNetworkInfo()[Landroid/net/NetworkInfo;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getAllNetworks()[Landroid/net/Network;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getTetherableIfaces()[Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getTetherableUsbRegexs()[Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->getTetheredIfaces()[Ljava/lang/String;
-Landroid/net/IConnectivityManager$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/IConnectivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IConnectivityManager;
Landroid/net/INetworkManagementEventObserver$Stub;-><init>()V
Landroid/net/INetworkPolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkPolicyManager;
Landroid/net/INetworkScoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkScoreService;
Landroid/net/INetworkStatsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/net/INetworkStatsService$Stub$Proxy;->getMobileIfaces()[Ljava/lang/String;
Landroid/net/INetworkStatsService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStatsService;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/IWifiManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiManager;
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;->mRemote:Landroid/os/IBinder;
-Landroid/net/wifi/IWifiScanner$Stub;-><init>()V
-Landroid/net/wifi/IWifiScanner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScanner;
Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
Landroid/os/IDeviceIdentifiersPolicyService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdentifiersPolicyService;
Landroid/os/IDeviceIdleController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdleController;
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 6aae9ad..8e6e8c5 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -9131,6 +9131,7 @@
field public static final String NAMESPACE_STATSD_NATIVE_BOOT = "statsd_native_boot";
field @Deprecated public static final String NAMESPACE_STORAGE = "storage";
field public static final String NAMESPACE_STORAGE_NATIVE_BOOT = "storage_native_boot";
+ field public static final String NAMESPACE_SURFACE_FLINGER_NATIVE_BOOT = "surface_flinger_native_boot";
field public static final String NAMESPACE_SWCODEC_NATIVE = "swcodec_native";
field public static final String NAMESPACE_SYSTEMUI = "systemui";
field public static final String NAMESPACE_SYSTEM_TIME = "system_time";
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 317e51c..8a26578 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -19,6 +19,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
+import android.app.ActivityManager.ProcessCapability;
import android.content.ComponentName;
import android.content.IIntentReceiver;
import android.content.IIntentSender;
@@ -634,4 +635,9 @@
* Return the temp allowlist type when server push messaging is over the quota.
*/
public abstract @TempAllowListType int getPushMessagingOverQuotaBehavior();
+
+ /**
+ * Returns the capability of the given uid
+ */
+ public abstract @ProcessCapability int getUidCapability(int uid);
}
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 0df4bf3..89a0bf8 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -39,6 +39,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.annotation.UserIdInt;
import android.app.assist.AssistContent;
import android.app.assist.AssistStructure;
import android.app.backup.BackupAgent;
@@ -64,6 +65,7 @@
import android.content.ContentProvider;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Context.CreatePackageOptions;
import android.content.IContentProvider;
import android.content.IIntentReceiver;
import android.content.Intent;
@@ -74,6 +76,7 @@
import android.content.pm.InstrumentationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.ApplicationInfoFlags;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ParceledListSlice;
import android.content.pm.PermissionInfo;
@@ -220,8 +223,6 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.lang.reflect.Method;
import java.net.InetAddress;
@@ -232,7 +233,6 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -421,16 +421,6 @@
@GuardedBy("mResourcesManager")
@UnsupportedAppUsage
final ArrayMap<String, WeakReference<LoadedApk>> mResourcePackages = new ArrayMap<>();
-
- @GuardedBy("mResourcesManager")
- private final ArrayMap<List<String>, WeakReference<LoadedApk>> mPackageNonAMS =
- new ArrayMap<>();
- @GuardedBy("mResourcesManager")
- private final ArrayMap<List<String>, WeakReference<LoadedApk>> mResourcePackagesNonAMS =
- new ArrayMap<>();
- @GuardedBy("mResourcesManager")
- private final ReferenceQueue<LoadedApk> mPackageRefQueue = new ReferenceQueue<>();
-
@GuardedBy("mResourcesManager")
final ArrayList<ActivityClientRecord> mRelaunchingActivities = new ArrayList<>();
@GuardedBy("mResourcesManager")
@@ -1184,7 +1174,6 @@
}
public void scheduleApplicationInfoChanged(ApplicationInfo ai) {
- mResourcesManager.updatePendingAppInfoUpdates(ai);
mH.removeMessages(H.APPLICATION_INFO_CHANGED, ai);
sendMessage(H.APPLICATION_INFO_CHANGED, ai);
}
@@ -2387,281 +2376,72 @@
return mH;
}
- /**
- * If {@code retainReferences} is false, prunes all {@link LoadedApk} representing any of the
- * specified packages from the package caches.
- *
- * @return whether the cache contains a loaded apk representing any of the specified packages
- */
- private boolean clearCachedApks() {
- synchronized (mResourcesManager) {
- Reference<? extends LoadedApk> enqueuedRef = mPackageRefQueue.poll();
- if (enqueuedRef == null) {
- return false;
- }
-
- final HashSet<Reference<? extends LoadedApk>> deadReferences = new HashSet<>();
- for (; enqueuedRef != null; enqueuedRef = mPackageRefQueue.poll()) {
- deadReferences.add(enqueuedRef);
- }
-
- return cleanWeakMapValues(mPackages, deadReferences)
- || cleanWeakMapValues(mResourcePackages, deadReferences)
- || cleanWeakMapValues(mPackageNonAMS, deadReferences)
- || cleanWeakMapValues(mResourcePackages, deadReferences);
- }
- }
-
- private static <K> boolean cleanWeakMapValues(ArrayMap<K, WeakReference<LoadedApk>> map,
- HashSet<Reference<? extends LoadedApk>> deadReferences) {
- boolean hasPkgInfo = false;
- for (int i = map.size() - 1; i >= 0; i--) {
- if (deadReferences.contains(map.valueAt(i))) {
- map.removeAt(i);
- hasPkgInfo = true;
- }
- }
- return hasPkgInfo;
- }
-
- /**
- * Retrieves the previously cached {@link LoadedApk} that was created/updated with the most
- * recent {@link ApplicationInfo} sent from the activity manager service.
- */
- @Nullable
- private LoadedApk peekLatestCachedApkFromAMS(@NonNull String packageName, boolean includeCode) {
- synchronized (mResourcesManager) {
- WeakReference<LoadedApk> ref;
- if (includeCode) {
- return ((ref = mPackages.get(packageName)) != null) ? ref.get() : null;
- } else {
- return ((ref = mResourcePackages.get(packageName)) != null) ? ref.get() : null;
- }
- }
- }
-
- /**
- * Updates the previously cached {@link LoadedApk} that was created/updated using an
- * {@link ApplicationInfo} sent from activity manager service.
- *
- * If {@code appInfo} is null, the most up-to-date {@link ApplicationInfo} will be fetched and
- * used to update the cached package; otherwise, the specified app info will be used.
- */
- private boolean updateLatestCachedApkFromAMS(@NonNull String packageName,
- @Nullable ApplicationInfo appInfo, boolean updateActivityRecords) {
- final LoadedApk[] loadedPackages = new LoadedApk[]{
- peekLatestCachedApkFromAMS(packageName, true),
- peekLatestCachedApkFromAMS(packageName, false)
- };
-
- try {
- if (appInfo == null) {
- appInfo = sPackageManager.getApplicationInfo(
- packageName, PackageManager.GET_SHARED_LIBRARY_FILES,
- UserHandle.myUserId());
- }
- } catch (RemoteException e) {
- Slog.v(TAG, "Failed to get most recent app info for '" + packageName + "'", e);
- return false;
- }
-
- boolean hasPackage = false;
- final String[] oldResDirs = new String[loadedPackages.length];
- for (int i = loadedPackages.length - 1; i >= 0; i--) {
- final LoadedApk loadedPackage = loadedPackages[i];
- if (loadedPackage == null) {
- continue;
- }
-
- // If the package is being updated, yet it still has a valid LoadedApk object, the
- // package was updated with PACKAGE_REMOVED_DONT_KILL. Adjust it's internal references
- // to the application info and resources.
- hasPackage = true;
- if (updateActivityRecords && mActivities.size() > 0) {
- for (ActivityClientRecord ar : mActivities.values()) {
- if (ar.activityInfo.applicationInfo.packageName.equals(packageName)) {
- ar.activityInfo.applicationInfo = appInfo;
- ar.packageInfo = loadedPackage;
- }
- }
- }
-
- updateLoadedApk(loadedPackage, appInfo);
- oldResDirs[i] = loadedPackage.getResDir();
- }
- if (hasPackage) {
- synchronized (mResourcesManager) {
- mResourcesManager.applyNewResourceDirs(appInfo, oldResDirs);
- }
- }
- return hasPackage;
- }
-
- private static List<String> makeNonAMSKey(@NonNull ApplicationInfo appInfo) {
- final List<String> paths = new ArrayList<>();
- paths.add(appInfo.sourceDir);
- if (appInfo.resourceDirs != null) {
- for (String path : appInfo.resourceDirs) {
- paths.add(path);
- }
- }
- return paths;
- }
-
- /**
- * Retrieves the previously cached {@link LoadedApk}.
- *
- * If {@code isAppInfoFromAMS} is true, then {@code appInfo} will be used to update the paths
- * of the previously cached {@link LoadedApk} that was created/updated using an
- * {@link ApplicationInfo} sent from activity manager service.
- */
- @Nullable
- private LoadedApk retrieveCachedApk(@NonNull ApplicationInfo appInfo, boolean includeCode,
- boolean isAppInfoFromAMS) {
- if (UserHandle.myUserId() != UserHandle.getUserId(appInfo.uid)) {
- // Caching not supported across users.
- return null;
- }
-
- if (isAppInfoFromAMS) {
- LoadedApk loadedPackage = peekLatestCachedApkFromAMS(appInfo.packageName, includeCode);
- if (loadedPackage != null) {
- updateLoadedApk(loadedPackage, appInfo);
- }
- return loadedPackage;
- }
-
- synchronized (mResourcesManager) {
- WeakReference<LoadedApk> ref;
- if (includeCode) {
- return ((ref = mPackageNonAMS.get(makeNonAMSKey(appInfo))) != null)
- ? ref.get() : null;
- } else {
- return ((ref = mResourcePackagesNonAMS.get(makeNonAMSKey(appInfo))) != null)
- ? ref.get() : null;
- }
- }
- }
-
- private static boolean isLoadedApkResourceDirsUpToDate(LoadedApk loadedApk,
- ApplicationInfo appInfo) {
- boolean baseDirsUpToDate = loadedApk.getResDir().equals(appInfo.sourceDir);
- boolean resourceDirsUpToDate = Arrays.equals(
- ArrayUtils.defeatNullable(appInfo.resourceDirs),
- ArrayUtils.defeatNullable(loadedApk.getOverlayDirs()));
- boolean overlayPathsUpToDate = Arrays.equals(
- ArrayUtils.defeatNullable(appInfo.overlayPaths),
- ArrayUtils.defeatNullable(loadedApk.getOverlayPaths()));
-
- return (loadedApk.mResources == null || loadedApk.mResources.getAssets().isUpToDate())
- && baseDirsUpToDate && resourceDirsUpToDate && overlayPathsUpToDate;
- }
-
- private void updateLoadedApk(@NonNull LoadedApk loadedPackage,
- @NonNull ApplicationInfo appInfo) {
- if (isLoadedApkResourceDirsUpToDate(loadedPackage, appInfo)) {
- return;
- }
-
- final List<String> oldPaths = new ArrayList<>();
- LoadedApk.makePaths(this, appInfo, oldPaths);
- loadedPackage.updateApplicationInfo(appInfo, oldPaths);
- }
-
- @Nullable
- private LoadedApk createLoadedPackage(@NonNull ApplicationInfo appInfo,
- @Nullable CompatibilityInfo compatInfo, @Nullable ClassLoader baseLoader,
- boolean securityViolation, boolean includeCode, boolean registerPackage,
- boolean isAppInfoFromAMS) {
- final LoadedApk packageInfo =
- new LoadedApk(this, appInfo, compatInfo, baseLoader,
- securityViolation, includeCode
- && (appInfo.flags & ApplicationInfo.FLAG_HAS_CODE) != 0, registerPackage);
-
- if (mSystemThread && "android".equals(appInfo.packageName)) {
- packageInfo.installSystemApplicationInfo(appInfo,
- getSystemContext().mPackageInfo.getClassLoader());
- }
-
- if (UserHandle.myUserId() != UserHandle.getUserId(appInfo.uid)) {
- // Caching not supported across users
- return packageInfo;
- }
-
- synchronized (mResourcesManager) {
- if (includeCode) {
- if (isAppInfoFromAMS) {
- mPackages.put(appInfo.packageName,
- new WeakReference<>(packageInfo, mPackageRefQueue));
- } else {
- mPackageNonAMS.put(makeNonAMSKey(appInfo),
- new WeakReference<>(packageInfo, mPackageRefQueue));
- }
- } else {
- if (isAppInfoFromAMS) {
- mResourcePackages.put(appInfo.packageName,
- new WeakReference<>(packageInfo, mPackageRefQueue));
- } else {
- mResourcePackagesNonAMS.put(makeNonAMSKey(appInfo),
- new WeakReference<>(packageInfo, mPackageRefQueue));
- }
- }
- return packageInfo;
- }
- }
-
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public final LoadedApk getPackageInfo(String packageName, CompatibilityInfo compatInfo,
- int flags) {
+ @CreatePackageOptions int flags) {
return getPackageInfo(packageName, compatInfo, flags, UserHandle.myUserId());
}
public final LoadedApk getPackageInfo(String packageName, CompatibilityInfo compatInfo,
- int flags, int userId) {
- final ApplicationInfo ai = PackageManager.getApplicationInfoAsUserCached(
+ @CreatePackageOptions int flags, @UserIdInt int userId) {
+ return getPackageInfo(packageName, compatInfo, flags, userId, 0 /* packageFlags */);
+ }
+
+ public final LoadedApk getPackageInfo(String packageName, CompatibilityInfo compatInfo,
+ @CreatePackageOptions int flags, @UserIdInt int userId,
+ @ApplicationInfoFlags int packageFlags) {
+ final boolean differentUser = (UserHandle.myUserId() != userId);
+ ApplicationInfo ai = PackageManager.getApplicationInfoAsUserCached(
packageName,
- PackageManager.GET_SHARED_LIBRARY_FILES
+ packageFlags | PackageManager.GET_SHARED_LIBRARY_FILES
| PackageManager.MATCH_DEBUG_TRIAGED_MISSING,
(userId < 0) ? UserHandle.myUserId() : userId);
- LoadedApk packageInfo = null;
- if (ai != null) {
- packageInfo = retrieveCachedApk(ai,
- (flags & Context.CONTEXT_INCLUDE_CODE) != 0,
- false);
- }
-
- if (packageInfo != null) {
- if (packageInfo.isSecurityViolation()
- && (flags & Context.CONTEXT_IGNORE_SECURITY) == 0) {
- throw new SecurityException(
- "Requesting code from " + packageName
- + " to be run in process "
- + mBoundApplication.processName
- + "/" + mBoundApplication.appInfo.uid);
+ synchronized (mResourcesManager) {
+ WeakReference<LoadedApk> ref;
+ if (differentUser) {
+ // Caching not supported across users
+ ref = null;
+ } else if ((flags & Context.CONTEXT_INCLUDE_CODE) != 0) {
+ ref = mPackages.get(packageName);
+ } else {
+ ref = mResourcePackages.get(packageName);
}
- return packageInfo;
+
+ LoadedApk packageInfo = ref != null ? ref.get() : null;
+ if (ai != null && packageInfo != null) {
+ if (!isLoadedApkResourceDirsUpToDate(packageInfo, ai)) {
+ List<String> oldPaths = new ArrayList<>();
+ LoadedApk.makePaths(this, ai, oldPaths);
+ packageInfo.updateApplicationInfo(ai, oldPaths);
+ }
+
+ if (packageInfo.isSecurityViolation()
+ && (flags&Context.CONTEXT_IGNORE_SECURITY) == 0) {
+ throw new SecurityException(
+ "Requesting code from " + packageName
+ + " to be run in process "
+ + mBoundApplication.processName
+ + "/" + mBoundApplication.appInfo.uid);
+ }
+ return packageInfo;
+ }
}
- return ai == null ? null : getPackageInfo(ai, compatInfo, flags, false);
+ if (ai != null) {
+ return getPackageInfo(ai, compatInfo, flags);
+ }
+
+ return null;
}
- /**
- * @deprecated Use {@link #getPackageInfo(ApplicationInfo, CompatibilityInfo, int, boolean)}
- * instead.
- */
- @Deprecated
@UnsupportedAppUsage(trackingBug = 171933273)
public final LoadedApk getPackageInfo(ApplicationInfo ai, CompatibilityInfo compatInfo,
- int flags) {
- return getPackageInfo(ai, compatInfo, flags, true);
- }
-
- public final LoadedApk getPackageInfo(ApplicationInfo ai, CompatibilityInfo compatInfo,
- @Context.CreatePackageOptions int flags, boolean isAppInfoFromAMS) {
+ @CreatePackageOptions int flags) {
boolean includeCode = (flags&Context.CONTEXT_INCLUDE_CODE) != 0;
boolean securityViolation = includeCode && ai.uid != 0
- && ai.uid != Process.SYSTEM_UID && (mBoundApplication == null
- || !UserHandle.isSameApp(ai.uid, mBoundApplication.appInfo.uid));
+ && ai.uid != Process.SYSTEM_UID && (mBoundApplication != null
+ ? !UserHandle.isSameApp(ai.uid, mBoundApplication.appInfo.uid)
+ : true);
boolean registerPackage = includeCode && (flags&Context.CONTEXT_REGISTER_PACKAGE) != 0;
if ((flags&(Context.CONTEXT_INCLUDE_CODE
|Context.CONTEXT_IGNORE_SECURITY))
@@ -2671,47 +2451,107 @@
+ " (with uid " + ai.uid + ")";
if (mBoundApplication != null) {
msg = msg + " to be run in process "
- + mBoundApplication.processName + " (with uid "
- + mBoundApplication.appInfo.uid + ")";
+ + mBoundApplication.processName + " (with uid "
+ + mBoundApplication.appInfo.uid + ")";
}
throw new SecurityException(msg);
}
}
return getPackageInfo(ai, compatInfo, null, securityViolation, includeCode,
- registerPackage, isAppInfoFromAMS);
+ registerPackage);
}
@Override
@UnsupportedAppUsage
public final LoadedApk getPackageInfoNoCheck(ApplicationInfo ai,
CompatibilityInfo compatInfo) {
- return getPackageInfo(ai, compatInfo, null, false, true, false, true);
+ return getPackageInfo(ai, compatInfo, null, false, true, false);
}
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public final LoadedApk peekPackageInfo(String packageName, boolean includeCode) {
synchronized (mResourcesManager) {
- return peekLatestCachedApkFromAMS(packageName, includeCode);
+ WeakReference<LoadedApk> ref;
+ if (includeCode) {
+ ref = mPackages.get(packageName);
+ } else {
+ ref = mResourcePackages.get(packageName);
+ }
+ return ref != null ? ref.get() : null;
}
}
private LoadedApk getPackageInfo(ApplicationInfo aInfo, CompatibilityInfo compatInfo,
ClassLoader baseLoader, boolean securityViolation, boolean includeCode,
- boolean registerPackage, boolean isAppInfoFromAMS) {
- LoadedApk packageInfo = retrieveCachedApk(aInfo, includeCode,
- isAppInfoFromAMS);
- if (packageInfo != null) {
+ boolean registerPackage) {
+ final boolean differentUser = (UserHandle.myUserId() != UserHandle.getUserId(aInfo.uid));
+ synchronized (mResourcesManager) {
+ WeakReference<LoadedApk> ref;
+ if (differentUser) {
+ // Caching not supported across users
+ ref = null;
+ } else if (includeCode) {
+ ref = mPackages.get(aInfo.packageName);
+ } else {
+ ref = mResourcePackages.get(aInfo.packageName);
+ }
+
+ LoadedApk packageInfo = ref != null ? ref.get() : null;
+
+ if (packageInfo != null) {
+ if (!isLoadedApkResourceDirsUpToDate(packageInfo, aInfo)) {
+ List<String> oldPaths = new ArrayList<>();
+ LoadedApk.makePaths(this, aInfo, oldPaths);
+ packageInfo.updateApplicationInfo(aInfo, oldPaths);
+ }
+
+ return packageInfo;
+ }
+
+ if (localLOGV) {
+ Slog.v(TAG, (includeCode ? "Loading code package "
+ : "Loading resource-only package ") + aInfo.packageName
+ + " (in " + (mBoundApplication != null
+ ? mBoundApplication.processName : null)
+ + ")");
+ }
+
+ packageInfo =
+ new LoadedApk(this, aInfo, compatInfo, baseLoader,
+ securityViolation, includeCode
+ && (aInfo.flags & ApplicationInfo.FLAG_HAS_CODE) != 0, registerPackage);
+
+ if (mSystemThread && "android".equals(aInfo.packageName)) {
+ packageInfo.installSystemApplicationInfo(aInfo,
+ getSystemContext().mPackageInfo.getClassLoader());
+ }
+
+ if (differentUser) {
+ // Caching not supported across users
+ } else if (includeCode) {
+ mPackages.put(aInfo.packageName,
+ new WeakReference<LoadedApk>(packageInfo));
+ } else {
+ mResourcePackages.put(aInfo.packageName,
+ new WeakReference<LoadedApk>(packageInfo));
+ }
+
return packageInfo;
}
- if (localLOGV) {
- Slog.v(TAG, (includeCode ? "Loading code package "
- : "Loading resource-only package ") + aInfo.packageName
- + " (in " + (mBoundApplication != null
- ? mBoundApplication.processName : null)
- + ")");
- }
- return createLoadedPackage(aInfo, compatInfo, baseLoader,
- securityViolation, includeCode, registerPackage, isAppInfoFromAMS);
+ }
+
+ private static boolean isLoadedApkResourceDirsUpToDate(LoadedApk loadedApk,
+ ApplicationInfo appInfo) {
+ Resources packageResources = loadedApk.mResources;
+ boolean resourceDirsUpToDate = Arrays.equals(
+ ArrayUtils.defeatNullable(appInfo.resourceDirs),
+ ArrayUtils.defeatNullable(loadedApk.getOverlayDirs()));
+ boolean overlayPathsUpToDate = Arrays.equals(
+ ArrayUtils.defeatNullable(appInfo.overlayPaths),
+ ArrayUtils.defeatNullable(loadedApk.getOverlayPaths()));
+
+ return (packageResources == null || packageResources.getAssets().isUpToDate())
+ && resourceDirsUpToDate && overlayPathsUpToDate;
}
@UnsupportedAppUsage
@@ -3673,7 +3513,7 @@
ActivityInfo aInfo = r.activityInfo;
if (r.packageInfo == null) {
r.packageInfo = getPackageInfo(aInfo.applicationInfo, r.compatInfo,
- Context.CONTEXT_INCLUDE_CODE, true);
+ Context.CONTEXT_INCLUDE_CODE);
}
ComponentName component = r.intent.getComponent();
@@ -6128,10 +5968,40 @@
@VisibleForTesting(visibility = PACKAGE)
public void handleApplicationInfoChanged(@NonNull final ApplicationInfo ai) {
- // Updates triggered by package installation go through a package update receiver. Here we
- // try to capture ApplicationInfo changes that are caused by other sources, such as
- // overlays. That means we want to be as conservative about code changes as possible.
- updateLatestCachedApkFromAMS(ai.packageName, ai, false);
+ // Updates triggered by package installation go through a package update
+ // receiver. Here we try to capture ApplicationInfo changes that are
+ // caused by other sources, such as overlays. That means we want to be as conservative
+ // about code changes as possible. Take the diff of the old ApplicationInfo and the new
+ // to see if anything needs to change.
+ LoadedApk apk;
+ LoadedApk resApk;
+ // Update all affected loaded packages with new package information
+ synchronized (mResourcesManager) {
+ WeakReference<LoadedApk> ref = mPackages.get(ai.packageName);
+ apk = ref != null ? ref.get() : null;
+ ref = mResourcePackages.get(ai.packageName);
+ resApk = ref != null ? ref.get() : null;
+ }
+
+ final String[] oldResDirs = new String[2];
+
+ if (apk != null) {
+ oldResDirs[0] = apk.getResDir();
+ final ArrayList<String> oldPaths = new ArrayList<>();
+ LoadedApk.makePaths(this, apk.getApplicationInfo(), oldPaths);
+ apk.updateApplicationInfo(ai, oldPaths);
+ }
+ if (resApk != null) {
+ oldResDirs[1] = resApk.getResDir();
+ final ArrayList<String> oldPaths = new ArrayList<>();
+ LoadedApk.makePaths(this, resApk.getApplicationInfo(), oldPaths);
+ resApk.updateApplicationInfo(ai, oldPaths);
+ }
+
+ synchronized (mResourcesManager) {
+ // Update all affected Resources objects to use new ResourcesImpl
+ mResourcesManager.applyNewResourceDirs(ai, oldResDirs);
+ }
}
/**
@@ -6301,7 +6171,29 @@
case ApplicationThreadConstants.PACKAGE_REMOVED:
case ApplicationThreadConstants.PACKAGE_REMOVED_DONT_KILL:
{
- hasPkgInfo = clearCachedApks();
+ final boolean killApp = cmd == ApplicationThreadConstants.PACKAGE_REMOVED;
+ if (packages == null) {
+ break;
+ }
+ synchronized (mResourcesManager) {
+ for (int i = packages.length - 1; i >= 0; i--) {
+ if (!hasPkgInfo) {
+ WeakReference<LoadedApk> ref = mPackages.get(packages[i]);
+ if (ref != null && ref.get() != null) {
+ hasPkgInfo = true;
+ } else {
+ ref = mResourcePackages.get(packages[i]);
+ if (ref != null && ref.get() != null) {
+ hasPkgInfo = true;
+ }
+ }
+ }
+ if (killApp) {
+ mPackages.remove(packages[i]);
+ mResourcePackages.remove(packages[i]);
+ }
+ }
+ }
break;
}
case ApplicationThreadConstants.PACKAGE_REPLACED:
@@ -6309,19 +6201,68 @@
if (packages == null) {
break;
}
- final List<String> packagesHandled = new ArrayList<>();
- for (int i = packages.length - 1; i >= 0; i--) {
- final String packageName = packages[i];
- if (updateLatestCachedApkFromAMS(packageName, null, true)) {
- hasPkgInfo = true;
- packagesHandled.add(packageName);
+
+ List<String> packagesHandled = new ArrayList<>();
+
+ synchronized (mResourcesManager) {
+ for (int i = packages.length - 1; i >= 0; i--) {
+ String packageName = packages[i];
+ WeakReference<LoadedApk> ref = mPackages.get(packageName);
+ LoadedApk pkgInfo = ref != null ? ref.get() : null;
+ if (pkgInfo != null) {
+ hasPkgInfo = true;
+ } else {
+ ref = mResourcePackages.get(packageName);
+ pkgInfo = ref != null ? ref.get() : null;
+ if (pkgInfo != null) {
+ hasPkgInfo = true;
+ }
+ }
+ // If the package is being replaced, yet it still has a valid
+ // LoadedApk object, the package was updated with _DONT_KILL.
+ // Adjust it's internal references to the application info and
+ // resources.
+ if (pkgInfo != null) {
+ packagesHandled.add(packageName);
+ try {
+ final ApplicationInfo aInfo =
+ sPackageManager.getApplicationInfo(
+ packageName,
+ PackageManager.GET_SHARED_LIBRARY_FILES,
+ UserHandle.myUserId());
+
+ if (mActivities.size() > 0) {
+ for (ActivityClientRecord ar : mActivities.values()) {
+ if (ar.activityInfo.applicationInfo.packageName
+ .equals(packageName)) {
+ ar.activityInfo.applicationInfo = aInfo;
+ ar.packageInfo = pkgInfo;
+ }
+ }
+ }
+
+ final String[] oldResDirs = { pkgInfo.getResDir() };
+
+ final ArrayList<String> oldPaths = new ArrayList<>();
+ LoadedApk.makePaths(this, pkgInfo.getApplicationInfo(), oldPaths);
+ pkgInfo.updateApplicationInfo(aInfo, oldPaths);
+
+ synchronized (mResourcesManager) {
+ // Update affected Resources objects to use new ResourcesImpl
+ mResourcesManager.applyNewResourceDirs(aInfo, oldResDirs);
+ }
+ } catch (RemoteException e) {
+ }
+ }
}
}
+
try {
getPackageManager().notifyPackagesReplacedReceived(
packagesHandled.toArray(new String[0]));
} catch (RemoteException ignored) {
}
+
break;
}
}
@@ -6880,7 +6821,7 @@
ii.copyTo(instrApp);
instrApp.initForUser(UserHandle.myUserId());
final LoadedApk pi = getPackageInfo(instrApp, data.compatInfo,
- appContext.getClassLoader(), false, true, false, true);
+ appContext.getClassLoader(), false, true, false);
// The test context's op package name == the target app's op package name, because
// the app ops manager checks the op package name against the real calling UID,
diff --git a/core/java/android/app/AppOpsManagerInternal.java b/core/java/android/app/AppOpsManagerInternal.java
index 7c85df8..363b5a7 100644
--- a/core/java/android/app/AppOpsManagerInternal.java
+++ b/core/java/android/app/AppOpsManagerInternal.java
@@ -209,4 +209,10 @@
*/
public abstract void setModeFromPermissionPolicy(int code, int uid, @NonNull String packageName,
int mode, @Nullable IAppOpsCallback callback);
+
+
+ /**
+ * Sets a global restriction on an op code.
+ */
+ public abstract void setGlobalRestriction(int code, boolean restricted, IBinder token);
}
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 8de0367..c42c38b 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -48,6 +48,7 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.ApplicationInfoFlags;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.AssetManager;
import android.content.res.CompatResources;
@@ -2461,7 +2462,7 @@
public Context createApplicationContext(ApplicationInfo application, int flags)
throws NameNotFoundException {
LoadedApk pi = mMainThread.getPackageInfo(application, mResources.getCompatibilityInfo(),
- flags | CONTEXT_REGISTER_PACKAGE, false);
+ flags | CONTEXT_REGISTER_PACKAGE);
if (pi != null) {
ContextImpl c = new ContextImpl(this, mMainThread, pi, ContextParams.EMPTY,
mAttributionSource.getAttributionTag(),
@@ -2493,6 +2494,13 @@
@Override
public Context createPackageContextAsUser(String packageName, int flags, UserHandle user)
throws NameNotFoundException {
+ return createPackageContextAsUser(packageName, flags, user, 0 /* packageFlags */);
+ }
+
+ @Override
+ public Context createPackageContextAsUser(
+ @NonNull String packageName, @CreatePackageOptions int flags, @NonNull UserHandle user,
+ @ApplicationInfoFlags int packageFlags) throws PackageManager.NameNotFoundException {
if (packageName.equals("system") || packageName.equals("android")) {
// The system resources are loaded in every application, so we can safely copy
// the context without reloading Resources.
@@ -2503,7 +2511,7 @@
}
LoadedApk pi = mMainThread.getPackageInfo(packageName, mResources.getCompatibilityInfo(),
- flags | CONTEXT_REGISTER_PACKAGE, user.getIdentifier());
+ flags | CONTEXT_REGISTER_PACKAGE, user.getIdentifier(), packageFlags);
if (pi != null) {
ContextImpl c = new ContextImpl(this, mMainThread, pi, mParams,
mAttributionSource.getAttributionTag(),
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 86ea05b..0eb2790 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -6342,10 +6342,11 @@
ApplicationInfo applicationInfo = n.extras.getParcelable(
EXTRA_BUILDER_APPLICATION_INFO);
Context builderContext;
- if (applicationInfo != null) {
+ if (applicationInfo != null && applicationInfo.packageName != null) {
try {
- builderContext = context.createApplicationContext(applicationInfo,
- Context.CONTEXT_RESTRICTED);
+ builderContext = context.createPackageContextAsUser(applicationInfo.packageName,
+ Context.CONTEXT_RESTRICTED,
+ UserHandle.getUserHandleForUid(applicationInfo.uid));
} catch (NameNotFoundException e) {
Log.e(TAG, "ApplicationInfo " + applicationInfo + " not found");
builderContext = context; // try with our context
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index 5af18355..8c886b1 100644
--- a/core/java/android/app/ResourcesManager.java
+++ b/core/java/android/app/ResourcesManager.java
@@ -98,12 +98,6 @@
private int mResDisplayId = DEFAULT_DISPLAY;
/**
- * ApplicationInfo changes that need to be applied to Resources when the next configuration
- * change occurs.
- */
- private ArrayList<ApplicationInfo> mPendingAppInfoUpdates;
-
- /**
* A mapping of ResourceImpls and their configurations. These are heavy weight objects
* which should be reused as much as possible.
*/
@@ -994,7 +988,7 @@
* @param classLoader The classloader to use for the Resources object.
* If null, {@link ClassLoader#getSystemClassLoader()} is used.
* @return A Resources object that gets updated when
- * {@link #applyConfigurationToResources(Configuration, CompatibilityInfo)}
+ * {@link #applyConfigurationToResourcesLocked(Configuration, CompatibilityInfo)}
* is called.
*/
@Nullable
@@ -1121,8 +1115,8 @@
/**
* Updates an Activity's Resources object with overrideConfig. The Resources object
* that was previously returned by {@link #getResources(IBinder, String, String[], String[],
- * String[], String[], Integer, Configuration, CompatibilityInfo, ClassLoader, List)} is still
- * valid and will have the updated configuration.
+ * String[], Integer, Configuration, CompatibilityInfo, ClassLoader, List)} is still valid and
+ * will have the updated configuration.
*
* @param activityToken The Activity token.
* @param overrideConfig The configuration override to update.
@@ -1273,22 +1267,6 @@
return newKey;
}
- public void updatePendingAppInfoUpdates(@NonNull ApplicationInfo appInfo) {
- synchronized (mLock) {
- if (mPendingAppInfoUpdates == null) {
- mPendingAppInfoUpdates = new ArrayList<>();
- }
- // Clear previous app info changes for the package to prevent multiple ResourcesImpl
- // recreations when only the last recreation will be used.
- for (int i = mPendingAppInfoUpdates.size() - 1; i >= 0; i--) {
- if (appInfo.sourceDir.equals(mPendingAppInfoUpdates.get(i).sourceDir)) {
- mPendingAppInfoUpdates.remove(i);
- }
- }
- mPendingAppInfoUpdates.add(appInfo);
- }
- }
-
public final boolean applyConfigurationToResources(@NonNull Configuration config,
@Nullable CompatibilityInfo compat) {
return applyConfigurationToResources(config, compat, null /* adjustments */);
@@ -1302,18 +1280,7 @@
Trace.traceBegin(Trace.TRACE_TAG_RESOURCES,
"ResourcesManager#applyConfigurationToResources");
- final boolean assetsUpdated = mPendingAppInfoUpdates != null
- && config.assetsSeq > mResConfiguration.assetsSeq;
- if (assetsUpdated) {
- for (int i = 0, n = mPendingAppInfoUpdates.size(); i < n; i++) {
- final ApplicationInfo appInfo = mPendingAppInfoUpdates.get(i);
- applyNewResourceDirs(appInfo, new String[]{appInfo.sourceDir});
- }
- mPendingAppInfoUpdates = null;
- }
-
- if (!assetsUpdated && !mResConfiguration.isOtherSeqNewer(config)
- && compat == null) {
+ if (!mResConfiguration.isOtherSeqNewer(config) && compat == null) {
if (DEBUG || DEBUG_CONFIGURATION) {
Slog.v(TAG, "Skipping new config: curSeq="
+ mResConfiguration.seq + ", newSeq=" + config.seq);
@@ -1353,7 +1320,7 @@
}
}
- return assetsUpdated || changes != 0;
+ return changes != 0;
} finally {
Trace.traceEnd(Trace.TRACE_TAG_RESOURCES);
}
diff --git a/core/java/android/app/compat/PackageOverride.java b/core/java/android/app/compat/PackageOverride.java
index fad6cd3..ebc2945 100644
--- a/core/java/android/app/compat/PackageOverride.java
+++ b/core/java/android/app/compat/PackageOverride.java
@@ -24,6 +24,7 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
/**
* An app compat override applied to a given package and change id pairing.
@@ -139,6 +140,22 @@
/** @hide */
@Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ PackageOverride that = (PackageOverride) o;
+ return mMinVersionCode == that.mMinVersionCode && mMaxVersionCode == that.mMaxVersionCode
+ && mEnabled == that.mEnabled;
+ }
+
+ /** @hide */
+ @Override
+ public int hashCode() {
+ return Objects.hash(mMinVersionCode, mMaxVersionCode, mEnabled);
+ }
+
+ /** @hide */
+ @Override
public String toString() {
if (mMinVersionCode == Long.MIN_VALUE && mMaxVersionCode == Long.MAX_VALUE) {
return Boolean.toString(mEnabled);
diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java
index ba3fc1e..3b11a19 100644
--- a/core/java/android/appwidget/AppWidgetHostView.java
+++ b/core/java/android/appwidget/AppWidgetHostView.java
@@ -37,6 +37,7 @@
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Parcelable;
+import android.os.UserHandle;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Pair;
@@ -718,9 +719,10 @@
protected Context getRemoteContext() {
try {
// Return if cloned successfully, otherwise default
- Context newContext = mContext.createApplicationContext(
- mInfo.providerInfo.applicationInfo,
- Context.CONTEXT_RESTRICTED);
+ final ApplicationInfo info = mInfo.providerInfo.applicationInfo;
+ Context newContext = mContext.createPackageContextAsUser(info.packageName,
+ Context.CONTEXT_RESTRICTED,
+ UserHandle.getUserHandleForUid(info.uid));
if (mColorResources != null) {
mColorResources.apply(newContext);
}
diff --git a/core/java/android/bluetooth/BluetoothGatt.java b/core/java/android/bluetooth/BluetoothGatt.java
index aea8210..2f771e9 100644
--- a/core/java/android/bluetooth/BluetoothGatt.java
+++ b/core/java/android/bluetooth/BluetoothGatt.java
@@ -1190,7 +1190,9 @@
characteristic.getInstanceId(), AUTHENTICATION_NONE, mAttributionSource);
} catch (RemoteException e) {
Log.e(TAG, "", e);
- mDeviceBusy = false;
+ synchronized (mDeviceBusyLock) {
+ mDeviceBusy = false;
+ }
return false;
}
@@ -1226,7 +1228,9 @@
mAttributionSource);
} catch (RemoteException e) {
Log.e(TAG, "", e);
- mDeviceBusy = false;
+ synchronized (mDeviceBusyLock) {
+ mDeviceBusy = false;
+ }
return false;
}
@@ -1274,7 +1278,9 @@
AUTHENTICATION_NONE, characteristic.getValue(), mAttributionSource);
} catch (RemoteException e) {
Log.e(TAG, "", e);
- mDeviceBusy = false;
+ synchronized (mDeviceBusyLock) {
+ mDeviceBusy = false;
+ }
return false;
}
@@ -1317,7 +1323,9 @@
descriptor.getInstanceId(), AUTHENTICATION_NONE, mAttributionSource);
} catch (RemoteException e) {
Log.e(TAG, "", e);
- mDeviceBusy = false;
+ synchronized (mDeviceBusyLock) {
+ mDeviceBusy = false;
+ }
return false;
}
@@ -1359,7 +1367,9 @@
AUTHENTICATION_NONE, descriptor.getValue(), mAttributionSource);
} catch (RemoteException e) {
Log.e(TAG, "", e);
- mDeviceBusy = false;
+ synchronized (mDeviceBusyLock) {
+ mDeviceBusy = false;
+ }
return false;
}
@@ -1428,7 +1438,9 @@
mService.endReliableWrite(mClientIf, mDevice.getAddress(), true, mAttributionSource);
} catch (RemoteException e) {
Log.e(TAG, "", e);
- mDeviceBusy = false;
+ synchronized (mDeviceBusyLock) {
+ mDeviceBusy = false;
+ }
return false;
}
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index c02dcfd..9c60f43 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -46,6 +46,7 @@
import android.compat.annotation.UnsupportedAppUsage;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.ApplicationInfoFlags;
import android.content.res.AssetManager;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
@@ -6268,6 +6269,23 @@
}
/**
+ * Similar to {@link #createPackageContextAsUser(String, int, UserHandle)}, but also allows
+ * specifying the flags used to retrieve the {@link ApplicationInfo} of the package.
+ *
+ * @hide
+ */
+ @NonNull
+ public Context createPackageContextAsUser(
+ @NonNull String packageName, @CreatePackageOptions int flags, @NonNull UserHandle user,
+ @ApplicationInfoFlags int packageFlags)
+ throws PackageManager.NameNotFoundException {
+ if (Build.IS_ENG) {
+ throw new IllegalStateException("createPackageContextAsUser not overridden!");
+ }
+ return this;
+ }
+
+ /**
* Similar to {@link #createPackageContext(String, int)}, but for the own package with a
* different {@link UserHandle}. For example, {@link #getContentResolver()}
* will open any {@link Uri} as the given user.
@@ -6286,10 +6304,18 @@
/**
* Creates a context given an {@link android.content.pm.ApplicationInfo}.
*
+ * @deprecated use {@link #createPackageContextAsUser(String, int, UserHandle, int)}
+ * If an application caches an ApplicationInfo and uses it to call this method,
+ * the app will not get the most recent version of Runtime Resource Overlays for
+ * that application. To make things worse, the LoadedApk stored in
+ * {@code ActivityThread#mResourcePackages} is updated using the old ApplicationInfo
+ * causing further uses of the cached LoadedApk to return outdated information.
+ *
* @hide
*/
@SuppressWarnings("HiddenAbstractMethod")
@UnsupportedAppUsage
+ @Deprecated
public abstract Context createApplicationContext(ApplicationInfo application,
@CreatePackageOptions int flags) throws PackageManager.NameNotFoundException;
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index 6324d0e..cf0dc8c 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -1009,6 +1009,14 @@
/** @hide */
@Override
+ public Context createPackageContextAsUser(String packageName, int flags, UserHandle user,
+ int packageFlags)
+ throws PackageManager.NameNotFoundException {
+ return mBase.createPackageContextAsUser(packageName, flags, user, packageFlags);
+ }
+
+ /** @hide */
+ @Override
public Context createContextAsUser(UserHandle user, @CreatePackageOptions int flags) {
return mBase.createContextAsUser(user, flags);
}
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index 75dd9fb..3f8aedb 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -2111,28 +2111,28 @@
* <p>
* Defaults to {@link #USER_ACTION_UNSPECIFIED} unless otherwise set. When unspecified for
* installers using the
- * {@link android.Manifest.permission#REQUEST_INSTALL_PACKAGES android.permission
- * #REQUEST_INSTALL_PACKAGES} permission will behave as if set to
- * {@link #USER_ACTION_REQUIRED}, and {@link #USER_ACTION_NOT_REQUIRED} otherwise.
- * When {@code requireUserAction} is set to {@link #USER_ACTION_REQUIRED}, installers will
- * receive a {@link #STATUS_PENDING_USER_ACTION} callback once the session is committed,
- * indicating that user action is required for the install to proceed.
+ * {@link android.Manifest.permission#REQUEST_INSTALL_PACKAGES REQUEST_INSTALL_PACKAGES}
+ * permission will behave as if set to {@link #USER_ACTION_REQUIRED}, and
+ * {@link #USER_ACTION_NOT_REQUIRED} otherwise. When {@code requireUserAction} is set to
+ * {@link #USER_ACTION_REQUIRED}, installers will receive a
+ * {@link #STATUS_PENDING_USER_ACTION} callback once the session is committed, indicating
+ * that user action is required for the install to proceed.
* <p>
* For installers that have been granted the
- * {@link android.Manifest.permission#REQUEST_INSTALL_PACKAGES android.permission
- * .REQUEST_INSTALL_PACKAGES} permission, user action will not be required when all of
- * the following conditions are met:
+ * {@link android.Manifest.permission#REQUEST_INSTALL_PACKAGES REQUEST_INSTALL_PACKAGES}
+ * permission, user action will not be required when all of the following conditions are
+ * met:
*
* <ul>
* <li>{@code requireUserAction} is set to {@link #USER_ACTION_NOT_REQUIRED}.</li>
* <li>The app being installed targets {@link android.os.Build.VERSION_CODES#Q API 29}
* or higher.</li>
* <li>The installer is the {@link InstallSourceInfo#getInstallingPackageName()
- * installer of record} of an existing version of the app (i.e.: this install session
- * is an app update) or the installer is updating itself.</li>
+ * installer of record} of an existing version of the app (in other words, this install
+ * session is an app update) or the installer is updating itself.</li>
* <li>The installer declares the
- * {@link android.Manifest.permission#UPDATE_PACKAGES_WITHOUT_USER_ACTION android
- * .permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION} permission.</li>
+ * {@link android.Manifest.permission#UPDATE_PACKAGES_WITHOUT_USER_ACTION
+ * UPDATE_PACKAGES_WITHOUT_USER_ACTION} permission.</li>
* </ul>
* <p>
* Note: The target API level requirement will advance in future Android versions.
diff --git a/core/java/android/content/pm/PackageItemInfo.java b/core/java/android/content/pm/PackageItemInfo.java
index 65ce1e7..dd2080b 100644
--- a/core/java/android/content/pm/PackageItemInfo.java
+++ b/core/java/android/content/pm/PackageItemInfo.java
@@ -61,7 +61,7 @@
public static final int MAX_SAFE_LABEL_LENGTH = 1000;
/** @hide */
- public static final float DEFAULT_MAX_LABEL_SIZE_PX = 500f;
+ public static final float DEFAULT_MAX_LABEL_SIZE_PX = 1000f;
/**
* Remove {@link Character#isWhitespace(int) whitespace} and non-breaking spaces from the edges
diff --git a/core/java/android/hardware/hdmi/OWNERS b/core/java/android/hardware/hdmi/OWNERS
index 60d43fd..861e440 100644
--- a/core/java/android/hardware/hdmi/OWNERS
+++ b/core/java/android/hardware/hdmi/OWNERS
@@ -3,5 +3,4 @@
include /services/core/java/com/android/server/display/OWNERS
marvinramin@google.com
-nchalko@google.com
lcnathalie@google.com
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java
index be21fea..1651bfc 100644
--- a/core/java/android/os/GraphicsEnvironment.java
+++ b/core/java/android/os/GraphicsEnvironment.java
@@ -26,8 +26,6 @@
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
-import android.content.res.AssetFileDescriptor;
-import android.content.res.AssetManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
@@ -37,9 +35,6 @@
import java.io.BufferedReader;
import java.io.File;
-import java.io.FileDescriptor;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
@@ -88,9 +83,6 @@
private static final String UPDATABLE_DRIVER_ALLOWLIST_ALL = "*";
private static final String UPDATABLE_DRIVER_SPHAL_LIBRARIES_FILENAME = "sphal_libraries.txt";
- // ANGLE related properties.
- private static final String ANGLE_RULES_FILE = "a4a_rules.json";
- private static final String ANGLE_TEMP_RULES = "debug.angle.rules";
private static final String ACTION_ANGLE_FOR_ANDROID = "android.app.action.ANGLE_FOR_ANDROID";
private static final String ACTION_ANGLE_FOR_ANDROID_TOAST_MESSAGE =
"android.app.action.ANGLE_FOR_ANDROID_TOAST_MESSAGE";
@@ -164,21 +156,14 @@
Log.v(TAG, "ANGLE Developer option for '" + packageName + "' "
+ "set to: '" + devOptIn + "'");
- // We only want to use ANGLE if the app is in the allowlist, or the developer has
- // explicitly chosen something other than default driver.
- // The allowlist will be generated by the ANGLE APK at both boot time and
- // ANGLE update time. It will only include apps mentioned in the rules file.
- final boolean allowed = checkAngleAllowlist(context, coreSettings, packageName);
+ // We only want to use ANGLE if the developer has explicitly chosen something other than
+ // default driver.
final boolean requested = devOptIn.equals(ANGLE_GL_DRIVER_CHOICE_ANGLE);
-
- if (allowed) {
- Log.v(TAG, "ANGLE allowlist includes " + packageName);
- }
if (requested) {
Log.v(TAG, "ANGLE developer option for " + packageName + ": " + devOptIn);
}
- return allowed || requested;
+ return requested;
}
private int getVulkanVersion(PackageManager pm) {
@@ -475,117 +460,6 @@
}
/**
- * Attempt to setup ANGLE with a temporary rules file.
- * True: Temporary rules file was loaded.
- * False: Temporary rules file was *not* loaded.
- */
- private boolean setupAngleWithTempRulesFile(Context context,
- String packageName,
- String paths,
- String devOptIn) {
- /**
- * We only want to load a temp rules file for:
- * - apps that are marked 'debuggable' in their manifest
- * - devices that are running a userdebug build (ro.debuggable) or can inject libraries for
- * debugging (PR_SET_DUMPABLE).
- */
- if (!isDebuggable()) {
- Log.v(TAG, "Skipping loading temporary rules file");
- return false;
- }
-
- final String angleTempRules = SystemProperties.get(ANGLE_TEMP_RULES);
-
- if (TextUtils.isEmpty(angleTempRules)) {
- Log.v(TAG, "System property '" + ANGLE_TEMP_RULES + "' is not set or is empty");
- return false;
- }
-
- Log.i(TAG, "Detected system property " + ANGLE_TEMP_RULES + ": " + angleTempRules);
-
- final File tempRulesFile = new File(angleTempRules);
- if (tempRulesFile.exists()) {
- Log.i(TAG, angleTempRules + " exists, loading file.");
- try {
- final FileInputStream stream = new FileInputStream(angleTempRules);
-
- try {
- final FileDescriptor rulesFd = stream.getFD();
- final long rulesOffset = 0;
- final long rulesLength = stream.getChannel().size();
- Log.i(TAG, "Loaded temporary ANGLE rules from " + angleTempRules);
-
- setAngleInfo(paths, packageName, devOptIn, null,
- rulesFd, rulesOffset, rulesLength);
-
- stream.close();
-
- // We successfully setup ANGLE, so return with good status
- return true;
- } catch (IOException e) {
- Log.w(TAG, "Hit IOException thrown by FileInputStream: " + e);
- }
- } catch (FileNotFoundException e) {
- Log.w(TAG, "Temp ANGLE rules file not found: " + e);
- } catch (SecurityException e) {
- Log.w(TAG, "Temp ANGLE rules file not accessible: " + e);
- }
- }
-
- return false;
- }
-
- /**
- * Attempt to setup ANGLE with a rules file loaded from the ANGLE APK.
- * True: APK rules file was loaded.
- * False: APK rules file was *not* loaded.
- */
- private boolean setupAngleRulesApk(String anglePkgName,
- ApplicationInfo angleInfo,
- PackageManager pm,
- String packageName,
- String paths,
- String devOptIn,
- String[] features) {
- // Pass the rules file to loader for ANGLE decisions
- try {
- final AssetManager angleAssets = pm.getResourcesForApplication(angleInfo).getAssets();
-
- try {
- final AssetFileDescriptor assetsFd = angleAssets.openFd(ANGLE_RULES_FILE);
-
- setAngleInfo(paths, packageName, devOptIn, features, assetsFd.getFileDescriptor(),
- assetsFd.getStartOffset(), assetsFd.getLength());
-
- assetsFd.close();
-
- return true;
- } catch (IOException e) {
- Log.w(TAG, "Failed to get AssetFileDescriptor for " + ANGLE_RULES_FILE
- + " from '" + anglePkgName + "': " + e);
- }
- } catch (PackageManager.NameNotFoundException e) {
- Log.w(TAG, "Failed to get AssetManager for '" + anglePkgName + "': " + e);
- }
-
- return false;
- }
-
- /**
- * Pull ANGLE allowlist from GlobalSettings and compare against current package
- */
- private boolean checkAngleAllowlist(Context context, Bundle bundle, String packageName) {
- final ContentResolver contentResolver = context.getContentResolver();
- final List<String> angleAllowlist =
- getGlobalSettingsString(contentResolver, bundle,
- Settings.Global.ANGLE_ALLOWLIST);
-
- if (DEBUG) Log.v(TAG, "ANGLE allowlist: " + angleAllowlist);
-
- return angleAllowlist.contains(packageName);
- }
-
- /**
* Pass ANGLE details down to trigger enable logic
*
* @param context
@@ -648,27 +522,16 @@
if (DEBUG) Log.v(TAG, "ANGLE package libs: " + paths);
// If the user has set the developer option to something other than default,
- // we need to call setupAngleRulesApk() with the package name and the developer
+ // we need to call setAngleInfo() with the package name and the developer
// option value (native/angle/other). Then later when we are actually trying to
// load a driver, GraphicsEnv::getShouldUseAngle() has seen the package name before
// and can confidently answer yes/no based on the previously set developer
// option value.
final String devOptIn = getDriverForPackage(context, bundle, packageName);
+ final String[] features = getAngleEglFeatures(context, bundle);
- if (setupAngleWithTempRulesFile(context, packageName, paths, devOptIn)) {
- // We setup ANGLE with a temp rules file, so we're done here.
- return true;
- }
-
- String[] features = getAngleEglFeatures(context, bundle);
-
- if (setupAngleRulesApk(
- anglePkgName, angleInfo, pm, packageName, paths, devOptIn, features)) {
- // ANGLE with rules is set up from the APK, hence return.
- return true;
- }
-
- return false;
+ setAngleInfo(paths, packageName, devOptIn, features);
+ return true;
}
/**
@@ -956,7 +819,7 @@
private static native void setGpuStats(String driverPackageName, String driverVersionName,
long driverVersionCode, long driverBuildTime, String appPackageName, int vulkanVersion);
private static native void setAngleInfo(String path, String appPackage, String devOptIn,
- String[] features, FileDescriptor rulesFd, long rulesOffset, long rulesLength);
+ String[] features);
private static native boolean getShouldUseAngle(String packageName);
private static native boolean setInjectLayersPrSetDumpable();
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index de88618..f4c8d48 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -432,6 +432,16 @@
public static final String NAMESPACE_STORAGE_NATIVE_BOOT = "storage_native_boot";
/**
+ * Namespace for all SurfaceFlinger features that are used at the native level.
+ * These features are applied on boot or after reboot.
+ *
+ * @hide
+ */
+ @SystemApi
+ public static final String NAMESPACE_SURFACE_FLINGER_NATIVE_BOOT =
+ "surface_flinger_native_boot";
+
+ /**
* Namespace for swcodec native related features.
*
* @hide
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index ff5c317..30c5b44 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -4700,7 +4700,7 @@
*
* @hide
*/
- @Readable
+ @Readable(maxTargetSdk = Build.VERSION_CODES.R)
public static final String MEDIA_BUTTON_RECEIVER = "media_button_receiver";
/**
@@ -13683,13 +13683,6 @@
"angle_gl_driver_selection_values";
/**
- * List of package names that should check ANGLE rules
- * @hide
- */
- @Readable
- public static final String ANGLE_ALLOWLIST = "angle_allowlist";
-
- /**
* Lists of ANGLE EGL features for debugging.
* Each list of features is separated by a comma, each feature in each list is separated by
* a colon.
diff --git a/core/java/android/service/notification/StatusBarNotification.java b/core/java/android/service/notification/StatusBarNotification.java
index 8e4a68e..863d71f 100644
--- a/core/java/android/service/notification/StatusBarNotification.java
+++ b/core/java/android/service/notification/StatusBarNotification.java
@@ -434,11 +434,8 @@
public Context getPackageContext(Context context) {
if (mContext == null) {
try {
- ApplicationInfo ai = context.getPackageManager()
- .getApplicationInfoAsUser(pkg, PackageManager.MATCH_UNINSTALLED_PACKAGES,
- getUserId());
- mContext = context.createApplicationContext(ai,
- Context.CONTEXT_RESTRICTED);
+ mContext = context.createPackageContextAsUser(pkg, Context.CONTEXT_RESTRICTED, user,
+ PackageManager.MATCH_UNINSTALLED_PACKAGES);
} catch (PackageManager.NameNotFoundException e) {
mContext = null;
}
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index a88d5b9..fe1fcfc 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -20,6 +20,7 @@
import static android.graphics.Matrix.MSCALE_Y;
import static android.graphics.Matrix.MSKEW_X;
import static android.graphics.Matrix.MSKEW_Y;
+import static android.view.SurfaceControl.METADATA_WINDOW_TYPE;
import static android.view.View.SYSTEM_UI_FLAG_VISIBLE;
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
@@ -1024,6 +1025,8 @@
mBbqSurfaceControl = new SurfaceControl.Builder()
.setName("Wallpaper BBQ wrapper")
.setHidden(false)
+ // TODO(b/192291754)
+ .setMetadata(METADATA_WINDOW_TYPE, TYPE_WALLPAPER)
.setBLASTLayer()
.setParent(mSurfaceControl)
.setCallsite("Wallpaper#relayout")
diff --git a/core/java/android/view/InputWindowHandle.java b/core/java/android/view/InputWindowHandle.java
index 9aa54da..bd97ef0 100644
--- a/core/java/android/view/InputWindowHandle.java
+++ b/core/java/android/view/InputWindowHandle.java
@@ -18,8 +18,8 @@
import android.annotation.Nullable;
import android.graphics.Region;
+import android.gui.TouchOcclusionMode;
import android.os.IBinder;
-import android.os.TouchOcclusionMode;
import java.lang.ref.WeakReference;
diff --git a/core/java/android/view/ScrollCaptureTarget.java b/core/java/android/view/ScrollCaptureTarget.java
index a8bb037..44017ed 100644
--- a/core/java/android/view/ScrollCaptureTarget.java
+++ b/core/java/android/view/ScrollCaptureTarget.java
@@ -21,10 +21,13 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UiThread;
+import android.graphics.Matrix;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.CancellationSignal;
+import com.android.internal.util.FastMath;
+
import java.io.PrintWriter;
import java.util.function.Consumer;
@@ -40,7 +43,8 @@
private final int mHint;
private Rect mScrollBounds;
- private final int[] mTmpIntArr = new int[2];
+ private final float[] mTmpFloatArr = new float[2];
+ private final Matrix mMatrixViewLocalToWindow = new Matrix();
public ScrollCaptureTarget(@NonNull View scrollTarget, @NonNull Rect localVisibleRect,
@NonNull Point positionInWindow, @NonNull ScrollCaptureCallback callback) {
@@ -113,15 +117,28 @@
}
}
+ private static void zero(float[] pointArray) {
+ pointArray[0] = 0;
+ pointArray[1] = 0;
+ }
+
+ private static void roundIntoPoint(Point pointObj, float[] pointArray) {
+ pointObj.x = FastMath.round(pointArray[0]);
+ pointObj.y = FastMath.round(pointArray[1]);
+ }
+
/**
- * Refresh the local visible bounds and its offset within the window, based on the current
+ * Refresh the local visible bounds and it's offset within the window, based on the current
* state of the {@code containing view}.
*/
@UiThread
public void updatePositionInWindow() {
- mContainingView.getLocationInWindow(mTmpIntArr);
- mPositionInWindow.x = mTmpIntArr[0];
- mPositionInWindow.y = mTmpIntArr[1];
+ mMatrixViewLocalToWindow.reset();
+ mContainingView.transformMatrixToGlobal(mMatrixViewLocalToWindow);
+
+ zero(mTmpFloatArr);
+ mMatrixViewLocalToWindow.mapPoints(mTmpFloatArr);
+ roundIntoPoint(mPositionInWindow, mTmpFloatArr);
}
public String toString() {
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index dbe2075..63a4ad4 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -3824,6 +3824,7 @@
out.writeInt(screenOrientation);
out.writeFloat(preferredRefreshRate);
out.writeInt(preferredDisplayModeId);
+ out.writeFloat(preferredMaxDisplayRefreshRate);
out.writeInt(systemUiVisibility);
out.writeInt(subtreeSystemUiVisibility);
out.writeBoolean(hasSystemUiListeners);
@@ -3902,6 +3903,7 @@
screenOrientation = in.readInt();
preferredRefreshRate = in.readFloat();
preferredDisplayModeId = in.readInt();
+ preferredMaxDisplayRefreshRate = in.readFloat();
systemUiVisibility = in.readInt();
subtreeSystemUiVisibility = in.readInt();
hasSystemUiListeners = in.readBoolean();
@@ -3985,6 +3987,8 @@
public static final int MINIMAL_POST_PROCESSING_PREFERENCE_CHANGED = 1 << 28;
/** {@hide} */
public static final int BLUR_BEHIND_RADIUS_CHANGED = 1 << 29;
+ /** {@hide} */
+ public static final int PREFERRED_MAX_DISPLAY_REFRESH_RATE = 1 << 30;
// internal buffer to backup/restore parameters under compatibility mode.
private int[] mCompatibilityParamsBackup = null;
@@ -4116,6 +4120,11 @@
changes |= PREFERRED_DISPLAY_MODE_ID;
}
+ if (preferredMaxDisplayRefreshRate != o.preferredMaxDisplayRefreshRate) {
+ preferredMaxDisplayRefreshRate = o.preferredMaxDisplayRefreshRate;
+ changes |= PREFERRED_MAX_DISPLAY_REFRESH_RATE;
+ }
+
if (systemUiVisibility != o.systemUiVisibility
|| subtreeSystemUiVisibility != o.subtreeSystemUiVisibility) {
systemUiVisibility = o.systemUiVisibility;
@@ -4331,6 +4340,10 @@
sb.append(" preferredDisplayMode=");
sb.append(preferredDisplayModeId);
}
+ if (preferredMaxDisplayRefreshRate != 0) {
+ sb.append(" preferredMaxDisplayRefreshRate=");
+ sb.append(preferredMaxDisplayRefreshRate);
+ }
if (hasSystemUiListeners) {
sb.append(" sysuil=");
sb.append(hasSystemUiListeners);
diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java
index cf6807e..8d27cde 100644
--- a/core/java/android/webkit/WebViewFactory.java
+++ b/core/java/android/webkit/WebViewFactory.java
@@ -33,6 +33,7 @@
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.Trace;
+import android.os.UserHandle;
import android.util.AndroidRuntimeException;
import android.util.ArraySet;
import android.util.Log;
@@ -467,9 +468,12 @@
sTimestamps.mCreateContextStart = SystemClock.uptimeMillis();
try {
// Construct an app context to load the Java code into the current app.
- Context webViewContext = initialApplication.createApplicationContext(
- ai,
- Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
+ Context webViewContext = initialApplication.createPackageContextAsUser(
+ ai.packageName,
+ Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY,
+ UserHandle.getUserHandleForUid(ai.uid),
+ PackageManager.MATCH_UNINSTALLED_PACKAGES
+ | PackageManager.MATCH_DEBUG_TRIAGED_MISSING);
sPackageInfo = newPackageInfo;
return webViewContext;
} finally {
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index e827f0a..8a044fd 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -5831,8 +5831,9 @@
return context;
}
try {
- return context.createApplicationContext(mApplication,
- Context.CONTEXT_RESTRICTED);
+ return context.createPackageContextAsUser(mApplication.packageName,
+ Context.CONTEXT_RESTRICTED,
+ UserHandle.getUserHandleForUid(mApplication.uid));
} catch (NameNotFoundException e) {
Log.e(LOG_TAG, "Package name " + mApplication.packageName + " not found");
}
diff --git a/core/java/android/widget/SelectionActionModeHelper.java b/core/java/android/widget/SelectionActionModeHelper.java
index eb6bce4..3fed9be 100644
--- a/core/java/android/widget/SelectionActionModeHelper.java
+++ b/core/java/android/widget/SelectionActionModeHelper.java
@@ -565,6 +565,7 @@
*/
public void onSmartSelection(SelectionResult result) {
onClassifiedSelection(result);
+ mTextView.notifyContentCaptureTextChanged();
mLogger.logSelectionModified(
result.mStart, result.mEnd, result.mClassification, result.mSelection);
}
@@ -595,6 +596,7 @@
mSelectionStart = selectionStart;
mSelectionEnd = selectionEnd;
mAllowReset = false;
+ mTextView.notifyContentCaptureTextChanged();
mLogger.logSelectionModified(selectionStart, selectionEnd, classification, null);
}
}
diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl
index 9ad4572..30da4b4 100644
--- a/core/java/com/android/internal/app/IAppOpsService.aidl
+++ b/core/java/com/android/internal/app/IAppOpsService.aidl
@@ -97,6 +97,7 @@
void setUserRestrictions(in Bundle restrictions, IBinder token, int userHandle);
void setUserRestriction(int code, boolean restricted, IBinder token, int userHandle, in PackageTagsList excludedPackageTags);
+
void removeUser(int userHandle);
void startWatchingActive(in int[] ops, IAppOpsActiveCallback callback);
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 125182c..958205f 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -230,6 +230,7 @@
"libbinderthreadstateutils",
"libdmabufinfo",
"libgif",
+ "libgui_window_info_static",
"libseccomp_policy",
"libgrallocusage",
"libscrypt_static",
@@ -370,6 +371,7 @@
"libinput",
"libbinderthreadstateutils",
"libsqlite",
+ "libgui_window_info_static",
],
shared_libs: [
// libbinder needs to be shared since it has global state
diff --git a/core/jni/android_hardware_input_InputApplicationHandle.h b/core/jni/android_hardware_input_InputApplicationHandle.h
index ec99d6d..7eb7ac4b 100644
--- a/core/jni/android_hardware_input_InputApplicationHandle.h
+++ b/core/jni/android_hardware_input_InputApplicationHandle.h
@@ -19,7 +19,7 @@
#include <string>
-#include <input/InputApplication.h>
+#include <gui/InputApplication.h>
#include <nativehelper/JNIHelp.h>
#include "jni.h"
diff --git a/core/jni/android_hardware_input_InputWindowHandle.cpp b/core/jni/android_hardware_input_InputWindowHandle.cpp
index 6283f7f..3a09562 100644
--- a/core/jni/android_hardware_input_InputWindowHandle.cpp
+++ b/core/jni/android_hardware_input_InputWindowHandle.cpp
@@ -26,14 +26,17 @@
#include <ui/Region.h>
#include <utils/threads.h>
+#include <gui/WindowInfo.h>
#include "android_hardware_input_InputApplicationHandle.h"
#include "android_util_Binder.h"
#include "core_jni_helpers.h"
-#include "input/InputWindow.h"
#include "jni.h"
namespace android {
+using gui::TouchOcclusionMode;
+using gui::WindowInfo;
+
struct WeakRefHandleField {
jfieldID ctrl;
jmethodID get;
@@ -114,9 +117,9 @@
mInfo.name = getStringField(env, obj, gInputWindowHandleClassInfo.name, "<null>");
- mInfo.flags = Flags<InputWindowInfo::Flag>(
+ mInfo.flags = Flags<WindowInfo::Flag>(
env->GetIntField(obj, gInputWindowHandleClassInfo.layoutParamsFlags));
- mInfo.type = static_cast<InputWindowInfo::Type>(
+ mInfo.type = static_cast<WindowInfo::Type>(
env->GetIntField(obj, gInputWindowHandleClassInfo.layoutParamsType));
mInfo.dispatchingTimeout = std::chrono::milliseconds(
env->GetLongField(obj, gInputWindowHandleClassInfo.dispatchingTimeoutMillis));
@@ -158,7 +161,7 @@
mInfo.ownerUid = env->GetIntField(obj,
gInputWindowHandleClassInfo.ownerUid);
mInfo.packageName = getStringField(env, obj, gInputWindowHandleClassInfo.packageName, "<null>");
- mInfo.inputFeatures = static_cast<InputWindowInfo::Feature>(
+ mInfo.inputFeatures = static_cast<WindowInfo::Feature>(
env->GetIntField(obj, gInputWindowHandleClassInfo.inputFeatures));
mInfo.displayId = env->GetIntField(obj,
gInputWindowHandleClassInfo.displayId);
diff --git a/core/jni/android_hardware_input_InputWindowHandle.h b/core/jni/android_hardware_input_InputWindowHandle.h
index de5bd6e..635480fc 100644
--- a/core/jni/android_hardware_input_InputWindowHandle.h
+++ b/core/jni/android_hardware_input_InputWindowHandle.h
@@ -17,14 +17,14 @@
#ifndef _ANDROID_VIEW_INPUT_WINDOW_HANDLE_H
#define _ANDROID_VIEW_INPUT_WINDOW_HANDLE_H
-#include <input/InputWindow.h>
+#include <gui/WindowInfo.h>
#include <nativehelper/JNIHelp.h>
#include "jni.h"
namespace android {
-class NativeInputWindowHandle : public InputWindowHandle {
+class NativeInputWindowHandle : public gui::WindowInfoHandle {
public:
NativeInputWindowHandle(jweak objWeak);
virtual ~NativeInputWindowHandle();
@@ -37,7 +37,6 @@
jweak mObjWeak;
};
-
extern sp<NativeInputWindowHandle> android_view_InputWindowHandle_getHandle(
JNIEnv* env, jobject inputWindowHandleObj);
diff --git a/core/jni/android_os_GraphicsEnvironment.cpp b/core/jni/android_os_GraphicsEnvironment.cpp
index b40491a..f44e829 100644
--- a/core/jni/android_os_GraphicsEnvironment.cpp
+++ b/core/jni/android_os_GraphicsEnvironment.cpp
@@ -50,8 +50,7 @@
}
void setAngleInfo_native(JNIEnv* env, jobject clazz, jstring path, jstring appName,
- jstring devOptIn, jobjectArray featuresObj, jobject rulesFd,
- jlong rulesOffset, jlong rulesLength) {
+ jstring devOptIn, jobjectArray featuresObj) {
ScopedUtfChars pathChars(env, path);
ScopedUtfChars appNameChars(env, appName);
ScopedUtfChars devOptInChars(env, devOptIn);
@@ -74,11 +73,8 @@
}
}
- int rulesFd_native = jniGetFDFromFileDescriptor(env, rulesFd);
-
android::GraphicsEnv::getInstance().setAngleInfo(pathChars.c_str(), appNameChars.c_str(),
- devOptInChars.c_str(), features,
- rulesFd_native, rulesOffset, rulesLength);
+ devOptInChars.c_str(), features);
}
bool shouldUseAngle_native(JNIEnv* env, jobject clazz, jstring appName) {
@@ -124,8 +120,7 @@
{"setInjectLayersPrSetDumpable", "()Z",
reinterpret_cast<void*>(setInjectLayersPrSetDumpable_native)},
{"setAngleInfo",
- "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/io/"
- "FileDescriptor;JJ)V",
+ "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V",
reinterpret_cast<void*>(setAngleInfo_native)},
{"getShouldUseAngle", "(Ljava/lang/String;)Z",
reinterpret_cast<void*>(shouldUseAngle_native)},
diff --git a/core/jni/android_view_MotionEvent.cpp b/core/jni/android_view_MotionEvent.cpp
index a2ca111..21db198 100644
--- a/core/jni/android_view_MotionEvent.cpp
+++ b/core/jni/android_view_MotionEvent.cpp
@@ -22,6 +22,7 @@
#include <android_runtime/AndroidRuntime.h>
#include <android_runtime/Log.h>
#include <attestation/HmacKeyManager.h>
+#include <gui/constants.h>
#include <input/Input.h>
#include <nativehelper/ScopedUtfChars.h>
#include <utils/Log.h>
@@ -396,9 +397,9 @@
flags, edgeFlags, metaState, buttonState,
static_cast<MotionClassification>(classification), transform, xPrecision,
yPrecision, AMOTION_EVENT_INVALID_CURSOR_POSITION,
- AMOTION_EVENT_INVALID_CURSOR_POSITION, AMOTION_EVENT_INVALID_DISPLAY_SIZE,
- AMOTION_EVENT_INVALID_DISPLAY_SIZE, downTimeNanos, eventTimeNanos,
- pointerCount, pointerProperties, rawPointerCoords);
+ AMOTION_EVENT_INVALID_CURSOR_POSITION, INVALID_DISPLAY_SIZE,
+ INVALID_DISPLAY_SIZE, downTimeNanos, eventTimeNanos, pointerCount,
+ pointerProperties, rawPointerCoords);
return reinterpret_cast<jlong>(event.release());
}
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index f5de464..455c70e 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -62,6 +62,8 @@
namespace android {
+using gui::FocusRequest;
+
static void doThrowNPE(JNIEnv* env) {
jniThrowNullPointerException(env, NULL);
}
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index 90008c5..64bf47c 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -174,6 +174,7 @@
static constexpr const uint64_t LOWER_HALF_WORD_MASK = 0x0000'0000'FFFF'FFFF;
static constexpr const char* kCurProfileDirPath = "/data/misc/profiles/cur";
+static constexpr const char* kRefProfileDirPath = "/data/misc/profiles/ref";
/**
* The maximum value that the gUSAPPoolSizeMax variable may take. This value
@@ -1437,6 +1438,7 @@
// Mount (namespace) tmpfs on profile directory, so apps no longer access
// the original profile directory anymore.
MountAppDataTmpFs(kCurProfileDirPath, fail_fn);
+ MountAppDataTmpFs(kRefProfileDirPath, fail_fn);
// Create profile directory for this user.
std::string actualCurUserProfile = StringPrintf("%s/%d", kCurProfileDirPath, user_id);
@@ -1450,14 +1452,24 @@
packageName.c_str());
std::string mirrorCurPackageProfile = StringPrintf("/data_mirror/cur_profiles/%d/%s",
user_id, packageName.c_str());
+ std::string actualRefPackageProfile = StringPrintf("%s/%s", kRefProfileDirPath,
+ packageName.c_str());
+ std::string mirrorRefPackageProfile = StringPrintf("/data_mirror/ref_profiles/%s",
+ packageName.c_str());
if (access(mirrorCurPackageProfile.c_str(), F_OK) != 0) {
ALOGW("Can't access app profile directory: %s", mirrorCurPackageProfile.c_str());
continue;
}
+ if (access(mirrorRefPackageProfile.c_str(), F_OK) != 0) {
+ ALOGW("Can't access app profile directory: %s", mirrorRefPackageProfile.c_str());
+ continue;
+ }
PrepareDir(actualCurPackageProfile, DEFAULT_DATA_DIR_PERMISSION, uid, uid, fail_fn);
BindMount(mirrorCurPackageProfile, actualCurPackageProfile, fail_fn);
+ PrepareDir(actualRefPackageProfile, DEFAULT_DATA_DIR_PERMISSION, uid, uid, fail_fn);
+ BindMount(mirrorRefPackageProfile, actualRefPackageProfile, fail_fn);
}
}
@@ -1620,7 +1632,7 @@
if (is_system_server) {
// Prefetch the classloader for the system server. This is done early to
// allow a tie-down of the proper system server selinux domain.
- env->CallStaticVoidMethod(gZygoteInitClass, gGetOrCreateSystemServerClassLoader);
+ env->CallStaticObjectMethod(gZygoteInitClass, gGetOrCreateSystemServerClassLoader);
if (env->ExceptionCheck()) {
// Be robust here. The Java code will attempt to create the classloader
// at a later point (but may not have rights to use AoT artifacts).
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 251892b..39f52d8 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Geen vingerafdrukke is geregistreer nie."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Hierdie toetstel het nie \'n vingerafdruksensor nie."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor is tydelik gedeaktiveer."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor benodig kalibrering"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Kan nie vingerafdruksensor gebruik nie. Besoek \'n verskaffer wat herstelwerk doen"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Vinger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Gebruik vingerafdruk"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Gebruik vingerafdruk of skermslot"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Vingerafdrukikoon"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Gesigslot"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Kwessie met Gesigslot"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Tik om jou gesigmodel uit te vee en voeg jou gesig dan weer by"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Stel Gesigslot op"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Ontsluit jou foon deur daarna te kyk"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Stel meer maniere op om te ontsluit"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tik om \'n vingerafdruk by te voeg"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Vingerafdrukslot"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Kan nie vingerafdruksensor gebruik nie"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Besoek \'n verskaffer wat herstelwerk doen."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Kon nie gesigdata akkuraat vasvang nie. Probeer weer."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Te helder. Probeer sagter beligting."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Te donker. Probeer helderder beligting."</string>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index aa53e4c..c9df0e0 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ምንም የጣት አሻራዎች አልተመዘገቡም።"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ይህ መሣሪያ የጣት አሻራ ዳሳሽ የለውም።"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ዳሳሽ ለጊዜው ተሰናክሏል።"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"ዳሳሽ ማስተካከልን ይፈልጋል"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"የጣት አሻራ ዳሳሽን መጠቀም አይቻልም። የጥገና አገልግሎት ሰጪን ይጎብኙ"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ጣት <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"የጣት አሻራ ይጠቀሙ"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"የጣት አሻራ ወይም የማያ ገጽ መቆለፊያ ይጠቀሙ"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"የጣት አሻራ አዶ"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"በመልክ መክፈት"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"ከመልክ መክፈት ጋር በተያያዘ ችግር"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"የእርስዎ የመልክ ሞዴል ለመሰረዝ መታ ያድርጉ፣ ከዚያ መልክዎን እንደገና ያክሉ"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"በመልክ መክፈትን ያዋቅሩ"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"ስልክዎን በመመልከት ያስከፍቱት"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"የሚከፍቱባቸው ተጨማሪ መንገዶችን ያቀናብሩ"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"የጣት አሻራን ለማከል መታ ያድርጉ"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"በጣት አሻራ መክፈቻ"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"የጣት አሻራ ዳሳሽን መጠቀም አይቻልም"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"የጥገና አገልግሎት ሰጪን ይጎብኙ።"</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"ትክክለኛ የፊት ውሂብ ማንሳት አልተቻለም። እንደገና ይሞክሩ።"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"ከልክ በላይ ፈካ ያለ። ይበልጥ ረጋ ያለ ብርሃን አጠቃቀምን ይሞክሩ።"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"ከልክ በላይ ጨለማ ነው። ከዚህ ፈካ ያለ ብርሃን አጠቃቀምን ይሞክሩ።"</string>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 1cb9a8d..cb64b33 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -614,7 +614,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ليست هناك بصمات إصبع مسجَّلة."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"لا يحتوي هذا الجهاز على مستشعِر بصمات إصبع."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"تم إيقاف جهاز الاستشعار مؤقتًا."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"يحتاج المستشعر إلى المعايرة."</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"الإصبع <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"استخدام بصمة الإصبع"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"استخدام بصمة الإصبع أو قفل الشاشة"</string>
@@ -624,14 +625,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"رمز بصمة الإصبع"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"فتح الجهاز بالتعرف على الوجه"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"مشكلة متعلّقة بميزة \"فتح الجهاز بالتعرف على الوجه\""</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"انقر لحذف نموذج الوجه ثم أضِف نموذجًا لوجهك مرة أخرى."</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"إعداد ميزة \"فتح الجهاز بالتعرف على الوجه\""</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"يمكنك فتح قفل هاتفك بمجرّد النظر إلى الشاشة."</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"إعداد المزيد من الطرق لفتح قفل الجهاز"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"انقر لإضافة بصمة إصبع."</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"تعذّر تسجيل بيانات دقيقة للوجه. حاول مرة أخرى."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"ساطع للغاية. تجربة مستوى سطوع أقلّ."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"الصورة معتمة للغاية. يُرجى زيادة السطوع."</string>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 361b253..ba0398a 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"কোনো ফিংগাৰপ্ৰিণ্ট যোগ কৰা নহ\'ল।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"এই ডিভাইচটোত ফিংগাৰপ্ৰিণ্ট ছেন্সৰ নাই।"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ছেন্সৰটো সাময়িকভাৱে অক্ষম হৈ আছে।"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"ছেন্সৰৰ কেলিব্ৰেশ্বনৰ প্ৰয়োজন"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g> আঙুলি"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰক"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ফিংগাৰপ্ৰিণ্ট অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰক"</string>
@@ -620,6 +621,12 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"আপোনাৰ ফ’নটোলৈ চাই সেইটো আনলক কৰক"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"আনলক কৰাৰ অধিক উপায় ছেট আপ কৰক"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"এটা ফিংগাৰপ্ৰিণ্ট যোগ দিবলৈ টিপক"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"সঠিক মুখমণ্ডলৰ ডেটা কেপচাৰ নহ’ল। আকৌ চেষ্টা কৰক।"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"অতি উজ্জ্বল। ইয়াতকৈ কম পোহৰৰ উৎস ব্যৱহাৰ কৰক।"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"অতি আন্ধাৰ। উজ্জ্বল লাইট ব্যৱহাৰ কৰক।"</string>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 8720c0b..fe1ea98 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Barmaq izi qeydə alınmayıb."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Bu cihazda barmaq izi sensoru yoxdur."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor müvəqqəti deaktivdir."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor tənzimlənməlidir"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"Barmaq <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Barmaq izini istifadə edin"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Barmaq izi və ya ekran kilidindən istifadə edin"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Barmaq izi ikonası"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Üz ilə kiliddən çıxarma"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Üz ilə kiliddən çıxarma problemi"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Üz modelinizi silmək üçün toxunun, sonra yenidən üzünüzü əlavə edin"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Üz ilə kiliddən çıxarmanı ayarlayın"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Telefona baxaraq onu kiliddən çıxarın"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Kiliddən çıxarmağın daha çox yolunu ayarlayın"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Barmaq izi əlavə etmək üçün toxunun"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Dəqiq üz datası əldə edilmədi. Yenidən cəhd edin."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Çox işıqlıdır. Daha az işıqlı şəkli sınayın."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Çox qaranlıqdır. Parlaq işıqdan istifadə edin."</string>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 982b0d7..c2c8a5e 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -605,7 +605,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nije registrovan nijedan otisak prsta."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ovaj uređaj nema senzor za otisak prsta."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je privremeno onemogućen."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Senzor treba da se kalibriše"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Ne možete da koristite senzor za otisak prsta. Posetite dobavljača za popravke"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Koristite otisak prsta"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Koristite otisak prsta ili zaključavanje ekrana"</string>
@@ -615,14 +615,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona otiska prsta"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Otključavanje licem"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problem sa otključavanje licem"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Dodirnite da biste izbrisali model lica, pa ponovo dodajte svoje lice"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Podesite otključavanje licem"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Otključajte telefon tako što ćete ga pogledati"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Podesite još načina za otključavanje"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dodirnite da biste dodali otisak prsta"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Otključavanje otiskom prsta"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Ne možete da koristite senzor za otisak prsta"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Posetite dobavljača za popravke."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Snimanje lica nije uspelo. Probajte ponovo."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Previše je svetlo. Probajte sa slabijim osvetljenjem."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Pretamno je. Probajte sa jačim osvetljenjem."</string>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 31a9cef..e948cbe 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -608,7 +608,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Адбіткі пальцаў не зарэгістраваны."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"На гэтай прыладзе няма сканера адбіткаў пальцаў."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Датчык часова выключаны."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Патрабуецца каліброўка датчыка"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"Палец <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Выкарыстоўваць адбітак пальца"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Выкарыстоўваць адбітак пальца ці блакіроўку экрана"</string>
@@ -618,14 +619,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Значок адбіткаў пальцаў"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Распазнаванне твару"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Праблема з распазнаваннем твару"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Націсніце, каб выдаліць мадэль твару, пасля дадайце твар яшчэ раз"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Наладзьце распазнаванне твару"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Разблакіруйце свой тэлефон, паглядзеўшы на яго"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Наладзьце дадатковыя спосабы разблакіроўкі"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Націсніце, каб дадаць адбітак пальца"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Не атрымалася распазнаць твар. Паўтарыце спробу."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Занадта светла. Прыглушыце асвятленне."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Занадта цёмна. Павялічце асвятленне."</string>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index dce0bad..ab73ebc 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Няма регистрирани отпечатъци."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Това устройство няма сензор за отпечатъци."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сензорът е временно деактивиран."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"За сензора се изисква калибриране"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Сензорът за отпечатъци не може да се използва. Посетете оторизиран сервиз."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Пръст <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Използване на отпечатък"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Използване на отпечатък или опцията за заключване на екрана"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Отключвайте телефона си, като го погледнете"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Настройване на още начини за отключване на телефона"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Докоснете, за да добавите отпечатък"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Отключване с отпечатък"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Сензорът за отпечатъци не може да се използва"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Посетете оторизиран сервиз."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Лицето не бе заснето точно. Опитайте отново."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Твърде светло е. Опитайте при по-слабо осветление."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Твърде тъмно е. Опитайте при по-силно осветление."</string>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 65a32ca..3c3ce59 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"কোনও আঙ্গুলের ছাপ নথিভুক্ত করা হয়নি।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"এই ডিভাইসে আঙ্গুলের ছাপ নেওয়ার সেন্সর নেই।"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"সেন্সর অস্থায়ীভাবে বন্ধ করা আছে।"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"সেন্সর ক্যালিব্রেট করতে হবে"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"আঙ্গুল <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"আঙ্গুলের ছাপ ব্যবহার করুন"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"আঙ্গুলের ছাপ অথবা স্ক্রিন লক ব্যবহার করুন"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"আঙ্গুলের ছাপ আইকন"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"\'ফেস আনলক\'"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"\'ফেস আনলক\' ফিচার ব্যবহার করার ক্ষেত্রে হওয়া সমস্যা"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"আপনার ফেস মডেল মুছে দেওয়ার জন্য ট্যাপ করুন এবং তারপরে আবার ফেস যোগ করুন"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"\'ফেস আনলক\' সেট আপ করুন"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"আপনার ফোনের দিকে তাকিয়ে এটিকে আনলক করুন"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"আনলক করার জন্য বিভিন্ন উপায়ে সেট আপ করুন"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"একটি আঙ্গুলের ছাপ যোগ করতে ট্যাপ করুন"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"মুখের সঠিক ডেটা পাওয়া যায়নি। আবার চেষ্টা করুন।"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"খুব উজ্জ্বল। আলো কমিয়ে চেষ্টা করে দেখুন।"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"খুব অন্ধকার। আরও উজ্জ্বল আলো ব্যবহার করে দেখুন।"</string>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 2ed26d7..1ee5c34 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -605,7 +605,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nije prijavljen nijedan otisak prsta."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ovaj uređaj nema senzor za otisak prsta."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je privremeno onemogućen."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Potrebno je kalibrirati senzor"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Nije moguće koristiti senzor za otisak prsta. Posjetite pružaoca usluga za popravke"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Koristi otisak prsta"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Koristi otisak prsta ili zaključavanje ekrana"</string>
@@ -615,14 +615,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona za otisak prsta"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Otključavanje licem"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problem s otključavanjem licem"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Dodirnite da izbrišete model lica, a zatim ponovo dodajte lice"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Postavite otključavanje licem"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Otključajte telefon gledajući u njega"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Postavite više načina otključavanja"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dodirnite da dodate otisak prsta"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Otključavanje otiskom prsta"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Nije moguće koristiti senzor za otisak prsta"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Posjetite pružaoca usluga za popravke."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Lice nije snimljeno precizno. Pokušajte ponovo."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Previše svijetlo. Probajte s blažim osvjetljenjem."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Previše je tamno. Pokušajte s jačim osvjetljenjem."</string>
@@ -1897,7 +1898,7 @@
<string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je vaš administrator"</string>
<string name="confirm_battery_saver" msgid="5247976246208245754">"Uredu"</string>
<string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"Ušteda baterije uključuje tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i funkcije te neke mrežne veze."</string>
- <string name="battery_saver_description" msgid="8518809702138617167">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i funkcije i neke mrežne veze."</string>
+ <string name="battery_saver_description" msgid="8518809702138617167">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i funkcije te neke mrežne veze."</string>
<string name="data_saver_description" msgid="4995164271550590517">"Radi smanjenja prijenosa podataka, Ušteda podataka sprečava da neke aplikacije šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može pristupiti podacima, ali će to činiti rjeđe. Naprimjer, to može značiti da se slike ne prikazuju dok ih ne dodirnete."</string>
<string name="data_saver_enable_title" msgid="7080620065745260137">"Uključiti Uštedu podataka?"</string>
<string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 0e4ad84..6da0249 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No s\'ha registrat cap empremta digital."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Aquest dispositiu no té sensor d\'empremtes digitals."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"El sensor està desactivat temporalment."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Cal calibrar el sensor"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"No es pot utilitzar el sensor d\'empremtes digitals. Visita un proveïdor de reparacions."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dit <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Utilitza l\'empremta digital"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Utilitza l\'empremta digital o el bloqueig de pantalla"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icona d\'empremta digital"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueig facial"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problema amb Desbloqueig facial"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Toca per suprimir el teu model facial i, a continuació, torna a afegir la teva cara"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Configura Desbloqueig facial"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Mira el telèfon per desbloquejar-lo"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura més maneres de desbloquejar el dispositiu"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toca per afegir una empremta digital"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Desbloqueig amb empremta digital"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"No es pot utilitzar el sensor d\'empremtes digitals"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visita un proveïdor de reparacions."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"No es reconeix la teva cara. Torna-ho a provar."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Massa brillant Prova una il·luminació més suau."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Massa fosc. Prova una il·luminació més brillant."</string>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 6e496d5..2e28787 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -608,7 +608,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nejsou zaregistrovány žádné otisky prstů."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Toto zařízení nemá snímač otisků prstů."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je dočasně deaktivován."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Snímač vyžaduje kalibraci"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Snímač otisků prstů nelze použít. Navštivte servis"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Použít otisk prstu"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Použít otisk prstu nebo zámek obrazovky"</string>
@@ -618,14 +618,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona otisku prstů"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Odemknutí obličejem"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problém s odemykáním obličejem"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Klepnutím svůj model obličeje smažte a potom ho přidejte znovu"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Nastavte odemknutí obličejem"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Telefon odemknete pohledem"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Nastavte si více způsobů odemykání"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Klepnutím přidáte otisk prstu"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Odemknutí otiskem prstu"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Snímač otisků prstů nelze použít"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Navštivte servis"</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Obličej se nepodařilo zachytit. Zkuste to znovu."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Je příliš světlo. Zmírněte osvětlení."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Je moc velká tma. Přejděte na světlo."</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index ffeb061..6f04a14 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Der er ikke registreret nogen fingeraftryk."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Denne enhed har ingen fingeraftrykslæser."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensoren er midlertidigt deaktiveret."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensoren skal kalibreres"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Fingeraftrykslæseren kan ikke bruges. Få den repareret"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Fingeraftryk <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Brug fingeraftryk"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Brug fingeraftryk eller skærmlås"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon for fingeraftryk"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ansigtslås"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Der er et problem med Ansigtslås"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Tryk for at slette din ansigtsmodel, og tilføj derefter dit ansigt igen"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Konfigurer ansigtslås"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Lås din telefon op ved at kigge på den"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfigurer flere måder at låse op på"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tryk for at tilføje et fingeraftryk"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Oplåsning med fingeraftryk"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Fingeraftrykslæseren kan ikke bruges"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Få den repareret."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Der blev ikke registreret ansigtsdata. Prøv igen."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Der er for lyst. Prøv en mere dæmpet belysning."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"For mørkt. Prøv med mere belysning."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 42b82f7..6b5074c 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Keine Fingerabdrücke erfasst."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Dieses Gerät hat keinen Fingerabdrucksensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Der Sensor ist vorübergehend deaktiviert."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor muss kalibriert werden"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Fingerabdruck verwenden"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Fingerabdruck oder Displaysperre verwenden"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Fingerabdruck-Symbol"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Entsperrung per Gesichtserkennung"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problem bei der Entsperrung per Gesichtserkennung"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Tippe, um dein Gesichtsmodell zu löschen, und füge es dann noch einmal hinzu"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Entsperrung per Gesichtserkennung einrichten"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Entsperre dein Smartphone, indem du es ansiehst"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Weitere Möglichkeiten zum Entsperren einrichten"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tippe, um einen Fingerabdruck hinzuzufügen"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Gesichtsdaten nicht gut erfasst. Erneut versuchen."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Zu hell. Schwächere Beleuchtung ausprobieren."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Zu dunkel. Probier eine hellere Beleuchtung aus."</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 6da3e86..c08791d 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Δεν έχουν καταχωριστεί δακτυλικά αποτυπώματα."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Αυτή η συσκευή δεν διαθέτει αισθητήρα δακτυλικού αποτυπώματος."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Ο αισθητήρας απενεργοποιήθηκε προσωρινά."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Ο αισθητήρας απαιτεί βαθμονόμηση"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Δεν είναι δυνατή η χρήση του αισθητήρα δακτυλικών αποτυπωμάτων. Επισκεφτείτε έναν πάροχο υπηρεσιών επισκευής."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Δάχτυλο <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Χρήση δακτυλικού αποτυπώματος"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Χρήση δακτυλικού αποτυπώματος ή κλειδώματος οθόνης"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Εικονίδιο δακτυλικών αποτυπωμάτων"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ξεκλείδωμα με το πρόσωπο"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Πρόβλημα με το Ξεκλείδωμα με το πρόσωπο"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Πατήστε για να διαγράψετε το μοντέλο προσώπου και, στη συνέχεια, προσθέστε το πρόσωπό σας ξανά."</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Ρύθμιση της λειτουργίας Ξεκλείδωμα με το πρόσωπο"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Ξεκλειδώστε το τηλέφωνό σας απλώς κοιτώντας το"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Ρυθμίστε περισσότερους τρόπους ξεκλειδώματος"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Πατήστε για να προσθέσετε δακτυλικό αποτύπωμα"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Ξεκλείδωμα με δακτυλικό αποτύπωμα"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Δεν είναι δυνατή η χρήση του αισθητήρα δακτυλικών αποτυπωμάτων"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Επισκεφτείτε έναν πάροχο υπηρεσιών επισκευής."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Αδύνατη λήψη ακριβών δεδομ. προσώπου. Επανάληψη."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Υπερβολικά έντονος φωτισμός. Δοκιμάστε πιο ήπιο."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Πολύ σκοτεινό περιβάλλον. Φροντίστε τον φωτισμό."</string>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 02b6be5..da28d71 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No fingerprints enrolled."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"This device does not have a fingerprint sensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor temporarily disabled."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor needs calibration"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Can’t use fingerprint sensor. Visit a repair provider"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Use fingerprint"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Use fingerprint or screen lock"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Fingerprint Unlock"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Can’t use fingerprint sensor"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visit a repair provider."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Couldn’t capture accurate face data. Try again."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Too bright. Try gentler lighting."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Too dark. Try brighter lighting."</string>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 31f0ea7..ad18acf 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No fingerprints enrolled."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"This device does not have a fingerprint sensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor temporarily disabled."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor needs calibration"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Can’t use fingerprint sensor. Visit a repair provider"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Use fingerprint"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Use fingerprint or screen lock"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Fingerprint Unlock"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Can’t use fingerprint sensor"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visit a repair provider."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Couldn’t capture accurate face data. Try again."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Too bright. Try gentler lighting."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Too dark. Try brighter lighting."</string>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index b759d25..24279a19 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No fingerprints enrolled."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"This device does not have a fingerprint sensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor temporarily disabled."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor needs calibration"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Can’t use fingerprint sensor. Visit a repair provider"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Use fingerprint"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Use fingerprint or screen lock"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Fingerprint Unlock"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Can’t use fingerprint sensor"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visit a repair provider."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Couldn’t capture accurate face data. Try again."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Too bright. Try gentler lighting."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Too dark. Try brighter lighting."</string>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index d2a53f2..7d45c91 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No fingerprints enrolled."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"This device does not have a fingerprint sensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor temporarily disabled."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor needs calibration"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Can’t use fingerprint sensor. Visit a repair provider"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Use fingerprint"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Use fingerprint or screen lock"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Fingerprint Unlock"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Can’t use fingerprint sensor"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visit a repair provider."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Couldn’t capture accurate face data. Try again."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Too bright. Try gentler lighting."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Too dark. Try brighter lighting."</string>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 9cf28b3..7458e8b 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No fingerprints enrolled."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"This device does not have a fingerprint sensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor temporarily disabled."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor needs calibration"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Can’t use fingerprint sensor. Visit a repair provider"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Use fingerprint"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Use fingerprint or screen lock"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Fingerprint Unlock"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Can’t use fingerprint sensor"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visit a repair provider."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Couldn’t capture accurate face data. Try again."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Too bright. Try gentler lighting."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Too dark. Try brighter lighting."</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index bceddd8..6a23351 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No se registraron huellas digitales."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo no tiene sensor de huellas dactilares."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Se inhabilitó temporalmente el sensor."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Se debe calibrar el sensor"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"No se puede usar el sensor de huellas dactilares. Consulta a un proveedor de reparaciones."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Usar huella digital"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Usar bloqueo de huella dactilar o pantalla"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloquea el teléfono con solo mirarlo"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura más formas de desbloquear el dispositivo"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Presiona para agregar una huella dactilar"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Desbloqueo con huellas dactilares"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"No se puede usar el sensor de huellas dactilares"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Consulta a un proveedor de reparaciones."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Datos faciales imprecisos. Vuelve a intentarlo."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Demasiado brillante. Prueba con menos iluminación."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Demasiado oscuro. Prueba con más iluminación."</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 80041cf..6d39a2c 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No se ha registrado ninguna huella digital."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo no tiene sensor de huellas digitales."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"El sensor está inhabilitado en estos momentos."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Hace falta calibrar el sensor"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"No se puede usar el sensor de huellas digitales. Visita un proveedor de reparaciones."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Usar huella digital"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Usar huella digital o bloqueo de pantalla"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icono de huella digital"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueo facial"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problema con Desbloqueo facial"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Toca para eliminar tu modelo facial y luego añade de nuevo tu cara"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Configura Desbloqueo facial"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloquea el teléfono con solo mirarlo"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura más formas de desbloqueo"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toca para añadir una huella digital"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Desbloqueo con Huella Digital"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"No se puede usar el sensor de huellas digitales"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visita un proveedor de reparaciones."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Datos faciales no reconocidos. Vuelve a intentarlo."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Hay demasiada luz. Busca un sitio menos iluminado."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Demasiado oscuro. Prueba en un lugar con más luz."</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index ccde3ec..ddb38f4 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Ühtegi sõrmejälge pole registreeritud."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Selles seadmes pole sõrmejäljeandurit."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Andur on ajutiselt keelatud."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Andurit on vaja kalibreerida"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Sõrmejäljeandurit ei saa kasutada. Külastage remonditeenuse pakkujat"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Sõrmejälg <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Sõrmejälje kasutamine"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Sõrmejälje või ekraaniluku kasutamine"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Sõrmejälje ikoon"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Näoga avamine"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Probleem funktsiooniga Näoga avamine"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Puudutage näomudeli kustutamiseks, seejärel lisage oma nägu uuesti"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Näoga avamise seadistamine"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Avage telefon seda vaadates"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Seadistage rohkem viise avamiseks"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Puudutage sõrmejälje lisamiseks"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Sõrmejäljega avamine"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Sõrmejäljeandurit ei saa kasutada"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Külastage remonditeenuse pakkujat."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Näoandmeid ei saanud jäädvustada. Proovige uuesti."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Liiga ere. Proovige hämaramat valgust."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Liiga pime. Proovige parema valgustusega kohas."</string>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 69208e4..5c6219d 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Ez da erregistratu hatz-markarik."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Gailu honek ez du hatz-marken sentsorerik."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sentsorea aldi baterako desgaitu da."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sentsorea kalibratu egin behar da"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Ezin da erabili hatz-marken sentsorea. Jo konponketak egiten dituen hornitzaile batenera."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>. hatza"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Erabili hatz-marka"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Erabili hatz-marka edo pantailaren blokeoa"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Hatz-markaren ikonoa"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Aurpegi bidez desblokeatzeko eginbidea"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Arazoak ditugu aurpegi bidez desblokeatzeko eginbidearekin"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Sakatu hau aurpegi-eredua ezabatzeko eta, gero, gehitu aurpegia berriro"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Konfiguratu aurpegi bidez desblokeatzeko eginbidea"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Telefonoa desblokeatzeko, begira iezaiozu"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfiguratu telefonoa desblokeatzeko modu gehiago"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Sakatu hau hatz-marka bat gehitzeko"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Hatz-marka bidez desblokeatzea"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Ezin da erabili hatz-marken sentsorea"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Jo konponketak egiten dituen hornitzaile batenera."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Ezin izan dira bildu argazkiaren datu zehatzak. Saiatu berriro."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Argi gehiegi dago. Joan toki ilunago batera."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Ilunegi dago. Erabili argi gehiago."</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 5f461af..4e75e21 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"اثر انگشتی ثبت نشده است."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"این دستگاه حسگر اثر انگشت ندارد."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"حسگر بهطور موقت غیرفعال است."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"حسگر به واسنجی نیاز دارد"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"امکان استفاده از حسگر اثر انگشت وجود ندارد. به ارائهدهنده خدمات تعمیر مراجعه کنید"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"انگشت <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"استفاده از اثر انگشت"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"استفاده از اثر انگشت یا قفل صفحه"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"نماد اثر انگشت"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"قفلگشایی با چهره"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"مشکل در «قفلگشایی با چهره»"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"برای حذف مدل چهرهتان ضربه بزنید، سپس چهرهتان را دوباره اضافه کنید"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"راهاندازی «قفلگشایی با چهره»"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"برای باز کردن قفل تلفن خود به آن نگاه کنید"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"راهاندازی روشهای بیشتر برای باز کردن قفل"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"برای افزودن اثر انگشت، ضربه بزنید"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"قفلگشایی با اثر انگشت"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"امکان استفاده از حسگر اثر انگشت وجود ندارد"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"به ارائهدهنده خدمات تعمیر مراجعه کنید."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"دادههای دقیق چهره ضبط نشد. دوباره امتحان کنید."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"خیلی روشن است. روشناییاش را ملایمتر کنید."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"خیلی تاریک است. تصویر را روشنتر کنید."</string>
@@ -1023,7 +1024,7 @@
<string name="text_copied" msgid="2531420577879738860">"متن در بریدهدان کپی شد."</string>
<string name="copied" msgid="4675902854553014676">"کپی شد"</string>
<string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> جایگذاری کرد"</string>
- <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از بریدهدان جایگذاری کرد"</string>
+ <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از بریدهدان جایگذاری کرد"</string>
<string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نوشتاری را که کپی کردید جایگذاری کرد"</string>
<string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> تصویری را که کپی کردید جایگذاری کرد"</string>
<string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> محتوایی را که کپی کردید جایگذاری کرد"</string>
@@ -1717,7 +1718,7 @@
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استفاده از میانبر"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"وارونگی رنگ"</string>
<string name="color_correction_feature_name" msgid="3655077237805422597">"تصحیح رنگ"</string>
- <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"حالت تکحرکت"</string>
+ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"حالت یکدستی"</string>
<string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"بسیار کمنور"</string>
<string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> روشن شد."</string>
<string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> خاموش شد."</string>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index e365813..cdca717 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Sormenjälkiä ei ole otettu käyttöön."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Laitteessa ei ole sormenjälkitunnistinta."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Tunnistin poistettu väliaikaisesti käytöstä."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Tunnistin on kalibroitava"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Sormenjälkitunnistinta ei voi käyttää. Käy korjausliikkeessä"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Sormi <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Käytä sormenjälkeä"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Käytä sormenjälkeä tai näytön lukitusta"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Sormenjälkikuvake"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Kasvojentunnistusavaus"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Face Unlockiin liittyvä ongelma"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Poista kasvomalli napauttamalla ja lisää sitten kasvosi uudelleen"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Ota kasvojentunnistusavaus käyttöön"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Avaa puhelimesi lukitus katsomalla laitetta"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Ota käyttöön lisää tapoja avata lukitus"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Napauta lisätäksesi sormenjälki"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Sormenjälkiavaus"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Sormenjälkitunnistinta ei voi käyttää"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Käy korjausliikkeessä."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Tarkan kasvodatan tallennus epäonnistui. Yritä uudelleen."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Liian kirkasta. Kokeile pehmeämpää valaistusta."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Liian pimeää. Kokeile kirkkaampaa valaistusta."</string>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 0cf8d8d..4fb5b4b 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Aucune empreinte digitale enregistrée."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Cet appareil ne possède pas de capteur d\'empreintes digitales."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Le capteur a été désactivé temporairement."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Le capteur doit être calibré"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Impossible utiliser capteur empreinte digitale. Consultez un fournisseur de services de réparation"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Doigt <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Utiliser l\'empreinte digitale"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Utiliser l\'empreinte digitale ou le verrouillage de l\'écran"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icône d\'empreinte digitale"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Déverrouillage par reconnaissance faciale"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problème avec la fonctionnalité de déverrouillage par reconnaissance faciale"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Touchez pour supprimer votre modèle facial, puis ajoutez votre visage de nouveau"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Configurer le déverrouillage par reconnaissance faciale"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Déverrouillez votre téléphone en le regardant"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configurer d\'autres méthodes de déverrouillage"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Touchez pour ajouter une empreinte digitale"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Déverrouillage par empreinte digitale"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Impossible d\'utiliser le capteur d\'empreintes digitales"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Consultez un fournisseur de services de réparation."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Imposs. capt. données visage précises. Réessayez."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Trop lumineux. Essayez un éclairage plus faible."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Trop sombre. Essayez avec un éclairage plus fort."</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index f87be31..e10a719 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Aucune empreinte digitale enregistrée."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Aucun lecteur d\'empreinte digitale n\'est installé sur cet appareil."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Capteur temporairement désactivé."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Vous devez calibrer le capteur"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"Doigt <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Utiliser l\'empreinte digitale"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Utiliser votre empreinte digitale ou le verrouillage de l\'écran"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icône d\'empreinte digitale"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Déverrouillage par reconnaissance faciale"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problème lié au déverrouillage par reconnaissance faciale"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Appuyez pour supprimer votre empreinte faciale, puis ajoutez de nouveau votre visage"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Configurer le déverrouillage facial"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Déverrouillez votre téléphone en le regardant"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configurer d\'autres méthodes de déverrouillage"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Appuyez pour ajouter une empreinte digitale"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Capture du visage impossible. Réessayez."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Trop lumineux. Essayez de baisser la lumière."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Trop sombre. Essayez une éclairage plus lumineux."</string>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 1476012..d20e77f 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Non se rexistraron impresións dixitais."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo non ten sensor de impresión dixital."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Desactivouse o sensor temporalmente."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"É necesario calibrar o sensor"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Non se puido usar o sensor de impresión dixital. Visita un provedor de reparacións"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Utilizar impresión dixital"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Utilizar impresión dixital ou credencial do dispositivo"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icona de impresión dixital"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueo facial"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Produciuse un problema co desbloqueo facial"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Toca para eliminar o teu modelo facial e despois engade de novo a cara"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Configurar o desbloqueo facial"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Mira o teléfono para desbloquealo"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura máis maneiras de desbloquear o dispositivo"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toca para engadir unha impresión dixital"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Desbloqueo mediante impresión dixital"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Non se puido usar o sensor de impresión dixital"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visita un provedor de reparacións."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Sen datos faciais exactos. Téntao de novo."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Hai demasiada iluminación. Proba cunha máis suave."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Hai demasiada escuridade. Proba con máis luz."</string>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index d03245a..915cfe1 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -585,8 +585,7 @@
<string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"અન્ય ફિંગરપ્રિન્ટ અજમાવી જુઓ"</string>
<string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"અતિશય પ્રકાશિત"</string>
<string name="fingerprint_acquired_try_adjusting" msgid="3667006071003809364">"ગોઠવણી કરી જુઓ"</string>
- <!-- no translation found for fingerprint_acquired_immobile (1621891895241888048) -->
- <skip />
+ <string name="fingerprint_acquired_immobile" msgid="1621891895241888048">"દરેક વખતે સ્કૅનર પર તમારી આંગળીની સ્થિતિ સહેજ બદલતા રહો"</string>
<string-array name="fingerprint_acquired_vendor">
</string-array>
<string name="fingerprint_authenticated" msgid="2024862866860283100">"ફિંગરપ્રિન્ટ પ્રમાણિત કરી"</string>
@@ -603,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"કોઈ ફિંગરપ્રિન્ટની નોંધણી કરવામાં આવી નથી."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"આ ડિવાઇસમાં કોઈ ફિંગરપ્રિન્ટ સેન્સર નથી."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"સેન્સર હંગામી રૂપે બંધ કર્યું છે."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"સેન્સરને કેલિબ્રેટ કરવાની જરૂર છે"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"આંગળી <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ફિંગરપ્રિન્ટનો ઉપયોગ કરો"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ફિંગરપ્રિન્ટ અથવા સ્ક્રીન લૉકનો ઉપયોગ કરો"</string>
@@ -621,6 +621,12 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"તમારા ફોનની તરફ જોઈને તેને અનલૉક કરો"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"અનલૉક કરવાની બીજી રીતોનું સેટઅપ કરો"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ફિંગરપ્રિન્ટ ઉમેરવા માટે ટૅપ કરો"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"ચહેરાનો સચોટ ડેટા કૅપ્ચર ન થયો. ફરી પ્રયાસ કરો."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"અતિશય પ્રકાશિત. થોડો હળવો પ્રકાશ અજમાવી જુઓ."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"અતિશય ઘેરી. વધુ ઝળહળતો પ્રકાશ અજમાવો"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 61db04a..27db7eb 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -309,7 +309,7 @@
<string name="permgroupdesc_location" msgid="1995955142118450685">"इस डिवाइस की जगह तक पहुंचने दें"</string>
<string name="permgrouplab_calendar" msgid="6426860926123033230">"कैलेंडर"</string>
<string name="permgroupdesc_calendar" msgid="6762751063361489379">"अपने कैलेंडर को ऐक्सेस करने"</string>
- <string name="permgrouplab_sms" msgid="795737735126084874">"एसएमएस"</string>
+ <string name="permgrouplab_sms" msgid="795737735126084874">"मैसेज (एसएमएस)"</string>
<string name="permgroupdesc_sms" msgid="5726462398070064542">"मैसेज (एसएमएस) भेजें और देखें"</string>
<string name="permgrouplab_storage" msgid="1938416135375282333">"फ़ाइलें और मीडिया"</string>
<string name="permgroupdesc_storage" msgid="6351503740613026600">"अपने डिवाइस पर मौजूद फ़ोटो, मीडिया और फ़ाइलें ऐक्सेस करने की"</string>
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"कोई फ़िंगरप्रिंट रजिस्टर नहीं किया गया है."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"इस डिवाइस में फ़िंगरप्रिंट सेंसर नहीं है."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"सेंसर कुछ समय के लिए बंद कर दिया गया है."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"सेंसर को कैलिब्रेट करने की ज़रूरत है"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"फ़िंगरप्रिंट <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"फ़िंगरप्रिंट इस्तेमाल करें"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"फ़िंगरप्रिंट या स्क्रीन लॉक का क्रेडेंशियल इस्तेमाल करें"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"फ़िंगरप्रिंट आइकॉन"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"फ़ेस अनलॉक"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"फ़ेस अनलॉक के साथ कोई समस्या है"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"अपने चेहरे का मॉडल मिटाने के लिए टैप करें. इसके बाद, अपना चेहरा फिर से रजिस्टर करें"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"फे़स अनलॉक की सुविधा सेट अप करें"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"अपने फ़ोन की तरफ़ देखकर उसे अनलॉक करें"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"फ़ोन को अनलॉक करने के दूसरे तरीके सेट अप करें"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"फ़िंगरप्रिंट जोड़ने के लिए टैप करें"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"चेहरे से जुड़ा सटीक डेटा कैप्चर नहीं किया जा सका. फिर से कोशिश करें."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"बहुत रोशनी है. हल्की रोशनी आज़माएं."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"बहुत अंधेरा है. बेहतर रोशनी में आज़माएं."</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index 32ae3f4..d804f09 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -605,7 +605,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nije registriran nijedan otisak prsta."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ovaj uređaj nema senzor otiska prsta."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je privremeno onemogućen."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Potrebno je kalibrirati senzor"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Senzor otiska prsta ne može se koristiti. Posjetite davatelja usluga popravaka"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Upotreba otiska prsta"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Upotreba otiska prsta ili zaključavanja zaslona"</string>
@@ -615,14 +615,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona otiska prsta"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Otključavanje licem"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Poteškoće s otključavanjem licem"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Dodirnite da biste izbrisali model lica, a zatim ponovo dodajte svoje lice"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Postavite otključavanje licem"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Otključajte telefon gledajući u njega"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Postavite više načina otključavanja"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dodirnite da biste dodali otisak prsta"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Otključavanje otiskom prsta"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Senzor otiska prsta ne može se koristiti"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Posjetite davatelja usluga popravaka."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Podaci o licu nisu točni. Pokušajte ponovo."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Presvijetlo je. Pokušajte sa slabijim svjetlom."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Pretamno je. Pokušajte s jačim osvjetljenjem."</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 92ef08c..44d8e9b 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nincsenek regisztrált ujjlenyomatok."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ez az eszköz nem rendelkezik ujjlenyomat-érzékelővel."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Az érzékelő átmenetileg le van tiltva."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Az érzékelő kalibrálást igényel"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Nem lehet használni az ujjlenyomat-érzékelőt. Keresse fel a szervizt."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>. ujj"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Ujjlenyomat használata"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"A folytatás ujjlenyomattal vagy képernyőzárral lehetséges"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ujjlenyomat ikon"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Arcalapú feloldás"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Arcalapú feloldással kapcsolatos problémák"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Koppintson arcmodellje törléséhez, majd készítsen újat"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Az Arcalapú feloldás beállítása"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Feloldhatja a zárolást úgy, hogy ránéz a telefonra"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"További feloldási módszerek beállítása"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Koppintson ide ujjlenyomat hozzáadásához"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Feloldás ujjlenyomattal"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Nem lehet használni az ujjlenyomat-érzékelőt"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Keresse fel a szervizt."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Sikertelen az arc pontos rögzítése. Próbálja újra."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Túl világos. Próbálja kevésbé erős világítással."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Túl sötét. Próbálja jobb megvilágítás mellett."</string>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index cb7867e..847ed3eb 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Գրանցված մատնահետք չկա:"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Այս սարքը չունի մատնահետքերի սկաներ։"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Տվիչը ժամանակավորապես անջատված է:"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Սկաներն անհրաժեշտ է չափաբերել"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Մատնահետքերի սկաները հնարավոր չէ օգտագործել։ Այցելեք սպասարկման կենտրոն։"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Մատնահետք <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Օգտագործել մատնահետք"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Օգտագործել մատնահետք կամ էկրանի կողպում"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Մատնահետքի պատկերակ"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Դեմքով ապակողպում"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Դեմքով ապակողպման հետ կապված խնդիր"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Հպեք՝ ձեր դեմքի նմուշը ջնջելու համար, այնուհետև նորից ավելացրեք այն:"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Կարգավորեք դեմքով ապակողպումը"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Ապակողպելու համար պարզապես նայեք հեռախոսին"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Կարգավորեք ապակողպելու այլ եղանակներ"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Հպեք՝ մատնահետք ավելացնելու համար"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Մատնահետքով ապակողպում"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Մատնահետքերի սկաները հնարավոր չէ օգտագործել"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Այցելեք սպասարկման կենտրոն։"</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Չհաջողվեց գրանցել դեմքի ճշգրիտ տվյալները։ Կրկնեք։"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Շատ լուսավոր է։ Փորձեք ավելի թեթև լուսավորություն։"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Շատ մութ է։ Փորձեք ավելի պայծառ լուսավորություն։"</string>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 8f04b84..c4f8fdd 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Tidak ada sidik jari yang terdaftar."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Perangkat ini tidak memiliki sensor sidik jari."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor dinonaktifkan untuk sementara."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor memerlukan kalibrasi"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Tidak dapat menggunakan sensor sidik jari. Kunjungi penyedia reparasi"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Jari <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Gunakan sidik jari"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Gunakan sidik jari atau kunci layar"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon sidik jari"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Face Unlock"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Masalah pada Face Unlock"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Ketuk untuk menghapus model wajah, lalu tambahkan wajah Anda lagi"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Siapkan Face Unlock"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Buka kunci ponsel dengan melihat ke ponsel"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Siapkan lebih banyak cara untuk membuka kunci"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Ketuk untuk menambahkan sidik jari"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Fingerprint Unlock"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Tidak dapat menggunakan sensor sidik jari"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Kunjungi penyedia reparasi."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Tidak bisa mengambil data wajah akurat. Coba lagi."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Terlalu terang. Coba cahaya yang lebih lembut."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Terlalu gelap. Coba pencahayaan yang lebih cerah."</string>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 69e3f30..dfe3acb 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Engin fingraför hafa verið skráð."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Þetta tæki er ekki með fingrafaralesara."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Slökkt tímabundið á skynjara."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Kvarða þarf skynjarann"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Ekki er hægt að nota fingrafaralesara. Þú verður að fara með hann á verkstæði"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Fingur <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Nota fingrafar"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Nota fingrafar eða skjálás"</string>
@@ -611,15 +611,16 @@
<string-array name="fingerprint_error_vendor">
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Fingrafaratákn"</string>
- <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Andlitsopnun"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
- <string name="face_setup_notification_title" msgid="8843461561970741790">"Setja upp andlitsopnun"</string>
+ <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Andlitskenni"</string>
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Vandamál varðandi andlitskenni"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Ýttu til að eyða andlitslíkaninu og skráðu svo andlitið aftur"</string>
+ <string name="face_setup_notification_title" msgid="8843461561970741790">"Setja upp andlitskenni"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Taktu símann úr lás með því að horfa á hann"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Settu upp fleiri leiðir til að taka úr lás"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Ýttu til að bæta við fingrafari"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Fingrafarskenni"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Ekki er hægt að nota fingrafaralesara"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Þú verður að fara á verkstæði."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Nákvæm andlitsgögn fengust ekki. Reyndu aftur."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Of bjart. Prófaðu mýkri lýsingu."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Of dimmt. Prófaðu sterkari lýsingu."</string>
@@ -643,19 +644,19 @@
<string-array name="face_acquired_vendor">
</string-array>
<string name="face_error_hw_not_available" msgid="5085202213036026288">"Andlit ekki staðfest. Vélbúnaður er ekki tiltækur."</string>
- <string name="face_error_timeout" msgid="2598544068593889762">"Prófaðu andlitsopnun aftur."</string>
+ <string name="face_error_timeout" msgid="2598544068593889762">"Prófaðu andlitskenni aftur."</string>
<string name="face_error_no_space" msgid="5649264057026021723">"Ekki er hægt að vista ný andlitsgögn. Eyddu gömlu fyrst."</string>
<string name="face_error_canceled" msgid="2164434737103802131">"Hætt við andlitsgreiningu."</string>
- <string name="face_error_user_canceled" msgid="5766472033202928373">"Notandi hætti við andlitsopnun."</string>
+ <string name="face_error_user_canceled" msgid="5766472033202928373">"Notandi hætti við andlitskenni."</string>
<string name="face_error_lockout" msgid="7864408714994529437">"Of margar tilraunir. Reyndu aftur síðar."</string>
- <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Of margar tilraunir. Slökkt á andlitsopnun."</string>
+ <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Of margar tilraunir. Slökkt á andlitskenni."</string>
<string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Of margar tilraunir. Sláðu inn skjálásinn í staðinn."</string>
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Ekki tókst að staðfesta andlit. Reyndu aftur."</string>
- <string name="face_error_not_enrolled" msgid="1134739108536328412">"Þú hefur ekki sett upp andlitsopnun."</string>
- <string name="face_error_hw_not_present" msgid="7940978724978763011">"Þetta tæki styður ekki andlitsopnun"</string>
+ <string name="face_error_not_enrolled" msgid="1134739108536328412">"Þú hefur ekki sett upp andlitskenni."</string>
+ <string name="face_error_hw_not_present" msgid="7940978724978763011">"Þetta tæki styður ekki andlitskenni"</string>
<string name="face_error_security_update_required" msgid="5076017208528750161">"Slökkt tímabundið á skynjara."</string>
<string name="face_name_template" msgid="3877037340223318119">"Andlit <xliff:g id="FACEID">%d</xliff:g>"</string>
- <string name="face_app_setting_name" msgid="5854024256907828015">"Nota andlitsopnun"</string>
+ <string name="face_app_setting_name" msgid="5854024256907828015">"Nota andlitskenni"</string>
<string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Nota andlit eða skjálás"</string>
<string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Notaðu andlitið þitt til að halda áfram"</string>
<string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Notaðu andlitið eða skjálás til að halda áfram"</string>
@@ -958,7 +959,7 @@
<string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Stækka opnunarsvæði."</string>
<string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Opnun með stroku."</string>
<string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Opnun með mynstri."</string>
- <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Andlitsopnun."</string>
+ <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Andlitskenni."</string>
<string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Opnun með PIN-númeri."</string>
<string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Taka PIN-númer SIM-korts úr lás."</string>
<string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Taka PUK-númer SIM-korts úr lás."</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 8593c9b..1e204cf 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nessuna impronta digitale registrata."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Questo dispositivo non dispone di sensore di impronte."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensore temporaneamente disattivato."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"È necessario calibrare il sensore"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Impossibile usare il sensore di impronte digitali. Contatta un fornitore di servizi di riparazione"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dito <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Usa l\'impronta"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Usa l\'impronta o il blocco schermo"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icona dell\'impronta"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Sblocco con il volto"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problema con Sblocco con il volto"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Tocca per eliminare il tuo modello del volto e poi riaggiungi il tuo volto"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Configura lo sblocco con il volto"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Sblocca il telefono guardandolo"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura altri modi per sbloccare"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tocca per aggiungere un\'impronta"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Sblocco con l\'impronta"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Impossibile utilizzare il sensore di impronte digitali"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Contatta un fornitore di servizi di riparazione."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Impossibile acquisire dati viso accurati. Riprova."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Troppa luce. Prova con una luce più soft."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Troppo buio. Prova con più luce."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 1df263b..d764cb7 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -608,7 +608,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"לא נסרקו טביעות אצבע."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"במכשיר הזה אין חיישן טביעות אצבע."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"החיישן מושבת באופן זמני."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"צריך לכייל את החיישן"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"אצבע <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"שימוש בטביעת אצבע"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"שימוש בטביעת אצבע או בנעילת מסך"</string>
@@ -618,14 +619,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"סמל טביעת אצבע"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"פתיחה ע\"י זיהוי הפנים"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"בעיה בפתיחה ע\"י זיהוי הפנים"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"יש להקיש כדי למחוק את התבנית לזיהוי הפנים, ואז להוסיף תבנית חדשה לזיהוי הפנים"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"הגדרת התכונה \'פתיחה ע\"י זיהוי הפנים\'"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"יש להביט בטלפון כדי לבטל את נעילתו"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"אפשר להגדיר דרכים נוספות לביטול נעילה"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"יש להקיש כדי להוסיף טביעת אצבע"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"לא ניתן היה לקלוט את הפנים במדויק. יש לנסות שוב."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"בהירה מדי. צריך תאורה עדינה יותר."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"התמונה חשוכה מדי. צריך תאורה חזקה יותר."</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 4adcc7d..bc0e43d 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -297,7 +297,7 @@
<string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ユーザー補助の使用"</string>
<string name="foreground_service_app_in_background" msgid="1439289699671273555">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」が電池を使用しています"</string>
<string name="foreground_service_apps_in_background" msgid="7340037176412387863">"<xliff:g id="NUMBER">%1$d</xliff:g> 個のアプリが電池を使用しています"</string>
- <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"タップして電池やデータの使用量を確認"</string>
+ <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"タップしてバッテリーやデータの使用量を確認"</string>
<string name="foreground_service_multiple_separator" msgid="5002287361849863168">"<xliff:g id="LEFT_SIDE">%1$s</xliff:g>、<xliff:g id="RIGHT_SIDE">%2$s</xliff:g>"</string>
<string name="safeMode" msgid="8974401416068943888">"セーフモード"</string>
<string name="android_system_label" msgid="5974767339591067210">"Android システム"</string>
@@ -438,7 +438,7 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"位置情報提供者の追加コマンドアクセス"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"位置情報提供元の追加のコマンドにアクセスすることをアプリに許可します。許可すると、アプリがGPSなどの位置情報源の動作を妨害する恐れがあります。"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"フォアグラウンドでのみ正確な位置情報にアクセス"</string>
- <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"このアプリは、使用中に、位置情報サービスからデバイスの正確な位置情報を取得できます。アプリが位置情報を取得するには、デバイスで位置情報サービスがオンになっている必要があります。この場合、電池使用量が増えることがあります。"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"このアプリは、使用中に、位置情報サービスからデバイスの正確な位置情報を取得できます。アプリが位置情報を取得するには、デバイスで位置情報サービスがオンになっている必要があります。この場合、バッテリー使用量が増えることがあります。"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"フォアグラウンドでのみおおよその位置情報にアクセス"</string>
<string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"このアプリは、使用中に、位置情報サービスからデバイスのおおよその位置情報を取得できます。アプリが位置情報を取得するには、デバイスで位置情報サービスがオンになっている必要があります。"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"バックグラウンドでの位置情報へのアクセス"</string>
@@ -517,9 +517,9 @@
<string name="permlab_changeWifiState" msgid="7947824109713181554">"Wi-Fiからの接続と切断"</string>
<string name="permdesc_changeWifiState" msgid="7170350070554505384">"Wi-Fiアクセスポイントへの接続/切断、Wi-Fiネットワークのデバイス設定の変更をアプリに許可します。"</string>
<string name="permlab_changeWifiMulticastState" msgid="285626875870754696">"Wi-Fiマルチキャストの受信を許可する"</string>
- <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="191079868596433554">"マルチキャストアドレスを使用して、このタブレットだけでなくWi-Fiネットワーク上のすべてのデバイスに送信されたパケットを受信することをアプリに許可します。マルチキャスト以外のモードよりも電池の消費量が大きくなります。"</string>
- <string name="permdesc_changeWifiMulticastState" product="tv" msgid="1336952358450652595">"マルチキャスト アドレスを使用して、この Android TV デバイスだけでなく Wi-Fi ネットワーク上のすべてのデバイスに送信されたパケットを受信することをアプリに許可します。マルチキャスト以外のモードよりも電池の消費量が大きくなります。"</string>
- <string name="permdesc_changeWifiMulticastState" product="default" msgid="8296627590220222740">"マルチキャストアドレスを使用して、このモバイル デバイスだけでなくWi-Fiネットワーク上のすべてのデバイスに送信されたパケットを受信することをアプリに許可します。マルチキャスト以外のモードよりも電池の消費量が大きくなります。"</string>
+ <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="191079868596433554">"マルチキャスト アドレスを使用して、このタブレットだけでなく Wi-Fi ネットワーク上のすべてのデバイスに送信されたパケットを受信することをアプリに許可します。マルチキャスト以外のモードよりもバッテリーの消費量が大きくなります。"</string>
+ <string name="permdesc_changeWifiMulticastState" product="tv" msgid="1336952358450652595">"マルチキャスト アドレスを使用して、この Android TV デバイスだけでなく Wi-Fi ネットワーク上のすべてのデバイスに送信されたパケットを受信することをアプリに許可します。マルチキャスト以外のモードよりもバッテリーの消費量が大きくなります。"</string>
+ <string name="permdesc_changeWifiMulticastState" product="default" msgid="8296627590220222740">"マルチキャスト アドレスを使用して、このモバイル デバイスだけでなく Wi-Fi ネットワーク上のすべてのデバイスに送信されたパケットを受信することをアプリに許可します。マルチキャスト以外のモードよりもバッテリーの消費量が大きくなります。"</string>
<string name="permlab_bluetoothAdmin" msgid="6490373569441946064">"Bluetoothの設定へのアクセス"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="5370837055438574863">"ローカルのBluetoothタブレットを設定することと、リモートデバイスを検出してペアに設定することをアプリに許可します。"</string>
<string name="permdesc_bluetoothAdmin" product="tv" msgid="1623992984547014588">"Android TV デバイスで Bluetooth を設定することと、リモート デバイスを検出してペアに設定することをアプリに許可します。"</string>
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"指紋が登録されていません。"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"このデバイスには指紋認証センサーがありません。"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"センサーが一時的に無効になっています。"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"センサーの調整が必要です"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"指紋認証センサーを使用できません。修理業者に調整を依頼してください"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"指紋 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"指紋の使用"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"指紋または画面ロックの使用"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"指紋アイコン"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"顔認証"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"顔認証に関する問題"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"タップして顔モデルを削除してから、改めて顔を追加してください"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"顔認証の設定"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"スマートフォンに顔を向けるとロックが解除されます"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"その他のロック解除方法の設定"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"タップすると指紋が追加されます"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"指紋認証"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"指紋認証センサーを使用できません"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"修理業者に調整を依頼してください。"</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"顔を認識できませんでした。もう一度お試しください。"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"明るすぎます。もっと暗い場所でお試しください。"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"暗すぎます。もっと明るい場所でお試しください。"</string>
@@ -1873,8 +1874,8 @@
<string name="package_updated_device_owner" msgid="7560272363805506941">"管理者により更新されています"</string>
<string name="package_deleted_device_owner" msgid="2292335928930293023">"管理者により削除されています"</string>
<string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
- <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"バッテリー セーバーを有効にすると、ダークテーマが ON になり、バックグラウンド アクティビティ、一部の視覚効果、特定の機能、一部のネットワーク接続が制限されるか OFF になります。"</string>
- <string name="battery_saver_description" msgid="8518809702138617167">"バッテリー セーバーを有効にすると、ダークテーマが ON になり、バックグラウンド アクティビティ、一部の視覚効果、特定の機能、一部のネットワーク接続が制限されるか OFF になります。"</string>
+ <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"バッテリー セーバーを有効にすると、ダークモードが ON になり、バックグラウンド アクティビティ、一部の視覚効果、特定の機能、一部のネットワーク接続が制限されるか OFF になります。"</string>
+ <string name="battery_saver_description" msgid="8518809702138617167">"バッテリー セーバーを有効にすると、ダークモードが ON になり、バックグラウンド アクティビティ、一部の視覚効果、特定の機能、一部のネットワーク接続が制限されるか OFF になります。"</string>
<string name="data_saver_description" msgid="4995164271550590517">"データセーバーは、一部のアプリによるバックグラウンドでのデータ送受信を停止することでデータ使用量を抑制します。使用中のアプリからデータを送受信することはできますが、その頻度は低くなる場合があります。この影響として、たとえば画像はタップしないと表示されないようになります。"</string>
<string name="data_saver_enable_title" msgid="7080620065745260137">"データセーバーを ON にしますか?"</string>
<string name="data_saver_enable_button" msgid="4399405762586419726">"ON にする"</string>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 16cbe9a..8492476 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -585,7 +585,7 @@
<string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"ცადეთ სხვა თითის ანაბეჭდი"</string>
<string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"ზედმეტად ნათელია"</string>
<string name="fingerprint_acquired_try_adjusting" msgid="3667006071003809364">"ცადეთ დარეგულირება"</string>
- <string name="fingerprint_acquired_immobile" msgid="1621891895241888048">"შეცვალეთ თითის დაჭერის ადგილი ოდნავ ყოველ ჯერზე"</string>
+ <string name="fingerprint_acquired_immobile" msgid="1621891895241888048">"ოდნავ შეცვალეთ თითის დაჭერის ადგილი ყოველ ჯერზე"</string>
<string-array name="fingerprint_acquired_vendor">
</string-array>
<string name="fingerprint_authenticated" msgid="2024862866860283100">"თითის ანაბეჭდი ავტორიზებულია"</string>
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"თითის ანაბეჭდები რეგისტრირებული არ არის."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ამ მოწყობილობას არ აქვს თითის ანაბეჭდის სენსორი."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"სენსორი დროებით გათიშულია."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"სენსორს კალიბრაცია სჭირდება"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"თითი <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"გამოიყენეთ თითის ანაბეჭდი"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"გამოიყენეთ თითის ანაბეჭდი ან ეკრანის დაბლოკვა"</string>
@@ -618,6 +619,12 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"განბლოკეთ თქვენი ტელეფონი შეხედვით"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"დააყენეთ განბლოკვის სხვა ხერხები"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"შეეხეთ თითის ანაბეჭდის დასამატებლად"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"სახის ზუსტი მონაცემები არ აღიბეჭდა. ცადეთ ხელახლა."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"მეტისმეტად ნათელია. ცადეთ უფრო სუსტი განათება."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"მეტისმეტად ბნელია. ცადეთ უფრო ძლიერი განათება."</string>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index d5673ec..399b927 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Саусақ іздері тіркелмеген."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Бұл құрылғыда саусақ ізін оқу сканері жоқ."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Датчик уақытша өшірулі."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Датчикті калибрлеу қажет."</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>-саусақ"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Саусақ ізін пайдалану"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Саусақ ізін немесе экран құлпын пайдалану"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Саусақ ізі белгішесі"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Бет тану"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Face Unlock функциясына қатысты мәселе шықты"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Бет үлгісін жою үшін түртіңіз, содан соң жаңа бет үлгісін қосыңыз."</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Бет тану функциясын реттеу"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Телефоныңызға қарап, оның құлпын ашыңыз."</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Құлыпты ашудың басқа тәсілдерін реттеу"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Саусақ ізін қосу үшін түртіңіз."</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Бет деректері дұрыс алынбады. Әрекетті қайталаңыз."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Тым ашық. Күңгірттеу жарық керек."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Тым қараңғы. Молырақ жарық керек."</string>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 67c1433..a4f0c00 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"មិនមានការចុះឈ្មោះស្នាមម្រាមដៃទេ។"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ឧបករណ៍នេះមិនមានឧបករណ៍ចាប់ស្នាមម្រាមដៃទេ។"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"បានបិទឧបករណ៍ចាប់សញ្ញាជាបណ្តោះអាសន្ន។"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"ឧបករណ៍ចាប់សញ្ញាត្រូវការកែសម្រួល"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"មិនអាចប្រើឧបករណ៍ចាប់ស្នាមម្រាមដៃបានទេ។ សូមទាក់ទងក្រុមហ៊ុនផ្ដល់ការជួសជុល"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ម្រាមដៃ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ប្រើស្នាមម្រាមដៃ"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ប្រើស្នាមម្រាមដៃ ឬការចាក់សោអេក្រង់"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"រូបស្នាមម្រាមដៃ"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ដោះសោតាមទម្រង់មុខ"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"មានបញ្ហាពាក់ព័ន្ធនឹងមុខងារដោះសោតាមទម្រង់មុខ"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"ចុចដើម្បីលុបគំរូមុខរបស់អ្នក រួចបញ្ចូលមុខរបស់អ្នកម្ដងទៀត"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"រៀបចំការដោះសោតាមទម្រង់មុខ"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"ដោះសោទូរសព្ទរបស់អ្នកដោយសម្លឹងមើលវា"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"រៀបចំវិធីច្រើនទៀតដើម្បីដោះសោ"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ចុចដើម្បីបញ្ចូលស្នាមម្រាមដៃ"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"ការដោះសោដោយប្រើស្នាមម្រាមដៃ"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"មិនអាចប្រើឧបករណ៍ចាប់ស្នាមម្រាមដៃបានទេ"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"ទាក់ទងក្រុមហ៊ុនផ្ដល់ការជួសជុល។"</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"មិនអាចថតទិន្នន័យទម្រង់មុខបានត្រឹមត្រូវទេ។ សូមព្យាយាមម្ដងទៀត។"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"ភ្លឺពេក។ សូមសាកល្បងប្រើពន្លឺស្រាលជាងនេះ។"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"ងងឹតជ្រុល។ សូមសាកល្បងប្រើពន្លឺភ្លឺជាងនេះ។"</string>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index a25f272..4578a9e 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ಯಾವುದೇ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ನು ನೋಂದಣಿ ಮಾಡಿಲ್ಲ."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ಈ ಸಾಧನವು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಹೊಂದಿಲ್ಲ."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ಸೆನ್ಸಾರ್ ಅನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"ಸೆನ್ಸರ್ಗೆ ಕ್ಯಾಲಿಬ್ರೇಶನ್ನ ಅಗತ್ಯವಿದೆ"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"ಫಿಂಗರ್ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಬಳಸಿ"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅಥವಾ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಬಳಸಿ"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಐಕಾನ್"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ಫೇಸ್ ಅನ್ಲಾಕ್"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಕುರಿತು ಸಮಸ್ಯೆ ಇದೆ"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"ನಿಮ್ಮ ಫೇಸ್ ಮಾಡೆಲ್ ಅನ್ನು ಅಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ, ನಂತರ ನಿಮ್ಮ ಫೇಸ್ ಮಾಡೆಲ್ ಅನ್ನು ಪುನಃ ಸೇರಿಸಿ"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿ"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"ಫೋನ್ ಅನ್ನು ನೋಡುವ ಮೂಲಕ ಅನ್ಲಾಕ್ ಮಾಡಿ"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಹೆಚ್ಚಿನ ಮಾರ್ಗಗಳನ್ನು ಹೊಂದಿಸಿ"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಸೇರಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"ಸರಿಯಾಗಿ ಮುಖ ಕ್ಯಾಪ್ಚರ್ ಮಾಡಲಾಗಲಿಲ್ಲ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"ತುಂಬಾ ಪ್ರಕಾಶಮಾನವಾಗಿದೆ ಮಂದ ಪ್ರಕಾಶಮಾನವಿರುವ ಲೈಟ್ ಬಳಸಿ"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"ತುಂಬಾ ಕಪ್ಪು ಛಾಯೆಯಿದೆ. ಪ್ರಕಾಶಮಾನವಾದ ಲೈಟಿಂಗ್ ಬಳಸಿ."</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index dc56205..4494fe51 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"등록된 지문이 없습니다."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"기기에 지문 센서가 없습니다."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"센서가 일시적으로 사용 중지되었습니다."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"센서 보정 필요"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"지문 센서를 사용할 수 없습니다. 수리업체에 방문하세요."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"손가락 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"지문 사용"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"지문 또는 화면 잠금 사용"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"지문 아이콘"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"얼굴 인식 잠금 해제"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"얼굴 인식 잠금 해제 문제"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"탭하여 얼굴 모델을 삭제한 후 다시 얼굴을 추가하세요"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"얼굴 인식 잠금 해제 설정"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"휴대전화의 화면을 응시하여 잠금 해제할 수 있습니다."</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"다른 잠금 해제 방법 설정"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"지문을 추가하려면 탭하세요."</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"지문 잠금 해제"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"지문 센서를 사용할 수 없음"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"수리업체에 방문하세요."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"정확한 얼굴 데이터를 캡처하지 못했습니다. 다시 시도하세요."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"너무 밝습니다. 조명 밝기를 조금 낮춰보세요."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"너무 어둡습니다. 조명을 밝게 해 보세요."</string>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index d170a38..cc1bd2c 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Бир да манжа изи катталган эмес."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Бул түзмөктө манжа изинин сенсору жок."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сенсор убактылуу өчүрүлгөн."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Сенсорду тууралоо керек"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>-манжа"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Манжа изин колдонуу"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Манжа изин же экрандын кулпусун колдонуу"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Манжа изинин сүрөтчөсү"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Жүзүнөн таанып ачуу"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Жүзүнөн таанып ачуу функциясында маселе келип чыкты"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Жүзүңүздүн үлгүсүн өчүрүү үчүн басып, жаңы үлгүнү кошуңуз"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Жүзүнөн таанып ачууну жөндөө"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Телефонуңузду карап туруп эле кулпусун ачып алыңыз"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Кулпусун ачуунун көбүрөөк жолдорун жөндөңүз"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Манжа изин кошуу үчүн басыңыз"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Жүзүңүз жакшы тартылган жок. Кайталап көрүңүз."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Өтө жарык. Жарыктыкты азайтып көрүңүз."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Өтө караңгы. Жарыгыраак жерден тартып көрүңүз."</string>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 42b3583..02c41aa 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ບໍ່ມີການລົງທະບຽນລາຍນິ້ວມື."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ອຸປະກອນນີ້ບໍ່ມີເຊັນເຊີລາຍນິ້ວມື."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ປິດການເຮັດວຽກຂອງເຊັນເຊີໄວ້ຊົ່ວຄາວແລ້ວ."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"ຕ້ອງປັບທຽບມາດຕະຖານເຊັນເຊີ"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"ບໍ່ສາມາດໃຊ້ເຊັນເຊີລາຍນິ້ວມືໄດ້. ກະລຸນາໄປຫາຜູ້ໃຫ້ບໍລິການສ້ອມແປງ"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ນີ້ວມື <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ໃຊ້ລາຍນິ້ວມື"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ໃຊ້ລາຍນິ້ວມື ຫຼື ການລັອກໜ້າຈໍ"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ໄອຄອນລາຍນິ້ວມື"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ປົດລັອກດ້ວຍໜ້າ"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"ເກີດບັນຫາກັບການປົດລັອກດ້ວຍໜ້າ"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"ແຕະເພື່ອລຶບຮູບແບບໃບໜ້າຂອງທ່ານ, ຈາກນັ້ນເພີ່ມໃບໜ້າຂອງທ່ານໃສ່ໃໝ່"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"ຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"ປົດລັອກໂທລະສັບຂອງທ່ານໂດຍການເບິ່ງມັນ"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ຕັ້ງຄ່າວິທີເພີ່ມເຕີມເພື່ອປົດລັອກ"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ແຕະເພື່ອເພີ່ມລາຍນິ້ວມື"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"ປົດລັອກດ້ວຍລາຍນິ້ວມື"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"ບໍ່ສາມາດໃຊ້ເຊັນເຊີລາຍນິ້ວມືໄດ້"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"ກະລຸນາໄປຫາຜູ້ໃຫ້ບໍລິການສ້ອມແປງ."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"ບໍ່ສາມາດບັນທຶກຂໍ້ມູນໃບໜ້າທີ່ຖືກຕ້ອງໄດ້. ກະລຸນາລອງໃໝ່."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"ແຈ້ງເກີນໄປ. ລອງຄ່ອຍແສງໄຟລົງ."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"ມືດເກີນ. ກະລຸນາລອງໃຊ້ສະພາບແສງທີ່ແຈ້ງຂຶ້ນ."</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 9cac8d0..0a644b1 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -608,7 +608,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Neužregistruota jokių kontrolinių kodų."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Šiame įrenginyje nėra kontrolinio kodo jutiklio."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Jutiklis laikinai išjungtas."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Reikia sukalibruoti jutiklį"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Negalima naudoti kontrolinio kodo jutiklio. Apsilankykite pas taisymo paslaugos teikėją"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g> pirštas"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Naudoti kontrolinį kodą"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Naudoti kontrolinį kodą arba ekrano užraktą"</string>
@@ -618,14 +618,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Piršto antspaudo piktograma"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Atrakinimas pagal veidą"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Su atrakinimu pagal veidą susijusi problema"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Palieskite, kad ištrintumėte veido modelį, tada iš naujo pridėkite veidą"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Atrakinimo pagal veidą nustatymas"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Atrakinkite telefoną pažiūrėję į jį"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Daugiau atrakinimo metodų nustatymas"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Palieskite, kad pridėtumėte kontrolinį kodą"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Atrakinimas kontroliniu kodu"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Negalima naudoti kontrolinio kodo jutiklio"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Apsilankykite pas taisymo paslaugos teikėją."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Neužfiks. tikslūs veido duom. Bandykite dar kartą."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Per šviesu. Išbandykite mažesnį apšvietimą."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Per tamsu. Išbandykite šviesesnį apšvietimą."</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 15b293a..1647e3c 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -605,7 +605,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nav reģistrēts neviens pirksta nospiedums."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Šajā ierīcē nav pirksta nospieduma sensora."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensors ir īslaicīgi atspējots."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Nepieciešama sensora kalibrēšana."</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Nevar izmantot pirksta nospieduma sensoru. Sazinieties ar remonta pakalpojumu sniedzēju."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>. pirksts"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Pirksta nospieduma izmantošana"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Pirksta nospieduma vai ekrāna bloķēšanas metodes izmantošana"</string>
@@ -615,14 +615,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Pirksta nospieduma ikona"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Autorizācija pēc sejas"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problēma ar autorizāciju pēc sejas"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Pieskarieties, lai izdzēstu sejas modeli, un pēc tam vēlreiz pievienojiet seju"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Autorizācijas pēc sejas iestatīšana"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Atbloķējiet tālruni, skatoties uz to"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Citi atbloķēšanas veidi"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Pieskarieties, lai pievienotu pirksta nospiedumu"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Autorizācija ar pirksta nospiedumu"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Nevar izmantot pirksta nospieduma sensoru"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Sazinieties ar remonta pakalpojumu sniedzēju."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Neizdevās tvert sejas datus. Mēģiniet vēlreiz."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Pārāk spilgts. Izmēģiniet maigāku apgaismojumu."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Pārāk tumšs. Izmēģiniet spožāku apgaismojumu."</string>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 76aa7d0..df9c644 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Не се запишани отпечатоци."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Уредов нема сензор за отпечатоци."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сензорот е привремено оневозможен."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Сензорот треба да се калибрира"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Не може да се користи сензорот за отпечатоци. Однесете го на поправка"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Прст <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Користи отпечаток"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Користи отпечаток или заклучување екран"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Икона за отпечатоци"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Отклучување со лик"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Проблем со „Отклучување со лик“"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Допрете за да го избришете вашиот модел на лице, а потоа повторно додајте го лицето"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Поставете „Отклучување со лик“"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Отклучете го телефонот со гледање во него"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Поставете уште начини за отклучување"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Допрете за да додадете отпечаток"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Отклучување со отпечаток"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Не може да се користи сензорот за отпечатоци"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Однесете го на поправка."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Не се сними прецизна слика. Обидете се повторно."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Премногу светла. Пробајте со послабо осветлување."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Премногу темна. Пробајте со посилно осветлување."</string>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 7b9c6c4..c6b26a5 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"വിരലടയാളങ്ങൾ എൻറോൾ ചെയ്തിട്ടില്ല."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ഈ ഉപകരണത്തിൽ ഫിംഗർപ്രിന്റ് സെൻസറില്ല."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"സെൻസർ താൽക്കാലികമായി പ്രവർത്തനരഹിതമാക്കി."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"സെൻസറിന് കാലിബ്രേഷൻ ആവശ്യമാണ്"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"വിരലടയാള സെൻസർ ഉപയോഗിക്കാനാകുന്നില്ല. റിപ്പയർ കേന്ദ്രം സന്ദർശിക്കുക"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ഫിംഗർ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ഫിംഗർപ്രിന്റ് ഉപയോഗിക്കുക"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ഫിംഗർപ്രിന്റ് അല്ലെങ്കിൽ സ്ക്രീൻ ലോക്ക് ഉപയോഗിക്കുക"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ഫിംഗർപ്രിന്റ് ഐക്കൺ"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ഫെയ്സ് അൺലോക്ക്"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"ഫെയ്സ് അൺലോക്കുമായി ബന്ധപ്പെട്ട പ്രശ്നം"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"നിങ്ങളുടെ മുഖ മോഡൽ ഇല്ലാതാക്കാൻ ടാപ്പ് ചെയ്യുക, തുടർന്ന് അത് വീണ്ടും ചേർക്കുക"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"ഫെയ്സ് അൺലോക്ക് സജ്ജീകരിക്കുക"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"ഫോണിലേക്ക് നോക്കി അത് അൺലോക്ക് ചെയ്യുക"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"അൺലോക്ക് ചെയ്യുന്നതിനുള്ള കൂടുതൽ വഴികൾ സജ്ജീകരിക്കുക"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ഫിംഗർപ്രിന്റ് ചേർക്കാൻ ടാപ്പ് ചെയ്യുക"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"ഫിംഗർപ്രിന്റ് അൺലോക്ക്"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"വിരലടയാള സെൻസർ ഉപയോഗിക്കാനാകുന്നില്ല"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"റിപ്പയർ കേന്ദ്രം സന്ദർശിക്കുക."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"കൃത്യ മുഖ ഡാറ്റ എടുക്കാനായില്ല. വീണ്ടും ശ്രമിക്കൂ."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"വളരെയധികം തെളിച്ചം. സൗമ്യതയേറിയ പ്രകാശം ശ്രമിക്കൂ."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"വളരെ ഇരുണ്ടത്. തിളക്കമേറിയ ലൈറ്റിംഗ് പരീക്ഷിക്കുക."</string>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 1060595..06b6717 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Бүртгүүлсэн хурууны хээ алга."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Энэ төхөөрөмжид хурууны хээ мэдрэгч алга."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Мэдрэгчийг түр хугацаанд идэвхгүй болгосон."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Мэдрэгчид тохируулга шаардлагатай"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Хурууны хээ мэдрэгч ашиглах боломжгүй. Засварын үйлчилгээ үзүүлэгчид зочилно уу"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Хурууны хээ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Хурууны хээ ашиглах"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Хурууны хээ эсвэл дэлгэцийн түгжээ ашиглах"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Хурууны хээний дүрс"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Царайгаар түгжээ тайлах"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Царайгаар түгжээ тайлахтай холбоотой асуудал"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Нүүрний загвараа устгахын тулд товшоод, дараа нь царайгаа дахин нэмнэ үү"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Царайгаар түгжээ тайлахыг тохируулах"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Утас руугаа харж түгжээг нь тайлна уу"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Түгжээ тайлах илүү олон арга тохируулна уу"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Хурууны хээ нэмэхийн тулд товшино уу"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Хурууны хээгээр түгжээ тайлах"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Хурууны хээ мэдрэгч ашиглах боломжгүй"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Засварын үйлчилгээ үзүүлэгчид зочилно уу."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Царайн өгөгдлийг зөв авч чадсангүй. Дахин оролдоно уу."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Хэт цайвар байна. Гэрэл багатай газар оролдоно уу."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Хэт харанхуй байна. Гэрэлтэй орчинд туршина уу."</string>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 2012286..312cb3f 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"कोणत्याही फिंगरप्रिंटची नोंद झाली नाही"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"या डिव्हाइसमध्ये फिंगरप्रिंट सेन्सर नाही."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"सेन्सर तात्पुरता बंद केला आहे."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"सेन्सरला कॅलिब्रेट करण्याची आवश्यकता आहे"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"फिंगरप्रिंट सेन्सर वापरू शकत नाही. दुरुस्तीच्या सेवा पुरवठादाराला भेट द्या"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g> बोट"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"फिंगरप्रिंट वापरा"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"फिंगरप्रिंट किंवा स्क्रीन लॉक वापरा"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"फिंगरप्रिंट आयकन"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"फेस अनलॉक"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"फेस अनलॉकसंबंधित समस्या"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"फेस मॉडेल हटवण्यासाठी टॅप करा, त्यानंतर तुमचा चेहरा पुन्हा जोडा"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"फेस अनलॉक सेट करा"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"तुमच्या फोनकडे पाहून तो अनलॉक करा"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"अनलॉक करण्याच्या आणखी पद्धती सेट करा"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"फिंगरप्रिंट जोडण्यासाठी टॅप करा"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"फिंगरप्रिंट अनलॉक"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"फिंगरप्रिंट सेन्सर वापरू शकत नाही"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"दुरुस्तीच्या सेवा पुरवठादाराला भेट द्या."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"अचूक फेस डेटा कॅप्चर करता आला नाही. पुन्हा करा."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"खूप प्रखर. आणखी सौम्य प्रकाश वापरून पहा."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"खूप गडद. आणखी प्रखर प्रकाश वापरून पहा."</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 222272f..28da92e 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Tiada cap jari didaftarkan."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Peranti ini tiada penderia cap jari."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Penderia dilumpuhkan sementara."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Penderia memerlukan penentukuran"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Tidak boleh menggunakan penderia cap jari. Lawati penyedia pembaikan"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Jari <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Gunakan cap jari"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Gunakan cap jari atau kunci skrin"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon cap jari"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Buka Kunci Wajah"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Isu dengan Buka Kunci Wajah"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Ketik untuk memadamkan model wajah anda, kemudian tambahkan wajah anda semula"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Sediakan Buka Kunci Wajah"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Buka kunci telefon anda dengan melihat telefon anda"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Sediakan lebih banyak cara untuk membuka kunci"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Ketik untuk menambahkan cap jari"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Buka Kunci Cap Jari"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Tidak boleh menggunakan penderia cap jari"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Lawati penyedia pembaikan."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Gagal menangkap data wajah dgn tepat. Cuba lagi."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Terlalu terang. Cuba pencahayaan yang lebih lembut."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Terlalu gelap. Cuba pencahayaan yang lebih cerah."</string>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index d80011d..fbf4ff5 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"မည်သည့် လက်ဗွေကိုမျှ ထည့်သွင်းမထားပါ။"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ဤစက်တွင် လက်ဗွေအာရုံခံကိရိယာ မရှိပါ။"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"အာရုံခံကိရိယာကို ယာယီပိတ်ထားသည်။"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"အာရုံခံကိရိယာက စံကိုက်ချိန်ညှိခြင်း လိုအပ်သည်"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"လက်ဗွေ အာရုံခံကိရိယာကို အသုံးပြု၍ မရပါ။ ပြုပြင်ရေး ဝန်ဆောင်မှုပေးသူထံသို့ သွားပါ"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"လက်ချောင်း <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"လက်ဗွေ သုံးခြင်း"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"လက်ဗွေ (သို့) ဖန်သားပြင်လော့ခ်ချခြင်းကို သုံးခြင်း"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"လက်ဗွေ သင်္ကေတ"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ဆိုင်ရာ ပြဿနာ"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"သင်၏မျက်နှာနမူနာကို ဖျက်ရန် တို့ပါ။ ထို့နောက် သင့်မျက်နှာကို ထပ်ထည့်ပါ"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို ထည့်သွင်းပါ"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"သင့်ဖုန်းကိုကြည့်၍ သော့ဖွင့်ပါ"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"သော့ဖွင့်ရန် နောက်ထပ်နည်းလမ်းများကို စနစ်ထည့်သွင်းပါ"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"လက်ဗွေထည့်ရန် တို့ပါ"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"လက်ဗွေ အာရုံခံကိရိယာကို အသုံးပြု၍ မရပါ"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"ပြုပြင်ရေး ဝန်ဆောင်မှုပေးသူထံသို့ သွားပါ။"</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"မျက်နှာဒေတာ အမှန် မရိုက်ယူနိုင်ပါ၊ ထပ်စမ်းကြည့်ပါ။"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"အလွန် လင်းသည်။ အလင်းလျှော့ကြည့်ပါ။"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"အလွန်မှောင်သည်။ ပိုလင်းအောင် လုပ်ကြည့်ပါ။"</string>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 804031b..d530ffe 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Ingen fingeravtrykk er registrert."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Denne enheten har ikke fingeravtrykkssensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensoren er midlertidig slått av."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensoren må kalibreres"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Kan ikke bruke fingeravtrykkssensoren. Gå til en reparasjonsleverandør"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Bruk fingeravtrykk"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Bruk fingeravtrykk eller skjermlås"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon for fingeravtrykk"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ansiktslås"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problem med ansiktslås"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Trykk for å slette ansiktsmodellen din, og legg deretter til ansiktet på nytt"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Konfigurer ansiktslås"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Lås opp telefonen ved å se på den"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfigurer flere måter å låse opp på"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Trykk for å legge til et fingeravtrykk"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Opplåsing med fingeravtrykk"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Kan ikke bruke fingeravtrykkssensoren"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Gå til en reparasjonsleverandør."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Kunne ikke ta opp nøyaktige ansiktsdata Prøv igjen"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"For lyst. Prøv svakere belysning."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"For mørkt. Prøv sterkere belysning."</string>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index b24ba93..834aec2 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"कुनै पनि फिंगरप्रिन्ट दर्ता गरिएको छैन।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"यो डिभाइसमा कुनै पनि फिंगरप्रिन्ट सेन्सर छैन।"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"केही समयका लागि सेन्सर असक्षम पारियो।"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"सेन्सर क्यालिब्रेट गर्नु पर्ने हुन्छ"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"औंला <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"फिंगरप्रिन्ट प्रयोग गर्नुहोस्"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"फिंगरप्रिन्ट वा स्क्रिन लक प्रयोग गर्नुहोस्"</string>
@@ -620,6 +621,12 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"फोनमा हेरेकै भरमा फोन अनलक गर्नुहोस्"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"अनलक गर्ने अन्य तरिकाहरू सेटअप गर्नुहोस्"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"फिंगरप्रिन्ट हाल्न ट्याप गर्नुहोस्"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"अनुहारको सटीक डेटा खिच्न सकिएन। फेरि प्रयास गर्नुहोस्।"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"ज्यादै चम्किलो। अझ मधुरो प्रकाश प्रयोग गरी हेर्नु…"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"ज्यादै अँध्यारो छ। अझ बढी प्रकाशमा गई हेर्नुहोस्"</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 3525aba..c63f6f8 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Geen vingerafdrukken geregistreerd."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Dit apparaat heeft geen vingerafdruksensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor staat tijdelijk uit."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensor moet worden gekalibreerd"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Kan vingerafdruksensor niet gebruiken. Ga naar een reparateur."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Vinger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Vingerafdruk gebruiken"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Vingerafdruk of schermvergrendeling gebruiken"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Vingerafdruk-icoon"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ontgrendelen via gezicht"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Probleem met Ontgrendelen via gezichtsherkenning"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Tik om je gezichtsmodel te verwijderen en voeg je gezicht opnieuw toe"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Ontgrendeling via gezichtsherkenning instellen"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Ontgrendel je telefoon door ernaar te kijken"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Stel meer manieren in om te ontgrendelen"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tik om een vingerafdruk toe te voegen"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Ontgrendelen met vingerafdruk"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Kan vingerafdruksensor niet gebruiken"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Ga naar een reparateur."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Geen accurate gegevens. Probeer het nog eens."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Overbelicht. Probeer een minder felle belichting."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Te donker. Probeer een fellere verlichting."</string>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 19372f2..06d9dcd 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -585,8 +585,7 @@
<string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"ଅନ୍ୟ ଏକ ଟିପଚିହ୍ନ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ"</string>
<string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"ବହୁତ ଉଜ୍ଜ୍ୱଳ"</string>
<string name="fingerprint_acquired_try_adjusting" msgid="3667006071003809364">"ଆଡଜଷ୍ଟ କରି ଦେଖନ୍ତୁ"</string>
- <!-- no translation found for fingerprint_acquired_immobile (1621891895241888048) -->
- <skip />
+ <string name="fingerprint_acquired_immobile" msgid="1621891895241888048">"ପ୍ରତି ଥର ଆପଣଙ୍କ ଆଙ୍ଗୁଠିର ସ୍ଥାନ ସାମାନ୍ୟ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
<string-array name="fingerprint_acquired_vendor">
</string-array>
<string name="fingerprint_authenticated" msgid="2024862866860283100">"ଟିପଚିହ୍ନ ପ୍ରମାଣିତ ହେଲା"</string>
@@ -603,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"କୌଣସି ଆଙ୍ଗୁଠି ଚିହ୍ନ ପଞ୍ଜୀକୃତ ହୋଇନାହିଁ।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ଏହି ଡିଭାଇସ୍ରେ ଟିପଚିହ୍ନ ସେନ୍ସର୍ ନାହିଁ।"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ସେନ୍ସରକୁ ଅସ୍ଥାୟୀ ଭାବେ ଅକ୍ଷମ କରାଯାଇଛି।"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"ସେନ୍ସରକୁ କାଲିବ୍ରେଟ୍ କରିବା ଆବଶ୍ୟକ"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"ଆଙ୍ଗୁଠି <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ଟିପଚିହ୍ନ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ଟିପଚିହ୍ନ ବା ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
@@ -613,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ଟିପଚିହ୍ନ ଆଇକନ୍"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ଫେସ୍ ଅନଲକ୍"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"ଫେସ୍ ଅନଲକ୍ ସହ ସମସ୍ୟା"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"ଆପଣଙ୍କ ଫେସ୍ ମଡେଲକୁ ଡିଲିଟ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ, ତା\'ପରେ ପୁଣି ଆପଣଙ୍କ ଫେସ୍ ଯୋଗ କରନ୍ତୁ"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"ଫେସ୍ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରନ୍ତୁ"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"ଫୋନକୁ ଦେଖି ଏହାକୁ ଅନଲକ୍ କରନ୍ତୁ"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ଅନଲକ୍ କରିବା ପାଇଁ ଆହୁରି ଅଧିକ ଉପାୟ ସେଟ୍ ଅପ୍ କରନ୍ତୁ"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ଏକ ଟିପଚିହ୍ନ ଯୋଗ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"ମୁହଁର ଡାଟା କ୍ୟାପଚର୍ ହେଲାନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"ଅତ୍ୟଧିକ ଉଜ୍ଵଳ। କମ୍ ଉଜ୍ବଳକରଣରେ ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"ଅତ୍ୟଧିକ ଅନ୍ଧକାର। ଉଜ୍ବଳ ଲାଇଟ୍ ବ୍ୟବହାର କରନ୍ତୁ।"</string>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index cfd941d..a962bc3 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ਕੋਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਦਰਜ ਨਹੀਂ ਕੀਤੇ ਗਏ।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ਇਸ ਡੀਵਾਈਸ ਵਿੱਚ ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਨਹੀਂ ਹੈ।"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ਸੈਂਸਰ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"ਸੈਂਸਰ ਨੂੰ ਕੈਲੀਬਰੇਸ਼ਨ ਦੀ ਲੋੜ ਹੈ"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"ਉਂਗਲ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਜਾਂ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
@@ -620,6 +621,12 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"ਆਪਣੇ ਫ਼ੋਨ ਵੱਲ ਦੇਖ ਕੇ ਇਸਨੂੰ ਅਣਲਾਕ ਕਰੋ"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ਅਣਲਾਕ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕਿਆਂ ਦਾ ਸੈੱਟਅੱਪ ਕਰੋ"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"ਸਟੀਕ ਚਿਹਰਾ ਡਾਟਾ ਕੈਪਚਰ ਨਹੀਂ ਹੋਇਆ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"ਬਹੁਤ ਜ਼ਿਆਦਾ ਚਮਕ। ਹਲਕੀ ਚਮਕ ਵਰਤ ਕੇ ਦੇਖੋ।"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"ਬਹੁਤ ਗੂੜ੍ਹਾ। ਤੇਜ਼ ਰੋਸ਼ਨੀ ਕਰਕੇ ਦੇਖੋ।"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index f859510..769b28b91 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -608,7 +608,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nie zarejestrowano odcisków palców."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"To urządzenie nie jest wyposażone w czytnik linii papilarnych."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Czujnik jest tymczasowo wyłączony."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Czujnik wymaga kalibracji"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Nie można użyć czytnika linii papilarnych. Odwiedź serwis."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Odcisk palca <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Używaj odcisku palca"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Używaj odcisku palca lub blokady ekranu"</string>
@@ -618,14 +618,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona odcisku palca"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Rozpoznawanie twarzy"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problem z rozpoznawaniem twarzy"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Kliknij, aby usunąć model twarzy, a następnie ponownie dodaj skan twarzy"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Skonfiguruj rozpoznawanie twarzy"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Popatrz na ekran telefonu, aby go odblokować"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Skonfiguruj więcej sposobów odblokowywania"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Kliknij, aby dodać odcisk palca"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Odblokowywanie odciskiem palca"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Nie można użyć czytnika linii papilarnych"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Odwiedź serwis."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Nie udało się zarejestrować danych twarzy. Spróbuj ponownie."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Zbyt jasno. Spróbuj przy słabszym świetle."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Zbyt ciemno. Spróbuj w jaśniejszym świetle."</string>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 38e621a..04fae07 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nenhuma impressão digital registrada."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo não tem um sensor de impressão digital."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor desativado temporariamente."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"O sensor precisa ser calibrado"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Não foi possível usar o sensor de impressão digital. Entre em contato com uma assistência técnica"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Usar impressão digital"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Usar impressão digital ou bloqueio de tela"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloqueie o smartphone olhando para ele"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configure mais formas de desbloquear a tela"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toque para adicionar uma impressão digital"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Desbloqueio por impressão digital"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Não foi possível usar o sensor de impressão digital"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Entre em contato com uma assistência técnica."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Dados precisos não capturados. Tente novamente."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Muito iluminado. Diminua a iluminação."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Muito escuro. Use uma iluminação mais clara."</string>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 01f63f9..3e32496 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nenhuma impressão digital registada."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo não tem sensor de impressões digitais."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor temporariamente desativado."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"O sensor necessita de calibração"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Não é possível usar o sensor de impressões digitais. Visite um fornecedor de serviços de reparação"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Utilizar a impressão digital"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Utilizar o bloqueio de ecrã ou a impressão digital"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ícone de impressão digital"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueio facial"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problema com o Desbloqueio facial"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Toque para eliminar o seu modelo de rosto e, em seguida, adicione o seu rosto novamente"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Configure o Desbloqueio facial"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloqueie o telemóvel ao olhar para ele"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configure mais formas de desbloquear"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toque para adicionar uma impressão digital"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Desbloqueio por impressão digital"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Não é possível utilizar o sensor de impressões digitais"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Visite um fornecedor de serviços de reparação."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Imp. capt. dados rosto precisos. Tente novamente."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Demasiado clara. Experimente uma luz mais suave."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Demasiado escura. Experimente local com mais luz."</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 38e621a..04fae07 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nenhuma impressão digital registrada."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo não tem um sensor de impressão digital."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor desativado temporariamente."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"O sensor precisa ser calibrado"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Não foi possível usar o sensor de impressão digital. Entre em contato com uma assistência técnica"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Usar impressão digital"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Usar impressão digital ou bloqueio de tela"</string>
@@ -618,6 +618,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloqueie o smartphone olhando para ele"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configure mais formas de desbloquear a tela"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toque para adicionar uma impressão digital"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Desbloqueio por impressão digital"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Não foi possível usar o sensor de impressão digital"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Entre em contato com uma assistência técnica."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Dados precisos não capturados. Tente novamente."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Muito iluminado. Diminua a iluminação."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Muito escuro. Use uma iluminação mais clara."</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index a1f0c33..718203b 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -605,7 +605,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nu au fost înregistrate amprente."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Dispozitivul nu are senzor de amprentă."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzorul este dezactivat temporar."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Senzorul necesită calibrare"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"Degetul <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Folosiți amprenta"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Folosiți amprenta sau blocarea ecranului"</string>
@@ -615,14 +616,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Pictograma amprentă"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Deblocare facială"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problemă cu Deblocarea facială"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Atingeți pentru a șterge modelul facial, apoi adăugați din nou fața"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Configurați Deblocarea facială"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Deblocați-vă telefonul uitându-vă la acesta"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configurați mai multe moduri de deblocare"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Atingeți ca să adăugați o amprentă"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Nu s-a putut fotografia fața cu precizie. Încercați din nou."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Prea luminos. Încercați o lumină mai slabă."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Prea întunecat. Încercați o lumină mai puternică."</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 6c2b71c4..fe81df7 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -608,7 +608,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Нет отсканированных отпечатков пальцев"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"На этом устройстве нет сканера отпечатков пальцев."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сканер отпечатков пальцев временно отключен."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Требуется калибровка датчика."</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Невозможно использовать сканер отпечатков пальцев. Обратитесь в сервисный центр."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Отпечаток <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Использовать отпечаток пальца"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Использовать отпечаток пальца или блокировку экрана"</string>
@@ -618,14 +618,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Значок отпечатка пальца"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Фейсконтроль"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Ошибка фейсконтроля"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Нажмите, чтобы удалить модель лица, а затем добавьте ее снова."</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Настройка фейсконтроля"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Вы сможете разблокировать телефон, просто посмотрев на него."</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Настройте другие способы разблокировки"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Нажмите, чтобы добавить отпечаток пальца."</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Разблокировка по отпечатку пальца"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Невозможно использовать сканер отпечатков пальцев"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Обратитесь в сервисный центр."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Не удалось собрать данные. Повторите попытку."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Слишком светло. Сделайте освещение менее ярким."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Слишком темно. Сделайте освещение ярче."</string>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index c458428..f7b709d 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ඇඟිලි සලකුණු ඇතුළත් කර නොමැත."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"මෙම උපාංගයේ ඇඟිලි සලකුණු සංවේදකයක් නොමැත."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"සංවේදකය තාවකාලිකව අබල කර ඇත."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"සංවේදකයට ක්රමාංකනය අවශ්යයි"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"ඇඟිලි සලකුණු සංවේදකය භාවිත කළ නොහැකිය. අළුත්වැඩියා සැපයුම්කරුවෙකු බලන්න"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ඇඟිලි <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ඇඟිලි සලකුණ භාවිත කරන්න"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ඇඟිලි සලකුණ හෝ තිර අගුල භාවිත කරන්න"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ඇඟිලි සලකුණු නිරූපකය"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"මුහුණෙන් අගුළු ඇරීම"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"මුහුණෙන් අගුලු හැරීම සම්බන්ධව ගැටලුවකි"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"ඔබගේ මුහුණත ආකෘතිය මැකීමට තට්ටු කරන්න, අනතුරුව ඔබගේ මුහුණ නැවත එක් කරන්න"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"මුහුණෙන් අගුළු ඇරීම පිහිටුවන්න"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"ඔබගේ දුරකථනය දෙස බැලීමෙන් එහි අගුලු හරින්න"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"අගුලු හැරීමට තවත් ක්රම සකසන්න"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ඇඟිලි සලකුණක් එක් කිරීමට තට්ටු කරන්න"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"ඇඟිලි සලකුණු අගුළු ඇරීම"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"ඇඟිලි සලකුණු සංවේදකය භාවිත කළ නොහැකිය"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"අළුත්වැඩියා සැපයුම්කරුවෙකු බලන්න."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"නිරවද්ය මුහුණු දත්ත ගත නොහැකි විය. නැවත උත්සාහ කරන්න."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"දීප්තිය වැඩියි. තවත් මඳ ආලෝකය උත්සාහ කරන්න."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"ඉතා අඳුරුයි. තවත් දීප්තිමත් ආලෝකය උත්සාහ කරන්න."</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 5ba9a7a..abe06b1 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -608,7 +608,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Neregistrovali ste žiadne odtlačky prstov."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Toto zariadenie nemá senzor odtlačkov prstov."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je dočasne vypnutý."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Senzor vyžaduje kalibráciu"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Senzor odtlačkov prstov nie je možné používať. Navštívte poskytovateľa opráv."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst: <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Použiť odtlačok prsta"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Použiť odtlačok prsta alebo zámku obrazovky"</string>
@@ -618,14 +618,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona odtlačku prsta"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Odomknutie tvárou"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problém s odomknutím tvárou"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Klepnutím odstráňte model tváre a potom znova pridajte svoju tvár"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Nastavte odomknutie tvárou"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Odomykajte telefón tak, že sa naň pozriete"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Nastavte viac spôsobov odomknutia"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Klepnutím pridajte odtlačok prsta"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Odomknutie odtlačkom prsta"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Senzor odtlačkov prstov nie je možné používať"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Navštívte poskytovateľa opráv."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Nepodarilo sa nasnímať presné údaje o tvári. Skúste to znova."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Príliš veľa svetla. Skúste jemnejšie osvetlenie."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Príliš veľká tma. Skúste lepšie osvetlenie."</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index cf4d3fa..a329a45 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -608,7 +608,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Ni registriranih prstnih odtisov."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ta naprava nima tipala prstnih odtisov."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Tipalo je začasno onemogočeno."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Tipalo je treba umeriti"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Tipala prstnih odtisov ni mogoče uporabiti. Obiščite ponudnika popravil."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Uporaba prstnega odtisa"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Uporaba prstnega odtisa ali odklepanja s poverilnico"</string>
@@ -618,14 +618,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona prstnih odtisov"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Odklepanje z obrazom"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Težava z odklepanjem z obrazom"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Dotaknite se, da izbrišete model obraza, in nato znova dodajte obraz."</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Nastavitev odklepanja z obrazom"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Odklenite telefon tako, da ga pogledate."</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Nastavite več načinov odklepanja"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dotaknite se, da dodate prstni odtis."</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Odklepanje s prstnim odtisom"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Tipala prstnih odtisov ni mogoče uporabiti"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Obiščite ponudnika popravil."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Točnih podatkov o obrazu ni bilo mogoče zajeti. Poskusite znova."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Presvetlo. Poskusite z blažjo osvetlitvijo."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Pretemno. Poskusite z močnejšo osvetlitvijo."</string>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index f07305ae..13ec43e 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nuk ka asnjë gjurmë gishti të regjistruar."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Kjo pajisje nuk ka sensor të gjurmës së gishtit."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensori është çaktivizuar përkohësisht."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensori ka nevojë për kalibrim"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"Gishti <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Përdor gjurmën e gishtit"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Përdor gjurmën e gishtit ose kyçjen e ekranit"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona e gjurmës së gishtit"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Shkyçja me fytyrë"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Lëshoje me \"Shkyçjen me fytyrë\""</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Trokit për të fshirë modelin tënd të fytyrës, pastaj shtoje përsëri fytyrën tënde"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Konfiguro \"Shkyçjen me fytyrë\""</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Shkyçe telefonin duke parë tek ai"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfiguri më shumë mënyra për të shkyçur"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Trokit për të shtuar një gjurmë gishti"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"S\'mund të regjistroheshin të dhëna të sakta të fytyrës. Provo përsëri."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Me shumë ndriçim. Provo një ndriçim më të butë."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Shumë i errët. Provo një ndriçim më të fortë."</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index d3055ac..b3170a4 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -605,7 +605,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Није регистрован ниједан отисак прста."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Овај уређај нема сензор за отисак прста."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сензор је привремено онемогућен."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Сензор треба да се калибрише"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Не можете да користите сензор за отисак прста. Посетите добављача за поправке"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Прст <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Користите отисак прста"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Користите отисак прста или закључавање екрана"</string>
@@ -615,14 +615,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Икона отиска прста"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Откључавање лицем"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Проблем са откључавање лицем"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Додирните да бисте избрисали модел лица, па поново додајте своје лице"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Подесите откључавање лицем"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Откључајте телефон тако што ћете га погледати"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Подесите још начина за откључавање"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Додирните да бисте додали отисак прста"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Откључавање отиском прста"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Не можете да користите сензор за отисак прста"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Посетите добављача за поправке."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Снимање лица није успело. Пробајте поново."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Превише је светло. Пробајте са слабијим осветљењем."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Претамно је. Пробајте са јачим осветљењем."</string>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index f5345cb..ea0e9d6 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Inga fingeravtryck har registrerats."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Enheten har ingen fingeravtryckssensor."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensorn har tillfälligt inaktiverats."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensorn måste kalibreras"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Det går inte att använda fingeravtryckssensorn. Besök ett reparationsställe"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Använd ditt fingeravtryck"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Använd ditt fingeravtryck eller skärmlåset"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon för fingeravtryck"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ansiktslås"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Problem med ansiktslås"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Tryck för att radera ansiktsmodellen och lägg sedan till ansiktet igen"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Konfigurera ansiktslås"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Lås upp telefonen genom att titta på den"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfigurera fler sätt att låsa upp"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tryck för att lägga till ett fingeravtryck"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Fingeravtryckslås"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Det går inte att använda fingeravtryckssensorn"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Besök ett reparationsställe."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Det gick inte att fånga ansiktsdata. Försök igen."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Det är för ljust. Testa lägre belysning."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Det är för mörkt. Testa med bättre belysning."</string>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 3712022..98c9b07 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Hakuna alama za vidole zilizojumuishwa."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Kifaa hiki hakina kitambua alama ya kidole."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Kitambuzi kimezimwa kwa muda."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Kitambuzi kinahitaji kurekebishwa"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Imeshindwa kutumia kitambua alama ya kidole. Tembelea mtoa huduma za urekebishaji"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Kidole cha <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Tumia alama ya kidole"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Tumia alama ya kidole au mbinu ya kufunga skrini"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Aikoni ya alama ya kidole"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Kufungua kwa uso"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Hitilafu imetokea kwenye kipengele cha Kufungua kwa uso"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Gusa ili ufute muundo wa uso wako, kisha uweke uso wako tena"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Weka mipangilio ya Kufungua kwa uso"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Fungua simu yako kwa kuiangalia"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Weka mipangilio ya mbinu zaidi za kufungua"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Gusa ili uweke alama ya kidole"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Kufungua kwa Alama ya Kidole"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Imeshindwa kutumia kitambua alama ya kidole"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Tembelea mtoa huduma za urekebishaji."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Imeshindwa kunasa data sahihi ya uso. Jaribu tena."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Inang\'aa mno. Jaribu mwangaza hafifu"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Hakuna mwangaza wa kutosha. Jaribu kuongeza mwangaza."</string>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index fc10f19..ffc54b9 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -47,7 +47,7 @@
<string name="mismatchPin" msgid="2929611853228707473">"உள்ளிட்ட பின்கள் பொருந்தவில்லை."</string>
<string name="invalidPin" msgid="7542498253319440408">"4 இலிருந்து 8 எண்கள் வரையுள்ள பின் ஐத் தட்டச்சு செய்யவும்."</string>
<string name="invalidPuk" msgid="8831151490931907083">"8 அல்லது அதற்கு மேல் எண்கள் உள்ள PUK ஐத் தட்டச்சு செய்யவும்."</string>
- <string name="needPuk" msgid="7321876090152422918">"உங்கள் சிம் கார்டு PUK பூட்டுதல் செய்யப்பட்டுள்ளது. அதைத் திறக்க PUK குறியீட்டைத் உள்ளிடவும்."</string>
+ <string name="needPuk" msgid="7321876090152422918">"உங்கள் சிம் கார்டு PUK பூட்டுதல் செய்யப்பட்டுள்ளது. அதை அன்லாக் செய்ய PUK குறியீட்டை உள்ளிடவும்."</string>
<string name="needPuk2" msgid="7032612093451537186">"சிம் கார்டைத் தடுப்பு நீக்க PUK2 ஐ உள்ளிடவும்."</string>
<string name="enablePin" msgid="2543771964137091212">"தோல்வி, சிம்/RUIM பூட்டை இயக்கவும்."</string>
<plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584">
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"கைரேகைப் பதிவுகள் எதுவும் இல்லை."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"இந்தச் சாதனத்தில் கைரேகை சென்சார் இல்லை."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"சென்சார் தற்காலிகமாக முடக்கப்பட்டுள்ளது."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"சென்சாரைச் சீரமைக்க வேண்டும்"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"கைரேகை <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"கைரேகையைப் பயன்படுத்து"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"கைரேகையையோ திரைப் பூட்டையோ பயன்படுத்து"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"கைரேகை ஐகான்"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"முகம் காட்டித் திறத்தல்"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"முகம் காட்டித் திறத்தல் அம்சத்தில் சிக்கல்"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"முகத் தோற்றப் பதிவைத் தட்டி நீக்கிவிட்டு உங்கள் முகத்தை மீண்டும் சேர்க்கவும்"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"\'முகம் காட்டித் திறத்தல்\' அம்சத்தை அமைத்தல்"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"மொபைலைப் பார்ப்பதன் மூலம் அதைத் திறக்கலாம்"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"திறக்க, மேலும் பல வழிகளை அமையுங்கள்"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"கைரேகையைச் சேர்க்கத் தட்டுங்கள்"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"முகம் தெளிவாகப் பதிவாகவில்லை. மீண்டும் முயலவும்."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"அதிக ஒளிர்வு. மிதமான ஒளியில் முயலவும்."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"இருட்டாக உள்ளது. பிரகாசமான ஒளியில் முயலவும்."</string>
@@ -887,7 +892,7 @@
<string name="lockscreen_pattern_correct" msgid="8050630103651508582">"சரி!"</string>
<string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"மீண்டும் முயற்சிக்கவும்"</string>
<string name="lockscreen_password_wrong" msgid="8605355913868947490">"மீண்டும் முயற்சிக்கவும்"</string>
- <string name="lockscreen_storage_locked" msgid="634993789186443380">"எல்லா அம்சங்கள் & தரவை பெற, சாதனத்தை திறக்கவும்"</string>
+ <string name="lockscreen_storage_locked" msgid="634993789186443380">"எல்லா அம்சங்கள் & தரவை பெற, சாதனத்தை அன்லாக் செய்யவும்"</string>
<string name="faceunlock_multiple_failures" msgid="681991538434031708">"முகம் காட்டித் திறத்தல் அம்சத்தை அதிகமுறை பயன்படுத்துவிட்டீர்கள்"</string>
<string name="lockscreen_missing_sim_message_short" msgid="1248431165144893792">"சிம் கார்டு இல்லை"</string>
<string name="lockscreen_missing_sim_message" product="tablet" msgid="8596805728510570760">"டேப்லெட்டில் சிம் கார்டு இல்லை."</string>
@@ -913,10 +918,10 @@
<string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"திறப்பதற்கான வடிவத்தை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
<string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"உங்கள் கடவுச்சொல்லை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக உள்ளிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
<string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"உங்கள் பின்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக உள்ளிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="3069635524964070596">"திறப்பதற்கான வடிவத்தை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக வரைந்தால், உங்கள் Google உள்நுழைவைப் பயன்படுத்தி டேப்லெட்டைத் திறக்குமாறு கேட்கப்படுவீர்கள். \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"திறப்பதற்கான பேட்டர்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக வரைந்தால் உங்கள் Google உள்நுழைவைப் பயன்படுத்தி Android TVயைத் திறக்குமாறு கேட்கப்படுவீர்கள். \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
- <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"திறப்பதற்கான வடிவத்தை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக வரைந்தால், உங்கள் Google உள்நுழைவைப் பயன்படுத்தி மொபைலைத் திறக்குமாறு கேட்கப்படுவீர்கள். \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"டேப்லெட்டைத் தடைநீக்க <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு, டேப்லெட்டானது ஆரம்ப இயல்புநிலைக்கு மீட்டமைக்கப்பட்டு, எல்லா பயனர் தரவும் இழக்கப்படும்."</string>
+ <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="3069635524964070596">"அன்லாக் வடிவத்தை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக வரைந்தால், உங்கள் Google உள்நுழைவைப் பயன்படுத்தி டேப்லெட்டை அன்லாக் செய்யுமாறு கேட்கப்படுவீர்கள். \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
+ <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"அன்லாக் பேட்டர்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக வரைந்தால் உங்கள் Google உள்நுழைவைப் பயன்படுத்தி Android TVயை அன்லாக் செய்யுமாறு கேட்கப்படுவீர்கள். \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
+ <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"அன்லாக் பேட்டர்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக வரைந்தால், உங்கள் Google உள்நுழைவைப் பயன்படுத்தி மொபைலை அன்லாக் செய்யுமாறு கேட்கப்படுவீர்கள். \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"டேப்லெட்டை அன்லாக் செய்ய <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு, டேப்லெட்டானது ஆரம்ப இயல்புநிலைக்கு மீட்டமைக்கப்பட்டு, எல்லா பயனர் தரவும் இழக்கப்படும்."</string>
<string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"உங்கள் Android TVயில் <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறான கடவுச்சொல்லை உள்ளிட்டுத் திறக்க முயன்றுள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறான கடவுச்சொல்லை உள்ளிட்டு முயன்றால் உங்கள் Android TV ஆரம்ப நிலைக்கு மீட்டமைக்கப்படுவதுடன் பயனரின் அனைத்துத் தரவையும் இழக்க நேரிடும்."</string>
<string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"தொலைபேசியைத் தடைநீக்க <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு, தொலைபேசியானது ஆரம்ப இயல்புநிலைக்கு மீட்டமைக்கப்பட்டு, எல்லா பயனர் தரவும் இழக்கப்படும்."</string>
<string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"நீங்கள் டேப்லெட்டைத் தடைநீக்க <xliff:g id="NUMBER">%d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். டேப்லெட் இப்போது ஆரம்ப இயல்புநிலைக்கு மீட்டமைக்கப்படும்."</string>
@@ -924,7 +929,7 @@
<string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="2203704707679895487">"நீங்கள் தொலைபேசியைத் தடைநீக்க <xliff:g id="NUMBER">%d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். தொலைபேசி இப்போது ஆரம்ப இயல்புநிலைக்கு மீட்டமைக்கப்படும்."</string>
<string name="lockscreen_too_many_failed_attempts_countdown" msgid="6807200118164539589">"<xliff:g id="NUMBER">%d</xliff:g> வினாடிகள் கழித்து மீண்டும் முயற்சிக்கவும்."</string>
<string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"வடிவத்தை மறந்துவிட்டீர்களா?"</string>
- <string name="lockscreen_glogin_forgot_pattern" msgid="9218940117797602518">"கணக்கைத் திற"</string>
+ <string name="lockscreen_glogin_forgot_pattern" msgid="9218940117797602518">"கணக்கை அன்லாக் செய்"</string>
<string name="lockscreen_glogin_too_many_attempts" msgid="3775904917743034195">"அதிகமான வடிவ முயற்சிகள்"</string>
<string name="lockscreen_glogin_instructions" msgid="4695162942525531700">"திறக்க, Google கணக்கு மூலம் உள்நுழையவும்."</string>
<string name="lockscreen_glogin_username_hint" msgid="6916101478673157045">"பயனர்பெயர் (மின்னஞ்சல் முகவரி)"</string>
@@ -946,7 +951,7 @@
<string name="keyguard_accessibility_add_widget" msgid="8245795023551343672">"விட்ஜெட்டைச் சேர்க்கவும்."</string>
<string name="keyguard_accessibility_widget_empty_slot" msgid="544239307077644480">"காலியானது"</string>
<string name="keyguard_accessibility_unlock_area_expanded" msgid="7768634718706488951">"திறக்கும் பகுதி விரிவாக்கப்பட்டது."</string>
- <string name="keyguard_accessibility_unlock_area_collapsed" msgid="4729922043778400434">"திறக்கும் பகுதி சுருக்கப்பட்டது."</string>
+ <string name="keyguard_accessibility_unlock_area_collapsed" msgid="4729922043778400434">"அன்லாக் செய்வதற்கான பகுதி சுருக்கப்பட்டது."</string>
<string name="keyguard_accessibility_widget" msgid="6776892679715699875">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> விட்ஜெட்."</string>
<string name="keyguard_accessibility_user_selector" msgid="1466067610235696600">"பயனர் தேர்வி"</string>
<string name="keyguard_accessibility_status" msgid="6792745049712397237">"நிலை"</string>
@@ -955,12 +960,12 @@
<string name="keyguard_accessibility_widget_reorder_start" msgid="7066213328912939191">"விட்ஜெட்டை மீண்டும் வரிசைப்படுத்துவது தொடங்கியது."</string>
<string name="keyguard_accessibility_widget_reorder_end" msgid="1083806817600593490">"விட்ஜெட்டை மீண்டும் வரிசைப்படுத்துவது முடிந்தது."</string>
<string name="keyguard_accessibility_widget_deleted" msgid="1509738950119878705">"விட்ஜெட் <xliff:g id="WIDGET_INDEX">%1$s</xliff:g> நீக்கப்பட்டது."</string>
- <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"திறப்பதற்கான பகுதியை விவரிக்கவும்."</string>
+ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"அன்லாக் செய்வதற்கான பகுதியை விரிவாக்கவும்"</string>
<string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"ஸ்லைடு மூலம் திறத்தல்."</string>
<string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"பேட்டர்ன் மூலம் திறத்தல்."</string>
<string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"முகம் காட்டித் திறத்தல்."</string>
<string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin மூலம் திறத்தல்."</string>
- <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"சிம்மைத் திறக்கும் பின்."</string>
+ <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"சிம் பின் அன்லாக்."</string>
<string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"சிம்மைத் திறக்கும் Puk."</string>
<string name="keyguard_accessibility_password_unlock" msgid="6130186108581153265">"கடவுச்சொல் மூலம் திறத்தல்."</string>
<string name="keyguard_accessibility_pattern_area" msgid="1419570880512350689">"வடிவப் பகுதி."</string>
@@ -1568,7 +1573,7 @@
<string name="shareactionprovider_share_with" msgid="2753089758467748982">"இவர்களுடன் பகிர்"</string>
<string name="shareactionprovider_share_with_application" msgid="4902832247173666973">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> உடன் பகிர்"</string>
<string name="content_description_sliding_handle" msgid="982510275422590757">"ஸ்லைடிங் ஹேன்டில். தொட்டுப் பிடிக்கவும்."</string>
- <string name="description_target_unlock_tablet" msgid="7431571180065859551">"திறக்க ஸ்வைப் செய்யவும்."</string>
+ <string name="description_target_unlock_tablet" msgid="7431571180065859551">"அன்லாக் செய்ய ஸ்வைப் செய்யவும்."</string>
<string name="action_bar_home_description" msgid="1501655419158631974">"முகப்பிற்கு வழிசெலுத்து"</string>
<string name="action_bar_up_description" msgid="6611579697195026932">"மேலே வழிசெலுத்து"</string>
<string name="action_menu_overflow_description" msgid="4579536843510088170">"மேலும் விருப்பங்கள்"</string>
@@ -1665,7 +1670,7 @@
<string name="kg_invalid_puk" msgid="4809502818518963344">"சரியான PUK குறியீட்டை மீண்டும் உள்ளிடவும். தொடர் முயற்சிகள் சிம் ஐ நிரந்தரமாக முடக்கிவிடும்."</string>
<string name="kg_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"பின் குறியீடுகள் பொருந்தவில்லை"</string>
<string name="kg_login_too_many_attempts" msgid="699292728290654121">"அதிகமான வடிவ முயற்சிகள்"</string>
- <string name="kg_login_instructions" msgid="3619844310339066827">"திறக்க, உங்கள் Google கணக்கு மூலம் உள்நுழையவும்."</string>
+ <string name="kg_login_instructions" msgid="3619844310339066827">"அன்லாக் செய்ய உங்கள் Google கணக்கு மூலம் உள்நுழையவும்."</string>
<string name="kg_login_username_hint" msgid="1765453775467133251">"பயனர்பெயர் (மின்னஞ்சல்)"</string>
<string name="kg_login_password_hint" msgid="3330530727273164402">"கடவுச்சொல்"</string>
<string name="kg_login_submit_button" msgid="893611277617096870">"உள்நுழைக"</string>
@@ -1678,12 +1683,12 @@
<string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"டேப்லெட்டைத் திறக்க <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு, டேப்லெட்டானது ஆரம்பநிலைக்கு மீட்டமைக்கப்பட்டு, எல்லா பயனர் தரவையும் இழப்பீர்கள்."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"உங்கள் Android TVயில் <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறான கடவுச்சொல்லை உள்ளிட்டுத் திறக்க முயன்றுள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறான கடவுச்சொல்லை உள்ளிட்டு முயன்றால் உங்கள் Android TV ஆரம்ப நிலைக்கு மீட்டமைக்கப்படுவதுடன் பயனரின் அனைத்துத் தரவையும் இழக்க நேரிடும்."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"மொபைலைத் திறக்க <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு,மொபைலானது ஆரம்பநிலைக்கு மீட்டமைக்கப்பட்டு, எல்லா பயனர் தரவையும் இழப்பீர்கள்."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"டேப்லெட்டைத் திறக்க <xliff:g id="NUMBER">%d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். டேப்லெட் இப்போது ஆரம்பநிலைக்கு மீட்டமைக்கப்படும்."</string>
+ <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"டேப்லெட்டை அன்லாக் செய்ய <xliff:g id="NUMBER">%d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். டேப்லெட் இப்போது ஆரம்பநிலைக்கு மீட்டமைக்கப்படும்."</string>
<string name="kg_failed_attempts_now_wiping" product="tv" msgid="5045460916106267585">"உங்கள் Android TVயில் <xliff:g id="NUMBER">%d</xliff:g> முறை தவறான கடவுச்சொல்லை உள்ளிட்டுத் திறக்க முயன்றுள்ளீர்கள். இப்போது உங்கள் Android TV ஆரம்ப நிலைக்கு மீட்டமைக்கப்படும்."</string>
<string name="kg_failed_attempts_now_wiping" product="default" msgid="5043730590446071189">"மொபைலைத் திறக்க <xliff:g id="NUMBER">%d</xliff:g> முறை தவறாக முயற்சித்துள்ளீர்கள். மொபைல் இப்போது ஆரம்பநிலைக்கு மீட்டமைக்கப்படும்."</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="7086799295109717623">"திறப்பதற்கான வடிவத்தை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். மேலும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு, மின்னஞ்சல் கணக்கைப் பயன்படுத்தி உங்கள் டேப்லெட்டைத் திறக்க கேட்கப்படுவீர்கள்.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகளில் மீண்டும் முயற்சிக்கவும்."</string>
<string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"திறப்பதற்கான பேட்டர்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துவிட்டீர்கள். இன்னும் <xliff:g id="NUMBER_1">%2$d</xliff:g> முறை தவறாக வரைந்தால் மின்னஞ்சல் கணக்கைப் பயன்படுத்தி Android TVயைத் திறக்கும்படி கேட்கப்படுவீர்கள்.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
- <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"திறப்பதற்கான வடிவத்தை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். மேலும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு, மின்னஞ்சல் கணக்கைப் பயன்படுத்தி உங்கள் மொபைலைத் திறக்கக் கேட்கப்படுவீர்கள்.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
+ <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"அன்லாக் வடிவத்தை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். மேலும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு, மின்னஞ்சல் கணக்கைப் பயன்படுத்தி உங்கள் மொபைலை அன்லாக் செய்யக் கேட்கப்படுவீர்கள்.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
<string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
<string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"அகற்று"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"பரிந்துரைத்த அளவை விட ஒலியை அதிகரிக்கவா?\n\nநீண்ட நேரத்திற்கு அதிகளவில் ஒலி கேட்பது கேட்கும் திறனைப் பாதிக்கலாம்."</string>
@@ -1988,7 +1993,7 @@
<string name="new_sms_notification_content" msgid="3197949934153460639">"பார்க்க, SMS பயன்பாட்டைத் திறக்கவும்"</string>
<string name="profile_encrypted_title" msgid="9001208667521266472">"சில செயலுக்கு கட்டுப்பாடு இருக்கலாம்"</string>
<string name="profile_encrypted_detail" msgid="5279730442756849055">"பணிக் கணக்கு பூட்டியுள்ளது"</string>
- <string name="profile_encrypted_message" msgid="1128512616293157802">"பணிக் கணக்கை திறக்க, தட்டுக"</string>
+ <string name="profile_encrypted_message" msgid="1128512616293157802">"பணிக் கணக்கை அன்லாக் செய்யத் தட்டுக"</string>
<string name="usb_mtp_launch_notification_title" msgid="774319638256707227">"<xliff:g id="PRODUCT_NAME">%1$s</xliff:g> உடன் இணைக்கப்பட்டது"</string>
<string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"கோப்புகளைப் பார்க்க, தட்டவும்"</string>
<string name="pin_target" msgid="8036028973110156895">"பின் செய்"</string>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 46ecba9..acb1157 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"వేలిముద్రలు నమోదు చేయబడలేదు."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ఈ పరికరంలో వేలిముద్ర సెన్సార్ ఎంపిక లేదు."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"సెన్సార్ తాత్కాలికంగా డిజేబుల్ చేయబడింది."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"సెన్సార్కు కాలిబ్రేషన్ అవసరం"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"వేలు <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"వేలిముద్రను ఉపయోగించండి"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"వేలిముద్ర లేదా స్క్రీన్ లాక్ను ఉపయోగించండి"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"వేలిముద్ర చిహ్నం"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ఫేస్ అన్లాక్"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"ఫేస్ అన్లాక్తో సమస్య"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"ఫేస్ మోడల్ను తొలగించడానికి నొక్కండి, ఆపై మీ ముఖాన్ని మళ్లీ జోడించండి"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"ఫేస్ అన్లాక్ను సెటప్ చేయండి"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"మీ ఫోన్ను చూడటం ద్వారా దాన్ని అన్లాక్ చేయండి"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"అన్లాక్ చేయడానికి మరిన్ని మార్గాలను సెటప్ చేయండి"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"వేలిముద్రను జోడించడానికి ట్యాప్ చేయండి"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"ముఖం డేటా సరిగ్గా రాలేదు. మళ్లీ ప్రయత్నించండి."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"వెలుతురు అధికంగా ఉంది. తక్కువ ఉండేలా చూడండి."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"చాలా చీకటిగా ఉంది. బాగా వెలుతురులో ప్రయత్నించండి."</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 0e9d5aa..137543b 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ไม่มีลายนิ้วมือที่ลงทะเบียน"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"อุปกรณ์นี้ไม่มีเซ็นเซอร์ลายนิ้วมือ"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ปิดใช้เซ็นเซอร์ชั่วคราวแล้ว"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"ต้องปรับเทียบเซ็นเซอร์"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"นิ้ว <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"ใช้ลายนิ้วมือ"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"ใช้ลายนิ้วมือหรือการล็อกหน้าจอ"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ไอคอนลายนิ้วมือ"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"การปลดล็อกด้วยใบหน้า"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"มีปัญหาเกี่ยวกับฟีเจอร์ปลดล็อกด้วยใบหน้า"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"แตะเพื่อลบรูปแบบใบหน้า แล้วเพิ่มใบหน้าอีกครั้ง"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"ตั้งค่าการปลดล็อกด้วยใบหน้า"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"ปลดล็อกโทรศัพท์โดยมองไปที่โทรศัพท์"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ตั้งค่าการปลดล็อกด้วยวิธีอื่น"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"แตะเพื่อเพิ่มลายนิ้วมือ"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"บันทึกข้อมูลใบหน้าที่ถูกต้องไม่ได้ ลองอีกครั้ง"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"สว่างเกินไป ลองหาตำแหน่งที่แสงน้อยกว่านี้"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"มืดเกินไป ลองหาตำแหน่งที่สว่างขึ้น"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index f5d2cf3..351760c 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Walang naka-enroll na fingerprint."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Walang sensor ng fingerprint ang device na ito."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Pansamantalang na-disable ang sensor."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Kailangang i-calibrate ang sensor"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Hindi magamit ang sensor para sa fingerprint. Bumisita sa provider ng pag-aayos"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Daliri <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Gumamit ng fingerprint"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Gumamit ng fingerprint o lock ng screen"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icon ng fingerprint"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Pag-unlock Gamit ang Mukha"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Isyu sa Pag-unlock Gamit ang Mukha"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"I-tap para i-delete ang iyong face model, pagkatapos ay idagdag ulit ang mukha mo"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"I-set up ang Pag-unlock Gamit ang Mukha"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"I-unlock ang iyong telepono sa pamamagitan ng pagtingin dito"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Mag-set up ng higit pang paraan para mag-unlock"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"I-tap para magdagdag ng fingerprint"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Pag-unlock Gamit ang Fingerprint"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Hindi magamit ang sensor para sa fingerprint"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Bumisita sa provider ng pag-aayos."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Hindi makakuha ng tamang face data. Subukang muli."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Masyadong maliwanag. Subukang bawasan ang liwanag."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Masyadong madilim. Subukan sa mas maliwanag."</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index b93dfe2..828a24e 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Parmak izi kaydedilmedi."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Bu cihazda parmak izi sensörü yok."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensör geçici olarak devre dışı bırakıldı."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensörün kalibre edilmesi gerekiyor"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Parmak izi sensörü kullanılamıyor. Bir onarım hizmeti sağlayıcıyı ziyaret edin"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>. parmak"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Parmak izi kullan"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Parmak izi veya ekran kilidi kullan"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Parmak izi simgesi"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Yüz Tanıma Kilidi"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Yüz Tanıma Kilidi sorunu"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Yüz modelinizi silmek için dokunup ardından yüzünüzü yeniden ekleyin"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Yüz Tanıma Kilidi\'ni kurma"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Telefonunuza bakarak kilidini açın"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Kilidi açmak için daha fazla yöntem ayarlayın"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Parmak izi eklemek için dokunun"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Parmak İzi Kilidi"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Parmak izi sensörü kullanılamıyor"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Bir onarım hizmeti sağlayıcıyı ziyaret edin."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Doğru yüz verileri yakalanamadı. Tekrar deneyin."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Çok parlak. Parlaklığı daha az bir ışıklandırma deneyin."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Çok karanlık. Daha parlak ışıkta deneyin."</string>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 90b8881..a0e7340 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -608,7 +608,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Відбитки пальців не зареєстровано."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"На цьому пристрої немає сканера відбитків пальців."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Датчик тимчасово вимкнено."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Потрібно відкалібрувати датчик"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Не вдається скористатися сканером відбитків пальців. Зверніться до постачальника послуг із ремонту."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Відбиток пальця <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Доступ за відбитком пальця"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Використовувати відбиток пальця або дані для розблокування екрана"</string>
@@ -624,6 +624,9 @@
<string name="face_setup_notification_content" msgid="5463999831057751676">"Ви зможете розблоковувати телефон, подивившись на нього"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Налаштуйте більше способів розблокування"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Натисніть, щоб додати відбиток пальця"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Розблокування відбитком пальця"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Не вдається скористатися сканером відбитків пальців"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Зверніться до постачальника послуг із ремонту."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Не вдалося чітко зняти обличчя. Повторіть спробу."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Занадто яскраво. Потрібно менше світла."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Занадто темно. Потрібно більше світла."</string>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index fbdcec5..fdf288f 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"کوئی فنگر پرنٹ مندرج شدہ نہیں ہے۔"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"اس آلہ میں فنگر پرنٹ سینسر نہیں ہے۔"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"سینسر عارضی طور غیر فعال ہے۔"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"سینسر کو کیلیبریشن کی ضرورت ہے"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"انگلی <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"فنگر پرنٹ استعمال کریں"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"فنگر پرنٹ یا اسکرین لاک استعمال کریں"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"فنگر پرنٹ آئیکن"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"فیس اَنلاک"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"فیس اَنلاک میں مسئلہ"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"اپنے چہرے کا ماڈل حذف کرنے کے لیے تھپتھپائیں پھر اپنا چہرہ دوبارہ شامل کریں"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"فیس اَنلاک سیٹ اپ کریں"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"اپنے فون کی طرف دیکھ کر اسے غیر مقفل کریں"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"غیر مقفل کرنے کے مزید طریقے سیٹ اپ کریں"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"فنگر پرنٹ شامل کرنے کیلئے تھپتھپائیں"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"چہرے کا درست ڈيٹا کیپچر نہیں ہو سکا۔ پھر آزمائيں۔"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"کافی روشنی ہے۔ ہلکی روشنی میں آزمائیں۔"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"کافی اندھیرا ہے۔ تیز روشنی میں آزمائیں۔"</string>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 293aa3f..eabed94 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Hech qanday barmoq izi qayd qilinmagan."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Bu qurilmada barmoq izi skaneri mavjud emas."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor vaqtincha faol emas."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Sensorni sozlash kerak"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"Barmoq izi <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Barmoq izi ishlatish"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Barmoq izi yoki ekran qulfi"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Barmoq izi belgisi"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Yuz bilan ochish"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Yuz bilan ochishda muammo bor"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Yuz modelini oʻchirish uchun bosing va keyin yana yuzni qoʻshing"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Yuz bilan ochishni sozlash"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Telefoningizni yuz tekshiruvi yordamida qulfdan chiqaring"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Qulfdan chiqarishning boshqa usullarini sozlang"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Barmoq izi kiritish uchun bosing"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Yuz ravshan suratga olinmadi. Qaytadan urining."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Juda yorqin. Biroz soyaroq joy tanlang."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Juda qorongʻi. Atrofingizni yoriting."</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 1febf0c..75bda5f 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Chưa đăng ký vân tay."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Thiết bị này không có cảm biến vân tay."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Đã tạm thời tắt cảm biến."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Cảm biến cần hiệu chỉnh"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Không thể dùng cảm biến vân tay. Hãy liên hệ với một nhà cung cấp dịch vụ sửa chữa"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Ngón tay <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Dùng vân tay"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Dùng vân tay hoặc phương thức khóa màn hình"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Biểu tượng vân tay"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Mở khóa bằng khuôn mặt"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Vấn đề với tính năng Mở khóa bằng khuôn mặt"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Nhấn để xóa mẫu khuôn mặt, sau đó thêm lại khuôn mặt của bạn"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Thiết lập tính năng Mở khóa bằng khuôn mặt"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Mở khóa điện thoại bằng cách nhìn vào điện thoại"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Thiết lập thêm những cách mở khóa khác"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Nhấn để thêm vân tay"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Mở khóa bằng vân tay"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Không thể dùng cảm biến vân tay"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Hãy liên hệ với một nhà cung cấp dịch vụ sửa chữa."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Không thể ghi lại đúng dữ liệu mặt. Hãy thử lại."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Quá sáng. Hãy thử giảm độ sáng."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Quá tối. Hãy thử tăng độ sáng."</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index cc0babc..cdb7e92 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -602,7 +602,8 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"未注册任何指纹。"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"此设备没有指纹传感器。"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"传感器已暂时停用。"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"传感器需要校准"</string>
+ <!-- no translation found for fingerprint_error_bad_calibration (4385512597740168120) -->
+ <skip />
<string name="fingerprint_name_template" msgid="8941662088160289778">"手指 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"使用指纹"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"使用指纹或屏幕锁定凭据"</string>
@@ -612,14 +613,18 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"指纹图标"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"人脸解锁"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"人脸解锁存在问题"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"请点按以删除您的脸部模型,然后再添加您的脸部模型"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"设置人脸解锁"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"脸部对准手机即可将其解锁"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"设置更多解锁方式"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"点按即可添加指纹"</string>
+ <!-- no translation found for fingerprint_recalibrate_notification_name (1414578431898579354) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_title (2406561052064558497) -->
+ <skip />
+ <!-- no translation found for fingerprint_recalibrate_notification_content (8519935717822194943) -->
+ <skip />
<string name="face_acquired_insufficient" msgid="2150805835949162453">"无法捕获准确的人脸数据,请重试。"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"亮度过高,请尝试使用较柔和的亮度。"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"亮度不足,请尝试将光线调亮。"</string>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 9fa3934..a4706b1 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"未註冊任何指紋"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"此裝置沒有指紋感應器。"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"感應器已暫時停用。"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"需要校正感應器"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"指紋感應器無法使用,請洽詢維修供應商"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"手指 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"使用指紋鎖定"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"使用指紋或螢幕鎖定"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"指紋圖示"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"面孔解鎖"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"「面孔解鎖」功能發生問題"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"請輕按這裡刪除面部模型,然後再重新新增"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"設定「面孔解鎖」"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"直望手機即可解鎖"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"設定更多解鎖方法"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"輕按即可新增指紋"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"指紋解鎖"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"指紋感應器無法使用"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"請洽詢維修供應商。"</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"無法擷取準確的臉容資料。請再試一次。"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"影像太亮。請嘗試在更暗的環境下使用。"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"影像太暗。請嘗試在更明亮的環境下使用。"</string>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index e16b92b..4aab254 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"未登錄任何指紋。"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"這個裝置沒有指紋感應器。"</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"感應器已暫時停用。"</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"必須校正感應器"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"指紋感應器無法使用,請洽詢維修供應商"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"手指 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"使用指紋"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"使用指紋或螢幕鎖定功能"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"指紋圖示"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"人臉解鎖"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"人臉解鎖功能發生問題"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"請輕觸這裡刪除臉部模型,然後再重新新增"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"設定人臉解鎖功能"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"看著手機就能解鎖"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"設定更多解鎖方式"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"輕觸即可新增指紋"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"指紋解鎖"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"指紋感應器無法使用"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"請洽詢維修供應商。"</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"無法擷取精準臉孔資料,請再試一次。"</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"亮度過高,請嘗試使用較柔和的照明方式。"</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"亮度不足,請嘗試使用較明亮的照明方式。"</string>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index cd41fc1..37247d9 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -602,7 +602,7 @@
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Azikho izigxivizo zeminwe ezibhalisiwe."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Le divayisi ayinayo inzwa yezigxivizo zeminwe."</string>
<string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Inzwa ikhutshazwe okwesikhashana."</string>
- <string name="fingerprint_error_bad_calibration" msgid="374406495079531135">"Inzwa idinga ukulinganisa"</string>
+ <string name="fingerprint_error_bad_calibration" msgid="4385512597740168120">"Ayikwazi ukusebenzisa inzwa yesigxivizo somunwe. Vakashela umhlinzeki wokulungisa"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Umunwe ongu-<xliff:g id="FINGERID">%d</xliff:g>"</string>
<string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Sebenzisa izigxivizo zeminwe"</string>
<string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Sebenzisa izigxivizo zeminwe noma ukukhiya isikrini"</string>
@@ -612,14 +612,15 @@
</string-array>
<string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Isithonjana sezigxivizo zeminwe"</string>
<string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ukuvula ubuso"</string>
- <!-- no translation found for face_recalibrate_notification_title (2524791952735579082) -->
- <skip />
- <!-- no translation found for face_recalibrate_notification_content (3064513770251355594) -->
- <skip />
+ <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"Inkinga Ngokuvula ngobuso"</string>
+ <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"Thepha ukuze usule imodeli yakho yobuso, bese wengeza futhi ubuso"</string>
<string name="face_setup_notification_title" msgid="8843461561970741790">"Setha Ukuvula ngobuso"</string>
<string name="face_setup_notification_content" msgid="5463999831057751676">"Vula ifoni yakho ngokuyibheka"</string>
<string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Setha izindlela eziningi zokuvula"</string>
<string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Thepha ukuze ungeze izigxivizo zomunwe"</string>
+ <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"Ukuvula ngesigxivizo somunwe"</string>
+ <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"Ayikwazi ukusebenzisa inzwa yesigxivizo somunwe"</string>
+ <string name="fingerprint_recalibrate_notification_content" msgid="8519935717822194943">"Vakashela umhlinzeki wokulungisa."</string>
<string name="face_acquired_insufficient" msgid="2150805835949162453">"Ayikwazanga ukuthwebula idatha enembile yobuso. Zama futhi."</string>
<string name="face_acquired_too_bright" msgid="8070756048978079164">"Kukhanya kakhulu. Zama ukukhanya okuthambile."</string>
<string name="face_acquired_too_dark" msgid="252573548464426546">"Kumnyama kakhulu Zama ukukhanyisa okukhanyayo."</string>
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index 8fae80d..93e4a29 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -121,8 +121,6 @@
":FrameworksCoreTests_keyset_splat_api",
":FrameworksCoreTests_locales",
":FrameworksCoreTests_overlay_config",
- ":FrameworksCoreTests_res_version_after",
- ":FrameworksCoreTests_res_version_before",
":FrameworksCoreTests_version_1",
":FrameworksCoreTests_version_1_diff",
":FrameworksCoreTests_version_1_nosys",
diff --git a/core/tests/coretests/apks/res_upgrade/Android.bp b/core/tests/coretests/apks/res_upgrade/Android.bp
deleted file mode 100644
index c58614f..0000000
--- a/core/tests/coretests/apks/res_upgrade/Android.bp
+++ /dev/null
@@ -1,22 +0,0 @@
-package {
- // See: http://go/android-license-faq
- // A large-scale-change added 'default_applicable_licenses' to import
- // all of the 'license_kinds' from "frameworks_base_license"
- // to get the below license kinds:
- // SPDX-license-identifier-Apache-2.0
- default_applicable_licenses: ["frameworks_base_license"],
-}
-
-android_test_helper_app {
- name: "FrameworksCoreTests_res_version_before",
- defaults: ["FrameworksCoreTests_apks_defaults"],
- resource_dirs: ["res_before"],
- certificate: ":FrameworksCoreTests_unit_test_cert",
-}
-
-android_test_helper_app {
- name: "FrameworksCoreTests_res_version_after",
- defaults: ["FrameworksCoreTests_apks_defaults"],
- resource_dirs: ["res_after"],
- certificate: ":FrameworksCoreTests_unit_test_cert",
-}
diff --git a/core/tests/coretests/apks/res_upgrade/AndroidManifest.xml b/core/tests/coretests/apks/res_upgrade/AndroidManifest.xml
deleted file mode 100644
index 1c607c9..0000000
--- a/core/tests/coretests/apks/res_upgrade/AndroidManifest.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 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.
- -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.frameworks.coretests.res_version">
- <application android:hasCode="false"/>
-</manifest>
diff --git a/core/tests/coretests/apks/res_upgrade/res_before/values/values.xml b/core/tests/coretests/apks/res_upgrade/res_before/values/values.xml
deleted file mode 100644
index 63fc790..0000000
--- a/core/tests/coretests/apks/res_upgrade/res_before/values/values.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ Copyright (C) 2021 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.
- -->
-
-<resources>
- <string name="version">before</string>
- <public type="string" name="version" id="0x7f010000"/>
-</resources>
diff --git a/core/tests/coretests/src/android/content/ContextTest.java b/core/tests/coretests/src/android/content/ContextTest.java
index 51cdd82..3d7d807 100644
--- a/core/tests/coretests/src/android/content/ContextTest.java
+++ b/core/tests/coretests/src/android/content/ContextTest.java
@@ -25,22 +25,14 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import android.app.ActivityThread;
-import android.app.PendingIntent;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageInstaller;
-import android.content.pm.PackageManager;
import android.content.res.Configuration;
-import android.content.res.Resources;
import android.graphics.PixelFormat;
import android.hardware.display.DisplayManager;
import android.hardware.display.VirtualDisplay;
import android.media.ImageReader;
-import android.os.FileUtils;
import android.os.UserHandle;
import android.view.Display;
@@ -49,20 +41,12 @@
import androidx.test.filters.SmallTest;
import androidx.test.platform.app.InstrumentationRegistry;
-import com.android.compatibility.common.util.ShellIdentityUtils;
-import com.android.frameworks.coretests.R;
-
import org.junit.Test;
import org.junit.runner.RunWith;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.TimeUnit;
-
/**
- * Build/Install/Run:
- * atest FrameworksCoreTests:ContextTest
+ * Build/Install/Run:
+ * atest FrameworksCoreTests:ContextTest
*/
@SmallTest
@RunWith(AndroidJUnit4.class)
@@ -224,132 +208,6 @@
assertFalse(context.isUiContext());
}
- private static class TestReceiver extends BroadcastReceiver implements AutoCloseable {
- private static final String INTENT_ACTION = "com.android.server.pm.test.test_app.action";
- private final ArrayBlockingQueue<Intent> mResults = new ArrayBlockingQueue<>(1);
-
- public IntentSender makeIntentSender() {
- return PendingIntent.getBroadcast(getContext(), 0, new Intent(INTENT_ACTION),
- PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE_UNAUDITED)
- .getIntentSender();
- }
-
- public void waitForIntent() throws InterruptedException {
- assertNotNull(mResults.poll(30, TimeUnit.SECONDS));
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- mResults.add(intent);
- }
-
- public void register() {
- getContext().registerReceiver(this, new IntentFilter(INTENT_ACTION));
- }
-
- @Override
- public void close() throws Exception {
- getContext().unregisterReceiver(this);
- }
-
- private Context getContext() {
- return InstrumentationRegistry.getInstrumentation().getContext();
- }
- }
-
- @Test
- public void applicationContextBeforeAndAfterUpgrade() throws Exception {
- final Context context = InstrumentationRegistry.getInstrumentation().getContext();
- final String testPackageName = "com.android.frameworks.coretests.res_version";
- try {
- final PackageManager pm = context.getPackageManager();
- final int versionRes = 0x7f010000;
-
- final Context appContext = ApplicationProvider.getApplicationContext();
- installApk(appContext, R.raw.res_version_before);
-
- ApplicationInfo info = pm.getApplicationInfo(testPackageName, 0);
- final Context beforeContext = appContext.createApplicationContext(info, 0);
- assertEquals("before", beforeContext.getResources().getString(versionRes));
-
- installApk(appContext, R.raw.res_version_after);
-
- info = pm.getApplicationInfo(testPackageName, 0);
- final Context afterContext = appContext.createApplicationContext(info, 0);
- assertEquals("before", beforeContext.createConfigurationContext(Configuration.EMPTY)
- .getResources().getString(versionRes));
- assertEquals("after", afterContext.createConfigurationContext(Configuration.EMPTY)
- .getResources().getString(versionRes));
- assertNotEquals(beforeContext.getPackageResourcePath(),
- afterContext.getPackageResourcePath());
- } finally {
- uninstallPackage(context, testPackageName);
- }
- }
-
- @Test
- public void packageContextBeforeAndAfterUpgrade() throws Exception {
- final Context context = InstrumentationRegistry.getInstrumentation().getContext();
- final String testPackageName = "com.android.frameworks.coretests.res_version";
- try {
- final int versionRes = 0x7f010000;
- final Context appContext = ApplicationProvider.getApplicationContext();
- installApk(appContext, R.raw.res_version_before);
-
- final Context beforeContext = appContext.createPackageContext(testPackageName, 0);
- assertEquals("before", beforeContext.getResources().getString(versionRes));
-
- installApk(appContext, R.raw.res_version_after);
-
- final Context afterContext = appContext.createPackageContext(testPackageName, 0);
- assertEquals("before", beforeContext.createConfigurationContext(Configuration.EMPTY)
- .getResources().getString(versionRes));
- assertEquals("after", afterContext.createConfigurationContext(Configuration.EMPTY)
- .getResources().getString(versionRes));
- assertNotEquals(beforeContext.getPackageResourcePath(),
- afterContext.getPackageResourcePath());
- } finally {
- uninstallPackage(context, testPackageName);
- }
- }
-
- private void installApk(Context context, int rawApkResId) throws Exception {
- final PackageManager pm = context.getPackageManager();
- final PackageInstaller pi = pm.getPackageInstaller();
- final PackageInstaller.SessionParams params = new PackageInstaller.SessionParams(
- PackageInstaller.SessionParams.MODE_FULL_INSTALL);
- final int sessionId = pi.createSession(params);
-
- try (PackageInstaller.Session session = pi.openSession(sessionId)) {
- // Copy the apk to the install session.
- final Resources resources = context.getResources();
- try (InputStream is = resources.openRawResource(rawApkResId);
- OutputStream sessionOs = session.openWrite("base", 0, -1)) {
- FileUtils.copy(is, sessionOs);
- }
-
- // Wait for the installation to finish
- try (TestReceiver receiver = new TestReceiver()) {
- receiver.register();
- ShellIdentityUtils.invokeMethodWithShellPermissions(session,
- (s) -> {
- s.commit(receiver.makeIntentSender());
- return true;
- });
- receiver.waitForIntent();
- }
- }
- }
-
- private void uninstallPackage(Context context, String packageName) throws Exception {
- try (TestReceiver receiver = new TestReceiver()) {
- receiver.register();
- final PackageInstaller pi = context.getPackageManager().getPackageInstaller();
- pi.uninstall(packageName, receiver.makeIntentSender());
- receiver.waitForIntent();
- }
- }
-
private Context createUiContext() {
final Context appContext = ApplicationProvider.getApplicationContext();
final DisplayManager displayManager = appContext.getSystemService(DisplayManager.class);
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index 0fc8e03..8f5273e 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -498,6 +498,8 @@
<permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" />
<!-- Permission required for CTS test - CtsAlarmManagerTestCases -->
<permission name="android.permission.UPDATE_DEVICE_STATS" />
+ <!-- Permission required for GTS test - PendingSystemUpdateTest -->
+ <permission name="android.permission.NOTIFY_PENDING_SYSTEM_UPDATE" />
</privapp-permissions>
<privapp-permissions package="com.android.statementservice">
diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml
index ca7d077e..f646039 100644
--- a/libs/WindowManager/Shell/res/values-fa/strings.xml
+++ b/libs/WindowManager/Shell/res/values-fa/strings.xml
@@ -45,7 +45,7 @@
<string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"٪۵۰ بالا"</string>
<string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"٪۳۰ بالا"</string>
<string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"تمامصفحه پایین"</string>
- <string name="one_handed_tutorial_title" msgid="4583241688067426350">"استفاده از «حالت تک حرکت»"</string>
+ <string name="one_handed_tutorial_title" msgid="4583241688067426350">"استفاده از حالت یکدستی"</string>
<string name="one_handed_tutorial_description" msgid="3486582858591353067">"برای خارج شدن، از پایین صفحهنمایش تند بهطرف بالا بکشید یا در هر جایی از بالای برنامه که میخواهید ضربه بزنید"</string>
<string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"آغاز «حالت تک حرکت»"</string>
<string name="accessibility_action_stop_one_handed" msgid="1369940261782179442">"خروج از «حالت تک حرکت»"</string>
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
index d0b919c..a02fa9b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java
@@ -25,6 +25,7 @@
import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_EXPANDED_VIEW;
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES;
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
+import static com.android.wm.shell.bubbles.BubblePositioner.MAX_HEIGHT;
import android.annotation.NonNull;
import android.annotation.SuppressLint;
@@ -60,7 +61,6 @@
import androidx.annotation.Nullable;
import com.android.internal.policy.ScreenDecorationsUtils;
-import com.android.launcher3.icons.IconNormalizer;
import com.android.wm.shell.R;
import com.android.wm.shell.TaskView;
import com.android.wm.shell.common.AlphaOptimizedButton;
@@ -77,7 +77,6 @@
// The triangle pointing to the expanded view
private View mPointerView;
- private int mPointerMargin;
@Nullable private int[] mExpandedViewContainerLocation;
private AlphaOptimizedButton mManageButton;
@@ -102,9 +101,6 @@
*/
private boolean mIsAlphaAnimating = false;
- private int mMinHeight;
- private int mOverflowHeight;
- private int mManageButtonHeight;
private int mPointerWidth;
private int mPointerHeight;
private float mPointerRadius;
@@ -348,12 +344,8 @@
void updateDimensions() {
Resources res = getResources();
- mMinHeight = res.getDimensionPixelSize(R.dimen.bubble_expanded_default_height);
- mOverflowHeight = res.getDimensionPixelSize(R.dimen.bubble_overflow_height);
-
updateFontSize();
- mPointerMargin = res.getDimensionPixelSize(R.dimen.bubble_pointer_margin);
mPointerWidth = res.getDimensionPixelSize(R.dimen.bubble_pointer_width);
mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height);
mPointerRadius = getResources().getDimensionPixelSize(R.dimen.bubble_pointer_radius);
@@ -369,7 +361,6 @@
updatePointerView();
}
- mManageButtonHeight = res.getDimensionPixelSize(R.dimen.bubble_manage_button_height);
if (mManageButton != null) {
int visibility = mManageButton.getVisibility();
removeView(mManageButton);
@@ -633,12 +624,11 @@
}
if ((mBubble != null && mTaskView != null) || mIsOverflow) {
- float desiredHeight = mIsOverflow
- ? mPositioner.isLargeScreen() ? getMaxExpandedHeight() : mOverflowHeight
- : mBubble.getDesiredHeight(mContext);
- desiredHeight = Math.max(desiredHeight, mMinHeight);
- float height = Math.min(desiredHeight, getMaxExpandedHeight());
- height = Math.max(height, mMinHeight);
+ float desiredHeight = mPositioner.getExpandedViewHeight(mBubble);
+ int maxHeight = mPositioner.getMaxExpandedViewHeight(mIsOverflow);
+ float height = desiredHeight == MAX_HEIGHT
+ ? maxHeight
+ : Math.min(desiredHeight, maxHeight);
FrameLayout.LayoutParams lp = mIsOverflow
? (FrameLayout.LayoutParams) mOverflowView.getLayoutParams()
: (FrameLayout.LayoutParams) mTaskView.getLayoutParams();
@@ -662,23 +652,6 @@
}
}
- private int getMaxExpandedHeight() {
- int expandedContainerY = mExpandedViewContainerLocation != null
- // Remove top insets back here because availableRect.height would account for that
- ? mExpandedViewContainerLocation[1] - mPositioner.getInsets().top
- : 0;
- int settingsHeight = mIsOverflow ? 0 : mManageButtonHeight;
- int pointerHeight = mPositioner.showBubblesVertically()
- ? mPointerWidth
- : (int) (mPointerHeight - mPointerOverlap + mPointerMargin);
- return mPositioner.getAvailableRect().height()
- - expandedContainerY
- - getPaddingTop()
- - getPaddingBottom()
- - settingsHeight
- - pointerHeight;
- }
-
/**
* Update appearance of the expanded view being displayed.
*
@@ -728,14 +701,11 @@
: mPointerHeight - mPointerOverlap;
setPadding((int) paddingLeft, (int) paddingTop, (int) paddingRight, 0);
- final float expandedViewY = mPositioner.getExpandedViewY();
- // TODO: I don't understand why it works but it does - why normalized in portrait
- // & not in landscape? Am I missing ~2dp in the portrait expandedViewY calculation?
- final float normalizedSize = IconNormalizer.getNormalizedCircleSize(
- mPositioner.getBubbleSize());
- final float bubbleCenter = showVertically
- ? bubblePosition + (mPositioner.getBubbleSize() / 2f) - expandedViewY
- : bubblePosition + (normalizedSize / 2f) - mPointerWidth;
+ // Subtract the expandedViewY here because the pointer is placed within the expandedView.
+ float pointerPosition = mPositioner.getPointerPosition(bubblePosition);
+ final float bubbleCenter = mPositioner.showBubblesVertically()
+ ? pointerPosition - mPositioner.getExpandedViewY(mBubble, bubblePosition)
+ : pointerPosition;
// Post because we need the width of the view
post(() -> {
float pointerY;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
index c600f56..0a856a8 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java
@@ -34,6 +34,7 @@
import androidx.annotation.VisibleForTesting;
+import com.android.launcher3.icons.IconNormalizer;
import com.android.wm.shell.R;
import java.lang.annotation.Retention;
@@ -58,6 +59,8 @@
/** When the bubbles are collapsed in a stack only some of them are shown, this is how many. **/
public static final int NUM_VISIBLE_WHEN_RESTING = 2;
+ /** Indicates a bubble's height should be the maximum available space. **/
+ public static final int MAX_HEIGHT = -1;
private Context mContext;
private WindowManager mWindowManager;
@@ -68,13 +71,16 @@
private int mMaxBubbles;
private int mBubbleSize;
- private int mBubbleBadgeSize;
private int mSpacingBetweenBubbles;
private int mExpandedViewLargeScreenWidth;
private int mExpandedViewPadding;
private int mPointerMargin;
- private float mPointerWidth;
- private float mPointerHeight;
+ private int mPointerWidth;
+ private int mPointerHeight;
+ private int mPointerOverlap;
+ private int mManageButtonHeight;
+ private int mExpandedViewMinHeight;
+ private int mOverflowHeight;
private PointF mPinLocation;
private PointF mRestingStackPosition;
@@ -151,7 +157,6 @@
Resources res = mContext.getResources();
mBubbleSize = res.getDimensionPixelSize(R.dimen.bubble_size);
- mBubbleBadgeSize = res.getDimensionPixelSize(R.dimen.bubble_badge_size);
mSpacingBetweenBubbles = res.getDimensionPixelSize(R.dimen.bubble_spacing);
mDefaultMaxBubbles = res.getInteger(R.integer.bubbles_max_rendered);
@@ -161,6 +166,10 @@
mPointerWidth = res.getDimensionPixelSize(R.dimen.bubble_pointer_width);
mPointerHeight = res.getDimensionPixelSize(R.dimen.bubble_pointer_height);
mPointerMargin = res.getDimensionPixelSize(R.dimen.bubble_pointer_margin);
+ mPointerOverlap = res.getDimensionPixelSize(R.dimen.bubble_pointer_overlap);
+ mManageButtonHeight = res.getDimensionPixelSize(R.dimen.bubble_manage_button_height);
+ mExpandedViewMinHeight = res.getDimensionPixelSize(R.dimen.bubble_expanded_default_height);
+ mOverflowHeight = res.getDimensionPixelSize(R.dimen.bubble_overflow_height);
mMaxBubbles = calculateMaxBubbles();
@@ -296,8 +305,8 @@
return mPaddings;
}
- /** Calculates the y position of the expanded view when it is expanded. */
- public float getExpandedViewY() {
+ /** Gets the y position of the expanded view if it was top-aligned. */
+ private float getExpandedViewYTopAligned() {
final int top = getAvailableRect().top;
if (showBubblesVertically()) {
return top - mPointerWidth;
@@ -306,6 +315,116 @@
}
}
+ /** The maximum height the expanded view can be. */
+ public int getMaxExpandedViewHeight(boolean isOverflow) {
+ int paddingTop = showBubblesVertically()
+ ? 0
+ : mPointerHeight;
+ int settingsHeight = isOverflow ? 0 : mManageButtonHeight;
+ // Subtract pointer size because it's laid out in LinearLayout with the expanded view.
+ int pointerSize = showBubblesVertically()
+ ? mPointerWidth
+ : (mPointerHeight + mPointerMargin);
+ // Subtract top insets because availableRect.height would account for that
+ int expandedContainerY = (int) getExpandedViewYTopAligned() - getInsets().top;
+ return getAvailableRect().height()
+ - expandedContainerY
+ - paddingTop
+ - settingsHeight
+ - pointerSize;
+ }
+
+ /**
+ * Determines the height for the bubble, ensuring a minimum height. If the height should be as
+ * big as available, returns {@link #MAX_HEIGHT}.
+ */
+ public float getExpandedViewHeight(BubbleViewProvider bubble) {
+ boolean isOverflow = bubble == null || BubbleOverflow.KEY.equals(bubble.getKey());
+ float desiredHeight = isOverflow
+ ? mOverflowHeight
+ : ((Bubble) bubble).getDesiredHeight(mContext);
+ int manageButtonHeight = isOverflow ? 0 : mManageButtonHeight;
+ desiredHeight = Math.max(manageButtonHeight + desiredHeight, mExpandedViewMinHeight);
+ if (desiredHeight > getMaxExpandedViewHeight(isOverflow)) {
+ return MAX_HEIGHT;
+ }
+ return desiredHeight;
+ }
+
+ /**
+ * Gets the y position for the expanded view. This is the position on screen of the top
+ * horizontal line of the expanded view.
+ *
+ * @param bubble the bubble being positioned.
+ * @param bubblePosition the x position of the bubble if showing on top, the y position of the
+ * bubble if showing vertically.
+ * @return the y position for the expanded view.
+ */
+ public float getExpandedViewY(BubbleViewProvider bubble, float bubblePosition) {
+ boolean isOverflow = bubble == null || BubbleOverflow.KEY.equals(bubble.getKey());
+ float expandedViewHeight = getExpandedViewHeight(bubble);
+ float topAlignment = getExpandedViewYTopAligned();
+ if (!showBubblesVertically() || expandedViewHeight == MAX_HEIGHT) {
+ // Top-align when bubbles are shown at the top or are max size.
+ return topAlignment;
+ }
+ // If we're here, we're showing vertically & developer has made height less than maximum.
+ int manageButtonHeight = isOverflow ? 0 : mManageButtonHeight;
+ float pointerPosition = getPointerPosition(bubblePosition);
+ float bottomIfCentered = pointerPosition + (expandedViewHeight / 2) + manageButtonHeight;
+ float topIfCentered = pointerPosition - (expandedViewHeight / 2);
+ if (topIfCentered > mPositionRect.top && mPositionRect.bottom > bottomIfCentered) {
+ // Center it
+ return pointerPosition - mPointerWidth - (expandedViewHeight / 2f);
+ } else if (topIfCentered <= mPositionRect.top) {
+ // Top align
+ return topAlignment;
+ } else {
+ // Bottom align
+ return mPositionRect.bottom - manageButtonHeight - expandedViewHeight - mPointerWidth;
+ }
+ }
+
+ /**
+ * The position the pointer points to, the center of the bubble.
+ *
+ * @param bubblePosition the x position of the bubble if showing on top, the y position of the
+ * bubble if showing vertically.
+ * @return the position the tip of the pointer points to. The x position if showing on top, the
+ * y position if showing vertically.
+ */
+ public float getPointerPosition(float bubblePosition) {
+ // TODO: I don't understand why it works but it does - why normalized in portrait
+ // & not in landscape? Am I missing ~2dp in the portrait expandedViewY calculation?
+ final float normalizedSize = IconNormalizer.getNormalizedCircleSize(
+ getBubbleSize());
+ return showBubblesVertically()
+ ? bubblePosition + (getBubbleSize() / 2f)
+ : bubblePosition + (normalizedSize / 2f) - mPointerWidth;
+ }
+
+ /**
+ * When bubbles are expanded in portrait, they display at the top of the screen in a horizontal
+ * row. When in landscape or on a large screen, they show at the left or right side in a
+ * vertical row. This method accounts for screen orientation and will return an x or y value
+ * for the position of the bubble in the row.
+ *
+ * @param index bubble index in the row.
+ * @param numberOfBubbles the number of bubbles (including the overflow) in the row.
+ * @return the y position of the bubble if showing vertically and the x position if showing
+ * horizontally.
+ */
+ public float getBubbleXOrYForOrientation(int index, int numberOfBubbles) {
+ final float positionInBar = index * (mBubbleSize + mSpacingBetweenBubbles);
+ final float expandedStackSize = (numberOfBubbles * mBubbleSize)
+ + ((numberOfBubbles - 1) * mSpacingBetweenBubbles);
+ final float centerPosition = showBubblesVertically()
+ ? mPositionRect.centerY()
+ : mPositionRect.centerX();
+ final float rowStart = centerPosition - (expandedStackSize / 2f);
+ return rowStart + positionInBar;
+ }
+
/**
* Sets the stack's most recent position along the edge of the screen. This is saved when the
* last bubble is removed, so that the stack can be restored in its previous position.
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
index 92e455c..2c6136b 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java
@@ -874,8 +874,10 @@
mExpandedAnimationController.expandFromStack(() -> {
afterExpandedViewAnimation();
} /* after */);
+ final float translationY = mPositioner.getExpandedViewY(mExpandedBubble,
+ getBubbleIndex(mExpandedBubble));
mExpandedViewContainer.setTranslationX(0f);
- mExpandedViewContainer.setTranslationY(mPositioner.getExpandedViewY());
+ mExpandedViewContainer.setTranslationY(translationY);
mExpandedViewContainer.setAlpha(1f);
}
removeOnLayoutChangeListener(mOrientationChangedListener);
@@ -1524,6 +1526,7 @@
bubble.cleanupViews();
}
updatePointerPosition();
+ updateExpandedView();
logBubbleEvent(bubble, FrameworkStatsLog.BUBBLE_UICHANGED__ACTION__DISMISSED);
return;
}
@@ -1815,9 +1818,10 @@
mTaskbarScrim.setVisibility(VISIBLE);
mTaskbarScrim.animate().alpha(1f).start();
}
-
+ final float translationY = mPositioner.getExpandedViewY(mExpandedBubble,
+ getBubbleIndex(mExpandedBubble));
mExpandedViewContainer.setTranslationX(0f);
- mExpandedViewContainer.setTranslationY(mPositioner.getExpandedViewY());
+ mExpandedViewContainer.setTranslationY(translationY);
mExpandedViewContainer.setAlpha(1f);
int index;
@@ -1866,7 +1870,7 @@
1f - EXPANDED_VIEW_ANIMATE_SCALE_AMOUNT,
1f - EXPANDED_VIEW_ANIMATE_SCALE_AMOUNT,
bubbleWillBeAt + mBubbleSize / 2f,
- mPositioner.getExpandedViewY());
+ translationY);
}
mExpandedViewContainer.setAnimationMatrix(mExpandedViewContainerMatrix);
@@ -1970,7 +1974,7 @@
mExpandedViewContainerMatrix.setScale(
1f, 1f,
expandingFromBubbleAt + mBubbleSize / 2f,
- mPositioner.getExpandedViewY());
+ mPositioner.getExpandedViewY(mExpandedBubble, index));
}
mExpandedViewAlphaAnimator.reverse();
@@ -2077,7 +2081,7 @@
1f - EXPANDED_VIEW_ANIMATE_SCALE_AMOUNT,
1f - EXPANDED_VIEW_ANIMATE_SCALE_AMOUNT,
expandingFromBubbleDestination + mBubbleSize / 2f,
- mPositioner.getExpandedViewY());
+ mPositioner.getExpandedViewY(mExpandedBubble, expandingFromBubbleDestination));
}
mExpandedViewContainer.setAnimationMatrix(mExpandedViewContainerMatrix);
@@ -2698,7 +2702,9 @@
mExpandedViewContainer.setVisibility(mIsExpanded ? VISIBLE : GONE);
}
if (mExpandedBubble != null && mExpandedBubble.getExpandedView() != null) {
- mExpandedViewContainer.setTranslationY(mPositioner.getExpandedViewY());
+ mExpandedViewContainer.setTranslationY(mPositioner.getExpandedViewY(mExpandedBubble,
+ mExpandedAnimationController.getBubbleXOrYForOrientation(
+ getBubbleIndex(mExpandedBubble))));
mExpandedViewContainer.setTranslationX(0f);
mExpandedBubble.getExpandedView().updateView(
mExpandedViewContainer.getLocationOnScreen());
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
index df2b440..efe07fb 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/ExpandedAnimationController.java
@@ -83,12 +83,6 @@
private float mBubblePaddingTop;
/** Size of each bubble. */
private float mBubbleSizePx;
- /** Max number of bubbles shown in row above expanded view. */
- private int mBubblesMaxRendered;
- /** Max amount of space to have between bubbles when expanded. */
- private int mBubblesMaxSpace;
- /** Amount of space between the bubbles when expanded. */
- private float mSpaceBetweenBubbles;
/** Whether the expand / collapse animation is running. */
private boolean mAnimatingExpand = false;
@@ -211,8 +205,6 @@
mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
mStackOffsetPx = res.getDimensionPixelSize(R.dimen.bubble_stack_offset);
mBubbleSizePx = mPositioner.getBubbleSize();
- mBubblesMaxRendered = mPositioner.getMaxBubbles();
- mSpaceBetweenBubbles = res.getDimensionPixelSize(R.dimen.bubble_spacing);
}
/**
@@ -628,14 +620,13 @@
}
}
- // TODO - could move to method on bubblePositioner if mSpaceBetweenBubbles gets moved
/**
* When bubbles are expanded in portrait, they display at the top of the screen in a horizontal
* row. When in landscape or on a large screen, they show at the left or right side in a
* vertical row. This method accounts for screen orientation and will return an x or y value
* for the position of the bubble in the row.
*
- * @param index Bubble index in row.
+ * @param index bubble index in the row.
* @return the y position of the bubble if showing vertically and the x position if showing
* horizontally.
*/
@@ -643,15 +634,6 @@
if (mLayout == null) {
return 0;
}
- final float positionInBar = index * (mBubbleSizePx + mSpaceBetweenBubbles);
- Rect availableRect = mPositioner.getAvailableRect();
- final boolean isLandscape = mPositioner.showBubblesVertically();
- final float expandedStackSize = (mLayout.getChildCount() * mBubbleSizePx)
- + ((mLayout.getChildCount() - 1) * mSpaceBetweenBubbles);
- final float centerPosition = isLandscape
- ? availableRect.centerY()
- : availableRect.centerX();
- final float rowStart = centerPosition - (expandedStackSize / 2f);
- return rowStart + positionInBar;
+ return mPositioner.getBubbleXOrYForOrientation(index, mLayout.getChildCount());
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/DividerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/DividerView.java
index 7e4010d..362b40f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/DividerView.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/DividerView.java
@@ -408,7 +408,7 @@
}
boolean isHidden() {
- return mSurfaceHidden;
+ return getVisibility() != View.VISIBLE || mSurfaceHidden;
}
/** Starts dragging the divider bar. */
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenController.java
index 261ff2f..ea2fc1a 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenController.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/legacysplitscreen/LegacySplitScreenController.java
@@ -146,10 +146,8 @@
new LegacySplitDisplayLayout(mContext, displayLayout, mSplits);
sdl.rotateTo(toRotation);
mRotateSplitLayout = sdl;
- final int position = isDividerVisible()
- ? (mMinimized ? mView.mSnapTargetBeforeMinimized.position
- : mView.getCurrentPosition())
- // snap resets to middle target when not in split-mode
+ // snap resets to middle target when not minimized and rotation changed.
+ final int position = mMinimized ? mView.mSnapTargetBeforeMinimized.position
: sdl.getSnapAlgorithm().getMiddleTarget().position;
DividerSnapAlgorithm snap = sdl.getSnapAlgorithm();
final DividerSnapAlgorithm.SnapTarget target =
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java
index f0bd8a2..c816f18 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java
@@ -246,10 +246,20 @@
}
if (ev instanceof MotionEvent) {
+ MotionEvent mv = (MotionEvent) ev;
+ int action = mv.getActionMasked();
+ final Rect pipBounds = mPipBoundsState.getBounds();
+ if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
+ if (!pipBounds.contains((int) mv.getRawX(), (int) mv.getRawY())
+ && mPhonePipMenuController.isMenuVisible()) {
+ mPhonePipMenuController.hideMenu();
+ }
+ }
+
if (mEnablePinchResize && mOngoingPinchToResize) {
- onPinchResize((MotionEvent) ev);
+ onPinchResize(mv);
} else if (mEnableDragCornerResize) {
- onDragCornerResize((MotionEvent) ev);
+ onDragCornerResize(mv);
}
}
}
@@ -450,7 +460,6 @@
float x = ev.getX();
float y = ev.getY() - mOhmOffset;
if (action == MotionEvent.ACTION_DOWN) {
- final Rect currentPipBounds = mPipBoundsState.getBounds();
mLastResizeBounds.setEmpty();
mAllowGesture = isInValidSysUiState() && isWithinDragResizeRegion((int) x, (int) y);
if (mAllowGesture) {
@@ -458,11 +467,6 @@
mDownPoint.set(x, y);
mDownBounds.set(mPipBoundsState.getBounds());
}
- if (!currentPipBounds.contains((int) x, (int) y)
- && mPhonePipMenuController.isMenuVisible()) {
- mPhonePipMenuController.hideMenu();
- }
-
} else if (mAllowGesture) {
switch (action) {
case MotionEvent.ACTION_POINTER_DOWN:
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java
index 9986154..4e477ca1 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java
@@ -85,7 +85,10 @@
}
View iconView = view.getIconView();
- if (iconView == null || iconView.getBackground() == null) {
+
+ // If the icon and the background are invisible, don't animate it
+ if (iconView == null || iconView.getLayoutParams().width == 0
+ || iconView.getLayoutParams().height == 0) {
mIconFadeOutDuration = 0;
mIconStartAlpha = 0;
mAppRevealDelay = 0;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
index df3fee0..b09d0d8 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java
@@ -77,6 +77,13 @@
// For example, an icon with the foreground 108*108 opaque pixels and it's background
// also 108*108 pixels, then do not enlarge this icon if only need to show foreground icon.
private static final float ENLARGE_FOREGROUND_ICON_THRESHOLD = (72f * 72f) / (108f * 108f);
+
+ /**
+ * If the developer doesn't specify a background for the icon, we slightly scale it up.
+ *
+ * The background is either manually specified in the theme or the Adaptive Icon
+ * background is used if it's different from the window background.
+ */
private static final float NO_BACKGROUND_SCALE = 192f / 160;
private final Context mContext;
private final IconProvider mIconProvider;
@@ -228,7 +235,7 @@
attrs.mWindowBgColor = safeReturnAttrDefault((def) -> typedArray.getColor(
R.styleable.Window_windowSplashScreenBackground, def),
Color.TRANSPARENT);
- attrs.mReplaceIcon = safeReturnAttrDefault((def) -> typedArray.getDrawable(
+ attrs.mSplashScreenIcon = safeReturnAttrDefault((def) -> typedArray.getDrawable(
R.styleable.Window_windowSplashScreenAnimatedIcon), null);
attrs.mAnimationDuration = safeReturnAttrDefault((def) -> typedArray.getInt(
R.styleable.Window_windowSplashScreenAnimationDuration, def), 0);
@@ -241,7 +248,7 @@
if (DEBUG) {
Slog.d(TAG, "window attributes color: "
+ Integer.toHexString(attrs.mWindowBgColor)
- + " icon " + attrs.mReplaceIcon + " duration " + attrs.mAnimationDuration
+ + " icon " + attrs.mSplashScreenIcon + " duration " + attrs.mAnimationDuration
+ " brandImage " + attrs.mBrandingImage);
}
}
@@ -250,7 +257,7 @@
public static class SplashScreenWindowAttrs {
private int mWindowBgResId = 0;
private int mWindowBgColor = Color.TRANSPARENT;
- private Drawable mReplaceIcon = null;
+ private Drawable mSplashScreenIcon = null;
private Drawable mBrandingImage = null;
private int mIconBgColor = Color.TRANSPARENT;
private int mAnimationDuration = 0;
@@ -287,10 +294,15 @@
// empty splash screen case
animationDuration = 0;
mFinalIconSize = 0;
- } else if (mTmpAttrs.mReplaceIcon != null) {
+ } else if (mTmpAttrs.mSplashScreenIcon != null) {
// replaced icon, don't process
- iconDrawable = mTmpAttrs.mReplaceIcon;
+ iconDrawable = mTmpAttrs.mSplashScreenIcon;
animationDuration = mTmpAttrs.mAnimationDuration;
+
+ // There is no background below the icon, so scale the icon up
+ if (mTmpAttrs.mIconBgColor == Color.TRANSPARENT) {
+ mFinalIconSize *= NO_BACKGROUND_SCALE;
+ }
createIconDrawable(iconDrawable, false);
} else {
final float iconScale = (float) mIconSize / (float) mDefaultIconSize;
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenIconDrawableFactory.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenIconDrawableFactory.java
index dae7055..211941f 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenIconDrawableFactory.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenIconDrawableFactory.java
@@ -162,6 +162,7 @@
@Override
public void draw(Canvas canvas) {
+ canvas.clipPath(mMaskScaleOnly);
if (mMaskScaleOnly != null) {
canvas.drawPath(mMaskScaleOnly, mPaint);
}
diff --git a/libs/hwui/WebViewFunctorManager.cpp b/libs/hwui/WebViewFunctorManager.cpp
index 92e20c4..974c863 100644
--- a/libs/hwui/WebViewFunctorManager.cpp
+++ b/libs/hwui/WebViewFunctorManager.cpp
@@ -126,7 +126,14 @@
renderthread::CanvasContext::getActiveContext();
if (activeContext != nullptr) {
ASurfaceControl* rootSurfaceControl = activeContext->getSurfaceControl();
- if (rootSurfaceControl) overlayParams.overlaysMode = OverlaysMode::Enabled;
+ if (rootSurfaceControl) {
+ overlayParams.overlaysMode = OverlaysMode::Enabled;
+ int32_t rgid = activeContext->getSurfaceControlGenerationId();
+ if (mParentSurfaceControlGenerationId != rgid) {
+ reparentSurfaceControl(rootSurfaceControl);
+ mParentSurfaceControlGenerationId = rgid;
+ }
+ }
}
}
@@ -195,6 +202,7 @@
LOG_ALWAYS_FATAL_IF(rootSurfaceControl == nullptr, "Null root surface control!");
auto funcs = renderthread::RenderThread::getInstance().getASurfaceControlFunctions();
+ mParentSurfaceControlGenerationId = activeContext->getSurfaceControlGenerationId();
mSurfaceControl = funcs.createFunc(rootSurfaceControl, "Webview Overlay SurfaceControl");
ASurfaceTransaction* transaction = funcs.transactionCreateFunc();
activeContext->prepareSurfaceControlForWebview();
@@ -218,6 +226,17 @@
}
}
+void WebViewFunctor::reparentSurfaceControl(ASurfaceControl* parent) {
+ ATRACE_NAME("WebViewFunctor::reparentSurfaceControl");
+ if (mSurfaceControl == nullptr) return;
+
+ auto funcs = renderthread::RenderThread::getInstance().getASurfaceControlFunctions();
+ ASurfaceTransaction* transaction = funcs.transactionCreateFunc();
+ funcs.transactionReparentFunc(transaction, mSurfaceControl, parent);
+ mergeTransaction(transaction);
+ funcs.transactionDeleteFunc(transaction);
+}
+
WebViewFunctorManager& WebViewFunctorManager::instance() {
static WebViewFunctorManager sInstance;
return sInstance;
diff --git a/libs/hwui/WebViewFunctorManager.h b/libs/hwui/WebViewFunctorManager.h
index a84cda5..048d1fb 100644
--- a/libs/hwui/WebViewFunctorManager.h
+++ b/libs/hwui/WebViewFunctorManager.h
@@ -85,12 +85,16 @@
}
private:
+ void reparentSurfaceControl(ASurfaceControl* parent);
+
+private:
WebViewFunctorCallbacks mCallbacks;
void* const mData;
int mFunctor;
RenderMode mMode;
bool mHasContext = false;
bool mCreatedHandle = false;
+ int32_t mParentSurfaceControlGenerationId = 0;
ASurfaceControl* mSurfaceControl = nullptr;
};
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 0c9711b..81cee61 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -201,6 +201,7 @@
funcs.releaseFunc(mSurfaceControl);
}
mSurfaceControl = surfaceControl;
+ mSurfaceControlGenerationId++;
mExpectSurfaceStats = surfaceControl != nullptr;
if (mSurfaceControl != nullptr) {
funcs.acquireFunc(mSurfaceControl);
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index 3279ccb..85af3e4 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -110,6 +110,7 @@
GrDirectContext* getGrContext() const { return mRenderThread.getGrContext(); }
ASurfaceControl* getSurfaceControl() const { return mSurfaceControl; }
+ int32_t getSurfaceControlGenerationId() const { return mSurfaceControlGenerationId; }
// Won't take effect until next EGLSurface creation
void setSwapBehavior(SwapBehavior swapBehavior);
@@ -253,6 +254,9 @@
// The SurfaceControl reference is passed from ViewRootImpl, can be set to
// NULL to remove the reference
ASurfaceControl* mSurfaceControl = nullptr;
+ // id to track surface control changes and WebViewFunctor uses it to determine
+ // whether reparenting is needed
+ int32_t mSurfaceControlGenerationId = 0;
// stopped indicates the CanvasContext will reject actual redraw operations,
// and defer repaint until it is un-stopped
bool mStopped = false;
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp
index 524407d..f83c0a4 100644
--- a/libs/hwui/renderthread/RenderThread.cpp
+++ b/libs/hwui/renderthread/RenderThread.cpp
@@ -98,6 +98,10 @@
LOG_ALWAYS_FATAL_IF(transactionApplyFunc == nullptr,
"Failed to find required symbol ASurfaceTransaction_apply!");
+ transactionReparentFunc = (AST_reparent)dlsym(handle_, "ASurfaceTransaction_reparent");
+ LOG_ALWAYS_FATAL_IF(transactionReparentFunc == nullptr,
+ "Failed to find required symbol transactionReparentFunc!");
+
transactionSetVisibilityFunc =
(AST_setVisibility)dlsym(handle_, "ASurfaceTransaction_setVisibility");
LOG_ALWAYS_FATAL_IF(transactionSetVisibilityFunc == nullptr,
diff --git a/libs/hwui/renderthread/RenderThread.h b/libs/hwui/renderthread/RenderThread.h
index c5e3746..05d225b 100644
--- a/libs/hwui/renderthread/RenderThread.h
+++ b/libs/hwui/renderthread/RenderThread.h
@@ -94,6 +94,9 @@
typedef ASurfaceTransaction* (*AST_create)();
typedef void (*AST_delete)(ASurfaceTransaction* transaction);
typedef void (*AST_apply)(ASurfaceTransaction* transaction);
+typedef void (*AST_reparent)(ASurfaceTransaction* aSurfaceTransaction,
+ ASurfaceControl* aSurfaceControl,
+ ASurfaceControl* newParentASurfaceControl);
typedef void (*AST_setVisibility)(ASurfaceTransaction* transaction,
ASurfaceControl* surface_control, int8_t visibility);
typedef void (*AST_setZOrder)(ASurfaceTransaction* transaction, ASurfaceControl* surface_control,
@@ -113,6 +116,7 @@
AST_create transactionCreateFunc;
AST_delete transactionDeleteFunc;
AST_apply transactionApplyFunc;
+ AST_reparent transactionReparentFunc;
AST_setVisibility transactionSetVisibilityFunc;
AST_setZOrder transactionSetZOrderFunc;
};
diff --git a/libs/hwui/renderthread/TimeLord.cpp b/libs/hwui/renderthread/TimeLord.cpp
index 406066c..a43fcdc 100644
--- a/libs/hwui/renderthread/TimeLord.cpp
+++ b/libs/hwui/renderthread/TimeLord.cpp
@@ -15,22 +15,28 @@
*/
#include "TimeLord.h"
#include <limits>
+#include "FrameInfo.h"
namespace android {
namespace uirenderer {
namespace renderthread {
-TimeLord::TimeLord() : mFrameIntervalNanos(milliseconds_to_nanoseconds(16)),
- mFrameTimeNanos(0),
- mFrameIntendedTimeNanos(0),
- mFrameVsyncId(-1),
- mFrameDeadline(std::numeric_limits<int64_t>::max()){}
+TimeLord::TimeLord()
+ : mFrameIntervalNanos(milliseconds_to_nanoseconds(16))
+ , mFrameTimeNanos(0)
+ , mFrameIntendedTimeNanos(0)
+ , mFrameVsyncId(UiFrameInfoBuilder::INVALID_VSYNC_ID)
+ , mFrameDeadline(std::numeric_limits<int64_t>::max()) {}
bool TimeLord::vsyncReceived(nsecs_t vsync, nsecs_t intendedVsync, int64_t vsyncId,
int64_t frameDeadline, nsecs_t frameInterval) {
if (intendedVsync > mFrameIntendedTimeNanos) {
mFrameIntendedTimeNanos = intendedVsync;
- mFrameVsyncId = vsyncId;
+
+ // The intendedVsync might have been advanced to account for scheduling
+ // jitter. Since we don't have a way to advance the vsync id we just
+ // reset it.
+ mFrameVsyncId = (vsyncId > mFrameVsyncId) ? vsyncId : UiFrameInfoBuilder::INVALID_VSYNC_ID;
mFrameDeadline = frameDeadline;
if (frameInterval > 0) {
mFrameIntervalNanos = frameInterval;
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index c144195..f2078a1 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -930,8 +930,8 @@
public void adjustStreamVolume(int streamType, int direction, int flags) {
final IAudioService service = getService();
try {
- service.adjustStreamVolume(streamType, direction, flags,
- getContext().getOpPackageName());
+ service.adjustStreamVolumeWithAttribution(streamType, direction, flags,
+ getContext().getOpPackageName(), getContext().getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1001,7 +1001,7 @@
final IAudioService service = getService();
try {
service.setMasterMute(mute, flags, getContext().getOpPackageName(),
- UserHandle.getCallingUserId());
+ UserHandle.getCallingUserId(), getContext().getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1254,7 +1254,8 @@
public void setStreamVolume(int streamType, int index, int flags) {
final IAudioService service = getService();
try {
- service.setStreamVolume(streamType, index, flags, getContext().getOpPackageName());
+ service.setStreamVolumeWithAttribution(streamType, index, flags,
+ getContext().getOpPackageName(), getContext().getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1279,7 +1280,7 @@
final IAudioService service = getService();
try {
service.setVolumeIndexForAttributes(attr, index, flags,
- getContext().getOpPackageName());
+ getContext().getOpPackageName(), getContext().getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2739,7 +2740,7 @@
final IAudioService service = getService();
try {
service.setMicrophoneMute(on, getContext().getOpPackageName(),
- UserHandle.getCallingUserId());
+ UserHandle.getCallingUserId(), getContext().getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -4266,7 +4267,9 @@
afr.getFocusGain(), mICallBack,
mAudioFocusDispatcher,
clientId,
- getContext().getOpPackageName() /* package name */, afr.getFlags(),
+ getContext().getOpPackageName() /* package name */,
+ getContext().getAttributionTag(),
+ afr.getFlags(),
ap != null ? ap.cb() : null,
sdk);
} catch (RemoteException e) {
@@ -4371,6 +4374,7 @@
durationHint, mICallBack, null,
AudioSystem.IN_VOICE_COMM_FOCUS_ID,
getContext().getOpPackageName(),
+ getContext().getAttributionTag(),
AUDIOFOCUS_FLAG_LOCK,
null /* policy token */, 0 /* sdk n/a here*/);
} catch (RemoteException e) {
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index c08c368..357c414 100755
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -77,15 +77,17 @@
oneway void playerSessionId(in int piid, in int sessionId);
// Java-only methods below.
-
- oneway void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags,
- String callingPackage, String caller);
-
void adjustStreamVolume(int streamType, int direction, int flags, String callingPackage);
+ void adjustStreamVolumeWithAttribution(int streamType, int direction, int flags,
+ in String callingPackage, in String attributionTag);
+
@UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553)
void setStreamVolume(int streamType, int index, int flags, String callingPackage);
+ void setStreamVolumeWithAttribution(int streamType, int index, int flags,
+ in String callingPackage, in String attributionTag);
+
oneway void handleVolumeKey(in KeyEvent event, boolean isOnTv,
String callingPackage, String caller);
@@ -95,7 +97,8 @@
boolean isMasterMute();
- void setMasterMute(boolean mute, int flags, String callingPackage, int userId);
+ void setMasterMute(boolean mute, int flags, String callingPackage, int userId,
+ in String attributionTag);
@UnsupportedAppUsage
int getStreamVolume(int streamType);
@@ -107,7 +110,8 @@
List<AudioVolumeGroup> getAudioVolumeGroups();
- void setVolumeIndexForAttributes(in AudioAttributes aa, int index, int flags, String callingPackage);
+ void setVolumeIndexForAttributes(in AudioAttributes aa, int index, int flags,
+ String callingPackage, in String attributionTag);
int getVolumeIndexForAttributes(in AudioAttributes aa);
@@ -125,7 +129,7 @@
boolean isMicrophoneMuted();
- void setMicrophoneMute(boolean on, String callingPackage, int userId);
+ void setMicrophoneMute(boolean on, String callingPackage, int userId, in String attributionTag);
oneway void setMicrophoneMuteFromSwitch(boolean on);
@@ -182,8 +186,8 @@
boolean isBluetoothA2dpOn();
int requestAudioFocus(in AudioAttributes aa, int durationHint, IBinder cb,
- IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags,
- IAudioPolicyCallback pcb, int sdk);
+ IAudioFocusDispatcher fd, in String clientId, in String callingPackageName,
+ in String attributionTag, int flags, IAudioPolicyCallback pcb, int sdk);
int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, in AudioAttributes aa,
in String callingPackageName);
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index da18a77..f49e045 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -844,7 +844,7 @@
setVideoSize(profile.getWidth(), profile.getHeight());
setVideoEncodingBitRate(profile.getBitrate());
setVideoEncoder(profile.getCodec());
- if (profile.getProfile() > 0) {
+ if (profile.getProfile() >= 0) {
setVideoEncodingProfileLevel(profile.getProfile(), 0 /* level */);
}
}
@@ -1125,10 +1125,10 @@
* @throws IllegalArgumentException when an invalid profile or level value is used.
*/
public void setVideoEncodingProfileLevel(int profile, int level) {
- if (profile <= 0) {
+ if (profile < 0) {
throw new IllegalArgumentException("Video encoding profile is not positive");
}
- if (level <= 0) {
+ if (level < 0) {
throw new IllegalArgumentException("Video encoding level is not positive");
}
setParameter("video-param-encoder-profile=" + profile);
diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java
index 345d9b2..4de63f9 100644
--- a/media/java/android/media/MediaRouter.java
+++ b/media/java/android/media/MediaRouter.java
@@ -2034,8 +2034,8 @@
public void requestSetVolume(int volume) {
if (mPlaybackType == PLAYBACK_TYPE_LOCAL) {
try {
- sStatic.mAudioService.setStreamVolume(mPlaybackStream, volume, 0,
- ActivityThread.currentPackageName());
+ sStatic.mAudioService.setStreamVolumeWithAttribution(mPlaybackStream, volume, 0,
+ ActivityThread.currentPackageName(), null);
} catch (RemoteException e) {
Log.e(TAG, "Error setting local stream volume", e);
}
@@ -2053,8 +2053,8 @@
try {
final int volume =
Math.max(0, Math.min(getVolume() + direction, getVolumeMax()));
- sStatic.mAudioService.setStreamVolume(mPlaybackStream, volume, 0,
- ActivityThread.currentPackageName());
+ sStatic.mAudioService.setStreamVolumeWithAttribution(mPlaybackStream, volume, 0,
+ ActivityThread.currentPackageName(), null);
} catch (RemoteException e) {
Log.e(TAG, "Error setting local stream volume", e);
}
diff --git a/packages/PackageInstaller/res/values-as/strings.xml b/packages/PackageInstaller/res/values-as/strings.xml
index f355988..c050d39 100644
--- a/packages/PackageInstaller/res/values-as/strings.xml
+++ b/packages/PackageInstaller/res/values-as/strings.xml
@@ -87,7 +87,7 @@
<string name="anonymous_source_warning" product="tablet" msgid="3939101621438855516">"আপোনাৰ টেবলেট আৰু ব্যক্তিগত ডেটা অজ্ঞাত এপৰ আক্ৰমণৰ বলি হোৱাৰ সম্ভাৱনা অধিক। আপুনি এই এপটো ইনষ্টল কৰি এপটোৰ ব্যৱহাৰৰ ফলত আপোনাৰ টিভিত হ\'ব পৰা যিকোনো ক্ষতি বা ডেটা ক্ষয়ৰ বাবে আপুনি নিজে দায়ী হ\'ব বুলি সন্মতি দিয়ে।"</string>
<string name="anonymous_source_warning" product="tv" msgid="5599483539528168566">"আপোনাৰ টিভি আৰু ব্যক্তিগত ডেটা অজ্ঞাত এপৰ আক্ৰমণৰ বলি হোৱাৰ সম্ভাৱনা অধিক। আপুনি এই এপটো ইনষ্টল কৰি এপটোৰ ব্যৱহাৰৰ ফলত আপোনাৰ টিভিত হ\'ব পৰা যিকোনো ক্ষতি বা ডেটা ক্ষয়ৰ বাবে আপুনি নিজে দায়ী হ\'ব বুলি সন্মতি দিয়ে।"</string>
<string name="anonymous_source_continue" msgid="4375745439457209366">"অব্যাহত ৰাখক"</string>
- <string name="external_sources_settings" msgid="4046964413071713807">"ছেটিংসমূহ"</string>
+ <string name="external_sources_settings" msgid="4046964413071713807">"ছেটিং"</string>
<string name="wear_app_channel" msgid="1960809674709107850">"ৱেৰ এপসমূহ ইনষ্টল/আনইনষ্টল কৰি থকা হৈছে"</string>
<string name="app_installed_notification_channel_description" msgid="2695385797601574123">"এপ্ ইনষ্টল কৰাৰ জাননী"</string>
<string name="notification_installation_success_message" msgid="6450467996056038442">"সফলতাৰে ইনষ্টল কৰা হ’ল"</string>
diff --git a/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_layout.xml b/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_layout.xml
index eccf0c0..bef6e35 100644
--- a/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_layout.xml
+++ b/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_layout.xml
@@ -15,9 +15,10 @@
limitations under the License.
-->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
- android:layout_width="match_parent" >
+ android:layout_width="match_parent"
+ android:importantForAccessibility="no">
<com.android.settingslib.widget.MainSwitchBar
android:id="@+id/settingslib_main_switch_bar"
@@ -25,6 +26,6 @@
android:layout_height="wrap_content"
android:layout_width="match_parent" />
-</LinearLayout>
+</FrameLayout>
diff --git a/packages/SettingsLib/SettingsTheme/res/color-night-v31/settingslib_switch_track_on.xml b/packages/SettingsLib/SettingsTheme/res/color-night-v31/settingslib_switch_track_on.xml
new file mode 100644
index 0000000..81ddf29
--- /dev/null
+++ b/packages/SettingsLib/SettingsTheme/res/color-night-v31/settingslib_switch_track_on.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2021 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.
+ -->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@android:color/system_accent2_500" android:lStar="51" />
+</selector>
\ No newline at end of file
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_thumb_color.xml b/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_thumb_color.xml
index df3bad4..8ccbb06 100644
--- a/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_thumb_color.xml
+++ b/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_thumb_color.xml
@@ -17,7 +17,7 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Disabled status of thumb -->
<item android:state_enabled="false"
- android:color="@color/settingslib_thumb_off_color" />
+ android:color="@color/settingslib_thumb_disabled_color" />
<!-- Toggle off status of thumb -->
<item android:state_checked="false"
android:color="@color/settingslib_thumb_off_color" />
diff --git a/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_track_off.xml b/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_track_off.xml
new file mode 100644
index 0000000..762bb31
--- /dev/null
+++ b/packages/SettingsLib/SettingsTheme/res/color-v31/settingslib_switch_track_off.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item android:color="@android:color/system_neutral2_500" android:lStar="45" />
+</selector>
\ No newline at end of file
diff --git a/packages/SettingsLib/SettingsTheme/res/values-night-v31/colors.xml b/packages/SettingsLib/SettingsTheme/res/values-night-v31/colors.xml
index 69975cd..8c7c7ed 100644
--- a/packages/SettingsLib/SettingsTheme/res/values-night-v31/colors.xml
+++ b/packages/SettingsLib/SettingsTheme/res/values-night-v31/colors.xml
@@ -16,11 +16,14 @@
-->
<resources>
+ <!-- Material next thumb disable color-->
+ <color name="settingslib_thumb_disabled_color">@android:color/system_neutral1_700</color>
+
<!-- Material next thumb off color-->
- <color name="settingslib_thumb_off_color">@android:color/system_neutral2_300</color>
+ <color name="settingslib_thumb_off_color">@android:color/system_neutral1_400</color>
<!-- Material next track on color-->
- <color name="settingslib_track_on_color">@android:color/system_accent2_700</color>
+ <color name="settingslib_track_on_color">@color/settingslib_switch_track_on</color>
<!-- Material next track off color-->
<color name="settingslib_track_off_color">@android:color/system_neutral1_700</color>
diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml
index b78da90..77f1bcd 100644
--- a/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml
+++ b/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml
@@ -22,14 +22,17 @@
<!-- Material next state off color-->
<color name="settingslib_state_off_color">@android:color/system_accent2_100</color>
+ <!-- Material next thumb disable color-->
+ <color name="settingslib_thumb_disabled_color">@android:color/system_neutral2_100</color>
+
<!-- Material next thumb off color-->
- <color name="settingslib_thumb_off_color">@android:color/system_neutral2_100</color>
+ <color name="settingslib_thumb_off_color">@android:color/system_neutral2_300</color>
<!-- Material next track on color-->
<color name="settingslib_track_on_color">@android:color/system_accent1_600</color>
<!-- Material next track off color-->
- <color name="settingslib_track_off_color">@android:color/system_neutral2_600</color>
+ <color name="settingslib_track_off_color">@color/settingslib_switch_track_off</color>
<!-- Dialog accent color -->
<color name="settingslib_dialog_accent">@android:color/system_accent1_600</color>
diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerFactory.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerFactory.java
index 44cafb1..bd9e0d3 100644
--- a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerFactory.java
+++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerFactory.java
@@ -33,15 +33,17 @@
/**
* Returns the relevant instance of {@link ActionDisabledByAdminController}.
+ * @param userHandle user on which to launch the help page, if necessary
*/
public static ActionDisabledByAdminController createInstance(Context context,
- String restriction, DeviceAdminStringProvider stringProvider) {
+ String restriction, DeviceAdminStringProvider stringProvider,
+ UserHandle userHandle) {
if (doesBiometricRequireParentalConsent(context, restriction)) {
return new BiometricActionDisabledByAdminController(stringProvider);
} else if (isFinancedDevice(context)) {
return new FinancedDeviceActionDisabledByAdminController(stringProvider);
} else {
- return new ManagedDeviceActionDisabledByAdminController(stringProvider);
+ return new ManagedDeviceActionDisabledByAdminController(stringProvider, userHandle);
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncher.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncher.java
index 849c3d9..41148797 100644
--- a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncher.java
+++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncher.java
@@ -54,11 +54,12 @@
/**
* Sets up a "learn more" button which launches a help page
*/
- public final void setupLearnMoreButtonToLaunchHelpPage(Context context, String url) {
+ public final void setupLearnMoreButtonToLaunchHelpPage(
+ Context context, String url, UserHandle userHandle) {
requireNonNull(context, "context cannot be null");
requireNonNull(url, "url cannot be null");
- setLearnMoreButton(() -> showHelpPage(context, url));
+ setLearnMoreButton(() -> showHelpPage(context, url, userHandle));
}
/**
@@ -105,8 +106,8 @@
* Shows the help page using the given {@code url}.
*/
@VisibleForTesting
- public void showHelpPage(Context context, String url) {
- context.startActivityAsUser(createLearnMoreIntent(url), UserHandle.of(context.getUserId()));
+ public void showHelpPage(Context context, String url, UserHandle userHandle) {
+ context.startActivityAsUser(createLearnMoreIntent(url), userHandle);
finishSelf();
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminController.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminController.java
index 814d5d2..1472980 100644
--- a/packages/SettingsLib/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/BiometricActionDisabledByAdminController.java
@@ -32,8 +32,10 @@
// These MUST not change, as they are the stable API between here and device admin specified
// by the component below.
- private static final String ACTION_LEARN_MORE = "android.settings.LEARN_MORE";
- private static final String EXTRA_FROM_BIOMETRIC_SETUP = "from_biometric_setup";
+ private static final String ACTION_LEARN_MORE =
+ "android.intent.action.MANAGE_RESTRICTED_SETTING";
+ private static final String EXTRA_SETTING_KEY = "extra_setting";
+ private static final String EXTRA_SETTING_VALUE = "biometric_disabled_by_admin_controller";
BiometricActionDisabledByAdminController(
DeviceAdminStringProvider stringProvider) {
@@ -63,7 +65,7 @@
Log.d(TAG, "Positive button clicked, component: " + enforcedAdmin.component);
final Intent intent = new Intent(ACTION_LEARN_MORE)
.setComponent(enforcedAdmin.component)
- .putExtra(EXTRA_FROM_BIOMETRIC_SETUP, true)
+ .putExtra(EXTRA_SETTING_KEY, EXTRA_SETTING_VALUE)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
};
diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminController.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminController.java
index df6bab7..93e811d 100644
--- a/packages/SettingsLib/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminController.java
@@ -16,13 +16,18 @@
package com.android.settingslib.enterprise;
+import static java.util.Objects.requireNonNull;
+
import android.app.admin.DevicePolicyManager;
import android.content.Context;
+import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
import androidx.annotation.Nullable;
+import java.util.Objects;
+
/**
* An {@link ActionDisabledByAdminController} to be used with managed devices.
@@ -30,8 +35,17 @@
final class ManagedDeviceActionDisabledByAdminController
extends BaseActionDisabledByAdminController {
- ManagedDeviceActionDisabledByAdminController(DeviceAdminStringProvider stringProvider) {
+ private final UserHandle mUserHandle;
+
+ /**
+ * Constructs a {@link ManagedDeviceActionDisabledByAdminController}
+ * @param userHandle - user on which to launch the help web page, if necessary
+ */
+ ManagedDeviceActionDisabledByAdminController(
+ DeviceAdminStringProvider stringProvider,
+ UserHandle userHandle) {
super(stringProvider);
+ mUserHandle = requireNonNull(userHandle);
}
@Override
@@ -43,7 +57,7 @@
mLauncher.setupLearnMoreButtonToShowAdminPolicies(context, mEnforcementAdminUserId,
mEnforcedAdmin);
} else {
- mLauncher.setupLearnMoreButtonToLaunchHelpPage(context, url);
+ mLauncher.setupLearnMoreButtonToLaunchHelpPage(context, url, mUserHandle);
}
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerTestUtils.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerTestUtils.java
index e57335f..636d0818 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerTestUtils.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerTestUtils.java
@@ -73,7 +73,7 @@
}
@Override
- public void showHelpPage(Context context, String url) {
+ public void showHelpPage(Context context, String url, UserHandle userHandle) {
mLearnMoreButtonAction = LEARN_MORE_ACTION_LAUNCH_HELP_PAGE;
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncherTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncherTest.java
index 62582d7..c2063c6 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncherTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncherTest.java
@@ -181,18 +181,20 @@
@Test
public void testSetupLearnMoreButtonToLaunchHelpPage_nullContext() {
assertThrows(NullPointerException.class,
- () -> mLauncher.setupLearnMoreButtonToLaunchHelpPage(/* context= */ null, URL));
+ () -> mLauncher.setupLearnMoreButtonToLaunchHelpPage(
+ /* context= */ null, URL, CONTEXT_USER));
}
@Test
public void testSetupLearnMoreButtonToLaunchHelpPage_nullUrl() {
assertThrows(NullPointerException.class,
- () -> mLauncher.setupLearnMoreButtonToLaunchHelpPage(mContext, /* url= */ null));
+ () -> mLauncher.setupLearnMoreButtonToLaunchHelpPage(
+ mContext, /* url= */ null, CONTEXT_USER));
}
@Test
public void testSetupLearnMoreButtonToLaunchHelpPage() {
- mLauncher.setupLearnMoreButtonToLaunchHelpPage(mContext, URL);
+ mLauncher.setupLearnMoreButtonToLaunchHelpPage(mContext, URL, CONTEXT_USER);
tapLearnMore();
verify(mContext).startActivityAsUser(mIntentCaptor.capture(), eq(CONTEXT_USER));
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminControllerTest.java
index 19f6aa1..d9be4f3 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminControllerTest.java
@@ -116,7 +116,7 @@
private ManagedDeviceActionDisabledByAdminController createController(String url) {
ManagedDeviceActionDisabledByAdminController controller =
new ManagedDeviceActionDisabledByAdminController(
- new FakeDeviceAdminStringProvider(url));
+ new FakeDeviceAdminStringProvider(url), mContext.getUser());
controller.initialize(mTestUtils.createLearnMoreButtonLauncher());
controller.updateEnforcedAdmin(ENFORCED_ADMIN, ENFORCEMENT_ADMIN_USER_ID);
return controller;
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index e5eecb2..86b3bab1 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -763,9 +763,6 @@
Settings.Global.ANGLE_GL_DRIVER_SELECTION_VALUES,
GlobalSettingsProto.Gpu.ANGLE_GL_DRIVER_SELECTION_VALUES);
dumpSetting(s, p,
- Settings.Global.ANGLE_ALLOWLIST,
- GlobalSettingsProto.Gpu.ANGLE_ALLOWLIST);
- dumpSetting(s, p,
Settings.Global.ANGLE_EGL_FEATURES,
GlobalSettingsProto.Gpu.ANGLE_EGL_FEATURES);
dumpSetting(s, p,
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index 675d8b4..a6e0d00 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -509,7 +509,6 @@
Settings.Global.ANGLE_GL_DRIVER_ALL_ANGLE,
Settings.Global.ANGLE_GL_DRIVER_SELECTION_PKGS,
Settings.Global.ANGLE_GL_DRIVER_SELECTION_VALUES,
- Settings.Global.ANGLE_ALLOWLIST,
Settings.Global.ANGLE_EGL_FEATURES,
Settings.Global.UPDATABLE_DRIVER_ALL_APPS,
Settings.Global.UPDATABLE_DRIVER_PRODUCTION_OPT_IN_APPS,
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index f0a19d3..bc1d420 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -567,6 +567,9 @@
<!-- Permission required for CTS test - GlobalSearchSessionPlatformCtsTests -->
<uses-permission android:name="android.permission.READ_GLOBAL_APP_SEARCH_DATA" />
+ <!-- Permission required for GTS test - PendingSystemUpdateTest -->
+ <uses-permission android:name="android.permission.NOTIFY_PENDING_SYSTEM_UPDATE" />
+
<application android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight"
android:defaultToDeviceProtectedStorage="true"
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
index 98ef9e2..de2eca2 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
@@ -23,6 +23,8 @@
import com.android.systemui.plugins.annotations.ProvidesInterface;
import com.android.systemui.plugins.qs.QS.HeightListener;
+import java.util.function.Consumer;
+
/**
* Fragment that contains QS in the notification shade. Most of the interface is for
* handling the expand/collapsing of the view interaction.
@@ -33,7 +35,7 @@
String ACTION = "com.android.systemui.action.PLUGIN_QS";
- int VERSION = 9;
+ int VERSION = 10;
String TAG = "QS";
@@ -101,6 +103,11 @@
return true;
}
+ /**
+ * Add a listener for when the collapsed media visibility changes.
+ */
+ void setCollapsedMediaVisibilityChangedListener(Consumer<Boolean> listener);
+
@ProvidesInterface(version = HeightListener.VERSION)
interface HeightListener {
int VERSION = 1;
diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml
index d0218f6..e53964d 100644
--- a/packages/SystemUI/res-keyguard/values-hi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml
@@ -38,7 +38,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज हो रहा है"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • तेज़ चार्ज हो रहा है"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • धीरे चार्ज हो रहा है"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्जिंग कुछ समय के लिए रोकी गई"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • कुछ समय के लिए चार्जिंग रोक दी गई"</string>
<string name="keyguard_low_battery" msgid="1868012396800230904">"अपना चार्जर कनेक्ट करें."</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"लॉक खोलने के लिए मेन्यू दबाएं."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"नेटवर्क लॉक किया हुआ है"</string>
diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml
index fcf8edc..5381d76 100644
--- a/packages/SystemUI/res-keyguard/values-sw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml
@@ -38,7 +38,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji kwa kasi"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji pole pole"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hali ya kuchaji kwa muda imedhibitiwa"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kuchaji kumedhibitiwa kwa muda"</string>
<string name="keyguard_low_battery" msgid="1868012396800230904">"Unganisha chaja yako."</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Bonyeza Menyu ili kufungua."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Mtandao umefungwa"</string>
diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml
index e5031c82..937ad06 100644
--- a/packages/SystemUI/res-keyguard/values-ta/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml
@@ -26,7 +26,7 @@
<string name="keyguard_password_enter_puk_prompt" msgid="3529260761374385243">"சிம் PUK குறியீடு"</string>
<string name="keyguard_password_enter_pin_prompt" msgid="2304037870481240781">"புதிய சிம் பின் குறியீடு"</string>
<string name="keyguard_password_entry_touch_hint" msgid="6180028658339706333"><font size="17">"கடவுச்சொல்லை உள்ளிட, தொடவும்"</font></string>
- <string name="keyguard_password_enter_password_code" msgid="7393393239623946777">"திறக்க, கடவுச்சொல்லை உள்ளிடவும்"</string>
+ <string name="keyguard_password_enter_password_code" msgid="7393393239623946777">"அன்லாக் செய்ய கடவுச்சொல்லை உள்ளிடவும்"</string>
<string name="keyguard_password_enter_pin_password_code" msgid="3692259677395250509">"திறக்க, பின்னை உள்ளிடவும்"</string>
<string name="keyguard_enter_your_pin" msgid="5429932527814874032">"பின்னை உள்ளிடுக"</string>
<string name="keyguard_enter_your_pattern" msgid="351503370332324745">"பேட்டர்னை உள்ளிடுக"</string>
@@ -40,7 +40,7 @@
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • மெதுவாகச் சார்ஜாகிறது"</string>
<string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • சார்ஜாவது தற்காலிகமாக வரம்பிடப்பட்டுள்ளது"</string>
<string name="keyguard_low_battery" msgid="1868012396800230904">"சார்ஜரை இணைக்கவும்."</string>
- <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"திறக்க, மெனுவை அழுத்தவும்."</string>
+ <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"அன்லாக் செய்ய மெனுவை அழுத்தவும்."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"நெட்வொர்க் பூட்டப்பட்டது"</string>
<string name="keyguard_missing_sim_message_short" msgid="704159478161444907">"சிம் கார்டு இல்லை"</string>
<string name="keyguard_missing_sim_instructions" msgid="1162120926141335918">"சிம் கார்டைச் செருகவும்."</string>
@@ -85,11 +85,11 @@
<string name="kg_login_too_many_attempts" msgid="4519957179182578690">"பேட்டர்னை அதிக முறை தவறாக வரைந்துவிட்டீர்கள்"</string>
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="544687656831558971">"உங்கள் பின்னை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக உள்ளிட்டுவிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
<string name="kg_too_many_failed_password_attempts_dialog_message" msgid="190984061975729494">"உங்கள் கடவுச்சொல்லை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக உள்ளிட்டுவிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
- <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="4252405904570284368">"திறப்பதற்கான பேட்டர்னை, <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துவிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
- <string name="kg_password_wrong_pin_code_pukked" msgid="8047350661459040581">"சிம்மின் பின் குறியீடு தவறானது. இனி சாதனத்தைத் திறக்க, உங்கள் தொலைத்தொடர்பு நிறுவனத்தைத் தொடர்புகொள்ள வேண்டும்."</string>
+ <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="4252405904570284368">"அன்லாக் பேட்டர்னை, <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துவிட்டீர்கள். \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> வினாடிகளில் மீண்டும் முயலவும்."</string>
+ <string name="kg_password_wrong_pin_code_pukked" msgid="8047350661459040581">"சிம்மின் பின் குறியீடு தவறானது. இனி சாதனத்தை அன்லாக் செய்ய, உங்கள் தொலைத்தொடர்பு நிறுவனத்தைத் தொடர்புகொள்ள வேண்டும்."</string>
<plurals name="kg_password_wrong_pin_code" formatted="false" msgid="7030584350995485026">
<item quantity="other">சிம்மின் பின் குறியீடு தவறானது, இன்னும் நீங்கள் <xliff:g id="NUMBER_1">%d</xliff:g> முறை முயலலாம்.</item>
- <item quantity="one">சிம்மின் பின் குறியீடு தவறானது, மேலும் <xliff:g id="NUMBER_0">%d</xliff:g> முயற்சிகளுக்குப் பின்னர், உங்கள் தொலைத்தொடர்பு நிறுவனத்தைத் தொடர்பு கொண்டு மட்டுமே சாதனத்தைத் திறக்க முடியும்.</item>
+ <item quantity="one">சிம்மின் பின் குறியீடு தவறானது, மேலும் <xliff:g id="NUMBER_0">%d</xliff:g> முயற்சிகளுக்குப் பின்னர், உங்கள் தொலைத்தொடர்பு நிறுவனத்தைத் தொடர்பு கொண்டு மட்டுமே சாதனத்தை அன்லாக் செய்ய முடியும்.</item>
</plurals>
<string name="kg_password_wrong_puk_code_dead" msgid="3698285357028468617">"பயன்படுத்த முடியாத சிம். உங்கள் தொலைத்தொடர்பு நிறுவனத்தைத் தொடர்புகொள்ளவும்."</string>
<plurals name="kg_password_wrong_puk_code" formatted="false" msgid="3937306685604862886">
@@ -129,7 +129,7 @@
<string name="kg_face_not_recognized" msgid="7903950626744419160">"அடையாளங்காணபடவில்லை"</string>
<plurals name="kg_password_default_pin_message" formatted="false" msgid="7730152526369857818">
<item quantity="other">சிம் பின்னை உள்ளிடவும். மேலும், <xliff:g id="NUMBER_1">%d</xliff:g> வாய்ப்புகள் மீதமுள்ளன.</item>
- <item quantity="one">சிம் பின்னை உள்ளிடவும். மீதமுள்ள <xliff:g id="NUMBER_0">%d</xliff:g> வாய்ப்பில் தவறுதலான பின் உள்ளிடப்பட்டால், உங்கள் தொலைத்தொடர்பு நிறுவனத்தைத் தொடர்பு கொண்டு மட்டுமே சாதனத்தைத் திறக்க முடியும்.</item>
+ <item quantity="one">சிம் பின்னை உள்ளிடவும். மீதமுள்ள <xliff:g id="NUMBER_0">%d</xliff:g> வாய்ப்பில் தவறுதலான பின் உள்ளிடப்பட்டால், உங்கள் தொலைத்தொடர்பு நிறுவனத்தைத் தொடர்பு கொண்டு மட்டுமே சாதனத்தை அன்லாக் செய்ய முடியும்.</item>
</plurals>
<plurals name="kg_password_default_puk_message" formatted="false" msgid="571308542462946935">
<item quantity="other">சிம் தற்போது முடக்கப்பட்டுள்ளது. தொடர்வதற்கு, PUK குறியீட்டை உள்ளிடவும். நீங்கள் <xliff:g id="_NUMBER_1">%d</xliff:g> முறை மட்டுமே முயற்சிக்க முடியும். அதன்பிறகு சிம் நிரந்தரமாக முடக்கப்படும். விவரங்களுக்கு, மொபைல் நிறுவனத்தைத் தொடர்புகொள்ளவும்.</item>
diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml
index 6052f40..3c3972c 100644
--- a/packages/SystemUI/res-keyguard/values-vi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml
@@ -38,7 +38,7 @@
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc"</string>
<string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc nhanh"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc chậm"</string>
- <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mức sạc tạm thời bị giới hạn"</string>
+ <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Khả năng sạc tạm thời bị hạn chế"</string>
<string name="keyguard_low_battery" msgid="1868012396800230904">"Kết nối bộ sạc của bạn."</string>
<string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Nhấn vào Menu để mở khóa."</string>
<string name="keyguard_network_locked_message" msgid="407096292844868608">"Mạng đã bị khóa"</string>
diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
index ec0500f..34c8926 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
@@ -36,7 +36,7 @@
<string name="keyguard_charged" msgid="5478247181205188995">"已完成充電"</string>
<string name="keyguard_plugged_in_wireless" msgid="2537874724955057383">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 無線充電中"</string>
<string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在充電"</string>
- <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在快速充電"</string>
+ <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 快速充電中"</string>
<string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> •正在慢速充電"</string>
<string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電暫時受限"</string>
<string name="keyguard_low_battery" msgid="1868012396800230904">"請連接充電器。"</string>
diff --git a/packages/SystemUI/res/color/screenrecord_switch_thumb_color.xml b/packages/SystemUI/res/color/screenrecord_switch_thumb_color.xml
new file mode 100644
index 0000000..22b7a1e
--- /dev/null
+++ b/packages/SystemUI/res/color/screenrecord_switch_thumb_color.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Disabled status of thumb -->
+ <item android:state_enabled="false"
+ android:color="@android:color/system_neutral2_100" />
+ <!-- Toggle off status of thumb -->
+ <item android:state_checked="false"
+ android:color="@android:color/system_neutral2_100" />
+ <!-- Enabled or toggle on status of thumb -->
+ <item android:color="@android:color/system_accent1_100" />
+</selector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/color/screenrecord_switch_track_color.xml b/packages/SystemUI/res/color/screenrecord_switch_track_color.xml
new file mode 100644
index 0000000..bb55b07
--- /dev/null
+++ b/packages/SystemUI/res/color/screenrecord_switch_track_color.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2021 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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- Disabled status of thumb -->
+ <item android:state_enabled="false"
+ android:color="@android:color/system_neutral2_600"
+ android:alpha="?android:attr/disabledAlpha" />
+ <!-- Toggle off status of thumb -->
+ <item android:state_checked="false"
+ android:color="@android:color/system_neutral2_600" />
+ <!-- Enabled or toggle on status of thumb -->
+ <item android:color="@android:color/system_accent1_600" />
+</selector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_touch.xml b/packages/SystemUI/res/drawable/ic_touch.xml
index 4f6698d..18ad367 100644
--- a/packages/SystemUI/res/drawable/ic_touch.xml
+++ b/packages/SystemUI/res/drawable/ic_touch.xml
@@ -13,14 +13,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!-- maybe need android:fillType="evenOdd" -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
- android:width="24dp"
- android:height="24dp"
- android:viewportWidth="24.0"
- android:viewportHeight="24.0">
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="?attr/colorControlNormal">
<path
- android:fillColor="#FF000000"
- android:pathData="M9,7.5V11.24C7.79,10.43 7,9.06 7,7.5C7,5.01 9.01,3 11.5,3C13.99,3 16,5.01 16,7.5C16,9.06 15.21,10.43 14,11.24V7.5C14,6.12 12.88,5 11.5,5C10.12,5 9,6.12 9,7.5ZM14.3,13.61L18.84,15.87C19.37,16.09 19.75,16.63 19.75,17.25C19.75,17.31 19.74,17.38 19.73,17.45L18.98,22.72C18.87,23.45 18.29,24 17.54,24H10.75C10.34,24 9.96,23.83 9.69,23.56L4.75,18.62L5.54,17.82C5.74,17.62 6.02,17.49 6.33,17.49C6.39,17.49 6.4411,17.4989 6.4922,17.5078C6.5178,17.5122 6.5433,17.5167 6.57,17.52L10,18.24V7.5C10,6.67 10.67,6 11.5,6C12.33,6 13,6.67 13,7.5V13.5H13.76C13.95,13.5 14.13,13.54 14.3,13.61Z"
- />
+ android:fillColor="@android:color/white"
+ android:pathData="M18.19,12.44l-3.24,-1.62c1.29,-1 2.12,-2.56 2.12,-4.32c0,-3.03 -2.47,-5.5 -5.5,-5.5s-5.5,2.47 -5.5,5.5c0,2.13 1.22,3.98 3,4.89v3.26c-2.11,-0.45 -2.01,-0.44 -2.26,-0.44c-0.53,0 -1.03,0.21 -1.41,0.59L4,16.22l5.09,5.09C9.52,21.75 10.12,22 10.74,22h6.3c0.98,0 1.81,-0.7 1.97,-1.67l0.8,-4.71C20.03,14.32 19.38,13.04 18.19,12.44zM17.84,15.29L17.04,20h-6.3c-0.09,0 -0.17,-0.04 -0.24,-0.1l-3.68,-3.68l4.25,0.89V6.5c0,-0.28 0.22,-0.5 0.5,-0.5c0.28,0 0.5,0.22 0.5,0.5v6h1.76l3.46,1.73C17.69,14.43 17.91,14.86 17.84,15.29zM8.07,6.5c0,-1.93 1.57,-3.5 3.5,-3.5s3.5,1.57 3.5,3.5c0,0.95 -0.38,1.81 -1,2.44V6.5c0,-1.38 -1.12,-2.5 -2.5,-2.5c-1.38,0 -2.5,1.12 -2.5,2.5v2.44C8.45,8.31 8.07,7.45 8.07,6.5z"/>
</vector>
diff --git a/packages/SystemUI/res/drawable/screenrecord_button_background_outline.xml b/packages/SystemUI/res/drawable/screenrecord_button_background_outline.xml
new file mode 100644
index 0000000..59a31e8
--- /dev/null
+++ b/packages/SystemUI/res/drawable/screenrecord_button_background_outline.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2021 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
+ -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ android:shape="rectangle">
+ <stroke
+ android:color="?androidprv:attr/colorAccentPrimary"
+ android:width="1dp"/>
+ <corners android:radius="24dp"/>
+ <padding
+ android:left="16dp"
+ android:right="16dp"
+ android:top="8dp"
+ android:bottom="8dp" />
+ <solid android:color="@android:color/transparent" />
+</shape>
diff --git a/core/tests/coretests/apks/res_upgrade/res_after/values/values.xml b/packages/SystemUI/res/drawable/screenrecord_button_background_solid.xml
similarity index 61%
copy from core/tests/coretests/apks/res_upgrade/res_after/values/values.xml
copy to packages/SystemUI/res/drawable/screenrecord_button_background_solid.xml
index db4fd54..d6446fc 100644
--- a/core/tests/coretests/apks/res_upgrade/res_after/values/values.xml
+++ b/packages/SystemUI/res/drawable/screenrecord_button_background_solid.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-
<!--
~ Copyright (C) 2021 The Android Open Source Project
~
@@ -15,8 +14,14 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
-<resources>
- <string name="version">after</string>
- <public type="string" name="version" id="0x7f010000"/>
-</resources>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ android:shape="rectangle">
+ <corners android:radius="24dp"/>
+ <padding
+ android:left="16dp"
+ android:right="16dp"
+ android:top="8dp"
+ android:bottom="8dp" />
+ <solid android:color="?androidprv:attr/colorAccentPrimary" />
+</shape>
\ No newline at end of file
diff --git a/core/tests/coretests/apks/res_upgrade/res_after/values/values.xml b/packages/SystemUI/res/drawable/screenrecord_spinner_background.xml
similarity index 67%
copy from core/tests/coretests/apks/res_upgrade/res_after/values/values.xml
copy to packages/SystemUI/res/drawable/screenrecord_spinner_background.xml
index db4fd54..e82fb8f 100644
--- a/core/tests/coretests/apks/res_upgrade/res_after/values/values.xml
+++ b/packages/SystemUI/res/drawable/screenrecord_spinner_background.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-
<!--
~ Copyright (C) 2021 The Android Open Source Project
~
@@ -15,8 +14,10 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
-<resources>
- <string name="version">after</string>
- <public type="string" name="version" id="0x7f010000"/>
-</resources>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ android:shape="rectangle"
+ android:padding="12dp">
+ <corners android:radius="24dp"/>
+ <solid android:color="?androidprv:attr/colorAccentSecondary" />
+</shape>
\ No newline at end of file
diff --git a/core/tests/coretests/apks/res_upgrade/res_after/values/values.xml b/packages/SystemUI/res/drawable/screenrecord_switch_thumb.xml
similarity index 61%
copy from core/tests/coretests/apks/res_upgrade/res_after/values/values.xml
copy to packages/SystemUI/res/drawable/screenrecord_switch_thumb.xml
index db4fd54..f78c582 100644
--- a/core/tests/coretests/apks/res_upgrade/res_after/values/values.xml
+++ b/packages/SystemUI/res/drawable/screenrecord_switch_thumb.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-
<!--
~ Copyright (C) 2021 The Android Open Source Project
~
@@ -16,7 +15,15 @@
~ limitations under the License.
-->
-<resources>
- <string name="version">after</string>
- <public type="string" name="version" id="0x7f010000"/>
-</resources>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:top="4dp"
+ android:left="4dp"
+ android:right="4dp"
+ android:bottom="4dp">
+ <shape android:shape="oval" >
+ <size android:height="20dp" android:width="20dp" />
+ <solid android:color="@color/screenrecord_switch_thumb_color" />
+ </shape>
+ </item>
+</layer-list>
\ No newline at end of file
diff --git a/core/tests/coretests/apks/res_upgrade/res_after/values/values.xml b/packages/SystemUI/res/drawable/screenrecord_switch_track.xml
similarity index 71%
rename from core/tests/coretests/apks/res_upgrade/res_after/values/values.xml
rename to packages/SystemUI/res/drawable/screenrecord_switch_track.xml
index db4fd54..82595e4 100644
--- a/core/tests/coretests/apks/res_upgrade/res_after/values/values.xml
+++ b/packages/SystemUI/res/drawable/screenrecord_switch_track.xml
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-
<!--
~ Copyright (C) 2021 The Android Open Source Project
~
@@ -15,8 +14,11 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
-<resources>
- <string name="version">after</string>
- <public type="string" name="version" id="0x7f010000"/>
-</resources>
+<shape
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle"
+ android:width="52dp"
+ android:height="28dp">
+ <solid android:color="@color/screenrecord_switch_track_color" />
+ <corners android:radius="35dp" />
+</shape>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/screen_record_dialog.xml b/packages/SystemUI/res/layout/screen_record_dialog.xml
index c1767ee..d1cc01f 100644
--- a/packages/SystemUI/res/layout/screen_record_dialog.xml
+++ b/packages/SystemUI/res/layout/screen_record_dialog.xml
@@ -28,6 +28,10 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:paddingStart="24dp"
+ android:paddingEnd="24dp"
+ android:paddingTop="26dp"
+ android:paddingBottom="30dp"
android:orientation="vertical">
<!-- Header -->
@@ -35,27 +39,28 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:gravity="center"
- android:padding="@dimen/screenrecord_dialog_padding">
+ android:gravity="center">
<ImageView
android:layout_width="@dimen/screenrecord_logo_size"
android:layout_height="@dimen/screenrecord_logo_size"
android:src="@drawable/ic_screenrecord"
- android:tint="@color/GM2_red_500"
- android:layout_marginBottom="@dimen/screenrecord_dialog_padding"/>
+ android:tint="@color/screenrecord_icon_color"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:fontFamily="@*android:string/config_headlineFontFamily"
- android:text="@string/screenrecord_start_label"/>
+ android:text="@string/screenrecord_start_label"
+ android:layout_marginTop="22dp"
+ android:layout_marginBottom="15dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/screenrecord_description"
android:textAppearance="?android:attr/textAppearanceSmall"
- android:paddingTop="@dimen/screenrecord_dialog_padding"
- android:paddingBottom="@dimen/screenrecord_dialog_padding"/>
+ android:textColor="?android:textColorSecondary"
+ android:gravity="center"
+ android:layout_marginBottom="20dp"/>
<!-- Options -->
<LinearLayout
@@ -63,18 +68,21 @@
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
- android:layout_width="@dimen/screenrecord_logo_size"
- android:layout_height="@dimen/screenrecord_logo_size"
+ android:layout_width="@dimen/screenrecord_option_icon_size"
+ android:layout_height="@dimen/screenrecord_option_icon_size"
android:src="@drawable/ic_mic_26dp"
- android:tint="@color/GM2_grey_700"
+ android:tint="?android:attr/textColorSecondary"
android:layout_gravity="center"
android:layout_weight="0"
- android:layout_marginRight="@dimen/screenrecord_dialog_padding"/>
+ android:layout_marginRight="@dimen/screenrecord_option_padding"/>
<Spinner
android:id="@+id/screen_recording_options"
android:layout_width="0dp"
- android:layout_height="48dp"
+ android:layout_height="wrap_content"
+ android:minHeight="48dp"
android:layout_weight="1"
+ android:popupBackground="@drawable/screenrecord_spinner_background"
+ android:dropDownWidth="274dp"
android:prompt="@string/screenrecord_audio_label"/>
<Switch
android:layout_width="wrap_content"
@@ -83,63 +91,76 @@
android:layout_weight="0"
android:layout_gravity="end"
android:contentDescription="@string/screenrecord_audio_label"
- android:id="@+id/screenrecord_audio_switch"/>
+ android:id="@+id/screenrecord_audio_switch"
+ style="@style/ScreenRecord.Switch"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal">
+ android:orientation="horizontal"
+ android:layout_marginTop="@dimen/screenrecord_option_padding">
<ImageView
- android:layout_width="@dimen/screenrecord_logo_size"
- android:layout_height="@dimen/screenrecord_logo_size"
+ android:layout_width="@dimen/screenrecord_option_icon_size"
+ android:layout_height="@dimen/screenrecord_option_icon_size"
+ android:layout_weight="0"
android:src="@drawable/ic_touch"
- android:tint="@color/GM2_grey_700"
+ android:tint="?android:attr/textColorSecondary"
android:layout_gravity="center"
- android:layout_marginRight="@dimen/screenrecord_dialog_padding"/>
- <Switch
- android:layout_width="match_parent"
- android:layout_height="48dp"
- android:id="@+id/screenrecord_taps_switch"
+ android:layout_marginRight="@dimen/screenrecord_option_padding"/>
+ <TextView
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:minHeight="48dp"
+ android:layout_weight="1"
android:text="@string/screenrecord_taps_label"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:fontFamily="@*android:string/config_headlineFontFamily"
android:textColor="?android:attr/textColorPrimary"
- android:textAppearance="?android:attr/textAppearanceSmall"/>
-
+ android:importantForAccessibility="no"/>
+ <Switch
+ android:layout_width="wrap_content"
+ android:minWidth="48dp"
+ android:layout_height="48dp"
+ android:layout_weight="0"
+ android:id="@+id/screenrecord_taps_switch"
+ android:contentDescription="@string/screenrecord_taps_label"
+ style="@style/ScreenRecord.Switch"/>
</LinearLayout>
</LinearLayout>
- <!-- hr -->
- <View
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:background="@color/GM2_grey_300"/>
-
<!-- Buttons -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
- android:padding="@dimen/screenrecord_dialog_padding">
- <Button
+ android:layout_marginTop="36dp">
+ <TextView
android:id="@+id/button_cancel"
android:layout_width="wrap_content"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_gravity="start"
android:text="@string/cancel"
- style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored"/>
+ android:textColor="?android:textColorPrimary"
+ android:background="@drawable/screenrecord_button_background_outline"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textSize="14sp"/>
<Space
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
- <Button
+ <TextView
android:id="@+id/button_start"
android:layout_width="wrap_content"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:layout_weight="0"
android:layout_gravity="end"
android:text="@string/screenrecord_start"
- style="@android:style/Widget.DeviceDefault.Button.Colored"/>
+ android:textColor="@android:color/system_neutral1_900"
+ android:background="@drawable/screenrecord_button_background_solid"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textSize="14sp"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
diff --git a/packages/SystemUI/res/layout/screen_record_dialog_audio_source.xml b/packages/SystemUI/res/layout/screen_record_dialog_audio_source.xml
index 0c4d5a2..ab600b3 100644
--- a/packages/SystemUI/res/layout/screen_record_dialog_audio_source.xml
+++ b/packages/SystemUI/res/layout/screen_record_dialog_audio_source.xml
@@ -19,18 +19,19 @@
android:layout_width="250dp"
android:layout_height="48dp"
android:orientation="vertical"
- android:padding="13dp">
+ android:padding="12dp">
<TextView
android:id="@+id/screen_recording_dialog_source_text"
- android:layout_width="250dp"
+ android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorPrimary"/>
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textSize="14sp"
+ android:textColor="@android:color/system_neutral1_900"/>
<TextView
android:id="@+id/screen_recording_dialog_source_description"
- android:layout_width="250dp"
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary"/>
+ android:textColor="@android:color/system_neutral2_700"/>
</LinearLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/screen_record_dialog_audio_source_selected.xml b/packages/SystemUI/res/layout/screen_record_dialog_audio_source_selected.xml
index fabe9e2..e2b8d33 100644
--- a/packages/SystemUI/res/layout/screen_record_dialog_audio_source_selected.xml
+++ b/packages/SystemUI/res/layout/screen_record_dialog_audio_source_selected.xml
@@ -24,7 +24,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/screenrecord_audio_label"
- android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:fontFamily="@*android:string/config_headlineFontFamily"
android:textColor="?android:attr/textColorPrimary"/>
<TextView
android:id="@+id/screen_recording_dialog_source_text"
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 89e841e..ab91e784 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Maak gesprek oop"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Gespreklegstukke"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tik op \'n gesprek om dit by jou tuisskerm te voeg"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Kom kyk weer nadat jy \'n paar boodskappe gekry het"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioriteitgesprekke"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Onlangse gesprekke"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Sien onlangse boodskappe, gemiste oproepe en statusopdaterings"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Gesprek"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Onderbreek deur Moenie Steur nie"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> het \'n boodskap gestuur"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> het \'n prent gestuur"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Kon nie jou batterymeter lees nie"</string>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 5d94dba..823f9a1 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"ውይይት ይክፈቱ"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"የውይይት ምግብሮች"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"በመነሻ ማያ ገጽዎ ላይ ለማከል አንድ ውይይት መታ ያድርጉ"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"አንዳንድ መልዕክቶች ከደረሰዎት በኋላ እዚህ ተመልሰው ይፈትሹ"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"የቅድሚያ ውይይቶች"</string>
<string name="recent_conversations" msgid="8531874684782574622">"የቅርብ ጊዜ ውይይቶች"</string>
<string name="okay" msgid="6490552955618608554">"እሺ"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"የቅርብ ጊዜ መልዕክቶችን፣ ያመለጡ ጥሪዎች እና፣ የሁኔታ ዝመናዎችን ይመልከቱ"</string>
<string name="people_tile_title" msgid="6589377493334871272">"ውይይት"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"በአትረብሽ ባለበት ቆሟል"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> መልዕክት ልኳል"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ምስል ልኳል"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"የባትሪ መለኪያዎን የማንበብ ችግር"</string>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index fb6cba1..999f4ab 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -1139,7 +1139,8 @@
<string name="basic_status" msgid="2315371112182658176">"محادثة مفتوحة"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"أدوات المحادثة"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"انقر على محادثة لإضافتها إلى \"الشاشة الرئيسية\"."</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"يمكنك الرجوع إلى هذه الأداة عندما تتلقّى بعض الرسائل."</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"المحادثات ذات الأولوية"</string>
<string name="recent_conversations" msgid="8531874684782574622">"المحادثات الحديثة"</string>
<string name="okay" msgid="6490552955618608554">"حسنًا"</string>
@@ -1168,8 +1169,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"عرض أحدث الرسائل والمكالمات الفائتة والتغييرات في الحالة"</string>
<string name="people_tile_title" msgid="6589377493334871272">"محادثة"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"تم إيقاف الإشعار مؤقتًا من خلال ميزة \"عدم الإزعاج\""</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"تم إرسال رسالة من <xliff:g id="NAME">%1$s</xliff:g>."</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"تم إرسال صورة من <xliff:g id="NAME">%1$s</xliff:g>."</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"حدثت مشكلة أثناء قراءة مقياس مستوى شحن البطارية."</string>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 4892730..110bf2e 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -32,14 +32,14 @@
<string name="invalid_charger" msgid="4370074072117767416">"ইউএছবি জৰিয়তে চ্চাৰ্জ কৰিব নোৱাৰি। আপোনাৰ ডিভাইচৰ লগত পোৱা চ্চাৰ্জাৰটো ব্যৱহাৰ কৰক।"</string>
<string name="invalid_charger_title" msgid="938685362320735167">"ইউএছবি জৰিয়তে চ্চাৰ্জ কৰিব নোৱাৰি"</string>
<string name="invalid_charger_text" msgid="2339310107232691577">"আপোনাৰ ডিভাইচৰ লগত পোৱা চ্চাৰ্জাৰটো ব্যৱহাৰ কৰক।"</string>
- <string name="battery_low_why" msgid="2056750982959359863">"ছেটিংসমূহ"</string>
+ <string name="battery_low_why" msgid="2056750982959359863">"ছেটিং"</string>
<string name="battery_saver_confirmation_title" msgid="1234998463717398453">"বেটাৰি সঞ্চয়কাৰী অন কৰেনে?"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"বেটাৰী সঞ্চয়কাৰীৰ বিষয়ে"</string>
<string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"অন কৰক"</string>
<string name="battery_saver_start_action" msgid="4553256017945469937">"বেটাৰি সঞ্চয়কাৰী অন কৰক"</string>
<string name="status_bar_settings_settings_button" msgid="534331565185171556">"ছেটিংসমূহ"</string>
<string name="status_bar_settings_wifi_button" msgid="7243072479837270946">"ৱাই-ফাই"</string>
- <string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"স্বয়ং-ঘূৰ্ণন স্ক্ৰীণ"</string>
+ <string name="status_bar_settings_auto_rotation" msgid="8329080442278431708">"স্বয়ং-ঘূৰ্ণন স্ক্ৰীন"</string>
<string name="status_bar_settings_mute_label" msgid="914392730086057522">"মিউট"</string>
<string name="status_bar_settings_auto_brightness_label" msgid="2151934479226017725">"স্বয়ং"</string>
<string name="status_bar_settings_notifications" msgid="5285316949980621438">"জাননীসমূহ"</string>
@@ -343,7 +343,7 @@
<string name="quick_settings_bluetooth_secondary_label_transient" msgid="3882884317600669650">"অন কৰি থকা হৈছে…"</string>
<string name="quick_settings_brightness_label" msgid="680259653088849563">"উজ্জ্বলতা"</string>
<string name="quick_settings_rotation_unlocked_label" msgid="2359922767950346112">"স্বয়ং-ঘূৰ্ণন"</string>
- <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"স্বয়ং-ঘূৰ্ণন স্ক্ৰীণ"</string>
+ <string name="accessibility_quick_settings_rotation" msgid="4800050198392260738">"স্বয়ং-ঘূৰ্ণন স্ক্ৰীন"</string>
<string name="accessibility_quick_settings_rotation_value" msgid="2916484894750819251">"<xliff:g id="ID_1">%s</xliff:g> ম\'ড"</string>
<string name="quick_settings_rotation_locked_label" msgid="4420863550666310319">"ঘূৰ্ণন লক কৰা হ’ল"</string>
<string name="quick_settings_rotation_locked_portrait_label" msgid="1194988975270484482">"প\'ৰ্ট্ৰেইট"</string>
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"বাৰ্তালাপ খোলক"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"বাৰ্তালাপ ৱিজেট"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"আপোনাৰ গৃহ স্ক্ৰীনত কোনো বাৰ্তালাপ যোগ দিবলৈ সেইটোত টিপক"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"আপুনি কিবা বাৰ্তা পোৱাৰ পাছত ইয়াত পুনৰ চাওক"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"অগ্ৰাধিকাৰপ্ৰাপ্ত বাৰ্তালাপ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"শেহতীয়া বাৰ্তালাপ"</string>
<string name="okay" msgid="6490552955618608554">"ঠিক আছে"</string>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index a67a41a..b47f251 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Açıq söhbət"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Söhbət vidcetləri"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Əsas ekranınıza əlavə etmək üçün söhbətə toxunun"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Mesaj gəldikdə yenidən buraya baxın"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Önəmli söhbətlər"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Son söhbətlər"</string>
<string name="okay" msgid="6490552955618608554">"Oldu"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Son mesajlar, buraxılmış zənglər və status güncəlləmələrinə baxın"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Söhbət"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\"Narahat Etməyin\" rejimini tərəfindən durdurulub"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> mesaj göndərdi"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> şəkil göndərdi"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Batareya ölçüsünü oxuyarkən problem yarandı"</string>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 3cbe6ba..2bf6920 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -1121,7 +1121,8 @@
<string name="basic_status" msgid="2315371112182658176">"Otvorite konverzaciju"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Vidžeti za konverzaciju"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Dodirnite konverzaciju da biste je dodali na početni ekran"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Vratite se ovde kada dobijete neku poruku"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioritetne konverzacije"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Nedavne konverzacije"</string>
<string name="okay" msgid="6490552955618608554">"Važi"</string>
@@ -1150,8 +1151,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Pogledajte nedavne poruke, propuštene pozive i ažuriranja statusa"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Konverzacija"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Pauzirano režimom Ne uznemiravaj"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> šalje poruku"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> šalje sliku"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problem sa očitavanjem merača baterije"</string>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 3e06a68..922ebb0b 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"Адкрытая размова"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Віджэты размовы"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Націсніце на размову, каб дадаць яе на галоўны экран"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Вярніцеся сюды, калі з\'явяцца паведамленні"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Прыярытэтныя размовы"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Нядаўнія размовы"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1156,8 +1157,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Глядзець нядаўнія паведамленні, прапушчаныя выклікі і абнаўленні стану"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Размова"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Прыпынена функцыяй \"Не турбаваць\""</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"Карыстальнік <xliff:g id="NAME">%1$s</xliff:g> адправіў паведамленне"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"Карыстальнік <xliff:g id="NAME">%1$s</xliff:g> адправіў відарыс"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Праблема з чытаннем індыкатара зараду акумулятара"</string>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index fafc9ee..21971d0 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Отворен разговор"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Приспособления за разговор"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Докоснете разговор, за да го добавите към началния си екран"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Проверете отново тук, когато получите съобщения"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Разговори с приоритет"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Скорошни разговори"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 7c51625..8c02a0f 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"খোলা কথোপকথন"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"কথোপকথন উইজেট"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"কোনও কথোপথন আপনার হোম স্ক্রিনে যোগ করার জন্য এতে ট্যাপ করুন"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"কোনও মেসেজ পেলে আবার এখানে দেখুন"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"গুরুত্বপূর্ণ কথোপকথন"</string>
<string name="recent_conversations" msgid="8531874684782574622">"সাম্প্রতিক কথোপকথন"</string>
<string name="okay" msgid="6490552955618608554">"ঠিক আছে"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"সাম্প্রতিক মেসেজ, মিসড কল এবং স্ট্যাটাস সংক্রান্ত আপডেট দেখুন"</string>
<string name="people_tile_title" msgid="6589377493334871272">"কথোপকথন"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\'বিরক্ত করবে না\' মোডের মাধ্যমে পজ করা আছে"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> একটি মেসেজ পাঠিয়েছেন"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> একটি ছবি পাঠিয়েছেন"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"ব্যাটারির মিটারের রিডিং নেওয়ার সময় সমস্যা হয়েছে"</string>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 02cdd7a..769da0a 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -1121,7 +1121,8 @@
<string name="basic_status" msgid="2315371112182658176">"Otvoreni razgovor"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Vidžeti za razgovor"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Dodirnite razgovor da ga dodate na početni ekran"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Vratite se ovdje kada dobijete neku poruku"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioritetni razgovori"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Nedavni razgovori"</string>
<string name="okay" msgid="6490552955618608554">"Uredu"</string>
@@ -1150,8 +1151,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Pregledajte nedavne poruke, propuštene pozive i ažuriranja statusa"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Razgovor"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Pauzirala je funkcija Ne ometaj"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> je poslao/la poruku"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> je poslao/la sliku"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Došlo je do problema prilikom očitavanja mjerača stanja baterije"</string>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index a01d4fe..055e68a 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Conversa oberta"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversa"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Toca una conversa per afegir-la a la teva pantalla d\'inici"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Torna a consultar aquesta pàgina quan rebis algun missatge"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Converses prioritàries"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Converses recents"</string>
<string name="okay" msgid="6490552955618608554">"D\'acord"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Consulta els missatges recents, les trucades perdudes i les actualitzacions d\'estat"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Conversa"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Posat en pausa pel mode No molestis"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ha enviat un missatge"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ha enviat una imatge"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Hi ha hagut un problema en llegir el mesurador de la bateria"</string>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index f3a5828..6545eec3 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"Otevřít konverzaci"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgety konverzací"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Klepnutím na konverzaci ji přidáte na plochu"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Vraťte se sem, až dostanete nějaké zprávy"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioritní konverzace"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Poslední konverzace"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1156,8 +1157,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Zobrazit poslední zprávy, zmeškané hovory a aktualizace stavu"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Konverzace"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Pozastaveno funkcí Nerušit"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> posílá zprávu"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> posílá obrázek"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problém s načtením měřiče baterie"</string>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 53fb06c..caa47a9 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Åben samtale"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Samtalewidgets"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tryk på en samtale for at føje den til din startskærm"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Vend tilbage hertil, når du har fået beskeder"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioriterede samtaler"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Seneste samtaler"</string>
<string name="okay" msgid="6490552955618608554">"Okay"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Se dine seneste beskeder, mistede opkald og statusopdateringer"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Samtale"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Sat på pause af Forstyr ikke"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> har sendt en sms"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> har sendt et billede"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Der er problemer med at aflæse dit batteriniveau"</string>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 82c8c58..7da6f88 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Offene Unterhaltung"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Unterhaltungs-Widgets"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tippe auf eine Unterhaltung, um sie deinem Startbildschirm hinzuzufügen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Wenn du Nachrichten empfängst, findest du sie hier"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Vorrangige Unterhaltungen"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Neueste Unterhaltungen"</string>
<string name="okay" msgid="6490552955618608554">"Ok"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Letzte Nachrichten, verpasste Anrufe und Statusaktualisierungen ansehen"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Unterhaltung"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Durch „Bitte nicht stören“ pausiert"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> hat eine Nachricht gesendet"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> hat ein Bild gesendet"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problem beim Lesen des Akkustands"</string>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 2ab27a7..11bc5ad 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Άνοιγμα συνομιλίας"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Γραφικά στοιχεία συνομιλίας"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Πατήστε μια συνομιλία για να την προσθέσετε στην αρχική οθόνη"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Ελέγξτε ξανά εδώ όταν λάβετε ορισμένα μηνύματα"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Συζητήσεις προτεραιότητας"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Πρόσφατες συζητήσεις"</string>
<string name="okay" msgid="6490552955618608554">"Εντάξει"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Δείτε πρόσφατα μηνύματα, αναπάντητες κλήσεις και ενημερώσεις κατάστασης"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Συνομιλία"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Σε παύση από τη λειτουργία Μην ενοχλείτε"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"Ο χρήστης <xliff:g id="NAME">%1$s</xliff:g> έστειλε ένα μήνυμα"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"Ο χρήστης <xliff:g id="NAME">%1$s</xliff:g> έστειλε μια εικόνα"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Υπάρχει κάποιο πρόβλημα με την ανάγνωση του μετρητή μπαταρίας"</string>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 7fec05a..f401fd4 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"Open conversation"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Conversation widgets"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tap a conversation to add it to your home screen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Check back here once you get some messages"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"Your recent conversations will show up here"</string>
<string name="priority_conversations" msgid="3967482288896653039">"Priority conversations"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Recent conversations"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 97624b6..cef55f7 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"Open conversation"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Conversation widgets"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tap a conversation to add it to your home screen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Check back here once you get some messages"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"Your recent conversations will show up here"</string>
<string name="priority_conversations" msgid="3967482288896653039">"Priority conversations"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Recent conversations"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 7fec05a..f401fd4 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"Open conversation"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Conversation widgets"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tap a conversation to add it to your home screen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Check back here once you get some messages"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"Your recent conversations will show up here"</string>
<string name="priority_conversations" msgid="3967482288896653039">"Priority conversations"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Recent conversations"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 7fec05a..f401fd4 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"Open conversation"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Conversation widgets"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tap a conversation to add it to your home screen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Check back here once you get some messages"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"Your recent conversations will show up here"</string>
<string name="priority_conversations" msgid="3967482288896653039">"Priority conversations"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Recent conversations"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index cf89f22..7fe3a63 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"Open conversation"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Conversation widgets"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tap a conversation to add it to your Home screen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Check back here once you get some messages"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"Your recent conversations will show up here"</string>
<string name="priority_conversations" msgid="3967482288896653039">"Priority conversations"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Recent conversations"</string>
<string name="okay" msgid="6490552955618608554">"Okay"</string>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index 6de7754..f41a02c 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Conversación abierta"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversación"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Presiona una conversación para agregarla a tu pantalla principal"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Vuelve a consultar cuando recibas algunos mensajes"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversaciones prioritarias"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversaciones recientes"</string>
<string name="okay" msgid="6490552955618608554">"Aceptar"</string>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index b58b0f6..b5d1b22 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Conversación abierta"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversación"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Toca una conversación para añadirla a la pantalla de inicio"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Vuelve cuando recibas algún mensaje"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversaciones prioritarias"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversaciones recientes"</string>
<string name="okay" msgid="6490552955618608554">"Vale"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Consulta los mensajes recientes, las llamadas perdidas y los cambios de estado"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Conversación"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Pausado por No molestar"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ha enviado un mensaje"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ha enviado una imagen"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"No se ha podido leer el indicador de batería"</string>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 2afd6af..7d04f81 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Avage vestlus"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Vestlusvidinad"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Puudutage vestlust, et lisada see oma avakuvale"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Tulge tagasi, kui olete mõne sõnumi saanud"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioriteetsed vestlused"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Hiljutised vestlused"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Vaadake hiljutisi sõnumeid, vastamata kõnesid ja olekuvärskendusi"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Vestlus"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Peatas režiim Mitte segada"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> saatis sõnumi"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> saatis pildi"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Probleem akumõõdiku lugemisel"</string>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 64641d6..633c91f 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Elkarrizketa irekia"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Elkarrizketa-widgetak"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Sakatu elkarrizketa bat hasierako pantailan gehitzeko"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Itzuli geroago, zenbait mezu jasotakoan"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Lehentasunezko elkarrizketak"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Azken elkarrizketak"</string>
<string name="okay" msgid="6490552955618608554">"Ados"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Ikusi azken mezuak, dei galduak eta egoerari buruzko informazio eguneratua"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Elkarrizketa"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Ez molestatzeko moduak pausatu du"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> erabiltzaileak mezu bat bidali du"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> erabiltzaileak irudi bat bidali du"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Arazo bat gertatu da bateria-neurgailua irakurtzean"</string>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index c71ee67..7420ad6 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"باز کردن مکالمه"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"ابزارکهای مکالمه"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"روی مکالمهای ضربه بزنید تا به «صفحه اصلی» اضافه شود"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"بهمحض اینکه چند پیام دریافت کردید، به اینجا سربزنید"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"مکالمههای اولویتدار"</string>
<string name="recent_conversations" msgid="8531874684782574622">"گفتگوهای اخیر"</string>
<string name="okay" msgid="6490552955618608554">"تأیید"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"بیشاز <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"دیدن بهروزرسانیهای وضعیت، تماسهای بیپاسخ، و پیامهای اخیر"</string>
<string name="people_tile_title" msgid="6589377493334871272">"مکالمه"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"با «مزاحم نشوید» موقتاً متوقف شده است"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> پیامی ارسال کرد"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> تصویری ارسال کرد"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"مشکلی در خواندن میزان باتری وجود دارد"</string>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 136ab7c..8c546f7 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Avaa keskustelu"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Keskusteluwidgetit"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Lisää keskustelu aloitusnäytölle napauttamalla sitä"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Palaa taas tänne, kun olet saanut viestejä"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Tärkeät keskustelut"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Uusimmat keskustelut"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"Yli <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Katso viimeaikaiset viestit, vastaamattomat puhelut ja tilapäivitykset"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Keskustelu"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Älä häiritse ‑tilan keskeyttämä"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> lähetti viestin"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> lähetti kuvan"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Ongelma akkumittarin lukemisessa"</string>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 00457cdd..a6987f4 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Ouvrir la conversation"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversation"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Touchez une conversation pour l\'ajouter à votre écran d\'accueil"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Revenez ici quand vous aurez reçu des messages"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversations prioritaires"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversations récentes"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Affichez les messages récents, les appels manqués et les mises à jour d\'état"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Conversation"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Interrompues par la fonctionnalité Ne pas déranger"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> a envoyé un message"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> a envoyé une image"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Un problème est survenu lors de la lecture du niveau de charge de la pile"</string>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 3835cf7..d67cac4 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -733,8 +733,8 @@
<string name="notification_automatic_title" msgid="3745465364578762652">"Automatique"</string>
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Aucun son ni vibration"</string>
<string name="notification_conversation_summary_low" msgid="1734433426085468009">"Aucun son ni vibration, s\'affiche plus bas dans la section des conversations"</string>
- <string name="notification_channel_summary_default" msgid="3282930979307248890">"Peut sonner ou vibrer en fonction des paramètres du téléphone"</string>
- <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Peut sonner ou vibrer en fonction des paramètres du téléphone. Les conversations provenant de <xliff:g id="APP_NAME">%1$s</xliff:g> s\'affichent sous forme de bulles par défaut."</string>
+ <string name="notification_channel_summary_default" msgid="3282930979307248890">"Son ou vibreur, selon les paramètres du téléphone"</string>
+ <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Son ou vibreur, selon les paramètres du téléphone. Les conversations provenant de <xliff:g id="APP_NAME">%1$s</xliff:g> s\'affichent sous forme de bulles par défaut."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Attire votre attention à l\'aide d\'un raccourci flottant vers ce contenu."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Laisser le système déterminer si cette notification doit être accompagnée d\'un son ou d\'une vibration"</string>
<string name="notification_channel_summary_automatic_alerted" msgid="954166812246932240">"<b>État :</b> Élevée à la catégorie \"Par défaut\""</string>
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Conversation ouverte"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversation"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Appuyez sur une conversation pour l\'ajouter à votre écran d\'accueil"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Revenez quand vous aurez reçu des messages"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversations prioritaires"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversations récentes"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"+ de <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Voir les messages récents, les appels manqués et les notifications d\'état"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Conversation"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Mise en pause par Ne pas déranger"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> a envoyé un message"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> a envoyé une image"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Un problème est survenu au niveau de la lecture de votre outil de mesure de batterie"</string>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index ffe51cc1..5f47203 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversa"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Toca unha conversa para engadila á pantalla de inicio"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Volve aquí despois de recibir mensaxes"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversas prioritarias"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversas recentes"</string>
<string name="okay" msgid="6490552955618608554">"De acordo"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"+ de <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Consulta as mensaxes recentes, as chamadas perdidas e as actualizacións dos estados"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Conversa"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Púxose en pausa debido ao modo Non molestar"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> enviou unha mensaxe"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> enviou unha imaxe"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Produciuse un problema ao ler o medidor da batería"</string>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 96bfdd7..3f4d524 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"વાતચીત ખોલો"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"વાતચીતના વિજેટ"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"તમારી હોમ સ્ક્રીનમાં વાતચીત ઉમેરવા માટે તેના પર ટૅપ કરો"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"એકવાર તમને અમુક સંદેશા મળે પછી ફરીથી અહીં ચેક કરો"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"તમારી તાજેતરની વાતચીતો અહીં બતાવવામાં આવશે"</string>
<string name="priority_conversations" msgid="3967482288896653039">"પ્રાધાન્યતા ધરાવતી વાતચીતો"</string>
<string name="recent_conversations" msgid="8531874684782574622">"તાજેતરની વાતચીતો"</string>
<string name="okay" msgid="6490552955618608554">"ઓકે"</string>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index bf32e20..47a9820 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"ऐसी बातचीत जिसमें इंटरैक्शन डेटा मौजूद नहीं है"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"बातचीत विजेट"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"किसी बातचीत को होम स्क्रीन पर जोड़ने के लिए, उस बातचीत पर टैप करें"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"नए मैसेज आने पर यहां देखें"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"हाल ही में हुई बातचीत यहां दिखेंगी"</string>
<string name="priority_conversations" msgid="3967482288896653039">"प्राथमिकता वाली बातचीत"</string>
<string name="recent_conversations" msgid="8531874684782574622">"हाल ही में की गई बातचीत"</string>
<string name="okay" msgid="6490552955618608554">"ठीक है"</string>
@@ -1144,8 +1144,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"हाल के मैसेज, मिस्ड कॉल, और स्टेटस अपडेट देखें"</string>
<string name="people_tile_title" msgid="6589377493334871272">"बातचीत"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\'परेशान न करें\' की वजह से सूचनाएं नहीं दिख रहीं"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ने एक मैसेज भेजा है"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ने एक इमेज भेजी है"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"आपके डिवाइस के बैटरी मीटर की रीडिंग लेने में समस्या आ रही है"</string>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 0c039c1..ee13344f 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -1121,7 +1121,8 @@
<string name="basic_status" msgid="2315371112182658176">"Otvoreni razgovor"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgeti razgovora"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Dodirnite razgovor da biste ga dodali na početni zaslon"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Ponovno provjerite ovdje kad dobijete poruke"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioritetni razgovori"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Nedavni razgovori"</string>
<string name="okay" msgid="6490552955618608554">"U redu"</string>
@@ -1150,8 +1151,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Pogledajte nedavne poruke, propuštene pozive i ažuriranja statusa"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Razgovor"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Pauzirala značajka Ne uznemiravaj"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"Korisnik <xliff:g id="NAME">%1$s</xliff:g> šalje poruku"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"Korisnik <xliff:g id="NAME">%1$s</xliff:g> poslao je sliku"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problem s očitavanjem mjerača baterije"</string>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 8908b2a3..fae365d 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Beszélgetés megnyitása"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Beszélgetési modulok"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Koppintson a kívánt beszélgetésre a kezdőképernyőre való felvételhez"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Térjen vissza ide, miután kapott néhány üzenetet"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Fontos beszélgetések"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Legutóbbi beszélgetések"</string>
<string name="okay" msgid="6490552955618608554">"Rendben"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Megtekintheti a legutóbbi üzeneteket, a nem fogadott hívásokat és az állapotfrissítéseket."</string>
<string name="people_tile_title" msgid="6589377493334871272">"Beszélgetés"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"A Ne zavarjanak mód által szüneteltetve"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> üzenetet küldött"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> képet küldött"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Probléma merült fel az akkumulátor-töltésmérő olvasásakor"</string>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 5818223..2063d43 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"Բաց զրույց"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Զրույցի վիջեթներ"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Հպեք զրույցին՝ այն հիմնական էկրանին ավելացնելու համար"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Վերադարձեք այստեղ, երբ հաղորդագրություններ ստանաք"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"Ձեր վերջին զրույցները կցուցադրվեն այստեղ"</string>
<string name="priority_conversations" msgid="3967482288896653039">"Կարևոր զրույցներ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Վերջին հաղորդագրությունները"</string>
<string name="okay" msgid="6490552955618608554">"Եղավ"</string>
@@ -1144,8 +1144,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Տեսեք վերջին հաղորդագրությունները, բաց թողնված զանգերը և կարգավիճակի մասին թարմացումները"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Զրույց"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Դադարեցվել է «Չանհանգստացնել» գործառույթի կողմից"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> օգտատերը հաղորդագրություն է ուղարկել"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> օգտատերը պատկեր է ուղարկել"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Մարտկոցի ցուցիչի ցուցմունքը կարդալու հետ կապված խնդիր կա"</string>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 072b691..7da7482 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Membuka percakapan"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widget Percakapan"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Ketuk percakapan untuk menambahkannya ke Layar utama"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Periksa kembali setelah Anda mendapatkan pesan"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Percakapan prioritas"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Percakapan terbaru"</string>
<string name="okay" msgid="6490552955618608554">"Oke"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Lihat pesan terbaru, panggilan tak terjawab, dan pembaruan status"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Percakapan"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Dijeda oleh fitur Jangan Ganggu"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> mengirim pesan"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> mengirim gambar"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Terjadi masalah saat membaca indikator baterai"</string>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 9d54e6f..a996cb1 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Opna samtal"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Samtalsgræjur"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Ýttu á samtal til að bæta því á heimaskjáinn"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Komdu aftur hingað þegar þú hefur fengið skilaboð"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Forgangssamtöl"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Nýleg samtöl"</string>
<string name="okay" msgid="6490552955618608554">"Í lagi"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Sjá nýleg skilboð, ósvöruð símtöl og stöðuuppfærslur"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Samtal"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Sett í bið af „Ónáðið ekki“"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> sendi skilaboð"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> sendi mynd"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Vandamál við að lesa stöðu rafhlöðu"</string>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 3063e84..8cdc484 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -734,7 +734,7 @@
<string name="notification_channel_summary_low" msgid="4860617986908931158">"Nessun suono o vibrazione"</string>
<string name="notification_conversation_summary_low" msgid="1734433426085468009">"Nessun suono o vibrazione e appare più in basso nella sezione delle conversazioni"</string>
<string name="notification_channel_summary_default" msgid="3282930979307248890">"Può suonare o vibrare in base alle impostazioni del telefono"</string>
- <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Può suonare o vibrare in base alle impostazioni del telefono. Conversazioni dalla bolla <xliff:g id="APP_NAME">%1$s</xliff:g> per impostazione predefinita."</string>
+ <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Può suonare o vibrare in base alle impostazioni del telefono. Le conversazioni di <xliff:g id="APP_NAME">%1$s</xliff:g> appaiono come bolla per impostazione predefinita."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantiene la tua attenzione con una scorciatoia mobile a questi contenuti."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Fai stabilire al sistema se questa notifica deve emettere suoni o vibrazioni"</string>
<string name="notification_channel_summary_automatic_alerted" msgid="954166812246932240">"<b>Stato:</b> promossa a Predefinita"</string>
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Apri conversazione"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widget di conversazione"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tocca una conversazione per aggiungerla alla schermata Home"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Torna qui quando avrai ricevuto qualche messaggio"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversazioni prioritarie"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversazioni recenti"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Visualizza messaggi recenti, chiamate senza risposta e aggiornamenti dello stato"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Conversazione"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"In pausa in base alla modalità Non disturbare"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ha inviato un messaggio"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ha inviato un\'immagine"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problema durante la lettura dell\'indicatore di livello della batteria"</string>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 14b7c64..75a9d75 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -750,7 +750,7 @@
<string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"מוצגת בחלק העליון של קטע ההתראות וכתמונת פרופיל במסך הנעילה"</string>
<string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מופיעה בבועה"</string>
<string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מפריעה במצב \'נא לא להפריע\'"</string>
- <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מופיעה בבועה הצפה ומפריעה במצב \'נא לא להפריע\'"</string>
+ <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מופיעה בבועה צפה ומפריעה במצב \'נא לא להפריע\'"</string>
<string name="notification_conversation_channel_settings" msgid="2409977688430606835">"הגדרות"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"בעדיפות גבוהה"</string>
<string name="no_shortcut" msgid="8257177117568230126">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> לא תומכת בתכונות השיחה"</string>
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"פתיחת שיחה"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"ווידג\'טים של שיחות"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"יש להקיש על שיחה כדי להוסיף אותה למסך הבית"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"אפשר לחזור לכאן ולהתעדכן לאחר קבלת מספר הודעות"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"שיחות בעדיפות גבוהה"</string>
<string name="recent_conversations" msgid="8531874684782574622">"שיחות אחרונות"</string>
<string name="okay" msgid="6490552955618608554">"בסדר"</string>
@@ -1156,8 +1157,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"ההודעות האחרונות, שיחות שלא נענו ועדכוני סטטוס"</string>
<string name="people_tile_title" msgid="6589377493334871272">"שיחה"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"ההתראה הושהתה על ידי \'נא לא להפריע\'"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> שלח/ה הודעה"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> שלח/ה תמונה"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"בעיה בקריאת מדדי הסוללה"</string>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index d320625..065167a 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -190,12 +190,12 @@
<string name="accessibility_compatibility_zoom_example" msgid="2617218726091234073">"小さい画面から大きい画面に拡大。"</string>
<string name="accessibility_bluetooth_connected" msgid="4745196874551115205">"Bluetoothに接続済み。"</string>
<string name="accessibility_bluetooth_disconnected" msgid="7195823280221275929">"Bluetoothが切断されました。"</string>
- <string name="accessibility_no_battery" msgid="3789287732041910804">"電池残量:なし"</string>
- <string name="accessibility_battery_one_bar" msgid="8868347318237585329">"電池残量:レベル1"</string>
- <string name="accessibility_battery_two_bars" msgid="7895789999668425551">"電池残量:レベル2"</string>
- <string name="accessibility_battery_three_bars" msgid="118341923832368291">"電池残量:レベル3"</string>
- <string name="accessibility_battery_full" msgid="1480463938961288494">"電池残量:満"</string>
- <string name="accessibility_battery_unknown" msgid="1807789554617976440">"電池残量は不明です。"</string>
+ <string name="accessibility_no_battery" msgid="3789287732041910804">"バッテリー残量: なし"</string>
+ <string name="accessibility_battery_one_bar" msgid="8868347318237585329">"バッテリー残量: レベル1"</string>
+ <string name="accessibility_battery_two_bars" msgid="7895789999668425551">"バッテリー残量: レベル2"</string>
+ <string name="accessibility_battery_three_bars" msgid="118341923832368291">"バッテリー残量: レベル3"</string>
+ <string name="accessibility_battery_full" msgid="1480463938961288494">"バッテリー残量: フル"</string>
+ <string name="accessibility_battery_unknown" msgid="1807789554617976440">"バッテリー残量は不明です。"</string>
<string name="accessibility_wifi_name" msgid="4863440268606851734">"<xliff:g id="WIFI">%s</xliff:g>に接続しました。"</string>
<string name="accessibility_bluetooth_name" msgid="7300973230214067678">"<xliff:g id="BLUETOOTH">%s</xliff:g>に接続しました。"</string>
<string name="accessibility_cast_name" msgid="7344437925388773685">"<xliff:g id="CAST">%s</xliff:g>に接続されています。"</string>
@@ -227,8 +227,8 @@
<string name="accessibility_vpn_on" msgid="8037549696057288731">"VPN は ON です。"</string>
<string name="accessibility_no_sims" msgid="5711270400476534667">"SIMカードが挿入されていません。"</string>
<string name="accessibility_battery_details" msgid="6184390274150865789">"電池の詳細情報を開きます"</string>
- <string name="accessibility_battery_level" msgid="5143715405241138822">"電池残量: <xliff:g id="NUMBER">%d</xliff:g>パーセント"</string>
- <string name="accessibility_battery_level_with_estimate" msgid="4843119982547599452">"電池残量: <xliff:g id="PERCENTAGE">%1$s</xliff:g>、およそ <xliff:g id="TIME">%2$s</xliff:g> に電池切れ(使用状況に基づく)"</string>
+ <string name="accessibility_battery_level" msgid="5143715405241138822">"バッテリー残量: <xliff:g id="NUMBER">%d</xliff:g>パーセント"</string>
+ <string name="accessibility_battery_level_with_estimate" msgid="4843119982547599452">"バッテリー残量: <xliff:g id="PERCENTAGE">%1$s</xliff:g>、およそ <xliff:g id="TIME">%2$s</xliff:g> にバッテリー切れ(使用状況に基づく)"</string>
<string name="accessibility_battery_level_charging" msgid="8892191177774027364">"電池充電中: <xliff:g id="BATTERY_PERCENTAGE">%d</xliff:g>パーセント"</string>
<string name="accessibility_settings_button" msgid="2197034218538913880">"システム設定。"</string>
<string name="accessibility_notifications_button" msgid="3960913924189228831">"通知。"</string>
@@ -255,7 +255,7 @@
<string name="accessibility_quick_settings_wifi_changed_off" msgid="2230487165558877262">"Wi-FiをOFFにしました。"</string>
<string name="accessibility_quick_settings_wifi_changed_on" msgid="1490362586009027611">"Wi-FiをONにしました。"</string>
<string name="accessibility_quick_settings_mobile" msgid="1817825313718492906">"モバイル: <xliff:g id="SIGNAL">%1$s</xliff:g>、<xliff:g id="TYPE">%2$s</xliff:g>、<xliff:g id="NETWORK">%3$s</xliff:g>"</string>
- <string name="accessibility_quick_settings_battery" msgid="533594896310663853">"電池<xliff:g id="STATE">%s</xliff:g>"</string>
+ <string name="accessibility_quick_settings_battery" msgid="533594896310663853">"バッテリー<xliff:g id="STATE">%s</xliff:g>"</string>
<string name="accessibility_quick_settings_airplane_off" msgid="1275658769368793228">"機内モードがOFFです。"</string>
<string name="accessibility_quick_settings_airplane_on" msgid="8106176561295294255">"機内モードがONです。"</string>
<string name="accessibility_quick_settings_airplane_changed_off" msgid="8880183481476943754">"機内モードをOFFにしました。"</string>
@@ -335,7 +335,7 @@
<string name="quick_settings_bluetooth_multiple_devices_label" msgid="6595808498429809855">"Bluetooth(デバイス数<xliff:g id="NUMBER">%d</xliff:g>)"</string>
<string name="quick_settings_bluetooth_off_label" msgid="6375098046500790870">"Bluetooth OFF"</string>
<string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"ペア設定されたデバイスがありません"</string>
- <string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"電池 <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
+ <string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="4182034939479344093">"バッテリー <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g>"</string>
<string name="quick_settings_bluetooth_secondary_label_audio" msgid="780333390310051161">"オーディオ"</string>
<string name="quick_settings_bluetooth_secondary_label_headset" msgid="2332093067553000852">"ヘッドセット"</string>
<string name="quick_settings_bluetooth_secondary_label_input" msgid="3887552721233148132">"入力"</string>
@@ -414,7 +414,7 @@
<string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"日の出まで"</string>
<string name="quick_settings_night_secondary_label_on_at" msgid="3584738542293528235">"<xliff:g id="TIME">%s</xliff:g> に ON"</string>
<string name="quick_settings_secondary_label_until" msgid="1883981263191927372">"<xliff:g id="TIME">%s</xliff:g> まで"</string>
- <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"ダークテーマ"</string>
+ <string name="quick_settings_ui_mode_night_label" msgid="1398928270610780470">"ダークモード"</string>
<string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"バッテリー セーバー"</string>
<string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"日の入りに ON"</string>
<string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"日の出まで"</string>
@@ -655,8 +655,8 @@
<string name="output_service_wifi" msgid="9003667810868222134">"Wi-Fi"</string>
<string name="output_service_bt_wifi" msgid="7186882540475524124">"Bluetooth と Wi-Fi"</string>
<string name="system_ui_tuner" msgid="1471348823289954729">"システムUI調整ツール"</string>
- <string name="show_battery_percentage" msgid="6235377891802910455">"内蔵電池の残量の割合を表示する"</string>
- <string name="show_battery_percentage_summary" msgid="9053024758304102915">"充電していないときには電池残量の割合をステータスバーアイコンに表示する"</string>
+ <string name="show_battery_percentage" msgid="6235377891802910455">"内蔵バッテリーの残量の割合を表示する"</string>
+ <string name="show_battery_percentage_summary" msgid="9053024758304102915">"充電していないときにはバッテリー残量の割合をステータスバーアイコンに表示する"</string>
<string name="quick_settings" msgid="6211774484997470203">"クイック設定"</string>
<string name="status_bar" msgid="4357390266055077437">"ステータスバー"</string>
<string name="overview" msgid="3522318590458536816">"最近"</string>
@@ -693,7 +693,7 @@
<string name="remove_from_settings_prompt" msgid="551565437265615426">"設定からシステムUI調整ツールを削除して、全機能の使用を停止しますか?"</string>
<string name="activity_not_found" msgid="8711661533828200293">"アプリがデバイスにインストールされていません"</string>
<string name="clock_seconds" msgid="8709189470828542071">"時計の秒を表示"</string>
- <string name="clock_seconds_desc" msgid="2415312788902144817">"ステータスバーに時計の秒を表示します。電池使用量に影響する可能性があります。"</string>
+ <string name="clock_seconds_desc" msgid="2415312788902144817">"ステータスバーに時計の秒を表示します。バッテリー使用量に影響する可能性があります。"</string>
<string name="qs_rearrange" msgid="484816665478662911">"クイック設定を並べ替え"</string>
<string name="show_brightness" msgid="6700267491672470007">"クイック設定に明るさ調整バーを表示する"</string>
<string name="experimental" msgid="3549865454812314826">"試験運用版"</string>
@@ -850,7 +850,7 @@
<string name="volume_and_do_not_disturb" msgid="502044092739382832">"サイレント モード"</string>
<string name="volume_dnd_silent" msgid="4154597281458298093">"音量ボタンのショートカット"</string>
<string name="volume_up_silent" msgid="1035180298885717790">"音量大ボタンでサイレント モードを OFF にします"</string>
- <string name="battery" msgid="769686279459897127">"電池"</string>
+ <string name="battery" msgid="769686279459897127">"バッテリー"</string>
<string name="clock" msgid="8978017607326790204">"時計"</string>
<string name="headset" msgid="4485892374984466437">"ヘッドセット"</string>
<string name="accessibility_long_click_tile" msgid="210472753156768705">"設定を開く"</string>
@@ -959,7 +959,7 @@
<string name="tuner_menu" msgid="363690665924769420">"メニュー"</string>
<string name="tuner_app" msgid="6949280415826686972">"<xliff:g id="APP">%1$s</xliff:g> アプリ"</string>
<string name="notification_channel_alerts" msgid="3385787053375150046">"アラート"</string>
- <string name="notification_channel_battery" msgid="9219995638046695106">"電池"</string>
+ <string name="notification_channel_battery" msgid="9219995638046695106">"バッテリー"</string>
<string name="notification_channel_screenshot" msgid="7665814998932211997">"スクリーンショット"</string>
<string name="notification_channel_general" msgid="4384774889645929705">"一般メッセージ"</string>
<string name="notification_channel_storage" msgid="2720725707628094977">"ストレージ"</string>
@@ -983,7 +983,7 @@
<string name="qs_dnd_keep" msgid="3829697305432866434">"設定を維持"</string>
<string name="qs_dnd_replace" msgid="7712119051407052689">"設定を変更"</string>
<string name="running_foreground_services_title" msgid="5137313173431186685">"バックグラウンドで実行中のアプリ"</string>
- <string name="running_foreground_services_msg" msgid="3009459259222695385">"タップして電池やデータの使用量を確認"</string>
+ <string name="running_foreground_services_msg" msgid="3009459259222695385">"タップしてバッテリーやデータの使用量を確認"</string>
<string name="mobile_data_disable_title" msgid="5366476131671617790">"モバイルデータを OFF にしますか?"</string>
<string name="mobile_data_disable_message" msgid="8604966027899770415">"<xliff:g id="CARRIER">%s</xliff:g>でデータやインターネットにアクセスできなくなります。インターネットには Wi-Fi からのみ接続できます。"</string>
<string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"携帯通信会社"</string>
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"空の会話"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"会話ウィジェット"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"会話をタップするとホーム画面に追加されます"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"メッセージを受信すると、ここに表示されます"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"最近の会話がここに表示されます"</string>
<string name="priority_conversations" msgid="3967482288896653039">"優先度の高い会話"</string>
<string name="recent_conversations" msgid="8531874684782574622">"最近の会話"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,11 +1144,10 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g> 件以上"</string>
<string name="people_tile_description" msgid="8154966188085545556">"最近のメッセージ、不在着信、最新のステータスが表示されます"</string>
<string name="people_tile_title" msgid="6589377493334871272">"会話"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"サイレント モードにより一時停止"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> さんからメッセージが届きました"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> さんが画像を送信しました"</string>
- <string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"電池残量の読み込み中に問題が発生しました"</string>
+ <string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"バッテリー残量の読み込み中に問題が発生しました"</string>
<string name="battery_state_unknown_notification_text" msgid="13720937839460899">"タップすると詳細が表示されます"</string>
<string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"アラーム未設定"</string>
<string name="accessibility_fingerprint_label" msgid="5255731221854153660">"指紋認証センサー"</string>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index c7a52e99..dd66db39 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"მიმოწერის გახსნა"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"საუბრის ვიჯეტები"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"შეეხეთ საუბარს მის თქვენს მთავარ ეკრანზე დასამატებლად"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"შეამოწმეთ ეს სივრცე, როცა რაღაც რაოდენობის შეტყობინებებს მიიღებთ"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"პრიორიტეტული საუბრები"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ბოლო მიმოწერები"</string>
<string name="okay" msgid="6490552955618608554">"კარგი"</string>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index 5abd6c7..c6a9e9a 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Ашық әңгіме"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Әңгіме виджеттері"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Негізгі экранға қосқыңыз келетін әңгімені түртіңіз."</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Хабарлар алғаннан кейін осында оралыңыз."</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Маңызды әңгімелер"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Соңғы әңгімелер"</string>
<string name="okay" msgid="6490552955618608554">"Жарайды"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Соңғы хабарларды, өткізіп алған қоңыраулар мен жаңартылған күйлерді көруге болады."</string>
<string name="people_tile_title" msgid="6589377493334871272">"Әңгіме"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\"Мазаламау\" режимі арқылы кідіртілді."</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> хабар жіберді."</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> сурет жіберді."</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Батарея зарядының дерегі алынбай жатыр"</string>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 3291ada..7a586cd 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"បើកការសន្ទនា"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"ធាតុក្រាហ្វិកនៃការសន្ទនា"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"ចុចការសន្ទនា ដើម្បីបញ្ចូលវាទៅក្នុងអេក្រង់ដើមរបស់អ្នក"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"ត្រឡប់មកមើលនៅទីនេះវិញ នៅពេលអ្នកទទួលបានសារមួយចំនួន"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"ការសន្ទនាអាទិភាព"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ការសន្ទនាថ្មីៗ"</string>
<string name="okay" msgid="6490552955618608554">"យល់ព្រម"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"មើលព័ត៌មានថ្មីៗអំពីស្ថានភាព ការខកខានទទួល និងសារថ្មីៗ"</string>
<string name="people_tile_title" msgid="6589377493334871272">"ការសន្ទនា"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"បានផ្អាកដោយមុខងារកុំរំខាន"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> បានផ្ញើសារ"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> បានផ្ញើរូបភាព"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"មានបញ្ហាក្នុងការអានឧបករណ៍រង្វាស់កម្រិតថ្មរបស់អ្នក"</string>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index c923550..41b6c44 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"ಸಂಭಾಷಣೆಯನ್ನು ತೆರೆಯಿರಿ"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"ಸಂಭಾಷಣೆ ವಿಜೆಟ್ಗಳು"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"ಸಂಭಾಷಣೆಯನ್ನು ಹೋಮ್ ಸ್ಕ್ರೀನ್ಗೆ ಸೇರಿಸಲು ಅದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"ನೀವು ಕೆಲವು ಸಂದೇಶಗಳನ್ನು ಪಡೆದ ನಂತರ ಇಲ್ಲಿ ಮತ್ತೆ ಪರಿಶೀಲಿಸಿ"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"ಆದ್ಯತೆಯ ಸಂಭಾಷಣೆಗಳು"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ಇತ್ತೀಚಿನ ಸಂಭಾಷಣೆಗಳು"</string>
<string name="okay" msgid="6490552955618608554">"ಸರಿ"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"ಇತ್ತೀಚಿನ ಸಂದೇಶಗಳು, ಮಿಸ್ಡ್ ಕಾಲ್ಗಳು ಮತ್ತು ಸ್ಥಿತಿ ಅಪ್ಡೇಟ್ಗಳು"</string>
<string name="people_tile_title" msgid="6589377493334871272">"ಸಂಭಾಷಣೆ"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\'ಅಡಚಣೆ ಮಾಡಬೇಡಿ\' ನಿಂದ ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ಸಂದೇಶವನ್ನು ಕಳುಹಿಸಿದ್ದಾರೆ"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ಅವರು ಚಿತ್ರವನ್ನು ಕಳುಹಿಸಿದ್ದಾರೆ"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"ನಿಮ್ಮ ಬ್ಯಾಟರಿ ಮೀಟರ್ ಓದುವಾಗ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ"</string>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 5a1e57a..1e48ebd 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"대화 열기"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"대화 위젯"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"대화를 탭하여 홈 화면에 추가하세요."</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"메시지를 받으면 여기서 다시 확인해 주세요."</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"우선순위 대화"</string>
<string name="recent_conversations" msgid="8531874684782574622">"최근 대화"</string>
<string name="okay" msgid="6490552955618608554">"확인"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"최근 메시지, 부재중 전화, 상태 업데이트 보기"</string>
<string name="people_tile_title" msgid="6589377493334871272">"대화"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"방해 금지 모드로 인해 일시중지됨"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g>님이 메시지를 보냈습니다."</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g>님이 이미지를 보냈습니다."</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"배터리 수준을 읽는 중에 문제가 발생함"</string>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 13609cf..bfc899c 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Ачык сүйлөшүү"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Сүйлөшүүлөр виджеттери"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Сүйлөшүүнү башкы экранга кошуу үчүн таптап коюңуз"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Билдирүүлөрдү алгандан кийин бул жерди кайрадан текшериңиз"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Маанилүү сүйлөшүүлөр"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Акыркы сүйлөшүүлөр"</string>
<string name="okay" msgid="6490552955618608554">"Макул"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Акыркы билдирүүлөрдү, жооп берилбеген чалууларды жана статустардын жаңырганын көрөсүз"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Сүйлөшүү"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\"Тынчымды алба\" режими тындырды"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> билдирүү жөнөттү"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> сүрөт жөнөттү"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Батареяңыздын кубаты аныкталбай жатат"</string>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index f708b98..27d6848 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"ເປີດການສົນທະນາ"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"ວິດເຈັດການສົນທະນາ"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"ແຕະໃສ່ການສົນທະນາໃດໜຶ່ງເພື່ອເພີ່ມມັນໃສ່ໂຮມສະກຣີນຂອງທ່ານ"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"ກັບມາກວດເບິ່ງຢູ່ບ່ອນນີ້ຄືນໃໝ່ຫຼັງຈາກທີ່ທ່ານໄດ້ຮັບຂໍ້ຄວາມ"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"ການສົນທະນາຫຼ້າສຸດຂອງທ່ານຈະສະແດງຢູ່ບ່ອນນີ້"</string>
<string name="priority_conversations" msgid="3967482288896653039">"ການສົນທະນາສຳຄັນ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ການສົນທະນາຫຼ້າສຸດ"</string>
<string name="okay" msgid="6490552955618608554">"ຕົກລົງ"</string>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 0da285da..04dc3fc 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"Atidaryti pokalbį"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Pokalbio valdikliai"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Palieskite pokalbį, kad pridėtumėte jį prie pagrindinio ekrano"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Sugrįžkite, kai gausite pranešimų"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Svarbiausi pokalbiai"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Paskutiniai pokalbiai"</string>
<string name="okay" msgid="6490552955618608554">"Gerai"</string>
@@ -1156,8 +1157,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g> +"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Peržiūrėkite naujausius pranešimus, praleistus skambučius ir būsenos atnaujinimus"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Pokalbis"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Pristabdyta dėl netrukdymo režimo"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> išsiuntė pranešimą"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> išsiuntė vaizdą"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Nuskaitant akumuliatoriaus skaitiklį iškilo problema"</string>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index abd59e8..ade61cd 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -1121,7 +1121,8 @@
<string name="basic_status" msgid="2315371112182658176">"Atvērt sarunu"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Sarunu logrīki"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Pieskarieties kādai sarunai, lai pievienotu to savam sākuma ekrānam."</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Atgriezieties šeit, kad būsiet saņēmis ziņojumus."</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioritārās sarunas"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Jaunākās sarunas"</string>
<string name="okay" msgid="6490552955618608554">"Labi"</string>
@@ -1150,8 +1151,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Skatiet jaunākos ziņojumus, neatbildētos zvanus un statusa atjauninājumus."</string>
<string name="people_tile_title" msgid="6589377493334871272">"Saruna"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Rādīšana pārtraukta režīma Netraucēt dēļ"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> nosūtīja ziņojumu"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> nosūtīja attēlu"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Nevar iegūt informāciju par akumulatora uzlādes līmeni."</string>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 545c42c..4e4793a 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Започни разговор"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Виџети за разговор"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Допрете на разговор за да го додадете на вашиот почетен екран"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Вратете се тука кога ќе добиете пораки"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Приоритетни разговори"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Неодамнешни разговори"</string>
<string name="okay" msgid="6490552955618608554">"Во ред"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Видете ги неодамнешните пораки, пропуштени повици и промени на статусот"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Разговор"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Паузирано од „Не вознемирувај“"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> испрати порака"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> испрати слика"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Проблем при читањето на мерачот на батеријата"</string>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index d7dc7d8..d96aa06 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -734,7 +734,7 @@
<string name="notification_channel_summary_low" msgid="4860617986908931158">"ശബ്ദമോ വൈബ്രേഷനോ ഇല്ല"</string>
<string name="notification_conversation_summary_low" msgid="1734433426085468009">"ശബ്ദമോ വൈബ്രേഷനോ ഇല്ല, സംഭാഷണ വിഭാഗത്തിന് താഴെയായി ദൃശ്യമാകും"</string>
<string name="notification_channel_summary_default" msgid="3282930979307248890">"ഫോൺ ക്രമീകരണം അടിസ്ഥാനമാക്കി റിംഗ്/വൈബ്രേറ്റ് ചെയ്യും"</string>
- <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"ഫോൺ ക്രമീകരണം അടിസ്ഥാനമാക്കി റിംഗ് ചെയ്തേക്കാം അല്ലെങ്കിൽ വൈബ്രേറ്റ് ചെയ്തേക്കാം. <xliff:g id="APP_NAME">%1$s</xliff:g>-ൽ നിന്നുള്ള സംഭാഷണങ്ങൾ ഡിഫോൾട്ടായി ബബിൾ ആവുന്നു."</string>
+ <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"ഫോൺ ക്രമീകരണം അടിസ്ഥാനമാക്കി റിംഗ്/വൈബ്രേറ്റ് ചെയ്തേക്കാം. <xliff:g id="APP_NAME">%1$s</xliff:g>-ൽ നിന്നുള്ള സംഭാഷണങ്ങൾ ഡിഫോൾട്ടായി ബബിൾ ചെയ്യുന്നു."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ഈ ഉള്ളടക്കത്തിലേക്ക് ഒരു ഫ്ലോട്ടിംഗ് കുറുക്കുവഴി ഉപയോഗിച്ച് നിങ്ങളുടെ ശ്രദ്ധ നിലനിർത്തുന്നു."</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ഈ അറിയിപ്പ് വരുമ്പോൾ ശബ്ദിക്കുകയാണോ വൈബ്രേറ്റ് ചെയ്യുകയാണോ വേണ്ടതെന്ന് നിർണ്ണയിക്കാൻ സിസ്റ്റത്തെ അനുവദിക്കുക"</string>
<string name="notification_channel_summary_automatic_alerted" msgid="954166812246932240">"<b>നില:</b> ഡിഫോൾട്ടാക്കി പ്രമോട്ട് ചെയ്തു"</string>
@@ -744,7 +744,7 @@
<string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു"</string>
<string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ഒരു ബബിൾ രൂപത്തിൽ ദൃശ്യമാകുന്നു"</string>
<string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ശല്യപ്പെടുത്തരുത് മോഡ് തടസ്സപ്പെടുത്തുന്നു"</string>
- <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ഒരു ബബിൾ രൂപത്തിൽ ദൃശ്യമാകുന്നു, ശല്യപ്പെടുത്തരുത് മോഡ് തടസ്സപ്പെടുത്തുന്നു"</string>
+ <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും ബബിൾ രൂപത്തിൽ ദൃശ്യമാകുന്നു, ശല്യപ്പെടുത്തരുത് മോഡ് തടസ്സപ്പെടുത്തുന്നു"</string>
<string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ക്രമീകരണം"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"മുൻഗണന"</string>
<string name="no_shortcut" msgid="8257177117568230126">"സംഭാഷണ ഫീച്ചറുകളെ <xliff:g id="APP_NAME">%1$s</xliff:g> പിന്തുണയ്ക്കുന്നില്ല"</string>
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"സംഭാഷണം തുറക്കുക"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"സംഭാഷണ വിജറ്റുകൾ"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"നിങ്ങളുടെ ഹോം സ്ക്രീനിൽ ചേർക്കാൻ സംഭാഷണത്തിൽ ടാപ്പ് ചെയ്യുക"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"കുറച്ച് സന്ദേശങ്ങൾ ലഭിച്ച ശേഷം ഇവിടെ വീണ്ടും പരിശോധിക്കൂ"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"മുൻഗണനാ സംഭാഷണങ്ങൾ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"അടുത്തിടെയുള്ള സംഭാഷണങ്ങൾ"</string>
<string name="okay" msgid="6490552955618608554">"ശരി"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"അടുത്തിടെയുള്ള സന്ദേശങ്ങൾ, മിസ്ഡ് കോൾ, സ്റ്റാറ്റസ് അപ്ഡേറ്റുകൾ എന്നിവ കാണൂ"</string>
<string name="people_tile_title" msgid="6589377493334871272">"സംഭാഷണം"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\'ശല്യപ്പെടുത്തരുത്\' ഓണായതിനാൽ തൽക്കാലം നിർത്തി"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g>, ഒരു സന്ദേശം അയച്ചു"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g>, ഒരു ചിത്രം അയച്ചു"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"നിങ്ങളുടെ ബാറ്ററി മീറ്റർ വായിക്കുന്നതിൽ പ്രശ്നമുണ്ട്"</string>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 897e074..900fbd8 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Харилцан яриаг нээх"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Харилцан ярианы жижиг хэрэгслүүд"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Үндсэн нүүрэндээ нэмэх харилцан яриаг товшино уу"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Та зарим мессеж авсныхаа дараа эндээс буцаж шалгана уу"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Чухал харилцан яриа"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Саяхны харилцан яриа"</string>
<string name="okay" msgid="6490552955618608554">"За"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Саяхны мессеж, аваагүй дуудлага болон төлөвийн шинэчлэлтийг харах"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Харилцан яриа"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Бүү саад бол горимоор түр зогсоосон"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> мессеж илгээсэн"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> зураг илгээсэн"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Таны батарей хэмжигчийг уншихад асуудал гарлаа"</string>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 8737b94..5dd7abd 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"संभाषण उघडा"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"संभाषण विजेट"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"तुमच्या होम स्क्रीन वर संभाषण जोडण्यासाठी त्यावर टॅप करा"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"तुम्हाला काही मेसेज मिळाल्यावर येथे पुन्हा पाहा"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"प्राधान्य दिलेली संभाषणे"</string>
<string name="recent_conversations" msgid="8531874684782574622">"अलीकडील संभाषणे"</string>
<string name="okay" msgid="6490552955618608554">"ओके"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"अलीकडील मेसेज, मिस्ड कॉल आणि स्टेटस अपडेट पाहा"</string>
<string name="people_tile_title" msgid="6589377493334871272">"संभाषण"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"व्यत्यय आणू नका द्वारे थांबवले गेले"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> यांनी मेसेज पाठवला"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> यांनी इमेज पाठवली"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"तुमचे बॅटरी मीटर वाचताना समस्या आली"</string>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 8a3b4ce..28ad7a7 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Buka perbualan"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widget perbualan"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Ketik perbualan untuk menambahkan perbualan itu pada skrin Utama anda"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Semak di sini semula selepas anda mendapat beberapa mesej"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Perbualan keutamaan"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Perbualan terbaharu"</string>
<string name="okay" msgid="6490552955618608554">"Okey"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Lihat mesej terbaharu, panggilan terlepas dan kemaskinian status"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Perbualan"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Dijeda oleh Jangan Ganggu"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> menghantar mesej"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> menghantar imej"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Masalah membaca meter bateri anda"</string>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index af80198..54d1a5f 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -734,7 +734,7 @@
<string name="notification_channel_summary_low" msgid="4860617986908931158">"အသံ သို့မဟုတ် တုန်ခါမှုမရှိပါ"</string>
<string name="notification_conversation_summary_low" msgid="1734433426085468009">"အသံ သို့မဟုတ် တုန်ခါမှုမရှိပါ၊ စကားဝိုင်းကဏ္ဍ၏ အောက်ပိုင်းတွင် မြင်ရသည်"</string>
<string name="notification_channel_summary_default" msgid="3282930979307248890">"ဖုန်းဆက်တင်များပေါ် အခြေခံပြီး အသံမြည်နိုင်သည် သို့မဟုတ် တုန်ခါနိုင်သည်"</string>
- <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"ဖုန်းဆက်တင်များပေါ် အခြေခံပြီး အသံမြည်နိုင်သည် သို့မဟုတ် တုန်ခါနိုင်သည်။ မူရင်းသတ်မှတ်ချက်အဖြစ် <xliff:g id="APP_NAME">%1$s</xliff:g> မှ စကားဝိုင်းများကို ပူဖောင်းကွက်ဖြင့် ပြသည်။"</string>
+ <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"ဖုန်းဆက်တင်ပေါ် အခြေခံပြီး အသံမြည် (သို့) တုန်ခါနိုင်သည်။ <xliff:g id="APP_NAME">%1$s</xliff:g> မှ စကားဝိုင်းများကို ပူဖောင်းကွက်ဖြင့် အလိုအလျောက်ပြသည်။"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"အကြောင်းအရာကို floating shortcut ကိုသုံး၍ အာရုံစိုက်လာအောင်လုပ်ပါ။"</string>
<string name="notification_channel_summary_automatic" msgid="5813109268050235275">"ဤအကြောင်းကြားချက်က အသံ သို့မဟုတ် တုန်ခါမှု ပေးရန် သင့်/မသင့်ကို စနစ်က ဆုံးဖြတ်ပါစေ"</string>
<string name="notification_channel_summary_automatic_alerted" msgid="954166812246932240">"<b>အခြေအနေ-</b> မူရင်းသို့ ချိန်ညှိထားသည်"</string>
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"စကားဝိုင်းကို ဖွင့်ရန်"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"စကားဝိုင်း ဝိဂျက်များ"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"စကားဝိုင်းကို သင်၏ ‘ပင်မစာမျက်နှာ’ သို့ထည့်ရန် တို့ပါ"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"မက်ဆေ့ဂျ်အချို့ရလျှင် ဤနေရာသို့ ပြန်လာကြည့်ပါ"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"သင်၏မကြာသေးမီက စကားဝိုင်းများကို ဤနေရာတွင် ပြပါမည်"</string>
<string name="priority_conversations" msgid="3967482288896653039">"ဦးစားပေး စကားဝိုင်းများ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"မကြာသေးမီက စကားဝိုင်းများ"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1144,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"မကြာသေးမီက မက်ဆေ့ဂျ်၊ လွတ်သွားသောခေါ်ဆိုမှုနှင့် အခြေအနေအပ်ဒိတ်များကို ကြည့်နိုင်သည်"</string>
<string name="people_tile_title" msgid="6589377493334871272">"စကားဝိုင်း"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"‘မနှောင့်ယှက်ရ’ ဖြင့် ခဏရပ်ထားသည်"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> က မက်ဆေ့ဂျ်ပို့လိုက်သည်"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> က ပုံပို့လိုက်သည်"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"သင်၏ ဘက်ထရီမီတာကို ဖတ်ရာတွင် ပြဿနာရှိနေသည်"</string>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index d6271c0..c549deb 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Åpen samtale"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Samtalemoduler"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Trykk på en samtale for å legge den til på startskjermen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Sjekk her igjen når du mottar noen meldinger"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioriterte samtaler"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Nylige samtaler"</string>
<string name="okay" msgid="6490552955618608554">"Ok"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Se nylige meldinger, tapte anrop og statusoppdateringer"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Samtale"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Satt på pause av «Ikke forstyrr»"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> har sendt en melding"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> har sendt et bilde"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Kunne ikke lese batterimåleren"</string>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 2159bf9..b9ef04f 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"वार्तालाप खोल्नुहोस्"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"वार्तालापसम्बन्धी विजेटहरू"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"कुनै वार्तालाप होम स्क्रिनमा हाल्न उक्त वार्तालापमा ट्याप गर्नुहोस्"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"तपाईंले कुनै म्यासेज प्राप्त गरेपछि यहाँ आएर सो म्यासेज हेर्नुहोस्"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"महत्त्वपूर्ण वार्तालापहरू"</string>
<string name="recent_conversations" msgid="8531874684782574622">"हालसालैका वार्तालापहरू"</string>
<string name="okay" msgid="6490552955618608554">"ठिक छ"</string>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 56a95f5..07decdf 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Gesprek openen"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Gesprekswidgets"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tik op een gesprek om het toe te voegen aan je startscherm"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Kom hier terug zodra je wat berichten hebt"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioriteitsgesprekken"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Recente gesprekken"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Bekijk recente berichten, gemiste gesprekken en statusupdates"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Gesprek"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Onderbroken door Niet storen"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> heeft een bericht gestuurd"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> heeft een afbeelding gestuurd"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Probleem bij het lezen van je batterijmeter"</string>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 22fe336..f4b3b3e 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"ବାର୍ତ୍ତାଳାପ ଖୋଲନ୍ତୁ"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"ବାର୍ତ୍ତାଳାପ ୱିଜେଟଗୁଡ଼ିକ"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"ଏକ ବାର୍ତ୍ତାଳାପକୁ ଆପଣଙ୍କ ମୂଳସ୍କ୍ରିନରେ ଯୋଗ କରିବା ପାଇଁ ସେଥିରେ ଟାପ୍ କରନ୍ତୁ"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"ଆପଣ କିଛି ମେସେଜ୍ ପାଇଲେ ଏଠାରେ ପୁଣି ଯାଞ୍ଚ କରନ୍ତୁ"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"ପ୍ରାଥମିକତା ଦିଆଯାଇଥିବା ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ବର୍ତ୍ତମାନର ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string>
<string name="okay" msgid="6490552955618608554">"ଠିକ୍ ଅଛି"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"ବର୍ତ୍ତମାନର ମେସେଜ୍, ମିସ୍ଡ କଲ୍ ଏବଂ ସ୍ଥିତି ଅପଡେଟଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ"</string>
<string name="people_tile_title" msgid="6589377493334871272">"ବାର୍ତ୍ତାଳାପ"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଦ୍ୱାରା ବିରତ କରାଯାଇଛି"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ଏକ ମେସେଜ୍ ପଠାଇଛନ୍ତି"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ଏକ ଛବି ପଠାଇଛନ୍ତି"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"ଆପଣଙ୍କ ବ୍ୟାଟେରୀ ମିଟର୍ ପଢ଼ିବାରେ ସମସ୍ୟା ହେଉଛି"</string>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 08789cd..7f96ea8 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"ਗੱਲਬਾਤ ਖੋਲ੍ਹੋ"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"ਗੱਲਬਾਤ ਵਿਜੇਟ"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਕੋਈ ਗੱਲਬਾਤ ਚੁਣੋ"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"ਤੁਹਾਨੂੰ ਕੁਝ ਸੁਨੇਹੇ ਮਿਲਣ \'ਤੇ, ਉਹਨਾਂ ਨੂੰ ਦੇਖਣ ਲਈ ਵਾਪਸ ਇੱਥੇ ਆਓ"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"ਤਰਜੀਹੀ ਗੱਲਾਂਬਾਤਾਂ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ਹਾਲੀਆ ਗੱਲਾਂਬਾਤਾਂ"</string>
<string name="okay" msgid="6490552955618608554">"ਠੀਕ ਹੈ"</string>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index f1a8a84..51a9f37 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"Otwarta rozmowa"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widżety Rozmowa"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Kliknij rozmowę, aby dodać ją do ekranu głównego"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Tu pojawią się otrzymane wiadomości"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Rozmowy priorytetowe"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Ostatnie rozmowy"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1156,8 +1157,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"+ <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Zobacz ostatnie wiadomości, nieodebrane połączenia i stany"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Rozmowa"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Wstrzymane przez tryb Nie przeszkadzać"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> wysyła wiadomość"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> wysyła zdjęcie"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problem z odczytaniem pomiaru wykorzystania baterii"</string>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index aa3d628..1d7ba07 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversa"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Toque em uma conversa para adicioná-la à tela inicial"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Volte aqui quando receber mensagens"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversas prioritárias"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversas recentes"</string>
<string name="okay" msgid="6490552955618608554">"Ok"</string>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 22b2eb0..e89aab3 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Abrir conversa"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversa"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Toque numa conversa para a adicionar ao ecrã principal"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Volte aqui quando tiver mensagens"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversas com prioridade"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversas recentes"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Veja mensagens recentes, chamadas não atendidas e atualizações de estado"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Conversa"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Colocado em pausa pelo modo Não incomodar"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> enviou uma mensagem"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> enviou uma imagem"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Ocorreu um problema ao ler o medidor da bateria"</string>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index aa3d628..1d7ba07 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgets de conversa"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Toque em uma conversa para adicioná-la à tela inicial"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Volte aqui quando receber mensagens"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversas prioritárias"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversas recentes"</string>
<string name="okay" msgid="6490552955618608554">"Ok"</string>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 35a976a..377af78 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -1121,7 +1121,8 @@
<string name="basic_status" msgid="2315371112182658176">"Deschideți conversația"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Widgeturi pentru conversație"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Atingeți o conversație ca să o adăugați pe ecranul de pornire"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Reveniți aici după ce primiți câteva mesaje"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Conversații cu prioritate"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Conversații recente"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1150,8 +1151,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Vedeți mesaje recente, apeluri pierdute și actualizări de stare"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Conversație"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Întrerupt de Nu deranja"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> a trimis un mesaj"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> a trimis o imagine"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problemă la citirea măsurării bateriei"</string>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index ec07b3c..f9bc9b2 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"Открытый чат"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Виджеты чатов"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Нажмите на чат, чтобы добавить его на главный экран"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Здесь вы увидите свои сообщения."</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Важные разговоры"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Недавние разговоры"</string>
<string name="okay" msgid="6490552955618608554">"ОК"</string>
@@ -1156,8 +1157,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Будьте в курсе последних сообщений, пропущенных вызовов и обновлений статуса."</string>
<string name="people_tile_title" msgid="6589377493334871272">"Чат"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Приостановлено в режиме \"Не беспокоить\""</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"Пользователь <xliff:g id="NAME">%1$s</xliff:g> отправил сообщение"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"Пользователь <xliff:g id="NAME">%1$s</xliff:g> отправил изображение"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Не удается получить данные об уровне заряда батареи"</string>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index e81c661..0339baa 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"සංවාදය විවෘත කරන්න"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"සංවාද විජට්"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"ඔබගේ මුල් තිරයට එය එක් කිරීමට සංවාදයක් තට්ටු කරන්න"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"ඔබට පණිවිඩ කිහිපයක් ලැබුණු පසු නැවත මෙහි පරීක්ෂා කරන්න"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"ප්රමුඛතා සංවාද"</string>
<string name="recent_conversations" msgid="8531874684782574622">"මෑත සංවාද"</string>
<string name="okay" msgid="6490552955618608554">"හරි"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"මෑත පණිවිඩ, මඟ හැරුණු ඇමතුම් සහ තත්ත්ව යාවත්කාලීන කිරීම් බලන්න"</string>
<string name="people_tile_title" msgid="6589377493334871272">"සංවාදය"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"බාධා නොකිරීම මගින් විරාම කර ඇත"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> පණිවිඩයක් එවා ඇත"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> රූපයක් යවන ලදී"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"ඔබගේ බැටරි මනුව කියවීමේ දෝෂයකි"</string>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 3b2d174..b0d8d3b 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"Otvorená konverzácia"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Miniaplikácie konverzácií"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Klepnite na konverzáciu a pridajte ju tak na plochu"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Vráťte sa sem, až dostanete nejaké správy"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioritné konverzácie"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Nedávne konverzácie"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1156,8 +1157,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Pozrite si nedávne správy, zmeškané hovory a aktualizácie stavu"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Konverzácia"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Pozastavené režimom bez vyrušení"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> poslal(a) správu"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> poslal(a) obrázok"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Pri čítaní meradla batérie sa vyskytol problém"</string>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index b21b342..9d84910 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -749,8 +749,8 @@
<string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Stanje:</b> Uvrščeno nižje"</string>
<string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Prikaz na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu"</string>
<string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Prikaz v obliki oblačka na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu."</string>
- <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Prikaz na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu, preglasitev načina Ne moti"</string>
- <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikaz v obliki oblačka na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu, preglasitev načina Ne moti"</string>
+ <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Prikaz na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu, preglasitev načina Ne moti."</string>
+ <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikaz v obliki oblačka na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu, preglasitev načina Ne moti."</string>
<string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Nastavitve"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Prednostno"</string>
<string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podpira pogovornih funkcij."</string>
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"Odprt pogovor"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Pripomočki za pogovore"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Dotaknite se pogovora, da ga dodate na začetni zaslon."</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Znova preverite tukaj, ko boste prejeli kakšno sporočilo."</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prednostni pogovori"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Nedavni pogovori"</string>
<string name="okay" msgid="6490552955618608554">"V redu"</string>
@@ -1156,8 +1157,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"Več kot <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Ogled nedavnih sporočil, neodgovorjenih klicev in posodobitev stanj"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Pogovor"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"To je začasno zaustavil način »ne moti«."</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"Oseba <xliff:g id="NAME">%1$s</xliff:g> je poslala sporočilo."</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"Oseba <xliff:g id="NAME">%1$s</xliff:g> je poslala sliko."</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Težava z branjem indikatorja stanja napolnjenosti baterije"</string>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index dda9b6c0..78ab1fa 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Hap bisedën"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Miniaplikacionet e bisedave"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Trokit te një bisedë dhe shtoje në ekranin bazë"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Kontrollo përsëri këtu pasi të marrësh disa mesazhe"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Bisedat me përparësi"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Bisedat e fundit"</string>
<string name="okay" msgid="6490552955618608554">"Në rregull"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"Mbi <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Shiko mesazhet e fundit, telefonatat e humbura dhe përditësimet e statusit"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Biseda"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Vendosur në pauzë nga \"Mos shqetëso\""</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> dërgoi një mesazh"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> dërgoi një imazh"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Problem me leximin e matësit të baterisë"</string>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 4a95efb..d14854b 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -1121,7 +1121,8 @@
<string name="basic_status" msgid="2315371112182658176">"Отворите конверзацију"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Виџети за конверзацију"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Додирните конверзацију да бисте је додали на почетни екран"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Вратите се овде када добијете неку поруку"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Приоритетне конверзације"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Недавне конверзације"</string>
<string name="okay" msgid="6490552955618608554">"Важи"</string>
@@ -1150,8 +1151,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Погледајте недавне поруке, пропуштене позиве и ажурирања статуса"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Конверзација"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Паузирано режимом Не узнемиравај"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> шаље поруку"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> шаље слику"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Проблем са очитавањем мерача батерије"</string>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 322efd8..708b938 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Öppen konversation"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Konversationswidgetar"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Tryck på en konversation för att lägga till den på startskärmen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Besök den här sidan igen när du har fått meddelanden"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Prioriterade konversationer"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Senaste konversationerna"</string>
<string name="okay" msgid="6490552955618608554">"Okej"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"över <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Se de senaste meddelandena, missade samtal och statusuppdateringar"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Konversation"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Pausad av Stör ej"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> skickade ett meddelande"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> skickade en bild"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Batteriindikatorn visas inte"</string>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 36d7189..f9f2ca37 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Fungua mazungumzo"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Wijeti za mazungumzo"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Gusa mazungumzo ili uyaweke kwenye Skrini yako ya kwanza"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Angalia hapa tena utakapopokea ujumbe"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Mazungumzo yenye kipaumbele"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Mazungumzo ya hivi majuzi"</string>
<string name="okay" msgid="6490552955618608554">"Sawa"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Angalia ujumbe wa hivi majuzi, simu ambazo hukujibu na taarifa za hali"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Mazungumzo"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Imesimamishwa na kipengele cha Usinisumbue"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ametuma ujumbe"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ametuma picha"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Tatizo la kusoma mita ya betri yako"</string>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 44d9441..0ec1d1f 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -137,10 +137,10 @@
<string name="accessibility_phone_button" msgid="4256353121703100427">"ஃபோன்"</string>
<string name="accessibility_voice_assist_button" msgid="6497706615649754510">"குரல் உதவி"</string>
<string name="accessibility_wallet_button" msgid="1458258783460555507">"வாலட்"</string>
- <string name="accessibility_unlock_button" msgid="122785427241471085">"திற"</string>
+ <string name="accessibility_unlock_button" msgid="122785427241471085">"அன்லாக் செய்"</string>
<string name="accessibility_lock_icon" msgid="661492842417875775">"சாதனம் பூட்டப்பட்டுள்ளது"</string>
<string name="accessibility_waiting_for_fingerprint" msgid="5209142744692162598">"கைரேகைக்காகக் காத்திருக்கிறது"</string>
- <string name="accessibility_unlock_without_fingerprint" msgid="1811563723195375298">"உங்கள் கைரேகையைப் பயன்படுத்தாமல் திறக்கவும்"</string>
+ <string name="accessibility_unlock_without_fingerprint" msgid="1811563723195375298">"உங்கள் கைரேகையைப் பயன்படுத்தாமல் அன்லாக் செய்யுங்கள்"</string>
<string name="accessibility_scanning_face" msgid="3093828357921541387">"முகத்தை ஸ்கேன் செய்கிறது"</string>
<string name="accessibility_send_smart_reply" msgid="8885032190442015141">"அனுப்பு"</string>
<string name="accessibility_manage_notification" msgid="582215815790143983">"அறிவிப்புகளை நிர்வகிக்கும் பட்டன்"</string>
@@ -586,10 +586,10 @@
<string name="monitoring_description_app_work" msgid="3713084153786663662">"உங்கள் பணிக் கணக்கை <xliff:g id="ORGANIZATION">%1$s</xliff:g> நிர்வகிக்கிறது. மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION">%2$s</xliff:g> உடன் அது இணைக்கப்பட்டுள்ளது.\n\nமேலும் தகவலுக்கு, நிர்வாகியைத் தொடர்புகொள்ளவும்."</string>
<string name="monitoring_description_app_personal_work" msgid="6175816356939166101">"உங்கள் பணிக் கணக்கை <xliff:g id="ORGANIZATION">%1$s</xliff:g> நிர்வகிக்கிறது. மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> உடன் அது இணைக்கப்பட்டுள்ளது.\n\nஉங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> உடனும் இணைக்கப்பட்டுள்ளீர்கள்."</string>
<string name="keyguard_indication_trust_unlocked" msgid="7395154975733744547">"TrustAgent இதைத் திறந்தே வைத்துள்ளது"</string>
- <string name="keyguard_indication_trust_disabled" msgid="6820793704816727918">"நீங்கள் கைமுறையாகத் திறக்கும் வரை, சாதனம் பூட்டப்பட்டிருக்கும்"</string>
+ <string name="keyguard_indication_trust_disabled" msgid="6820793704816727918">"நீங்கள் கைமுறையாக அன்லாக் செய்யும் வரை, சாதனம் பூட்டப்பட்டிருக்கும்"</string>
<string name="keyguard_indication_trust_unlocked_plugged_in" msgid="2323452175329362855">"<xliff:g id="KEYGUARD_INDICATION">%1$s</xliff:g>\n<xliff:g id="POWER_INDICATION">%2$s</xliff:g>"</string>
<string name="hidden_notifications_title" msgid="1782412844777612795">"விரைவாக அறிவிப்புகளைப் பெறுதல்"</string>
- <string name="hidden_notifications_text" msgid="5899627470450792578">"திறக்கும் முன் அவற்றைப் பார்க்கவும்"</string>
+ <string name="hidden_notifications_text" msgid="5899627470450792578">"அன்லாக் செய்யும் முன் அவற்றைப் பார்க்கவும்"</string>
<string name="hidden_notifications_cancel" msgid="4805370226181001278">"வேண்டாம்"</string>
<string name="hidden_notifications_setup" msgid="2064795578526982467">"அமை"</string>
<string name="zen_mode_and_condition" msgid="5043165189511223718">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"திறந்தநிலை உரையாடல்"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"உரையாடல் விட்ஜெட்டுகள்"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"ஓர் உரையாடலை உங்கள் முகப்புத் திரையில் சேர்க்க அந்த உரையாடலைத் தட்டுங்கள்"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"செய்திகளைப் பெற்றதும் இங்கே மீண்டும் வரவும்"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"முன்னுரிமை அளிக்கப்பட்ட உரையாடல்கள்"</string>
<string name="recent_conversations" msgid="8531874684782574622">"சமீபத்திய உரையாடல்கள்"</string>
<string name="okay" msgid="6490552955618608554">"சரி"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"சமீபத்திய மெசேஜ்களையும் தவறிய அழைப்புகளையும் ஸ்டேட்டஸ் அப்டேட்களையும் பார்க்கலாம்"</string>
<string name="people_tile_title" msgid="6589377493334871272">"உரையாடல்"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"தொந்தரவு செய்ய வேண்டாம் அம்சத்தால் இடைநிறுத்தப்பட்டது"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ஒரு மெசேஜ் அனுப்பியுள்ளார்"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ஒரு படம் அனுப்பியுள்ளார்"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"பேட்டரி அளவை அறிவதில் சிக்கல்"</string>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 8df60b2..48dbe37 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"సంభాషణను తెరవండి"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"సంభాషణ విడ్జెట్లు"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"దీనిని మీ మొదటి స్క్రీన్కు జోడించడానికి సంభాషణను ట్యాప్ చేయండి"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"మీరు కొన్ని మెసేజ్లను పొందిన తర్వాత తిరిగి ఇక్కడ చెక్ చేయండి"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"ప్రాధాన్య సంభాషణలు"</string>
<string name="recent_conversations" msgid="8531874684782574622">"ఇటీవలి సంభాషణలు"</string>
<string name="okay" msgid="6490552955618608554">"సరే"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"ఇటీవలి మెసేజ్లు, మిస్డ్ కాల్లు, అలాగే స్టేటస్ అప్డేట్లను చూడండి"</string>
<string name="people_tile_title" msgid="6589377493334871272">"సంభాషణ"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"అంతరాయం కలిగించవద్దు ద్వారా పాజ్ చేయబడింది"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> మెసేజ్ను పంపారు"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ఇమేజ్ను పంపారు"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"మీ బ్యాటరీ మీటర్ను చదవడంలో సమస్య"</string>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index 38d2e94..64b2113 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -438,7 +438,7 @@
<string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"สลับภาพรวม"</string>
<string name="expanded_header_battery_charged" msgid="5307907517976548448">"ชาร์จแล้ว"</string>
<string name="expanded_header_battery_charging" msgid="1717522253171025549">"กำลังชาร์จ"</string>
- <string name="expanded_header_battery_charging_with_time" msgid="757991461445765011">"อีก <xliff:g id="CHARGING_TIME">%s</xliff:g> จึงจะเต็ม"</string>
+ <string name="expanded_header_battery_charging_with_time" msgid="757991461445765011">"อีก <xliff:g id="CHARGING_TIME">%s</xliff:g> จะเต็ม"</string>
<string name="expanded_header_battery_not_charging" msgid="809409140358955848">"ไม่ได้ชาร์จ"</string>
<string name="ssl_ca_cert_warning" msgid="8373011375250324005">"เครือข่ายอาจ\nถูกตรวจสอบ"</string>
<string name="description_target_search" msgid="3875069993128855865">"ค้นหา"</string>
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"เปิดการสนทนา"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"วิดเจ็ตการสนทนา"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"แตะการสนทนาเพื่อเพิ่มไปยังหน้าจอหลัก"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"กลับมาดูที่นี่อีกครั้งเมื่อได้รับข้อความ"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"การสนทนาสำคัญ"</string>
<string name="recent_conversations" msgid="8531874684782574622">"การสนทนาล่าสุด"</string>
<string name="okay" msgid="6490552955618608554">"ตกลง"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"ดูข้อความล่าสุด สายที่ไม่ได้รับ และการอัปเดตสถานะ"</string>
<string name="people_tile_title" msgid="6589377493334871272">"การสนทนา"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"หยุดชั่วคราวโดยฟีเจอร์ห้ามรบกวน"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> ส่งข้อความ"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> ส่งรูปภาพ"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"พบปัญหาในการอ่านเครื่องวัดแบตเตอรี่"</string>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 4e54a52..7b4a4d1 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Buksan ang pag-uusap"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Mga widget ng pag-uusap"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Mag-tap sa isang pag-uusap para idagdag ito sa iyong Home screen"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Bumalik dito kapag nakakuha ka na ng ilang mensahe"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Mga priyoridad na pag-uusap"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Mga kamakailang pag-uusap"</string>
<string name="okay" msgid="6490552955618608554">"Okay"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Tingnan ang mga kamakailang mensahe, hindi nasagot na tawag, at update sa status"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Pag-uusap"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Na-pause ng Huwag Istorbohin"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"Nagpadala si <xliff:g id="NAME">%1$s</xliff:g> ng mensahe"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"Nagpadala si <xliff:g id="NAME">%1$s</xliff:g> ng larawan"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Nagkaproblema sa pagbabasa ng iyong battery meter"</string>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 2e9784f..fba8b30 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Görüşmeyi aç"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Görüşme widget\'ları"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Ana ekranınıza eklemek için bir ileti dizisine dokunun"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Birkaç mesaj aldıktan sonra burayı tekrar kontrol edin"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Öncelikli görüşmeler"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Son görüşmeler"</string>
<string name="okay" msgid="6490552955618608554">"Tamam"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Yeni mesajları, cevapsız aramaları ve durum güncellemelerini görün"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Görüşme"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Rahatsız Etmeyin özelliği tarafından duraklatıldı"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> bir mesaj gönderdi"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> bir resim gönderdi"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Pil ölçeriniz okunurken sorun oluştu"</string>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 9805da3..b80ed19 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -750,7 +750,7 @@
<string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані"</string>
<string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані, показується у вигляді спливаючої підказки"</string>
<string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані, показується навіть у режимі \"Не турбувати\""</string>
- <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані, відображається у вигляді спливаючої підказки, показується навіть у режимі \"Не турбувати\""</string>
+ <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані, відображається як спливаючий чат, перериває режим \"Не турбувати\""</string>
<string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Налаштування"</string>
<string name="notification_priority_title" msgid="2079708866333537093">"Пріоритет"</string>
<string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не підтримує функції розмов"</string>
@@ -1127,7 +1127,8 @@
<string name="basic_status" msgid="2315371112182658176">"Відкрита розмова"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Віджети розмов"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Натисніть розмову, щоб додати її на головний екран"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Поверніться сюди, коли отримаєте повідомлення"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Важливі розмови"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Нещодавні розмови"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index a28cedc5..2288383 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"گفتگو کھولیں"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"گفتگو ویجیٹس"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"اسے اپنے ہوم اسکرین پر شامل کرنے کے لیے گفتگو پر تھپتھپائیں"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"کچھ پیغامات حاصل کرنے کے بعد یہاں دوبارہ چیک کریں"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"ترجیحی گفتگوئیں"</string>
<string name="recent_conversations" msgid="8531874684782574622">"حالیہ گفتگوئیں"</string>
<string name="okay" msgid="6490552955618608554">"ٹھیک ہے"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"+<xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"حالیہ پیغامات، چھوٹی ہوئی کالز اور اسٹیٹس اپ ڈیٹس دیکھیں"</string>
<string name="people_tile_title" msgid="6589377493334871272">"گفتگو"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"\'ڈسٹرب نہ کریں\' کے ذریعے موقوف کیا گیا"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> نے ایک پیغام بھیجا"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> نے ایک تصویر بھیجی"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"آپ کے بیٹری میٹر کو پڑھنے میں دشواری"</string>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 3263ae9..0c1d6c6 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"Suhbatni ochish"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Suhbat vidjetlari"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Bosh ekranga chiqariladigan suhbat ustiga bosing"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Keyinroq bu yerda ayrim xabarlar chiqadi"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"Oxirgi suhbatlaringiz shu yerda chiqadi"</string>
<string name="priority_conversations" msgid="3967482288896653039">"Muhim suhbatlar"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Oxirgi suhbatlar"</string>
<string name="okay" msgid="6490552955618608554">"OK"</string>
@@ -1144,8 +1144,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Oxirgi xabarlar, javobsiz chaqiruvlar va holat yangilanishlari"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Suhbat"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Bezovta qilinmasin rejimi pauza qildi"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> xabar yubordi"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> rasm yubordi"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Batareya quvvati aniqlanmadi"</string>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 28bb507..96ea6df 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Mở cuộc trò chuyện"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Tiện ích trò chuyện"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Nhấn vào một cuộc trò chuyện để thêm cuộc trò chuyện đó vào Màn hình chính"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Hãy quay lại đây khi bạn nhận được tin nhắn"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Cuộc trò chuyện ưu tiên"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Cuộc trò chuyện gần đây"</string>
<string name="okay" msgid="6490552955618608554">"Ok"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"Hơn <xliff:g id="NUMBER">%d</xliff:g>"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Xem các tin nhắn, cuộc gọi nhỡ và thông tin cập nhật trạng thái gần đây"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Cuộc trò chuyện"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Đã tạm dừng do chế độ Không làm phiền"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g> đã gửi một tin nhắn"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g> đã gửi một hình ảnh"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Đã xảy ra vấn đề khi đọc dung lượng pin của bạn"</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index c773332..ebffe95 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"开放式对话"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"对话微件"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"点按对话即可将其添加到主屏幕"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"请在收到一些消息后再回来查看"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"优先对话"</string>
<string name="recent_conversations" msgid="8531874684782574622">"近期对话"</string>
<string name="okay" msgid="6490552955618608554">"确定"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"查看近期的消息、未接电话和状态更新"</string>
<string name="people_tile_title" msgid="6589377493334871272">"对话"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"勿扰模式已暂停通知"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g>发送了一条消息"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g>发送了一张图片"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"读取电池计量器时出现问题"</string>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 0eeb4bb..7f2edd9 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -1115,7 +1115,7 @@
<string name="basic_status" msgid="2315371112182658176">"開啟對話"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"對話小工具"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"輕按對話即可新增至主畫面"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"等你收到一些訊息後再回來查看吧"</string>
+ <string name="no_conversations_text" msgid="5354115541282395015">"您最近的對話會在這裡顯示"</string>
<string name="priority_conversations" msgid="3967482288896653039">"優先對話"</string>
<string name="recent_conversations" msgid="8531874684782574622">"最近的對話"</string>
<string name="okay" msgid="6490552955618608554">"確定"</string>
@@ -1144,8 +1144,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"查看最近的訊息、未接來電和狀態更新"</string>
<string name="people_tile_title" msgid="6589377493334871272">"對話"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"「請勿騷擾」已暫停通知"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g>傳送了訊息"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g>傳送了圖片"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"讀取電池計量器時發生問題"</string>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 100a87c..53a281e 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"開放式對話"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"對話小工具"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"輕觸對話即可新增至主畫面"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"等你收到一些訊息後再回來這裡看看"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"優先對話"</string>
<string name="recent_conversations" msgid="8531874684782574622">"最近的對話"</string>
<string name="okay" msgid="6490552955618608554">"確定"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"查看最近的訊息、未接來電和狀態更新"</string>
<string name="people_tile_title" msgid="6589377493334871272">"對話"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"零打擾模式已將通知暫停"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"<xliff:g id="NAME">%1$s</xliff:g>傳送了一則訊息"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"<xliff:g id="NAME">%1$s</xliff:g>傳送了一張圖片"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"讀取電池計量器時發生問題"</string>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 30eecaf..76df48a 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -1115,7 +1115,8 @@
<string name="basic_status" msgid="2315371112182658176">"Vula ingxoxo"</string>
<string name="select_conversation_title" msgid="6716364118095089519">"Amawijethi wengxoxo"</string>
<string name="select_conversation_text" msgid="3376048251434956013">"Thepha ingxoxo ukuyengeza Kusikrini sakho sasekhaya"</string>
- <string name="no_conversations_text" msgid="7362374212649891057">"Phinda uhlole futhi lapho uthola imilayezo ethile"</string>
+ <!-- no translation found for no_conversations_text (5354115541282395015) -->
+ <skip />
<string name="priority_conversations" msgid="3967482288896653039">"Izingxoxo ezibalulekile"</string>
<string name="recent_conversations" msgid="8531874684782574622">"Izingxoxo zakamuva"</string>
<string name="okay" msgid="6490552955618608554">"Kulungile"</string>
@@ -1144,8 +1145,7 @@
<string name="messages_count_overflow_indicator" msgid="7850934067082006043">"<xliff:g id="NUMBER">%d</xliff:g>+"</string>
<string name="people_tile_description" msgid="8154966188085545556">"Bona imiyalezo yakamuva, amakholi akuphuthile, nezibuyekezo zesimo"</string>
<string name="people_tile_title" msgid="6589377493334871272">"Ingxoxo"</string>
- <!-- no translation found for paused_by_dnd (7856941866433556428) -->
- <skip />
+ <string name="paused_by_dnd" msgid="7856941866433556428">"Kumiswe okuthi Ungaphazamisi"</string>
<string name="new_notification_text_content_description" msgid="5574393603145263727">"U-<xliff:g id="NAME">%1$s</xliff:g> uthumele umlayezo"</string>
<string name="new_notification_image_content_description" msgid="6017506886810813123">"U-<xliff:g id="NAME">%1$s</xliff:g> uthumele isithombe"</string>
<string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"Kube khona inkinga ngokufunda imitha yakho yebhethri"</string>
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index e7edb0e..020a100 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -272,6 +272,7 @@
<color name="misalignment_text_color">#F28B82</color>
<color name="screenrecord_status_color">#E94235</color>
+ <color name="screenrecord_icon_color">#D93025</color><!-- red 600 -->
<color name="privacy_chip_background">#3ddc84</color>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 35715d1..8bac447 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1397,9 +1397,11 @@
<dimen name="controls_dialog_padding">32dp</dimen>
<dimen name="controls_dialog_control_width">200dp</dimen>
- <!-- Screen Record -->
- <dimen name="screenrecord_dialog_padding">18dp</dimen>
- <dimen name="screenrecord_logo_size">24dp</dimen>
+ <!-- Screen record dialog -->
+ <dimen name="screenrecord_option_padding">18dp</dimen>
+ <dimen name="screenrecord_logo_size">26dp</dimen>
+ <dimen name="screenrecord_option_icon_size">24dp</dimen>
+ <!-- Screen record status bar icon -->
<dimen name="screenrecord_status_text_size">14sp</dimen>
<dimen name="screenrecord_status_icon_radius">7dp</dimen>
<dimen name="screenrecord_status_icon_width">21dp</dimen>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 6d25a5b..17a984e 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -697,6 +697,15 @@
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
+ <style name="ScreenRecord.Switch">
+ <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
+ <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item>
+ <item name="android:switchMinWidth">52dp</item>
+ <item name="android:minHeight">48dp</item>
+ <item name="android:track">@drawable/settingslib_switch_track</item>
+ <item name="android:thumb">@drawable/settingslib_switch_thumb</item>
+ </style>
+
<!-- Screenshots -->
<style name="LongScreenshotActivity" parent="@android:style/Theme.DeviceDefault.DayNight">
<item name="android:windowNoTitle">true</item>
diff --git a/packages/SystemUI/res/values/tiles_states_strings.xml b/packages/SystemUI/res/values/tiles_states_strings.xml
index 5ac7c1d..a0920bb 100644
--- a/packages/SystemUI/res/values/tiles_states_strings.xml
+++ b/packages/SystemUI/res/values/tiles_states_strings.xml
@@ -40,9 +40,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_internet">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for wifi tile: unavailable, off, on.
@@ -50,9 +50,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_wifi">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for cell (data) tile: unavailable, off, on.
@@ -60,9 +60,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear.[CHAR LIMIT=32] -->
<string-array name="tile_states_cell">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for battery (saver) tile: unavailable, off, on.
@@ -70,9 +70,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_battery">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for dnd (Do not disturb) tile: unavailable, off, on.
@@ -80,9 +80,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_dnd">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for flashlight tile: unavailable, off, on.
@@ -90,9 +90,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_flashlight">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for rotation (lock) tile: unavailable, off, on.
@@ -100,9 +100,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_rotation">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for bt (bluetooth) tile: unavailable, off, on.
@@ -110,16 +110,16 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_bt">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for airplane tile: unavailable, off, on [CHAR LIMIT=32] -->
<string-array name="tile_states_airplane">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for location tile: unavailable, off, on.
@@ -127,9 +127,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_location">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for hotspot tile: unavailable, off, on.
@@ -137,9 +137,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_hotspot">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for (color) inversion tile: unavailable, off, on.
@@ -147,9 +147,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_inversion">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for (data) saver tile: unavailable, off, on.
@@ -157,9 +157,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_saver">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for dark (mode) tile: unavailable, off, on.
@@ -167,9 +167,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_dark">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for work (mode) tile: unavailable, off, on.
@@ -177,9 +177,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_work">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for cast tile: unavailable, off, on.
@@ -187,9 +187,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_cast">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for night (light) tile: unavailable, off, on.
@@ -197,9 +197,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_night">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for screenrecord tile: unavailable, off, on.
@@ -207,9 +207,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_screenrecord">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for reverse (charging) tile: unavailable, off, on.
@@ -217,9 +217,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_reverse">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for reduce_brightness tile: unavailable, off, on.
@@ -227,9 +227,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_reduce_brightness">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for cameratoggle tile: unavailable, off, on.
@@ -237,9 +237,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear.[CHAR LIMIT=32] -->
<string-array name="tile_states_cameratoggle">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for mictoggle tile: unavailable, off, on.
@@ -247,9 +247,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_mictoggle">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for (home) controls tile: unavailable, off, on.
@@ -257,9 +257,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_controls">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for (quick access) wallet tile: unavailable, off, on.
@@ -267,9 +267,9 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_wallet">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
<!-- State names for alarm tile: unavailable, off, on.
@@ -277,8 +277,8 @@
subtitle, so some of these may never appear on screen. They should still be translated as
if they could appear. [CHAR LIMIT=32] -->
<string-array name="tile_states_alarm">
- <item>@string/tile_unavailable</item>
- <item>@string/switch_bar_off</item>
- <item>@string/switch_bar_on</item>
+ <item>Unavailable</item>
+ <item>Off</item>
+ <item>On</item>
</string-array>
</resources>
\ No newline at end of file
diff --git a/packages/SystemUI/shared/lint-baseline.xml b/packages/SystemUI/shared/lint-baseline.xml
index ec9d8fd..4bd6729 100644
--- a/packages/SystemUI/shared/lint-baseline.xml
+++ b/packages/SystemUI/shared/lint-baseline.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<issues format="5" by="lint 4.1.0" client="cli" variant="all" version="4.1.0">
+<issues format="6" by="lint 7.1.0-dev" type="baseline" client="" name="" variant="all" version="7.1.0-dev">
<issue
id="NewApi"
@@ -300,6 +300,17 @@
<issue
id="NewApi"
+ message="Field requires API level 29 (current min is 26): `android.app.TaskInfo#taskId`"
+ errorLine1=" taskId = change.getTaskInfo() != null ? change.getTaskInfo().taskId : -1;"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="frameworks/base/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationTargetCompat.java"
+ line="192"
+ column="49"/>
+ </issue>
+
+ <issue
+ id="NewApi"
message="Field requires API level 29 (current min is 26): `android.app.ActivityManager.RunningTaskInfo#isRunning`"
errorLine1=" isNotInRecents = !change.getTaskInfo().isRunning;"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -311,6 +322,17 @@
<issue
id="NewApi"
+ message="Field requires API level 29 (current min is 26): `android.app.TaskInfo#isRunning`"
+ errorLine1=" isNotInRecents = !change.getTaskInfo().isRunning;"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="frameworks/base/packages/SystemUI/shared/src/com/android/systemui/shared/system/RemoteAnimationTargetCompat.java"
+ line="210"
+ column="31"/>
+ </issue>
+
+ <issue
+ id="NewApi"
message="Call requires API level 29 (current min is 26): `android.view.SurfaceControl#release`"
errorLine1=" leash.mSurfaceControl.release();"
errorLine2=" ~~~~~~~">
@@ -575,6 +597,17 @@
<issue
id="NewApi"
+ message="Field requires API level 29 (current min is 26): `android.app.TaskInfo#taskId`"
+ errorLine1=" onTaskMovedToFront(taskInfo.taskId);"
+ errorLine2=" ~~~~~~~~~~~~~~~">
+ <location
+ file="frameworks/base/packages/SystemUI/shared/src/com/android/systemui/shared/system/TaskStackChangeListener.java"
+ line="70"
+ column="28"/>
+ </issue>
+
+ <issue
+ id="NewApi"
message="Call requires API level 29 (current min is 26): `android.graphics.Bitmap#wrapHardwareBuffer`"
errorLine1=" thumbnail = Bitmap.wrapHardwareBuffer(buffer, snapshot.getColorSpace());"
errorLine2=" ~~~~~~~~~~~~~~~~~~">
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
index 2b35bcd..c90833c 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
@@ -345,7 +345,7 @@
// Create our own ClassLoader so we can use our own code as the parent.
ClassLoader classLoader = mManager.getClassLoader(info);
Context pluginContext = new PluginContextWrapper(
- mContext.createApplicationContext(info, 0), classLoader);
+ mContext.createPackageContext(pkg, 0), classLoader);
Class<?> pluginClass = Class.forName(cls, true, classLoader);
// TODO: Only create the plugin before version check if we need it for
// legacy version check.
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
index 6826e7b..cb5c6c3 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java
@@ -189,7 +189,7 @@
@Override
public void onSwipeUp() {
if (!mUpdateMonitor.isFaceDetectionRunning()) {
- mUpdateMonitor.requestFaceAuth();
+ mUpdateMonitor.requestFaceAuth(true);
mKeyguardSecurityCallback.userActivity();
showMessage(null, null);
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index cad5aeb..1344be6 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -315,6 +315,7 @@
private RingerModeTracker mRingerModeTracker;
private int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
private int mFaceRunningState = BIOMETRIC_STATE_STOPPED;
+ private boolean mIsFaceAuthUserRequested;
private LockPatternUtils mLockPatternUtils;
private final IDreamManager mDreamManager;
private boolean mIsDreaming;
@@ -1369,7 +1370,7 @@
Trace.endSection();
// on auth success, we sometimes never received an acquired haptic
- if (!mPlayedAcquiredHaptic) {
+ if (!mPlayedAcquiredHaptic && isUdfpsEnrolled()) {
playAcquiredHaptic();
}
}
@@ -1387,7 +1388,9 @@
@Override
public void onAuthenticationAcquired(int acquireInfo) {
handleFingerprintAcquired(acquireInfo);
- if (acquireInfo == FingerprintManager.FINGERPRINT_ACQUIRED_GOOD) {
+ if (acquireInfo == FingerprintManager.FINGERPRINT_ACQUIRED_GOOD
+ && isUdfpsEnrolled()) {
+ mPlayedAcquiredHaptic = true;
playAcquiredHaptic();
}
}
@@ -1402,20 +1405,23 @@
public void onUdfpsPointerUp(int sensorId) {
Log.d(TAG, "onUdfpsPointerUp, sensorId: " + sensorId);
}
-
- private void playAcquiredHaptic() {
- if (mAcquiredHapticEnabled && mVibrator != null && isUdfpsEnrolled()) {
- mPlayedAcquiredHaptic = true;
- String effect = Settings.Global.getString(
- mContext.getContentResolver(),
- "udfps_acquired_type");
- mVibrator.vibrate(UdfpsController.getVibration(effect,
- UdfpsController.EFFECT_TICK),
- UdfpsController.VIBRATION_SONIFICATION_ATTRIBUTES);
- }
- }
};
+ /**
+ * Play haptic to signal udfps fingeprrint acquired.
+ */
+ @VisibleForTesting
+ public void playAcquiredHaptic() {
+ if (mAcquiredHapticEnabled && mVibrator != null) {
+ String effect = Settings.Global.getString(
+ mContext.getContentResolver(),
+ "udfps_acquired_type");
+ mVibrator.vibrate(UdfpsController.getVibration(effect,
+ UdfpsController.EFFECT_TICK),
+ UdfpsController.VIBRATION_SONIFICATION_ATTRIBUTES);
+ }
+ }
+
private final FaceManager.FaceDetectionCallback mFaceDetectionCallback
= (sensorId, userId, isStrongBiometric) -> {
// Trigger the face success path so the bouncer can be shown
@@ -2106,12 +2112,18 @@
/**
* Requests face authentication if we're on a state where it's allowed.
* This will re-trigger auth in case it fails.
+ * @param userInitiatedRequest true if the user explicitly requested face auth
*/
- public void requestFaceAuth() {
- if (DEBUG) Log.d(TAG, "requestFaceAuth()");
+ public void requestFaceAuth(boolean userInitiatedRequest) {
+ if (DEBUG) Log.d(TAG, "requestFaceAuth() userInitiated=" + userInitiatedRequest);
+ mIsFaceAuthUserRequested |= userInitiatedRequest;
updateFaceListeningState();
}
+ public boolean isFaceAuthUserRequested() {
+ return mIsFaceAuthUserRequested;
+ }
+
/**
* In case face auth is running, cancel it.
*/
@@ -2128,6 +2140,7 @@
mHandler.removeCallbacks(mRetryFaceAuthentication);
boolean shouldListenForFace = shouldListenForFace();
if (mFaceRunningState == BIOMETRIC_STATE_RUNNING && !shouldListenForFace) {
+ mIsFaceAuthUserRequested = false;
stopListeningForFace();
} else if (mFaceRunningState != BIOMETRIC_STATE_RUNNING && shouldListenForFace) {
startListeningForFace();
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
index 3d2c4e1..2d04d8d 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java
@@ -430,21 +430,7 @@
mTouchLogTime = SystemClock.elapsedRealtime();
mPowerManager.userActivity(SystemClock.uptimeMillis(),
PowerManager.USER_ACTIVITY_EVENT_TOUCH, 0);
-
- // TODO: this should eventually be removed after ux testing
- if (mVibrator != null) {
- final ContentResolver contentResolver =
- mContext.getContentResolver();
- int startEnabled = Settings.Global.getInt(contentResolver,
- "udfps_start", 1);
- if (startEnabled > 0) {
- String startEffectSetting = Settings.Global.getString(
- contentResolver, "udfps_start_type");
- mVibrator.vibrate(getVibration(startEffectSetting,
- EFFECT_CLICK), VIBRATION_SONIFICATION_ATTRIBUTES);
- }
- }
-
+ playStartHaptic();
handled = true;
} else if (sinceLastLog >= MIN_TOUCH_LOG_INTERVAL) {
Log.v(TAG, "onTouch | finger move: " + touchInfo);
@@ -498,6 +484,7 @@
@NonNull LockscreenShadeTransitionController lockscreenShadeTransitionController,
@NonNull ScreenLifecycle screenLifecycle,
@Nullable Vibrator vibrator,
+ @NonNull UdfpsHapticsSimulator udfpsHapticsSimulator,
@NonNull Optional<UdfpsHbmProvider> hbmProvider) {
mContext = context;
mExecution = execution;
@@ -544,6 +531,29 @@
final IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
context.registerReceiver(mBroadcastReceiver, filter);
+
+ udfpsHapticsSimulator.setUdfpsController(this);
+ }
+
+ /**
+ * Play haptic to signal udfps scanning started.
+ */
+ @VisibleForTesting
+ public void playStartHaptic() {
+ if (mVibrator != null) {
+ final ContentResolver contentResolver =
+ mContext.getContentResolver();
+ // TODO: these settings checks should eventually be removed after ux testing
+ // (b/185124905)
+ int startEnabled = Settings.Global.getInt(contentResolver,
+ "udfps_start", 1);
+ if (startEnabled > 0) {
+ String startEffectSetting = Settings.Global.getString(
+ contentResolver, "udfps_start_type");
+ mVibrator.vibrate(getVibration(startEffectSetting,
+ EFFECT_CLICK), VIBRATION_SONIFICATION_ATTRIBUTES);
+ }
+ }
}
private int getCoreLayoutParamFlags() {
@@ -836,7 +846,6 @@
}
}
-
/**
* get vibration to play given string
* used for testing purposes (b/185124905)
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsHapticsSimulator.kt b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsHapticsSimulator.kt
new file mode 100644
index 0000000..ea2bbfa
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsHapticsSimulator.kt
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.biometrics
+
+import android.media.AudioAttributes
+import android.os.VibrationEffect
+import android.os.Vibrator
+
+import com.android.keyguard.KeyguardUpdateMonitor
+
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.statusbar.commandline.Command
+import com.android.systemui.statusbar.commandline.CommandRegistry
+
+import java.io.PrintWriter
+
+import javax.inject.Inject
+
+/**
+ * Used to simulate haptics that may be used for udfps authentication.
+ */
+@SysUISingleton
+class UdfpsHapticsSimulator @Inject constructor(
+ commandRegistry: CommandRegistry,
+ val vibrator: Vibrator?,
+ val keyguardUpdateMonitor: KeyguardUpdateMonitor
+) : Command {
+ val sonificationEffects =
+ AudioAttributes.Builder()
+ .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+ .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
+ .build()
+ var udfpsController: UdfpsController? = null
+
+ init {
+ commandRegistry.registerCommand("udfps-haptic") { this }
+ }
+
+ override fun execute(pw: PrintWriter, args: List<String>) {
+ if (args.isEmpty()) {
+ invalidCommand(pw)
+ } else {
+ when (args[0]) {
+ "start" -> {
+ udfpsController?.playStartHaptic()
+ }
+ "acquired" -> {
+ keyguardUpdateMonitor.playAcquiredHaptic()
+ }
+ "success" -> {
+ // needs to be kept up to date with AcquisitionClient#SUCCESS_VIBRATION_EFFECT
+ vibrator?.vibrate(
+ VibrationEffect.get(VibrationEffect.EFFECT_CLICK),
+ sonificationEffects)
+ }
+ "error" -> {
+ // needs to be kept up to date with AcquisitionClient#ERROR_VIBRATION_EFFECT
+ vibrator?.vibrate(
+ VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK),
+ sonificationEffects)
+ }
+ else -> invalidCommand(pw)
+ }
+ }
+ }
+
+ override fun help(pw: PrintWriter) {
+ pw.println("Usage: adb shell cmd statusbar udfps-haptic <haptic>")
+ pw.println("Available commands:")
+ pw.println(" start")
+ pw.println(" acquired")
+ pw.println(" success, always plays CLICK haptic")
+ pw.println(" error, always plays DOUBLE_CLICK haptic")
+ }
+
+ fun invalidCommand(pw: PrintWriter) {
+ pw.println("invalid command")
+ help(pw)
+ }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
index d7f2d75..83fa994 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
@@ -79,6 +79,7 @@
import com.android.systemui.shared.system.WindowManagerWrapper;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
+import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.phone.AutoHideController;
import com.android.systemui.statusbar.phone.ConfigurationControllerImpl;
import com.android.systemui.statusbar.phone.ShadeController;
@@ -229,6 +230,7 @@
Lazy<StatusBar> statusBarLazy,
ShadeController shadeController,
NotificationRemoteInputManager notificationRemoteInputManager,
+ NotificationShadeDepthController notificationShadeDepthController,
SystemActions systemActions,
@Main Handler mainHandler,
UiEventLogger uiEventLogger,
@@ -257,6 +259,7 @@
statusBarLazy,
shadeController,
notificationRemoteInputManager,
+ notificationShadeDepthController,
systemActions,
mainHandler,
uiEventLogger,
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
index e37d3d5..a641ad4 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
@@ -30,7 +30,6 @@
import android.widget.TextView;
import com.android.internal.R;
-import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.settingslib.Utils;
import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.scrim.ScrimDrawable;
@@ -51,7 +50,6 @@
private final KeyguardStateController mKeyguardStateController;
private final DeviceProvisionedController mDeviceProvisionedController;
private final BlurUtils mBlurUtils;
- private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
private final CommandQueue mCommandQueue;
private GlobalActionsDialogLite mGlobalActionsDialog;
private boolean mDisabled;
@@ -60,15 +58,13 @@
public GlobalActionsImpl(Context context, CommandQueue commandQueue,
Lazy<GlobalActionsDialogLite> globalActionsDialogLazy, BlurUtils blurUtils,
KeyguardStateController keyguardStateController,
- DeviceProvisionedController deviceProvisionedController,
- KeyguardUpdateMonitor keyguardUpdateMonitor) {
+ DeviceProvisionedController deviceProvisionedController) {
mContext = context;
mGlobalActionsDialogLazy = globalActionsDialogLazy;
mKeyguardStateController = keyguardStateController;
mDeviceProvisionedController = deviceProvisionedController;
mCommandQueue = commandQueue;
mBlurUtils = blurUtils;
- mKeyguardUpdateMonitor = keyguardUpdateMonitor;
mCommandQueue.addCallback(this);
}
@@ -87,7 +83,6 @@
mGlobalActionsDialog = mGlobalActionsDialogLazy.get();
mGlobalActionsDialog.showOrHideDialog(mKeyguardStateController.isShowing(),
mDeviceProvisionedController.isDeviceProvisioned());
- mKeyguardUpdateMonitor.requestFaceAuth();
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndication.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndication.java
index 2873cd3..9b83b75 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndication.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndication.java
@@ -40,18 +40,22 @@
private final View.OnClickListener mOnClickListener;
@Nullable
private final Drawable mBackground;
+ @Nullable
+ private final Long mMinVisibilityMillis; // in milliseconds
private KeyguardIndication(
CharSequence message,
ColorStateList textColor,
Drawable icon,
View.OnClickListener onClickListener,
- Drawable background) {
+ Drawable background,
+ Long minVisibilityMillis) {
mMessage = message;
mTextColor = textColor;
mIcon = icon;
mOnClickListener = onClickListener;
mBackground = background;
+ mMinVisibilityMillis = minVisibilityMillis;
}
/**
@@ -89,6 +93,14 @@
return mBackground;
}
+ /**
+ * Minimum time to show text in milliseconds.
+ * @return null if unspecified
+ */
+ public @Nullable Long getMinVisibilityMillis() {
+ return mMinVisibilityMillis;
+ }
+
@Override
public String toString() {
String str = "KeyguardIndication{";
@@ -96,6 +108,7 @@
if (mIcon != null) str += " mIcon=" + mIcon;
if (mOnClickListener != null) str += " mOnClickListener=" + mOnClickListener;
if (mBackground != null) str += " mBackground=" + mBackground;
+ if (mMinVisibilityMillis != null) str += " mMinVisibilityMillis=" + mMinVisibilityMillis;
str += "}";
return str;
}
@@ -109,6 +122,7 @@
private View.OnClickListener mOnClickListener;
private ColorStateList mTextColor;
private Drawable mBackground;
+ private Long mMinVisibilityMillis;
public Builder() { }
@@ -155,6 +169,15 @@
}
/**
+ * Optional. Set a required minimum visibility time in milliseconds for the text
+ * to show.
+ */
+ public Builder setMinVisibilityMillis(Long minVisibilityMillis) {
+ this.mMinVisibilityMillis = minVisibilityMillis;
+ return this;
+ }
+
+ /**
* Build the KeyguardIndication.
*/
public KeyguardIndication build() {
@@ -166,7 +189,8 @@
}
return new KeyguardIndication(
- mMessage, mTextColor, mIcon, mOnClickListener, mBackground);
+ mMessage, mTextColor, mIcon, mOnClickListener, mBackground,
+ mMinVisibilityMillis);
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
index fc5f3b8..df9977f 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardIndicationRotateTextViewController.java
@@ -167,12 +167,14 @@
* - can be presented with an "error" color if isError is true
*/
public void showTransient(CharSequence newIndication, boolean isError) {
+ final long inAnimationDuration = 600L; // see KeyguardIndicationTextView.getYInDuration
updateIndication(INDICATION_TYPE_TRANSIENT,
new KeyguardIndication.Builder()
.setMessage(newIndication)
.setTextColor(isError
? Utils.getColorError(getContext())
: mInitialTextColorState)
+ .setMinVisibilityMillis(2000L + inAnimationDuration)
.build(),
/* showImmediately */true);
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index c6fd20e..c84d6a8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -2178,12 +2178,6 @@
mDrawnCallback = null;
}
- // only play "unlock" noises if not on a call (since the incall UI
- // disables the keyguard)
- if (TelephonyManager.EXTRA_STATE_IDLE.equals(mPhoneState)) {
- playSounds(false);
- }
-
LatencyTracker.getInstance(mContext)
.onActionEnd(LatencyTracker.ACTION_LOCKSCREEN_UNLOCK);
@@ -2301,6 +2295,13 @@
}
private void onKeyguardExitFinished() {
+ // only play "unlock" noises if not on a call (since the incall UI
+ // disables the keyguard)
+ if (TelephonyManager.EXTRA_STATE_IDLE.equals(mPhoneState)) {
+ Log.i("TEST", "playSounds: false");
+ playSounds(false);
+ }
+
setShowingLocked(false);
mWakeAndUnlocking = false;
mDismissCallbackRegistry.notifyDismissSucceeded();
diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
index 19a67e9..a3d7a811 100644
--- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java
@@ -347,10 +347,11 @@
artistText.setText(data.getArtist());
// Transfer chip
- mPlayerViewHolder.getSeamless().setVisibility(View.VISIBLE);
+ ViewGroup seamlessView = mPlayerViewHolder.getSeamless();
+ seamlessView.setVisibility(View.VISIBLE);
setVisibleAndAlpha(collapsedSet, R.id.media_seamless, true /*visible */);
setVisibleAndAlpha(expandedSet, R.id.media_seamless, true /*visible */);
- mPlayerViewHolder.getSeamless().setOnClickListener(v -> {
+ seamlessView.setOnClickListener(v -> {
mMediaOutputDialogFactory.create(data.getPackageName(), true);
});
@@ -374,9 +375,9 @@
collapsedSet.setAlpha(seamlessId, seamlessAlpha);
// Disable clicking on output switcher for resumption controls.
mPlayerViewHolder.getSeamless().setEnabled(!data.getResumption());
+ String deviceString = null;
if (showFallback) {
iconView.setImageDrawable(null);
- deviceName.setText(null);
} else if (device != null) {
Drawable icon = device.getIcon();
iconView.setVisibility(View.VISIBLE);
@@ -387,13 +388,16 @@
} else {
iconView.setImageDrawable(icon);
}
- deviceName.setText(device.getName());
+ deviceString = device.getName();
} else {
// Reset to default
Log.w(TAG, "device is null. Not binding output chip.");
iconView.setVisibility(View.GONE);
- deviceName.setText(com.android.internal.R.string.ext_media_seamless_action);
+ deviceString = mContext.getString(
+ com.android.internal.R.string.ext_media_seamless_action);
}
+ deviceName.setText(deviceString);
+ seamlessView.setContentDescription(deviceString);
List<Integer> actionsWhenCollapsed = data.getActionsToShowInCompact();
// Media controls
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
index b21d311..7f42530 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
@@ -138,6 +138,7 @@
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
+import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.AutoHideController;
@@ -201,6 +202,7 @@
private final UiEventLogger mUiEventLogger;
private final NavigationBarA11yHelper mNavigationBarA11yHelper;
private final UserTracker mUserTracker;
+ private final NotificationShadeDepthController mNotificationShadeDepthController;
private Bundle mSavedState;
private NavigationBarView mNavigationBarView;
@@ -439,6 +441,25 @@
}
};
+ private final NotificationShadeDepthController.DepthListener mDepthListener =
+ new NotificationShadeDepthController.DepthListener() {
+ boolean mHasBlurs;
+
+ @Override
+ public void onWallpaperZoomOutChanged(float zoomOut) {
+ }
+
+ @Override
+ public void onBlurRadiusChanged(int radius) {
+ boolean hasBlurs = radius != 0;
+ if (hasBlurs == mHasBlurs) {
+ return;
+ }
+ mHasBlurs = hasBlurs;
+ mNavigationBarView.setWindowHasBlurs(hasBlurs);
+ }
+ };
+
public NavigationBar(Context context,
WindowManager windowManager,
Lazy<AssistManager> assistManagerLazy,
@@ -458,6 +479,7 @@
Optional<Recents> recentsOptional, Lazy<StatusBar> statusBarLazy,
ShadeController shadeController,
NotificationRemoteInputManager notificationRemoteInputManager,
+ NotificationShadeDepthController notificationShadeDepthController,
SystemActions systemActions,
@Main Handler mainHandler,
NavigationBarOverlayController navbarOverlayController,
@@ -489,6 +511,7 @@
mUiEventLogger = uiEventLogger;
mNavigationBarA11yHelper = navigationBarA11yHelper;
mUserTracker = userTracker;
+ mNotificationShadeDepthController = notificationShadeDepthController;
mNavBarMode = mNavigationModeController.addListener(this);
}
@@ -554,6 +577,7 @@
mIsCurrentUserSetup = mDeviceProvisionedController.isCurrentUserSetup();
mDeviceProvisionedController.addCallback(mUserSetupListener);
+ mNotificationShadeDepthController.addListener(mDepthListener);
setAccessibilityFloatingMenuModeIfNeeded();
@@ -569,6 +593,7 @@
mNavigationBarA11yHelper.removeA11yEventListener(mAccessibilityListener);
mContentResolver.unregisterContentObserver(mAssistContentObserver);
mDeviceProvisionedController.removeCallback(mUserSetupListener);
+ mNotificationShadeDepthController.removeListener(mDepthListener);
DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener);
}
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
index 74f5022..aa5964b 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
@@ -60,6 +60,7 @@
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.CommandQueue.Callbacks;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
+import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.phone.BarTransitions.TransitionMode;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
@@ -115,6 +116,7 @@
private final DisplayManager mDisplayManager;
private final NavigationBarOverlayController mNavBarOverlayController;
private final TaskbarDelegate mTaskbarDelegate;
+ private final NotificationShadeDepthController mNotificationShadeDepthController;
private int mNavMode;
private boolean mIsTablet;
private final UserTracker mUserTracker;
@@ -149,6 +151,7 @@
Lazy<StatusBar> statusBarLazy,
ShadeController shadeController,
NotificationRemoteInputManager notificationRemoteInputManager,
+ NotificationShadeDepthController notificationShadeDepthController,
SystemActions systemActions,
@Main Handler mainHandler,
UiEventLogger uiEventLogger,
@@ -177,6 +180,7 @@
mStatusBarLazy = statusBarLazy;
mShadeController = shadeController;
mNotificationRemoteInputManager = notificationRemoteInputManager;
+ mNotificationShadeDepthController = notificationShadeDepthController;
mSystemActions = systemActions;
mUiEventLogger = uiEventLogger;
mHandler = mainHandler;
@@ -370,6 +374,7 @@
mStatusBarLazy,
mShadeController,
mNotificationRemoteInputManager,
+ mNotificationShadeDepthController,
mSystemActions,
mHandler,
mNavBarOverlayController,
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
index 7af4853..4816f1c 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java
@@ -413,6 +413,13 @@
return super.onTouchEvent(event);
}
+ /**
+ * If we're blurring the shade window.
+ */
+ public void setWindowHasBlurs(boolean hasBlurs) {
+ mRegionSamplingHelper.setWindowHasBlurs(hasBlurs);
+ }
+
void onTransientStateChanged(boolean isTransient) {
mEdgeBackGestureHandler.onNavBarTransientStateChanged(isTransient);
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/RegionSamplingHelper.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/RegionSamplingHelper.java
index 70117eb..560d89a 100644
--- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/RegionSamplingHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/RegionSamplingHelper.java
@@ -65,6 +65,7 @@
private final float mLuminanceChangeThreshold;
private boolean mFirstSamplingAfterStart;
private boolean mWindowVisible;
+ private boolean mWindowHasBlurs;
private SurfaceControl mRegisteredStopLayer = null;
private ViewTreeObserver.OnDrawListener mUpdateOnDraw = new ViewTreeObserver.OnDrawListener() {
@Override
@@ -153,6 +154,7 @@
boolean isSamplingEnabled = mSamplingEnabled
&& !mSamplingRequestBounds.isEmpty()
&& mWindowVisible
+ && !mWindowHasBlurs
&& (mSampledView.isAttachedToWindow() || mFirstSamplingAfterStart);
if (isSamplingEnabled) {
ViewRootImpl viewRootImpl = mSampledView.getViewRootImpl();
@@ -225,6 +227,14 @@
updateSamplingListener();
}
+ /**
+ * If we're blurring the shade window.
+ */
+ public void setWindowHasBlurs(boolean hasBlurs) {
+ mWindowHasBlurs = hasBlurs;
+ updateSamplingListener();
+ }
+
public void dump(PrintWriter pw) {
pw.println("RegionSamplingHelper:");
pw.println(" sampleView isAttached: " + mSampledView.isAttachedToWindow());
@@ -238,6 +248,7 @@
pw.println(" mLastMedianLuma: " + mLastMedianLuma);
pw.println(" mCurrentMedianLuma: " + mCurrentMedianLuma);
pw.println(" mWindowVisible: " + mWindowVisible);
+ pw.println(" mWindowHasBlurs: " + mWindowHasBlurs);
pw.println(" mWaitingOnDraw: " + mWaitingOnDraw);
pw.println(" mRegisteredStopLayer: " + mRegisteredStopLayer);
pw.println(" mIsDestroyed: " + mIsDestroyed);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
index 6660081..74550f2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java
@@ -28,12 +28,8 @@
import android.view.WindowInsets;
import android.widget.FrameLayout;
-import androidx.dynamicanimation.animation.FloatPropertyCompat;
-import androidx.dynamicanimation.animation.SpringForce;
-
import com.android.systemui.R;
import com.android.systemui.qs.customize.QSCustomizer;
-import com.android.wm.shell.animation.PhysicsAnimator;
/**
* Wrapper view with background which contains {@link QSPanel} and {@link QuickStatusBarHeader}
@@ -41,26 +37,10 @@
public class QSContainerImpl extends FrameLayout {
private final Point mSizePoint = new Point();
- private static final FloatPropertyCompat<QSContainerImpl> BACKGROUND_BOTTOM =
- new FloatPropertyCompat<QSContainerImpl>("backgroundBottom") {
- @Override
- public float getValue(QSContainerImpl qsImpl) {
- return qsImpl.getBackgroundBottom();
- }
-
- @Override
- public void setValue(QSContainerImpl background, float value) {
- background.setBackgroundBottom((int) value);
- }
- };
- private static final PhysicsAnimator.SpringConfig BACKGROUND_SPRING
- = new PhysicsAnimator.SpringConfig(SpringForce.STIFFNESS_MEDIUM,
- SpringForce.DAMPING_RATIO_LOW_BOUNCY);
private int mFancyClippingTop;
private int mFancyClippingBottom;
private final float[] mFancyClippingRadii = new float[] {0, 0, 0, 0, 0, 0, 0, 0};
private final Path mFancyClippingPath = new Path();
- private int mBackgroundBottom = 0;
private int mHeightOverride = -1;
private View mQSDetail;
private QuickStatusBarHeader mHeader;
@@ -71,7 +51,6 @@
private int mSideMargins;
private boolean mQsDisabled;
private int mContentPadding = -1;
- private boolean mAnimateBottomOnNextLayout;
private int mNavBarInset = 0;
private boolean mClippingEnabled;
@@ -86,11 +65,6 @@
mQSDetail = findViewById(R.id.qs_detail);
mHeader = findViewById(R.id.header);
mQSCustomizer = findViewById(R.id.qs_customize);
- mHeader.getHeaderQsPanel().setMediaVisibilityChangedListener((visible) -> {
- if (mHeader.getHeaderQsPanel().isShown()) {
- mAnimateBottomOnNextLayout = true;
- }
- });
setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
}
@@ -99,20 +73,6 @@
return false;
}
- void onMediaVisibilityChanged(boolean qsVisible) {
- mAnimateBottomOnNextLayout = qsVisible;
- }
-
- private void setBackgroundBottom(int value) {
- // We're saving the bottom separately since otherwise the bottom would be overridden in
- // the layout and the animation wouldn't properly start at the old position.
- mBackgroundBottom = value;
- }
-
- private float getBackgroundBottom() {
- return mBackgroundBottom;
- }
-
@Override
protected void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
@@ -186,8 +146,7 @@
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
- updateExpansion(mAnimateBottomOnNextLayout /* animate */);
- mAnimateBottomOnNextLayout = false;
+ updateExpansion();
updateClippingPath();
}
@@ -230,31 +189,12 @@
}
public void updateExpansion() {
- updateExpansion(false /* animate */);
- }
-
- public void updateExpansion(boolean animate) {
int height = calculateContainerHeight();
int scrollBottom = calculateContainerBottom();
setBottom(getTop() + height);
mQSDetail.setBottom(getTop() + scrollBottom);
int qsDetailBottomMargin = ((MarginLayoutParams) mQSDetail.getLayoutParams()).bottomMargin;
mQSDetail.setBottom(getTop() + scrollBottom - qsDetailBottomMargin);
- updateBackgroundBottom(scrollBottom, animate);
- }
-
- private void updateBackgroundBottom(int height, boolean animated) {
- PhysicsAnimator<QSContainerImpl> physicsAnimator = PhysicsAnimator.getInstance(this);
- if (physicsAnimator.isPropertyAnimating(BACKGROUND_BOTTOM) || animated) {
- // An animation is running or we want to animate
- // Let's make sure to set the currentValue again, since the call below might only
- // start in the next frame and otherwise we'd flicker
- BACKGROUND_BOTTOM.setValue(this, BACKGROUND_BOTTOM.getValue(this));
- physicsAnimator.spring(BACKGROUND_BOTTOM, height, BACKGROUND_SPRING).start();
- } else {
- BACKGROUND_BOTTOM.setValue(this, height);
- }
-
}
protected int calculateContainerHeight() {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java
index 3638395..7d61991 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImplController.java
@@ -61,12 +61,6 @@
@Override
protected void onViewAttached() {
mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController);
- mQsPanelController.setMediaVisibilityChangedListener((visible) -> {
- if (mQsPanelController.isShown()) {
- mView.onMediaVisibilityChanged(true);
- }
- });
-
mConfigurationController.addCallback(mConfigurationListener);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
index c28c649..998cff2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFragment.java
@@ -53,6 +53,8 @@
import com.android.systemui.util.LifecycleFragment;
import com.android.systemui.util.Utils;
+import java.util.function.Consumer;
+
import javax.inject.Inject;
import javax.inject.Named;
@@ -281,6 +283,11 @@
return mLastQSExpansion == 0.0f || mLastQSExpansion == -1;
}
+ @Override
+ public void setCollapsedMediaVisibilityChangedListener(Consumer<Boolean> listener) {
+ mQuickQSPanelController.setMediaVisibilityChangedListener(listener);
+ }
+
private void setEditLocation(View view) {
View edit = view.findViewById(android.R.id.edit);
int[] loc = edit.getLocationOnScreen();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index c70eaff..db8efd5 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -46,7 +46,6 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.function.Consumer;
/** View that represents the quick settings tile panel (when expanded/pulled down). **/
public class QSPanel extends LinearLayout implements Tunable {
@@ -105,7 +104,6 @@
protected QSTileLayout mTileLayout;
private int mLastOrientation = -1;
private int mMediaTotalBottomMargin;
- private Consumer<Boolean> mMediaVisibilityChangedListener;
public QSPanel(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -148,12 +146,6 @@
}
}
- protected void onMediaVisibilityChanged(Boolean visible) {
- if (mMediaVisibilityChangedListener != null) {
- mMediaVisibilityChangedListener.accept(visible);
- }
- }
-
/**
* Add brightness view above the tile layout.
*
@@ -667,10 +659,6 @@
mHeaderContainer = headerContainer;
}
- public void setMediaVisibilityChangedListener(Consumer<Boolean> visibilityChangedListener) {
- mMediaVisibilityChangedListener = visibilityChangedListener;
- }
-
public boolean isListening() {
return mListening;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
index ac92d4f..9810e96 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java
@@ -45,8 +45,6 @@
import com.android.systemui.statusbar.policy.BrightnessMirrorController;
import com.android.systemui.tuner.TunerService;
-import java.util.function.Consumer;
-
import javax.inject.Inject;
import javax.inject.Named;
@@ -289,11 +287,6 @@
mView.setPageListener(listener);
}
- /** */
- public void setMediaVisibilityChangedListener(Consumer<Boolean> visibilityChangedListener) {
- mView.setMediaVisibilityChangedListener(visibilityChangedListener);
- }
-
public boolean isShown() {
return mView.isShown();
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
index 170785c..77591b50 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java
@@ -19,6 +19,8 @@
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.res.Configuration;
import android.metrics.LogMaker;
@@ -42,6 +44,7 @@
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.inject.Named;
@@ -68,6 +71,8 @@
protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
private boolean mShouldUseSplitNotificationShade;
+ @Nullable
+ private Consumer<Boolean> mMediaVisibilityChangedListener;
private int mLastOrientation;
private String mCachedSpecs = "";
private QSTileRevealController mQsTileRevealController;
@@ -89,7 +94,9 @@
};
private final Function1<Boolean, Unit> mMediaHostVisibilityListener = (visible) -> {
- mView.onMediaVisibilityChanged(visible);
+ if (mMediaVisibilityChangedListener != null) {
+ mMediaVisibilityChangedListener.accept(visible);
+ }
switchTileLayout(false);
return null;
};
@@ -136,7 +143,6 @@
}
mMediaHost.addVisibilityChangeListener(mMediaHostVisibilityListener);
- mView.onMediaVisibilityChanged(mMediaHost.getVisible());
mView.addOnConfigurationChangedListener(mOnConfigurationChangedListener);
mHost.addCallback(mQSHostCallback);
setTiles();
@@ -381,6 +387,13 @@
return mView.getTileLayout();
}
+ /**
+ * Add a listener for when the media visibility changes.
+ */
+ public void setMediaVisibilityChangedListener(@NonNull Consumer<Boolean> listener) {
+ mMediaVisibilityChangedListener = listener;
+ }
+
/** */
public static final class TileRecord extends QSPanel.Record {
public QSTile tile;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java b/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java
index 3a6f1d5..7f19d0e 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java
@@ -185,15 +185,22 @@
final boolean isProfileOwnerOfOrganizationOwnedDevice =
mSecurityController.isProfileOwnerOfOrganizationOwnedDevice();
final boolean isParentalControlsEnabled = mSecurityController.isParentalControlsEnabled();
+ final boolean isWorkProfileOn = mSecurityController.isWorkProfileOn();
+ final boolean hasDisclosableWorkProfilePolicy = hasCACertsInWorkProfile
+ || vpnNameWorkProfile != null || (hasWorkProfile && isNetworkLoggingEnabled);
// Update visibility of footer
- mIsVisible = (isDeviceManaged && !isDemoDevice) || hasCACerts || hasCACertsInWorkProfile
- || vpnName != null || vpnNameWorkProfile != null
- || isProfileOwnerOfOrganizationOwnedDevice || isParentalControlsEnabled
- || (hasWorkProfile && isNetworkLoggingEnabled);
+ mIsVisible = (isDeviceManaged && !isDemoDevice)
+ || hasCACerts
+ || vpnName != null
+ || isProfileOwnerOfOrganizationOwnedDevice
+ || isParentalControlsEnabled
+ || (hasDisclosableWorkProfilePolicy && isWorkProfileOn);
// Update the view to be untappable if the device is an organization-owned device with a
- // managed profile and there is no policy set which requires a privacy disclosure.
- if (mIsVisible && isProfileOwnerOfOrganizationOwnedDevice && !isNetworkLoggingEnabled
- && !hasCACertsInWorkProfile && vpnNameWorkProfile == null) {
+ // managed profile and there is either:
+ // a) no policy set which requires a privacy disclosure.
+ // b) a specific work policy set but the work profile is turned off.
+ if (mIsVisible && isProfileOwnerOfOrganizationOwnedDevice
+ && (!hasDisclosableWorkProfilePolicy || !isWorkProfileOn)) {
mRootView.setClickable(false);
mRootView.findViewById(R.id.footer_icon).setVisibility(View.GONE);
} else {
@@ -204,7 +211,8 @@
mFooterTextContent = getFooterText(isDeviceManaged, hasWorkProfile,
hasCACerts, hasCACertsInWorkProfile, isNetworkLoggingEnabled, vpnName,
vpnNameWorkProfile, organizationName, workProfileOrganizationName,
- isProfileOwnerOfOrganizationOwnedDevice, isParentalControlsEnabled);
+ isProfileOwnerOfOrganizationOwnedDevice, isParentalControlsEnabled,
+ isWorkProfileOn);
// Update the icon
int footerIconId = R.drawable.ic_info_outline;
if (vpnName != null || vpnNameWorkProfile != null) {
@@ -236,7 +244,8 @@
boolean hasCACerts, boolean hasCACertsInWorkProfile, boolean isNetworkLoggingEnabled,
String vpnName, String vpnNameWorkProfile, CharSequence organizationName,
CharSequence workProfileOrganizationName,
- boolean isProfileOwnerOfOrganizationOwnedDevice, boolean isParentalControlsEnabled) {
+ boolean isProfileOwnerOfOrganizationOwnedDevice, boolean isParentalControlsEnabled,
+ boolean isWorkProfileOn) {
if (isParentalControlsEnabled) {
return mContext.getString(R.string.quick_settings_disclosure_parental_controls);
}
@@ -280,7 +289,7 @@
organizationName);
}
} // end if(isDeviceManaged)
- if (hasCACertsInWorkProfile) {
+ if (hasCACertsInWorkProfile && isWorkProfileOn) {
if (workProfileOrganizationName == null) {
return mContext.getString(
R.string.quick_settings_disclosure_managed_profile_monitoring);
@@ -295,7 +304,7 @@
if (vpnName != null && vpnNameWorkProfile != null) {
return mContext.getString(R.string.quick_settings_disclosure_vpns);
}
- if (vpnNameWorkProfile != null) {
+ if (vpnNameWorkProfile != null && isWorkProfileOn) {
return mContext.getString(R.string.quick_settings_disclosure_managed_profile_named_vpn,
vpnNameWorkProfile);
}
@@ -308,7 +317,7 @@
return mContext.getString(R.string.quick_settings_disclosure_named_vpn,
vpnName);
}
- if (hasWorkProfile && isNetworkLoggingEnabled) {
+ if (hasWorkProfile && isNetworkLoggingEnabled && isWorkProfileOn) {
return mContext.getString(
R.string.quick_settings_disclosure_managed_profile_network_activity);
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
index d017c74..b904505 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java
@@ -567,6 +567,8 @@
public void clearDrag() {
itemView.clearAnimation();
+ itemView.setScaleX(1);
+ itemView.setScaleY(1);
}
public void startDrag() {
@@ -812,5 +814,12 @@
@Override
public void onSwiped(ViewHolder viewHolder, int direction) {
}
+
+ // Just in case, make sure to animate to base state.
+ @Override
+ public void clearView(@NonNull RecyclerView recyclerView, @NonNull ViewHolder viewHolder) {
+ ((Holder) viewHolder).stopDrag();
+ super.clearView(recyclerView, viewHolder);
+ }
};
}
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordDialog.java b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordDialog.java
index 57125f3..df766f3 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordDialog.java
@@ -30,9 +30,9 @@
import android.view.Window;
import android.view.WindowManager;
import android.widget.ArrayAdapter;
-import android.widget.Button;
import android.widget.Spinner;
import android.widget.Switch;
+import android.widget.TextView;
import com.android.systemui.R;
import com.android.systemui.settings.UserContextProvider;
@@ -78,12 +78,12 @@
setContentView(R.layout.screen_record_dialog);
- Button cancelBtn = findViewById(R.id.button_cancel);
+ TextView cancelBtn = findViewById(R.id.button_cancel);
cancelBtn.setOnClickListener(v -> {
finish();
});
- Button startBtn = findViewById(R.id.button_start);
+ TextView startBtn = findViewById(R.id.button_start);
startBtn.setOnClickListener(v -> {
requestScreenCapture();
finish();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index 0bb702f..c09f98d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -885,6 +885,11 @@
.isUnlockingWithBiometricAllowed(true /* isStrongBiometric */)) {
return;
}
+
+ if (biometricSourceType == BiometricSourceType.FACE && shouldSuppressFaceMsg()) {
+ return;
+ }
+
boolean showSwipeToUnlock =
msgId == KeyguardUpdateMonitor.BIOMETRIC_HELP_FACE_NOT_RECOGNIZED;
if (mStatusBarKeyguardViewManager.isBouncerShowing()) {
@@ -912,7 +917,8 @@
// The face timeout message is not very actionable, let's ask the user to
// manually retry.
if (!mStatusBarKeyguardViewManager.isBouncerShowing()
- && mKeyguardUpdateMonitor.isUdfpsEnrolled()) {
+ && mKeyguardUpdateMonitor.isUdfpsEnrolled()
+ && mKeyguardUpdateMonitor.isFingerprintDetectionRunning()) {
// suggest trying fingerprint
showTransientIndication(R.string.keyguard_try_fingerprint);
} else {
@@ -952,7 +958,18 @@
|| msgId == FingerprintManager.FINGERPRINT_ERROR_USER_CANCELED);
}
+ private boolean shouldSuppressFaceMsg() {
+ // For dual biometric, don't show face auth messages unless face auth was explicitly
+ // requested by the user.
+ return mKeyguardUpdateMonitor.isUdfpsEnrolled()
+ && mKeyguardUpdateMonitor.isFingerprintDetectionRunning()
+ && !mKeyguardUpdateMonitor.isFaceAuthUserRequested();
+ }
+
private boolean shouldSuppressFaceError(int msgId, KeyguardUpdateMonitor updateMonitor) {
+ if (shouldSuppressFaceMsg()) {
+ return true;
+ }
// Only checking if unlocking with Biometric is allowed (no matter strong or non-strong
// as long as primary auth, i.e. PIN/pattern/password, is not required), so it's ok to
// pass true for isStrongBiometric to isUnlockingWithBiometricAllowed() to bypass the
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
index 0b67e7e..4552138 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java
@@ -369,7 +369,7 @@
});
mSmartReplyController.setCallback((entry, reply) -> {
StatusBarNotification newSbn =
- rebuildNotificationWithRemoteInput(entry, reply, true /* showSpinner */,
+ rebuildNotificationWithRemoteInputInserted(entry, reply, true /* showSpinner */,
null /* mimeType */, null /* uri */);
mEntryManager.updateNotification(newSbn, null /* ranking */);
});
@@ -638,12 +638,12 @@
@VisibleForTesting
StatusBarNotification rebuildNotificationForCanceledSmartReplies(
NotificationEntry entry) {
- return rebuildNotificationWithRemoteInput(entry, null /* remoteInputTest */,
+ return rebuildNotificationWithRemoteInputInserted(entry, null /* remoteInputTest */,
false /* showSpinner */, null /* mimeType */, null /* uri */);
}
@VisibleForTesting
- StatusBarNotification rebuildNotificationWithRemoteInput(NotificationEntry entry,
+ StatusBarNotification rebuildNotificationWithRemoteInputInserted(NotificationEntry entry,
CharSequence remoteInputText, boolean showSpinner, String mimeType, Uri uri) {
StatusBarNotification sbn = entry.getSbn();
@@ -746,7 +746,7 @@
}
String remoteInputMimeType = entry.remoteInputMimeType;
Uri remoteInputUri = entry.remoteInputUri;
- StatusBarNotification newSbn = rebuildNotificationWithRemoteInput(entry,
+ StatusBarNotification newSbn = rebuildNotificationWithRemoteInputInserted(entry,
remoteInputText, false /* showSpinner */, remoteInputMimeType,
remoteInputUri);
entry.onRemoteInputInserted();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
index 1457012..a2048e2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
@@ -210,6 +210,7 @@
}
listeners.forEach {
it.onWallpaperZoomOutChanged(zoomOut)
+ it.onBlurRadiusChanged(blur)
}
notificationShadeWindowController.setBackgroundBlurRadius(blur)
}
@@ -513,5 +514,8 @@
* Current wallpaper zoom out, where 0 is the closest, and 1 the farthest
*/
fun onWallpaperZoomOutChanged(zoomOut: Float)
+
+ @JvmDefault
+ fun onBlurRadiusChanged(blurRadius: Int) {}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
index 9765ace..b34bfad 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/PulseExpansionHandler.kt
@@ -179,7 +179,10 @@
}
override fun onTouchEvent(event: MotionEvent): Boolean {
- if (!canHandleMotionEvent()) {
+ val finishExpanding = (event.action == MotionEvent.ACTION_CANCEL ||
+ event.action == MotionEvent.ACTION_UP) && isExpanding
+ if (!canHandleMotionEvent() && !finishExpanding) {
+ // We allow cancellations/finishing to still go through here to clean up the state
return false
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
index 9f82152..9574b54 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationEntry.java
@@ -51,6 +51,7 @@
import android.service.notification.SnoozeCriterion;
import android.service.notification.StatusBarNotification;
import android.util.ArraySet;
+import android.view.ContentInfo;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -128,6 +129,7 @@
public CharSequence remoteInputText;
public String remoteInputMimeType;
public Uri remoteInputUri;
+ public ContentInfo remoteInputAttachment;
private Notification.BubbleMetadata mBubbleMetadata;
private ShortcutInfo mShortcutInfo;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
index bc6db24..35914c0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java
@@ -77,7 +77,6 @@
import com.android.systemui.Dumpable;
import com.android.systemui.ExpandHelper;
import com.android.systemui.R;
-import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.Interpolators;
import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper;
import com.android.systemui.statusbar.CommandQueue;
@@ -201,6 +200,7 @@
private int mPaddingBetweenElements;
private int mMaxTopPadding;
private int mTopPadding;
+ private boolean mAnimateNextTopPaddingChange;
private int mBottomMargin;
private int mBottomInset = 0;
private float mQsExpansionFraction;
@@ -1212,16 +1212,18 @@
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
private void setTopPadding(int topPadding, boolean animate) {
if (mTopPadding != topPadding) {
+ boolean shouldAnimate = animate || mAnimateNextTopPaddingChange;
mTopPadding = topPadding;
updateAlgorithmHeightAndPadding();
updateContentHeight();
- if (animate && mAnimationsEnabled && mIsExpanded) {
+ if (shouldAnimate && mAnimationsEnabled && mIsExpanded) {
mTopPaddingNeedsAnimation = true;
mNeedsAnimation = true;
}
updateStackPosition();
requestChildrenUpdate();
- notifyHeightChangeListener(null, animate);
+ notifyHeightChangeListener(null, shouldAnimate);
+ mAnimateNextTopPaddingChange = false;
}
}
@@ -2071,6 +2073,9 @@
int scrollRange = Math.max(0, contentHeight - mMaxLayoutHeight);
int imeInset = getImeInset();
scrollRange += Math.min(imeInset, Math.max(0, contentHeight - (getHeight() - imeInset)));
+ if (scrollRange > 0) {
+ scrollRange = Math.max(getScrollAmountToScrollBoundary(), scrollRange);
+ }
return scrollRange;
}
@@ -5552,6 +5557,13 @@
}
/**
+ * Request an animation whenever the toppadding changes next
+ */
+ public void animateNextTopPaddingChange() {
+ mAnimateNextTopPaddingChange = true;
+ }
+
+ /**
* A listener that is notified when the empty space below the notifications is clicked on
*/
@ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
index a4bffd4..a92682a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java
@@ -1464,6 +1464,13 @@
}
/**
+ * Request an animation whenever the toppadding changes next
+ */
+ public void animateNextTopPaddingChange() {
+ mView.animateNextTopPaddingChange();
+ }
+
+ /**
* Enum for UiEvent logged from this class
*/
enum NotificationPanelEvent implements UiEventLogger.UiEventEnum {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
index 8f4a71c..9ce9aa8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java
@@ -420,8 +420,9 @@
// When pulsing (incoming notification on AOD), innerHeight is 0; clamp all
// to shelf start, thereby hiding all notifications (except the first one, which we
// later unhide in updatePulsingState)
- final int shelfStart = ambientState.getInnerHeight()
- - ambientState.getShelf().getIntrinsicHeight();
+ final int stackBottom = !ambientState.isShadeExpanded() || ambientState.isDozing()
+ ? ambientState.getInnerHeight() : (int) ambientState.getStackHeight();
+ final int shelfStart = stackBottom - ambientState.getShelf().getIntrinsicHeight();
viewState.yTranslation = Math.min(viewState.yTranslation, shelfStart);
if (viewState.yTranslation >= shelfStart) {
viewState.hidden = !view.isExpandAnimationRunning()
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
index 96276f4..1789743 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java
@@ -38,7 +38,7 @@
* A view to show hints on Keyguard ("Swipe up to unlock", "Tap again to open").
*/
public class KeyguardIndicationTextView extends TextView {
- private static final long MSG_DURATION_MILLIS = 1500;
+ private static final long MSG_MIN_DURATION_MILLIS_DEFAULT = 1500;
private long mNextAnimationTime = 0;
private boolean mAnimationsEnabled = true;
private LinkedList<CharSequence> mMessages = new LinkedList<>();
@@ -104,8 +104,13 @@
long delay = Math.max(0, mNextAnimationTime - timeInMillis);
setNextAnimationTime(timeInMillis + delay + getFadeOutDuration());
+ final long minDurationMillis =
+ (indication != null && indication.getMinVisibilityMillis() != null)
+ ? indication.getMinVisibilityMillis()
+ : MSG_MIN_DURATION_MILLIS_DEFAULT;
+
if (!text.equals("") || hasIcon) {
- setNextAnimationTime(mNextAnimationTime + MSG_DURATION_MILLIS);
+ setNextAnimationTime(mNextAnimationTime + minDurationMillis);
animSetBuilder.before(getInAnimator());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt
index bfe0684..ec2d036 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt
@@ -53,7 +53,7 @@
// Not listening anymore since trigger events unregister themselves
isListening = false
updateListeningState()
- keyguardUpdateMonitor.requestFaceAuth()
+ keyguardUpdateMonitor.requestFaceAuth(true)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index ff8b4be..51ad3d5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -123,6 +123,7 @@
import com.android.systemui.statusbar.KeyguardIndicationController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
+import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.NotificationShelfController;
import com.android.systemui.statusbar.PulseExpansionHandler;
@@ -316,6 +317,7 @@
private final ScrimController mScrimController;
private final PrivacyDotViewController mPrivacyDotViewController;
private final QuickAccessWalletController mQuickAccessWalletController;
+ private final NotificationRemoteInputManager mRemoteInputManager;
// Maximum # notifications to show on Keyguard; extras will be collapsed in an overflow card.
// If there are exactly 1 + mMaxKeyguardNotifications, then still shows all notifications
@@ -374,7 +376,6 @@
private float mLastOverscroll;
private boolean mQsExpansionEnabledPolicy = true;
private boolean mQsExpansionEnabledAmbient = true;
- private boolean mQsExpansionEnabled = mQsExpansionEnabledPolicy && mQsExpansionEnabledAmbient;
private ValueAnimator mQsExpansionAnimator;
private FlingAnimationUtils mFlingAnimationUtils;
private int mStatusBarMinHeight;
@@ -559,6 +560,11 @@
private long mNotificationBoundsAnimationDelay;
/**
+ * The duration of the notification bounds animation
+ */
+ private long mNotificationBoundsAnimationDuration;
+
+ /**
* Is this a collapse that started on the panel where we should allow the panel to intercept
*/
private boolean mIsPanelCollapseOnQQS;
@@ -693,7 +699,8 @@
QuickAccessWalletController quickAccessWalletController,
@Main Executor uiExecutor,
SecureSettings secureSettings,
- UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) {
+ UnlockedScreenOffAnimationController unlockedScreenOffAnimationController,
+ NotificationRemoteInputManager remoteInputManager) {
super(view, falsingManager, dozeLog, keyguardStateController,
(SysuiStatusBarStateController) statusBarStateController, vibratorHelper,
statusBarKeyguardViewManager, latencyTracker, flingAnimationUtilsBuilder.get(),
@@ -786,6 +793,8 @@
mAuthController = authController;
mLockIconViewController = lockIconViewController;
mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController;
+ mRemoteInputManager = remoteInputManager;
+
int currentMode = navigationModeController.addListener(
mode -> mIsGestureNavigation = QuickStepContract.isGesturalMode(mode));
mIsGestureNavigation = QuickStepContract.isGesturalMode(currentMode);
@@ -1468,9 +1477,8 @@
}
private void setQsExpansionEnabled() {
- mQsExpansionEnabled = mQsExpansionEnabledPolicy && mQsExpansionEnabledAmbient;
if (mQs == null) return;
- mQs.setHeaderClickable(mQsExpansionEnabled);
+ mQs.setHeaderClickable(isQsExpansionEnabled());
}
public void setQsExpansionEnabledPolicy(boolean qsExpansionEnabledPolicy) {
@@ -1539,8 +1547,13 @@
flingSettings(0 /* vel */, animateAway ? FLING_HIDE : FLING_COLLAPSE);
}
+ private boolean isQsExpansionEnabled() {
+ return mQsExpansionEnabledPolicy && mQsExpansionEnabledAmbient
+ && !mRemoteInputManager.getController().isRemoteInputActive();
+ }
+
public void expandWithQs() {
- if (mQsExpansionEnabled) {
+ if (isQsExpansionEnabled()) {
mQsExpandImmediate = true;
mNotificationStackScrollLayoutController.setShouldShowShelfOnly(true);
}
@@ -1805,7 +1818,7 @@
private boolean handleQsTouch(MotionEvent event) {
final int action = event.getActionMasked();
if (action == MotionEvent.ACTION_DOWN && getExpandedFraction() == 1f
- && mBarState != KEYGUARD && !mQsExpanded && mQsExpansionEnabled) {
+ && mBarState != KEYGUARD && !mQsExpanded && isQsExpansionEnabled()) {
// Down in the empty area while fully expanded - go to QS.
mQsTracking = true;
traceQsJank(true /* startTracing */, false /* wasCancelled */);
@@ -1827,7 +1840,7 @@
if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) {
mConflictingQsExpansionGesture = false;
}
- if (action == MotionEvent.ACTION_DOWN && isFullyCollapsed() && mQsExpansionEnabled) {
+ if (action == MotionEvent.ACTION_DOWN && isFullyCollapsed() && isQsExpansionEnabled()) {
mTwoFingerQsExpandPossible = true;
}
if (mTwoFingerQsExpandPossible && isOpenQsEvent(event) && event.getY(event.getActionIndex())
@@ -2051,7 +2064,7 @@
// When expanding QS, let's authenticate the user if possible,
// this will speed up notification actions.
if (height == 0) {
- mStatusBar.requestFaceAuth();
+ mStatusBar.requestFaceAuth(false);
}
}
@@ -2227,7 +2240,8 @@
private void onStackYChanged(boolean shouldAnimate) {
if (mQs != null) {
if (shouldAnimate) {
- mAnimateNextNotificationBounds = true;
+ animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_STANDARD,
+ 0 /* delay */);
mNotificationBoundsAnimationDelay = 0;
}
setQSClippingBounds();
@@ -2307,8 +2321,7 @@
final int startBottom = mKeyguardStatusAreaClipBounds.bottom;
mQsClippingAnimation = ValueAnimator.ofFloat(0.0f, 1.0f);
mQsClippingAnimation.setInterpolator(Interpolators.FAST_OUT_SLOW_IN);
- mQsClippingAnimation.setDuration(
- StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE);
+ mQsClippingAnimation.setDuration(mNotificationBoundsAnimationDuration);
mQsClippingAnimation.setStartDelay(mNotificationBoundsAnimationDelay);
mQsClippingAnimation.addUpdateListener(animation -> {
float fraction = animation.getAnimatedFraction();
@@ -2484,8 +2497,10 @@
* shade. 0.0f means we're not transitioning yet.
*/
public void setTransitionToFullShadeAmount(float pxAmount, boolean animate, long delay) {
- mAnimateNextNotificationBounds = animate && !mShouldUseSplitNotificationShade;
- mNotificationBoundsAnimationDelay = delay;
+ if (animate && !mShouldUseSplitNotificationShade) {
+ animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE,
+ delay);
+ }
float endPosition = 0;
if (pxAmount > 0.0f) {
@@ -2664,7 +2679,7 @@
* @return Whether we should intercept a gesture to open Quick Settings.
*/
private boolean shouldQuickSettingsIntercept(float x, float y, float yDiff) {
- if (!mQsExpansionEnabled || mCollapsedOnDown || (mKeyguardShowing
+ if (!isQsExpansionEnabled() || mCollapsedOnDown || (mKeyguardShowing
&& mKeyguardBypassController.getBypassEnabled())) {
return false;
}
@@ -3190,7 +3205,7 @@
case KEYGUARD:
if (!mDozingOnDown) {
if (mKeyguardBypassController.getBypassEnabled()) {
- mUpdateMonitor.requestFaceAuth();
+ mUpdateMonitor.requestFaceAuth(true);
} else {
mLockscreenGestureLogger.write(MetricsEvent.ACTION_LS_HINT,
0 /* lengthDp - N/A */, 0 /* velocityDp - N/A */);
@@ -3483,8 +3498,7 @@
mQs = (QS) fragment;
mQs.setPanelView(mHeightListener);
mQs.setExpandClickListener(mOnClickListener);
- mQs.setHeaderClickable(mQsExpansionEnabled);
- mQs.setTranslateWhileExpanding(mShouldUseSplitNotificationShade);
+ mQs.setHeaderClickable(isQsExpansionEnabled());
updateQSPulseExpansion();
mQs.setOverscrolling(mStackScrollerOverscrolling);
mQs.setTranslateWhileExpanding(mShouldUseSplitNotificationShade);
@@ -3498,6 +3512,13 @@
mHeightListener.onQsHeightChanged();
}
});
+ mQs.setCollapsedMediaVisibilityChangedListener((visible) -> {
+ if (mQs.getHeader().isShown()) {
+ animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_STANDARD,
+ 0 /* delay */);
+ mNotificationStackScrollLayoutController.animateNextTopPaddingChange();
+ }
+ });
mLockscreenShadeTransitionController.setQS(mQs);
mNotificationStackScrollLayoutController.setQsContainer((ViewGroup) mQs.getView());
updateQsExpansion();
@@ -3514,6 +3535,12 @@
}
};
+ private void animateNextNotificationBounds(long duration, long delay) {
+ mAnimateNextNotificationBounds = true;
+ mNotificationBoundsAnimationDuration = duration;
+ mNotificationBoundsAnimationDelay = delay;
+ }
+
@Override
public void setTouchAndAnimationDisabled(boolean disabled) {
super.setTouchAndAnimationDisabled(disabled);
@@ -3835,8 +3862,13 @@
expand(true /* animate */);
}
initDownStates(event);
- if (!mIsExpanding && !shouldQuickSettingsIntercept(mDownX, mDownY, 0)
- && mPulseExpansionHandler.onTouchEvent(event)) {
+
+ // If pulse is expanding already, let's give it the touch. There are situations
+ // where the panel starts expanding even though we're also pulsing
+ boolean pulseShouldGetTouch = (!mIsExpanding
+ && !shouldQuickSettingsIntercept(mDownX, mDownY, 0))
+ || mPulseExpansionHandler.isExpanding();
+ if (pulseShouldGetTouch && mPulseExpansionHandler.onTouchEvent(event)) {
// We're expanding all the other ones shouldn't get this anymore
return true;
}
@@ -3957,7 +3989,7 @@
if (mQsExpanded) {
flingSettings(0 /* vel */, FLING_COLLAPSE, null /* onFinishRunnable */,
true /* isClick */);
- } else if (mQsExpansionEnabled) {
+ } else if (isQsExpansionEnabled()) {
mLockscreenGestureLogger.write(MetricsEvent.ACTION_SHADE_QS_TAP, 0, 0);
flingSettings(0 /* vel */, FLING_EXPAND, null /* onFinishRunnable */,
true /* isClick */);
@@ -3974,7 +4006,7 @@
return;
}
cancelQsAnimation();
- if (!mQsExpansionEnabled) {
+ if (!isQsExpansionEnabled()) {
amount = 0f;
}
float rounded = amount >= 1f ? amount : 0f;
@@ -4002,8 +4034,9 @@
setOverScrolling(false);
}
setQsExpansion(mQsExpansionHeight);
- flingSettings(!mQsExpansionEnabled && open ? 0f : velocity,
- open && mQsExpansionEnabled ? FLING_EXPAND : FLING_COLLAPSE, () -> {
+ boolean canExpand = isQsExpansionEnabled();
+ flingSettings(!canExpand && open ? 0f : velocity,
+ open && canExpand ? FLING_EXPAND : FLING_COLLAPSE, () -> {
setOverScrolling(false);
updateQsState();
}, false /* isClick */);
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 53394c3..61a0d63 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -1723,9 +1723,9 @@
/**
* Asks {@link KeyguardUpdateMonitor} to run face auth.
*/
- public void requestFaceAuth() {
+ public void requestFaceAuth(boolean userInitiatedRequest) {
if (!mKeyguardStateController.canDismissLockScreen()) {
- mKeyguardUpdateMonitor.requestFaceAuth();
+ mKeyguardUpdateMonitor.requestFaceAuth(userInitiatedRequest);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt
index 9a04d39..6b00dd4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt
@@ -57,7 +57,7 @@
private val lightRevealAnimator = ValueAnimator.ofFloat(1f, 0f).apply {
duration = LIGHT_REVEAL_ANIMATION_DURATION
- interpolator = Interpolators.FAST_OUT_SLOW_IN_REVERSE
+ interpolator = Interpolators.LINEAR
addUpdateListener { lightRevealScrim.revealAmount = it.animatedValue as Float }
addListener(object : AnimatorListenerAdapter() {
override fun onAnimationCancel(animation: Animator?) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
index d5965ec..c20730e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt
@@ -25,6 +25,7 @@
import android.util.Log
import android.view.View
import android.widget.Chronometer
+import androidx.annotation.VisibleForTesting
import com.android.internal.jank.InteractionJankMonitor
import com.android.systemui.R
import com.android.systemui.animation.ActivityLaunchAnimator
@@ -122,6 +123,7 @@
* Should only be called from [CollapsedStatusBarFragment].
*/
fun setChipView(chipView: View) {
+ tearDownChipView()
this.chipView = chipView
if (hasOngoingCall()) {
updateChip()
@@ -165,8 +167,7 @@
val currentCallNotificationInfo = callNotificationInfo ?: return
val currentChipView = chipView
- val timeView =
- currentChipView?.findViewById<Chronometer>(R.id.ongoing_call_chip_time)
+ val timeView = currentChipView?.getTimeView()
val backgroundView =
currentChipView?.findViewById<View>(R.id.ongoing_call_chip_background)
@@ -248,12 +249,19 @@
private fun removeChip() {
callNotificationInfo = null
+ tearDownChipView()
mListeners.forEach { l -> l.onOngoingCallStateChanged(animate = true) }
if (uidObserver != null) {
iActivityManager.unregisterUidObserver(uidObserver)
}
}
+ /** Tear down anything related to the chip view to prevent leaks. */
+ @VisibleForTesting
+ fun tearDownChipView() = chipView?.getTimeView()?.stop()
+
+ private fun View.getTimeView(): Chronometer? = this.findViewById(R.id.ongoing_call_chip_time)
+
private data class CallNotificationInfo(
val key: String,
val callStartTime: Long,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
index 88c9fad..ff3fed6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
@@ -20,7 +20,6 @@
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
-import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.Notification;
import android.app.PendingIntent;
@@ -38,7 +37,6 @@
import android.graphics.drawable.GradientDrawable;
import android.net.Uri;
import android.os.Bundle;
-import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.UserHandle;
import android.text.Editable;
@@ -72,12 +70,12 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.ColorUtils;
import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
-import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.ContrastColorUtil;
import com.android.systemui.Dependency;
import com.android.systemui.R;
@@ -110,8 +108,8 @@
private final SendButtonTextWatcher mTextWatcher;
private final TextView.OnEditorActionListener mEditorActionHandler;
- private final NotificationRemoteInputManager mRemoteInputManager;
private final UiEventLogger mUiEventLogger;
+ private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
private final List<OnFocusChangeListener> mEditTextFocusChangeListeners = new ArrayList<>();
private final List<OnSendRemoteInputListener> mOnSendListeners = new ArrayList<>();
private RemoteEditText mEditText;
@@ -122,9 +120,6 @@
private RemoteInput[] mRemoteInputs;
private RemoteInput mRemoteInput;
private RemoteInputController mController;
- private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
-
- private IStatusBarService mStatusBarManagerService;
private NotificationEntry mEntry;
@@ -133,7 +128,6 @@
private int mRevealCx;
private int mRevealCy;
private int mRevealR;
- private ContentInfo mAttachment;
private boolean mColorized;
private int mTint;
@@ -142,7 +136,6 @@
private NotificationViewWrapper mWrapper;
private Consumer<Boolean> mOnVisibilityChangedListener;
private NotificationRemoteInputManager.BouncerChecker mBouncerChecker;
- private LinearLayout mContentView;
private ImageView mDelete;
private ImageView mDeleteBg;
@@ -175,10 +168,7 @@
mTextWatcher = new SendButtonTextWatcher();
mEditorActionHandler = new EditorActionHandler();
mRemoteInputQuickSettingsDisabler = Dependency.get(RemoteInputQuickSettingsDisabler.class);
- mRemoteInputManager = Dependency.get(NotificationRemoteInputManager.class);
mUiEventLogger = Dependency.get(UiEventLogger.class);
- mStatusBarManagerService = IStatusBarService.Stub.asInterface(
- ServiceManager.getService(Context.STATUS_BAR_SERVICE));
TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{
com.android.internal.R.attr.colorAccent,
com.android.internal.R.attr.colorSurface,
@@ -267,8 +257,8 @@
mDeleteBg.setImageTintBlendMode(BlendMode.SRC_IN);
mDelete.setImageTintBlendMode(BlendMode.SRC_IN);
mDelete.setOnClickListener(v -> setAttachment(null));
- mContentView = findViewById(R.id.remote_input_content);
- mContentView.setBackground(mContentBackground);
+ LinearLayout contentView = findViewById(R.id.remote_input_content);
+ contentView.setBackground(mContentBackground);
mEditText = findViewById(R.id.remote_input_text);
mEditText.setInnerFocusable(false);
mEditText.setWindowInsetsAnimationCallback(
@@ -295,15 +285,19 @@
@VisibleForTesting
protected void setAttachment(ContentInfo item) {
- if (mAttachment != null) {
+ if (mEntry.remoteInputAttachment != null && mEntry.remoteInputAttachment != item) {
// We need to release permissions when sending the attachment to the target
// app or if it is deleted by the user. When sending to the target app, we
// can safely release permissions as soon as the call to
// `mController.grantInlineReplyUriPermission` is made (ie, after the grant
// to the target app has been created).
- mAttachment.releasePermissions();
+ mEntry.remoteInputAttachment.releasePermissions();
}
- mAttachment = item;
+ mEntry.remoteInputAttachment = item;
+ if (item != null) {
+ mEntry.remoteInputUri = item.getClip().getItemAt(0).getUri();
+ mEntry.remoteInputMimeType = item.getClip().getDescription().getMimeType(0);
+ }
View attachment = findViewById(R.id.remote_input_content_container);
ImageView iconView = findViewById(R.id.remote_input_attachment_image);
iconView.setImageDrawable(null);
@@ -329,10 +323,9 @@
* @return returns intent with granted URI permissions that should be used immediately
*/
private Intent prepareRemoteInput() {
- if (mAttachment == null) return prepareRemoteInputFromText();
- return prepareRemoteInputFromData(
- mAttachment.getClip().getDescription().getMimeType(0),
- mAttachment.getClip().getItemAt(0).getUri());
+ return mEntry.remoteInputAttachment == null
+ ? prepareRemoteInputFromText()
+ : prepareRemoteInputFromData(mEntry.remoteInputMimeType, mEntry.remoteInputUri);
}
private Intent prepareRemoteInputFromText() {
@@ -343,7 +336,7 @@
results);
mEntry.remoteInputText = mEditText.getText().toString();
- // TODO(b/188646667): store attachment to entry
+ setAttachment(null);
mEntry.remoteInputUri = null;
mEntry.remoteInputMimeType = null;
@@ -369,7 +362,8 @@
RemoteInput.addResultsToIntent(mRemoteInputs, fillInIntent,
bundle);
- CharSequence attachmentText = mAttachment.getClip().getDescription().getLabel();
+ CharSequence attachmentText =
+ mEntry.remoteInputAttachment.getClip().getDescription().getLabel();
CharSequence attachmentLabel = TextUtils.isEmpty(attachmentText)
? mContext.getString(R.string.remote_input_image_insertion_text)
@@ -380,14 +374,11 @@
: "\"" + attachmentLabel + "\" " + mEditText.getText();
mEntry.remoteInputText = fullText;
- // TODO(b/188646667): store attachment to entry
- mEntry.remoteInputMimeType = contentType;
- mEntry.remoteInputUri = data;
// mirror prepareRemoteInputFromText for text input
if (mEntry.editedSuggestionInfo == null) {
RemoteInput.setResultsSource(fillInIntent, RemoteInput.SOURCE_FREE_FORM_INPUT);
- } else if (mAttachment == null) {
+ } else if (mEntry.remoteInputAttachment == null) {
RemoteInput.setResultsSource(fillInIntent, RemoteInput.SOURCE_CHOICE);
}
@@ -439,6 +430,7 @@
mEntry.getSbn().getUid(), mEntry.getSbn().getPackageName(),
mEntry.getSbn().getInstanceId());
}
+
setAttachment(null);
}
@@ -479,7 +471,6 @@
private void onDefocus(boolean animate, boolean logClose) {
mController.removeRemoteInput(mEntry, mToken);
mEntry.remoteInputText = mEditText.getText();
- // TODO(b/188646667): store attachment to entry
// During removal, we get reattached and lose focus. Not hiding in that
// case to prevent flicker.
@@ -565,7 +556,7 @@
mEntry.editedSuggestionInfo = editedSuggestionInfo;
if (editedSuggestionInfo != null) {
mEntry.remoteInputText = editedSuggestionInfo.originalText;
- // TODO(b/188646667): store attachment to entry
+ mEntry.remoteInputAttachment = null;
}
}
@@ -606,7 +597,7 @@
mEditText.setSelection(mEditText.length());
mEditText.requestFocus();
mController.addRemoteInput(mEntry, mToken);
- // TODO(b/188646667): restore attachment from entry
+ setAttachment(mEntry.remoteInputAttachment);
mRemoteInputQuickSettingsDisabler.setRemoteInputActive(true);
@@ -629,7 +620,6 @@
private void reset() {
mResetting = true;
mEntry.remoteInputTextWhenReset = SpannedString.valueOf(mEditText.getText());
- // TODO(b/188646667): store attachment at time of reset to entry
mEditText.getText().clear();
mEditText.setEnabled(true);
@@ -638,7 +628,7 @@
mController.removeSpinning(mEntry.getKey(), mToken);
updateSendButton();
onDefocus(false /* animate */, false /* logClose */);
- // TODO(b/188646667): clear attachment
+ setAttachment(null);
mResetting = false;
}
@@ -655,7 +645,7 @@
}
private void updateSendButton() {
- mSendButton.setEnabled(mEditText.length() != 0 || mAttachment != null);
+ mSendButton.setEnabled(mEditText.length() != 0 || mEntry.remoteInputAttachment != null);
}
public void close() {
@@ -855,7 +845,7 @@
&& event.getAction() == KeyEvent.ACTION_DOWN;
if (isSoftImeEvent || isKeyboardEnterKey) {
- if (mEditText.length() > 0 || mAttachment != null) {
+ if (mEditText.length() > 0 || mEntry.remoteInputAttachment != null) {
sendRemoteInput(prepareRemoteInput());
}
// Consume action to prevent IME from closing.
@@ -926,7 +916,6 @@
// our focus, so we'll need to save our text here.
if (mRemoteInputView != null) {
mRemoteInputView.mEntry.remoteInputText = getText();
- // TODO(b/188646667): store attachment to entry
}
}
return;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityController.java
index e76b803..2a93844 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityController.java
@@ -28,6 +28,8 @@
boolean isDeviceManaged();
boolean hasProfileOwner();
boolean hasWorkProfile();
+ /** Whether the work profile is turned on. */
+ boolean isWorkProfileOn();
/** Whether this device is organization-owned with a work profile **/
boolean isProfileOwnerOfOrganizationOwnedDevice();
String getDeviceOwnerName();
@@ -57,7 +59,6 @@
/** Label for admin */
CharSequence getLabel(DeviceAdminInfo info);
-
public interface SecurityControllerCallback {
void onStateChanged();
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
index 4afb86b..3e661df 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SecurityControllerImpl.java
@@ -211,6 +211,12 @@
}
@Override
+ public boolean isWorkProfileOn() {
+ final UserHandle userHandle = UserHandle.of(getWorkProfileUserId(mCurrentUserId));
+ return userHandle != null && !mUserManager.isQuietModeEnabled(userHandle);
+ }
+
+ @Override
public boolean isProfileOwnerOfOrganizationOwnedDevice() {
return mDevicePolicyManager.isOrganizationOwnedDeviceWithManagedProfile();
}
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java b/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java
index 7f37562..11e7df8 100644
--- a/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/SensorModule.java
@@ -36,12 +36,13 @@
try {
return thresholdSensorBuilder
.setSensorDelay(SensorManager.SENSOR_DELAY_NORMAL)
- .setSensorResourceId(R.string.proximity_sensor_type)
+ .setSensorResourceId(R.string.proximity_sensor_type, true)
.setThresholdResourceId(R.dimen.proximity_sensor_threshold)
.setThresholdLatchResourceId(R.dimen.proximity_sensor_threshold_latch)
.build();
} catch (IllegalStateException e) {
- Sensor defaultSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
+ Sensor defaultSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY,
+ true);
return thresholdSensorBuilder
.setSensor(defaultSensor)
.setThresholdValue(defaultSensor != null ? defaultSensor.getMaximumRange() : 0)
@@ -55,7 +56,7 @@
ThresholdSensorImpl.Builder thresholdSensorBuilder) {
try {
return thresholdSensorBuilder
- .setSensorResourceId(R.string.proximity_sensor_secondary_type)
+ .setSensorResourceId(R.string.proximity_sensor_secondary_type, true)
.setThresholdResourceId(R.dimen.proximity_sensor_secondary_threshold)
.setThresholdLatchResourceId(R.dimen.proximity_sensor_secondary_threshold_latch)
.build();
diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java
index 31c3072..d10cf9b 100644
--- a/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java
@@ -230,14 +230,16 @@
mExecution = execution;
}
-
Builder setSensorDelay(int sensorDelay) {
mSensorDelay = sensorDelay;
return this;
}
-
- Builder setSensorResourceId(int sensorResourceId) {
- setSensorType(mResources.getString(sensorResourceId));
+ /**
+ * If requiresWakeUp is false, the first sensor with sensorType (regardless of whether the
+ * sensor is a wakeup sensor or not) will be set.
+ */
+ Builder setSensorResourceId(int sensorResourceId, boolean requireWakeUp) {
+ setSensorType(mResources.getString(sensorResourceId), requireWakeUp);
return this;
}
@@ -259,8 +261,12 @@
return this;
}
- Builder setSensorType(String sensorType) {
- Sensor sensor = findSensorByType(sensorType);
+ /**
+ * If requiresWakeUp is false, the first sensor with sensorType (regardless of whether the
+ * sensor is a wakeup sensor or not) will be set.
+ */
+ Builder setSensorType(String sensorType, boolean requireWakeUp) {
+ Sensor sensor = findSensorByType(sensorType, requireWakeUp);
if (sensor != null) {
setSensor(sensor);
}
@@ -310,7 +316,8 @@
mThresholdValue, mThresholdLatchValue, mSensorDelay);
}
- private Sensor findSensorByType(String sensorType) {
+ @VisibleForTesting
+ Sensor findSensorByType(String sensorType, boolean requireWakeUp) {
if (sensorType.isEmpty()) {
return null;
}
@@ -320,7 +327,9 @@
for (Sensor s : sensorList) {
if (sensorType.equals(s.getStringType())) {
sensor = s;
- break;
+ if (!requireWakeUp || sensor.isWakeUpSensor()) {
+ break;
+ }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
index 657553f..fc0214a 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
@@ -573,7 +573,7 @@
// Stop scanning when bouncer becomes visible
setKeyguardBouncerVisibility(true);
clearInvocations(mFaceManager);
- mKeyguardUpdateMonitor.requestFaceAuth();
+ mKeyguardUpdateMonitor.requestFaceAuth(true);
verify(mFaceManager, never()).authenticate(any(), any(), any(), any(), anyInt());
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java
index 8ab32bb..25722e1 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java
@@ -126,6 +126,8 @@
private ScreenLifecycle mScreenLifecycle;
@Mock
private Vibrator mVibrator;
+ @Mock
+ private UdfpsHapticsSimulator mUdfpsHapticsSimulator;
private FakeExecutor mFgExecutor;
@@ -188,6 +190,7 @@
mLockscreenShadeTransitionController,
mScreenLifecycle,
mVibrator,
+ mUdfpsHapticsSimulator,
Optional.of(mHbmProvider));
verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture());
mOverlayController = mOverlayCaptor.getValue();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
index 2d19f7d..c9d4190 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt
@@ -232,6 +232,7 @@
emptyList(), PACKAGE, session.getSessionToken(), null, device, true, null)
player.bindPlayer(state, PACKAGE)
assertThat(seamlessText.getText()).isEqualTo(DEVICE_NAME)
+ assertThat(seamless.contentDescription).isEqualTo(DEVICE_NAME)
assertThat(seamless.isEnabled()).isTrue()
}
@@ -251,13 +252,15 @@
@Test
fun bindNullDevice() {
+ val fallbackString = context.getResources().getString(
+ com.android.internal.R.string.ext_media_seamless_action)
player.attachPlayer(holder)
val state = MediaData(USER_ID, true, BG_COLOR, APP, null, ARTIST, TITLE, null, emptyList(),
emptyList(), PACKAGE, session.getSessionToken(), null, null, true, null)
player.bindPlayer(state, PACKAGE)
assertThat(seamless.isEnabled()).isTrue()
- assertThat(seamlessText.getText()).isEqualTo(context.getResources().getString(
- com.android.internal.R.string.ext_media_seamless_action))
+ assertThat(seamlessText.getText()).isEqualTo(fallbackString)
+ assertThat(seamless.contentDescription).isEqualTo(fallbackString)
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java
index cfaa2e0..e9a7c73 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java
@@ -55,6 +55,7 @@
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
+import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
@@ -107,6 +108,7 @@
() -> mock(StatusBar.class),
mock(ShadeController.class),
mock(NotificationRemoteInputManager.class),
+ mock(NotificationShadeDepthController.class),
mock(SystemActions.class),
Dependency.get(Dependency.MAIN_HANDLER),
mock(UiEventLogger.class),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java
index 6742599..c606a43 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java
@@ -79,6 +79,7 @@
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
+import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper;
@@ -274,6 +275,7 @@
() -> mock(StatusBar.class),
mock(ShadeController.class),
mock(NotificationRemoteInputManager.class),
+ mock(NotificationShadeDepthController.class),
mock(SystemActions.class),
mHandler,
mock(NavigationBarOverlayController.class),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
index 7caf0dd..770cf2c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
@@ -204,6 +204,8 @@
public void testTappableView_profileOwnerOfOrgOwnedDevice_networkLoggingEnabled() {
when(mSecurityController.isProfileOwnerOfOrganizationOwnedDevice()).thenReturn(true);
when(mSecurityController.isNetworkLoggingEnabled()).thenReturn(true);
+ when(mSecurityController.isWorkProfileOn()).thenReturn(true);
+ when(mSecurityController.hasWorkProfile()).thenReturn(true);
mFooter.refreshState();
@@ -213,6 +215,19 @@
}
@Test
+ public void testUntappableView_profileOwnerOfOrgOwnedDevice_workProfileOff() {
+ when(mSecurityController.isProfileOwnerOfOrganizationOwnedDevice()).thenReturn(true);
+ when(mSecurityController.isNetworkLoggingEnabled()).thenReturn(true);
+ when(mSecurityController.isWorkProfileOn()).thenReturn(false);
+
+ mFooter.refreshState();
+
+ TestableLooper.get(this).processAllMessages();
+ assertFalse(mRootView.isClickable());
+ assertEquals(View.GONE, mRootView.findViewById(R.id.footer_icon).getVisibility());
+ }
+
+ @Test
public void testNetworkLoggingEnabled_deviceOwner() {
when(mSecurityController.isDeviceManaged()).thenReturn(true);
when(mSecurityController.isNetworkLoggingEnabled()).thenReturn(true);
@@ -237,9 +252,10 @@
}
@Test
- public void testNetworkLoggingEnabled_managedProfileOwner() {
+ public void testNetworkLoggingEnabled_managedProfileOwner_workProfileOn() {
when(mSecurityController.hasWorkProfile()).thenReturn(true);
when(mSecurityController.isNetworkLoggingEnabled()).thenReturn(true);
+ when(mSecurityController.isWorkProfileOn()).thenReturn(true);
mFooter.refreshState();
TestableLooper.get(this).processAllMessages();
@@ -249,6 +265,17 @@
}
@Test
+ public void testNetworkLoggingEnabled_managedProfileOwner_workProfileOff() {
+ when(mSecurityController.hasWorkProfile()).thenReturn(true);
+ when(mSecurityController.isNetworkLoggingEnabled()).thenReturn(true);
+ when(mSecurityController.isWorkProfileOn()).thenReturn(false);
+ mFooter.refreshState();
+
+ TestableLooper.get(this).processAllMessages();
+ assertEquals("", mFooterText.getText());
+ }
+
+ @Test
public void testManagedCACertsInstalled() {
when(mSecurityController.isDeviceManaged()).thenReturn(true);
when(mSecurityController.hasCACertInCurrentUser()).thenReturn(true);
@@ -326,9 +353,10 @@
}
@Test
- public void testWorkProfileCACertsInstalled() {
+ public void testWorkProfileCACertsInstalled_workProfileOn() {
when(mSecurityController.isDeviceManaged()).thenReturn(false);
when(mSecurityController.hasCACertInWorkProfile()).thenReturn(true);
+ when(mSecurityController.isWorkProfileOn()).thenReturn(true);
mFooter.refreshState();
TestableLooper.get(this).processAllMessages();
@@ -350,6 +378,17 @@
}
@Test
+ public void testWorkProfileCACertsInstalled_workProfileOff() {
+ when(mSecurityController.isDeviceManaged()).thenReturn(false);
+ when(mSecurityController.hasCACertInWorkProfile()).thenReturn(true);
+ when(mSecurityController.isWorkProfileOn()).thenReturn(false);
+ mFooter.refreshState();
+
+ TestableLooper.get(this).processAllMessages();
+ assertEquals("", mFooterText.getText());
+ }
+
+ @Test
public void testCACertsInstalled() {
when(mSecurityController.isDeviceManaged()).thenReturn(false);
when(mSecurityController.hasCACertInCurrentUser()).thenReturn(true);
@@ -375,9 +414,10 @@
}
@Test
- public void testWorkProfileVpnEnabled() {
+ public void testWorkProfileVpnEnabled_workProfileOn() {
when(mSecurityController.isVpnEnabled()).thenReturn(true);
when(mSecurityController.getWorkProfileVpnName()).thenReturn(VPN_PACKAGE_2);
+ when(mSecurityController.isWorkProfileOn()).thenReturn(true);
mFooter.refreshState();
TestableLooper.get(this).processAllMessages();
@@ -389,6 +429,17 @@
}
@Test
+ public void testWorkProfileVpnEnabled_workProfileOff() {
+ when(mSecurityController.isVpnEnabled()).thenReturn(true);
+ when(mSecurityController.getWorkProfileVpnName()).thenReturn(VPN_PACKAGE_2);
+ when(mSecurityController.isWorkProfileOn()).thenReturn(false);
+ mFooter.refreshState();
+
+ TestableLooper.get(this).processAllMessages();
+ assertEquals("", mFooterText.getText());
+ }
+
+ @Test
public void testProfileOwnerOfOrganizationOwnedDeviceNoName() {
when(mSecurityController.isProfileOwnerOfOrganizationOwnedDevice()).thenReturn(true);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java
index 35c92b6..8e949e7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java
@@ -161,7 +161,7 @@
String mimeType = "image/jpeg";
String text = "image inserted";
StatusBarNotification newSbn =
- mRemoteInputManager.rebuildNotificationWithRemoteInput(
+ mRemoteInputManager.rebuildNotificationWithRemoteInputInserted(
mEntry, text, false, mimeType, uri);
RemoteInputHistoryItem[] messages = (RemoteInputHistoryItem[]) newSbn.getNotification()
.extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS);
@@ -174,7 +174,7 @@
@Test
public void testRebuildWithRemoteInput_noExistingInputNoSpinner() {
StatusBarNotification newSbn =
- mRemoteInputManager.rebuildNotificationWithRemoteInput(
+ mRemoteInputManager.rebuildNotificationWithRemoteInputInserted(
mEntry, "A Reply", false, null, null);
RemoteInputHistoryItem[] messages = (RemoteInputHistoryItem[]) newSbn.getNotification()
.extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS);
@@ -189,7 +189,7 @@
@Test
public void testRebuildWithRemoteInput_noExistingInputWithSpinner() {
StatusBarNotification newSbn =
- mRemoteInputManager.rebuildNotificationWithRemoteInput(
+ mRemoteInputManager.rebuildNotificationWithRemoteInputInserted(
mEntry, "A Reply", true, null, null);
RemoteInputHistoryItem[] messages = (RemoteInputHistoryItem[]) newSbn.getNotification()
.extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS);
@@ -205,14 +205,14 @@
public void testRebuildWithRemoteInput_withExistingInput() {
// Setup a notification entry with 1 remote input.
StatusBarNotification newSbn =
- mRemoteInputManager.rebuildNotificationWithRemoteInput(
+ mRemoteInputManager.rebuildNotificationWithRemoteInputInserted(
mEntry, "A Reply", false, null, null);
NotificationEntry entry = new NotificationEntryBuilder()
.setSbn(newSbn)
.build();
// Try rebuilding to add another reply.
- newSbn = mRemoteInputManager.rebuildNotificationWithRemoteInput(
+ newSbn = mRemoteInputManager.rebuildNotificationWithRemoteInputInserted(
entry, "Reply 2", true, null, null);
RemoteInputHistoryItem[] messages = (RemoteInputHistoryItem[]) newSbn.getNotification()
.extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS);
@@ -228,14 +228,14 @@
String mimeType = "image/jpeg";
String text = "image inserted";
StatusBarNotification newSbn =
- mRemoteInputManager.rebuildNotificationWithRemoteInput(
+ mRemoteInputManager.rebuildNotificationWithRemoteInputInserted(
mEntry, text, false, mimeType, uri);
NotificationEntry entry = new NotificationEntryBuilder()
.setSbn(newSbn)
.build();
// Try rebuilding to add another reply.
- newSbn = mRemoteInputManager.rebuildNotificationWithRemoteInput(
+ newSbn = mRemoteInputManager.rebuildNotificationWithRemoteInputInserted(
entry, "Reply 2", true, null, null);
RemoteInputHistoryItem[] messages = (RemoteInputHistoryItem[]) newSbn.getNotification()
.extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
index b2a7884..c8e027c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
@@ -103,9 +103,11 @@
import com.android.systemui.statusbar.KeyguardIndicationController;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
+import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.NotificationShelfController;
import com.android.systemui.statusbar.PulseExpansionHandler;
+import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.statusbar.VibratorHelper;
@@ -292,6 +294,10 @@
private FragmentHostManager mFragmentHostManager;
@Mock
private QuickAccessWalletController mQuickAccessWalletController;
+ @Mock
+ private NotificationRemoteInputManager mNotificationRemoteInputManager;
+ @Mock
+ private RemoteInputController mRemoteInputController;
private SysuiStatusBarStateController mStatusBarStateController;
private NotificationPanelViewController mNotificationPanelViewController;
@@ -387,6 +393,8 @@
.thenReturn(mKeyguardStatusView);
when(mLayoutInflater.inflate(eq(R.layout.keyguard_bottom_area), any(), anyBoolean()))
.thenReturn(mKeyguardBottomArea);
+ when(mNotificationRemoteInputManager.getController()).thenReturn(mRemoteInputController);
+ when(mRemoteInputController.isRemoteInputActive()).thenReturn(false);
reset(mView);
@@ -430,7 +438,8 @@
mQuickAccessWalletController,
new FakeExecutor(new FakeSystemClock()),
mSecureSettings,
- mUnlockedScreenOffAnimationController);
+ mUnlockedScreenOffAnimationController,
+ mNotificationRemoteInputManager);
mNotificationPanelViewController.initDependencies(
mStatusBar,
mNotificationShelfController);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
index 94c9de0..c81d468 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt
@@ -43,6 +43,7 @@
import com.android.systemui.util.mockito.any
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
+import org.junit.After
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -117,6 +118,11 @@
.thenReturn(PROC_STATE_INVISIBLE)
}
+ @After
+ fun tearDown() {
+ controller.tearDownChipView()
+ }
+
@Test
fun onEntryUpdated_isOngoingCallNotif_listenerNotified() {
notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry())
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeSensorManager.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeSensorManager.java
index 27b225e..6e73827 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeSensorManager.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeSensorManager.java
@@ -60,7 +60,7 @@
public FakeSensorManager(Context context) throws Exception {
Sensor proxSensor = context.getSystemService(SensorManager.class)
- .getDefaultSensor(Sensor.TYPE_PROXIMITY);
+ .getDefaultSensor(Sensor.TYPE_PROXIMITY, true);
if (proxSensor == null) {
// No prox? Let's create a fake one!
proxSensor =
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java
index 1276567..125063a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java
@@ -16,10 +16,15 @@
package com.android.systemui.util.sensors;
+import static android.hardware.Sensor.TYPE_ALL;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import android.hardware.Sensor;
import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
@@ -33,6 +38,8 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.List;
+
@SmallTest
@RunWith(AndroidTestingRunner.class)
public class ThresholdSensorImplTest extends SysuiTestCase {
@@ -60,6 +67,79 @@
}
@Test
+ public void testRegistersWakeUpProxSensor_givenWakeUpExistsAfterNonWakeup() {
+ // GIVEN sensor manager with two prox sensors (one non-wakeup, one wakeup)
+ final String sensorTypeProx = "prox";
+ AsyncSensorManager mockSensorManager = mock(AsyncSensorManager.class);
+
+ Sensor mockNonWakeupProx = mock(Sensor.class);
+ when(mockNonWakeupProx.isWakeUpSensor()).thenReturn(false);
+ when(mockNonWakeupProx.getStringType()).thenReturn(sensorTypeProx);
+
+ Sensor mockWakeupProx = mock(Sensor.class);
+ when(mockWakeupProx.isWakeUpSensor()).thenReturn(true);
+ when(mockWakeupProx.getStringType()).thenReturn(sensorTypeProx);
+
+ when(mockSensorManager.getSensorList(TYPE_ALL)).thenReturn(
+ List.of(mockNonWakeupProx, mockWakeupProx));
+
+ // WHEN we build a threshold sensor by type
+ ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder(
+ null, mockSensorManager, new FakeExecution());
+ Sensor proxSensor = thresholdSensorBuilder.findSensorByType(sensorTypeProx, true);
+
+ // THEN the prox sensor used is the wakeup sensor
+ assertEquals(mockWakeupProx, proxSensor);
+ }
+
+ @Test
+ public void testRegistersWakeUpProxSensor_givenNonWakeUpExistsAfterWakeup() {
+ // GIVEN sensor manager with two prox sensors (one wakeup, one non-wakeup)
+ final String sensorTypeProx = "prox";
+ AsyncSensorManager mockSensorManager = mock(AsyncSensorManager.class);
+
+ Sensor mockNonWakeupProx = mock(Sensor.class);
+ when(mockNonWakeupProx.isWakeUpSensor()).thenReturn(false);
+ when(mockNonWakeupProx.getStringType()).thenReturn(sensorTypeProx);
+
+ Sensor mockWakeupProx = mock(Sensor.class);
+ when(mockWakeupProx.isWakeUpSensor()).thenReturn(true);
+ when(mockWakeupProx.getStringType()).thenReturn(sensorTypeProx);
+
+ when(mockSensorManager.getSensorList(TYPE_ALL)).thenReturn(
+ List.of(mockWakeupProx, mockNonWakeupProx));
+
+ // WHEN we build a threshold sensor by type
+ ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder(
+ null, mockSensorManager, new FakeExecution());
+ Sensor proxSensor = thresholdSensorBuilder.findSensorByType(sensorTypeProx, true);
+
+ // THEN the prox sensor used is the wakeup sensor
+ assertEquals(mockWakeupProx, proxSensor);
+ }
+
+ @Test
+ public void testRegistersNonWakeUpProxSensor_givenNonWakeUpOnly() {
+ // GIVEN sensor manager with one non-wakeup prox sensor
+ final String sensorTypeProx = "prox";
+ AsyncSensorManager mockSensorManager = mock(AsyncSensorManager.class);
+
+ Sensor mockNonWakeupProx = mock(Sensor.class);
+ when(mockNonWakeupProx.isWakeUpSensor()).thenReturn(false);
+ when(mockNonWakeupProx.getStringType()).thenReturn(sensorTypeProx);
+
+ when(mockSensorManager.getSensorList(TYPE_ALL)).thenReturn(List.of(mockNonWakeupProx));
+
+ // WHEN we build a threshold sensor by type
+ ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder(
+ null, mockSensorManager, new FakeExecution());
+ Sensor proxSensor = thresholdSensorBuilder.findSensorByType(sensorTypeProx, true);
+
+ // THEN the prox sensor used is the one available (non-wakeup)
+ assertEquals(mockNonWakeupProx, proxSensor);
+ }
+
+ @Test
public void testSingleListener() {
TestableListener listener = new TestableListener();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeSecurityController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeSecurityController.java
index 3640bcd..d5348dc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeSecurityController.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeSecurityController.java
@@ -44,6 +44,11 @@
}
@Override
+ public boolean isWorkProfileOn() {
+ return false;
+ }
+
+ @Override
public boolean isProfileOwnerOfOrganizationOwnedDevice() {
return false;
}
diff --git a/services/core/Android.bp b/services/core/Android.bp
index ec21d45..282b868 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -107,6 +107,7 @@
":display-device-config",
":display-layout-config",
":device-state-config",
+ ":guiconstants_aidl",
"java/com/android/server/EventLogTags.logtags",
"java/com/android/server/am/EventLogTags.logtags",
"java/com/android/server/wm/EventLogTags.logtags",
diff --git a/services/core/java/com/android/server/SensorPrivacyService.java b/services/core/java/com/android/server/SensorPrivacyService.java
index c0c347b..370b283 100644
--- a/services/core/java/com/android/server/SensorPrivacyService.java
+++ b/services/core/java/com/android/server/SensorPrivacyService.java
@@ -17,6 +17,8 @@
package com.android.server;
import static android.Manifest.permission.MANAGE_SENSOR_PRIVACY;
+import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_CAMERA;
+import static android.app.ActivityManager.PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
import static android.app.ActivityManager.RunningServiceInfo;
import static android.app.ActivityManager.RunningTaskInfo;
import static android.app.ActivityManager.getCurrentUser;
@@ -26,7 +28,6 @@
import static android.app.AppOpsManager.OP_PHONE_CALL_CAMERA;
import static android.app.AppOpsManager.OP_PHONE_CALL_MICROPHONE;
import static android.app.AppOpsManager.OP_RECORD_AUDIO;
-import static android.app.AppOpsManager.OP_RECORD_AUDIO_HOTWORD;
import static android.content.Intent.EXTRA_PACKAGE_NAME;
import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
@@ -41,9 +42,11 @@
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
+import android.app.ActivityManagerInternal;
import android.app.ActivityOptions;
import android.app.ActivityTaskManager;
import android.app.AppOpsManager;
+import android.app.AppOpsManagerInternal;
import android.app.KeyguardManager;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -83,6 +86,7 @@
import android.telephony.TelephonyManager;
import android.telephony.emergency.EmergencyNumber;
import android.text.Html;
+import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.AtomicFile;
@@ -156,8 +160,10 @@
private final SensorPrivacyServiceImpl mSensorPrivacyServiceImpl;
private final UserManagerInternal mUserManagerInternal;
private final ActivityManager mActivityManager;
+ private final ActivityManagerInternal mActivityManagerInternal;
private final ActivityTaskManager mActivityTaskManager;
private final AppOpsManager mAppOpsManager;
+ private final AppOpsManagerInternal mAppOpsManagerInternal;
private final TelephonyManager mTelephonyManager;
private final IBinder mAppOpsRestrictionToken = new Binder();
@@ -167,15 +173,18 @@
private EmergencyCallHelper mEmergencyCallHelper;
private KeyguardManager mKeyguardManager;
+ private int mCurrentUser = -1;
+
public SensorPrivacyService(Context context) {
super(context);
mContext = context;
mAppOpsManager = context.getSystemService(AppOpsManager.class);
+ mAppOpsManagerInternal = getLocalService(AppOpsManagerInternal.class);
mUserManagerInternal = getLocalService(UserManagerInternal.class);
mActivityManager = context.getSystemService(ActivityManager.class);
+ mActivityManagerInternal = getLocalService(ActivityManagerInternal.class);
mActivityTaskManager = context.getSystemService(ActivityTaskManager.class);
mTelephonyManager = context.getSystemService(TelephonyManager.class);
-
mSensorPrivacyServiceImpl = new SensorPrivacyServiceImpl();
}
@@ -195,6 +204,20 @@
}
}
+ @Override
+ public void onUserStarting(TargetUser user) {
+ if (mCurrentUser == -1) {
+ mCurrentUser = user.getUserIdentifier();
+ setGlobalRestriction();
+ }
+ }
+
+ @Override
+ public void onUserSwitching(TargetUser from, TargetUser to) {
+ mCurrentUser = to.getUserIdentifier();
+ setGlobalRestriction();
+ }
+
class SensorPrivacyServiceImpl extends ISensorPrivacyManager.Stub implements
AppOpsManager.OnOpNotedListener, AppOpsManager.OnOpStartedListener,
IBinder.DeathRecipient, UserManagerInternal.UserRestrictionsListener {
@@ -256,17 +279,6 @@
if (readPersistedSensorPrivacyStateLocked()) {
persistSensorPrivacyStateLocked();
}
-
- for (int i = 0; i < mIndividualEnabled.size(); i++) {
- int userId = mIndividualEnabled.keyAt(i);
- SparseBooleanArray userIndividualEnabled =
- mIndividualEnabled.valueAt(i);
- for (int j = 0; j < userIndividualEnabled.size(); j++) {
- int sensor = userIndividualEnabled.keyAt(j);
- boolean enabled = userIndividualEnabled.valueAt(j);
- setUserRestriction(userId, sensor, enabled);
- }
- }
}
int[] micAndCameraOps = new int[]{OP_RECORD_AUDIO, OP_PHONE_CALL_MICROPHONE,
@@ -421,11 +433,33 @@
}
}
- VoiceInteractionManagerInternal voiceInteractionManagerInternal =
- LocalServices.getService(VoiceInteractionManagerInternal.class);
+ String inputMethodComponent = Settings.Secure.getString(mContext.getContentResolver(),
+ Settings.Secure.DEFAULT_INPUT_METHOD);
+ String inputMethodPackageName = null;
+ if (inputMethodComponent != null) {
+ inputMethodPackageName = ComponentName.unflattenFromString(
+ inputMethodComponent).getPackageName();
+ }
+ int capability = mActivityManagerInternal.getUidCapability(uid);
- if (sensor == MICROPHONE && voiceInteractionManagerInternal != null
- && voiceInteractionManagerInternal.hasActiveSession(packageName)) {
+ if (sensor == MICROPHONE) {
+ VoiceInteractionManagerInternal voiceInteractionManagerInternal =
+ LocalServices.getService(VoiceInteractionManagerInternal.class);
+ if (voiceInteractionManagerInternal != null
+ && voiceInteractionManagerInternal.hasActiveSession(packageName)) {
+ enqueueSensorUseReminderDialogAsync(-1, user, packageName, sensor);
+ return;
+ }
+
+ if (TextUtils.equals(packageName, inputMethodPackageName)
+ && (capability & PROCESS_CAPABILITY_FOREGROUND_MICROPHONE) != 0) {
+ enqueueSensorUseReminderDialogAsync(-1, user, packageName, sensor);
+ return;
+ }
+ }
+
+ if (sensor == CAMERA && TextUtils.equals(packageName, inputMethodPackageName)
+ && (capability & PROCESS_CAPABILITY_FOREGROUND_CAMERA) != 0) {
enqueueSensorUseReminderDialogAsync(-1, user, packageName, sensor);
return;
}
@@ -1351,7 +1385,10 @@
SparseArray<RemoteCallbackList<ISensorPrivacyListener>> listenersForUser =
mIndividualSensorListeners.get(userId);
- setUserRestriction(userId, sensor, enabled);
+ setGlobalRestriction();
+ if (userId == mCurrentUser) {
+ setGlobalRestriction();
+ }
if (listenersForUser == null) {
return;
@@ -1380,16 +1417,18 @@
}
}
- private void setUserRestriction(int userId, int sensor, boolean enabled) {
- if (sensor == CAMERA) {
- mAppOpsManager.setUserRestrictionForUser(OP_CAMERA, enabled,
- mAppOpsRestrictionToken, null, userId);
- } else if (sensor == MICROPHONE) {
- mAppOpsManager.setUserRestrictionForUser(OP_RECORD_AUDIO, enabled,
- mAppOpsRestrictionToken, null, userId);
- mAppOpsManager.setUserRestrictionForUser(OP_RECORD_AUDIO_HOTWORD, enabled,
- mAppOpsRestrictionToken, null, userId);
- }
+ private void setGlobalRestriction() {
+ boolean camState =
+ mSensorPrivacyServiceImpl
+ .isIndividualSensorPrivacyEnabled(mCurrentUser, CAMERA);
+ boolean micState =
+ mSensorPrivacyServiceImpl
+ .isIndividualSensorPrivacyEnabled(mCurrentUser, MICROPHONE);
+
+ mAppOpsManagerInternal
+ .setGlobalRestriction(OP_CAMERA, camState, mAppOpsRestrictionToken);
+ mAppOpsManagerInternal
+ .setGlobalRestriction(OP_RECORD_AUDIO, micState, mAppOpsRestrictionToken);
}
private final class DeathRecipient implements IBinder.DeathRecipient {
@@ -1507,7 +1546,7 @@
}
private class EmergencyCallHelper {
- private OutogingEmergencyStateCallback mEmergencyStateCallback;
+ private OutgoingEmergencyStateCallback mEmergencyStateCallback;
private CallStateCallback mCallStateCallback;
private boolean mIsInEmergencyCall;
@@ -1516,7 +1555,7 @@
private Object mEmergencyStateLock = new Object();
EmergencyCallHelper() {
- mEmergencyStateCallback = new OutogingEmergencyStateCallback();
+ mEmergencyStateCallback = new OutgoingEmergencyStateCallback();
mCallStateCallback = new CallStateCallback();
mTelephonyManager.registerTelephonyCallback(FgThread.getExecutor(),
@@ -1531,7 +1570,7 @@
}
}
- private class OutogingEmergencyStateCallback extends TelephonyCallback implements
+ private class OutgoingEmergencyStateCallback extends TelephonyCallback implements
TelephonyCallback.OutgoingEmergencyCallListener {
@Override
public void onOutgoingEmergencyCall(EmergencyNumber placedEmergencyNumber,
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index 89781d3..58a1ead 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -328,23 +328,11 @@
* Watch for apps being put into forced app standby, so we can step their fg
* services down.
*/
- class ForcedStandbyListener implements AppStateTracker.ForcedAppStandbyListener {
+ class ForcedStandbyListener implements AppStateTracker.ServiceStateListener {
@Override
- public void updateForceAppStandbyForUidPackage(int uid, String packageName,
- boolean standby) {
+ public void stopForegroundServicesForUidPackage(final int uid, final String packageName) {
synchronized (mAm) {
- if (standby) {
- stopAllForegroundServicesLocked(uid, packageName);
- }
- mAm.mProcessList.updateForceAppStandbyForUidPackageLocked(
- uid, packageName, standby);
- }
- }
-
- @Override
- public void updateForcedAppStandbyForAllApps() {
- synchronized (mAm) {
- mAm.mProcessList.updateForcedAppStandbyForAllAppsLocked();
+ stopAllForegroundServicesLocked(uid, packageName);
}
}
}
@@ -530,7 +518,7 @@
void systemServicesReady() {
AppStateTracker ast = LocalServices.getService(AppStateTracker.class);
- ast.addForcedAppStandbyListener(new ForcedStandbyListener());
+ ast.addServiceStateListener(new ForcedStandbyListener());
mAppWidgetManagerInternal = LocalServices.getService(AppWidgetManagerInternal.class);
setAllowListWhileInUsePermissionInFgs();
}
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java
index 445d0ba..530f918 100644
--- a/services/core/java/com/android/server/am/ActivityManagerConstants.java
+++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java
@@ -52,8 +52,7 @@
private static final String TAG = "ActivityManagerConstants";
// Key names stored in the settings value.
- static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time";
-
+ private static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time";
private static final String KEY_FGSERVICE_MIN_SHOWN_TIME
= "fgservice_min_shown_time";
private static final String KEY_FGSERVICE_MIN_REPORT_TIME
@@ -109,10 +108,10 @@
static final String KEY_FG_TO_BG_FGS_GRACE_DURATION = "fg_to_bg_fgs_grace_duration";
static final String KEY_FGS_START_FOREGROUND_TIMEOUT = "fgs_start_foreground_timeout";
static final String KEY_FGS_ATOM_SAMPLE_RATE = "fgs_atom_sample_rate";
- static final String KEY_KILL_FAS_CACHED_IDLE = "kill_fas_cached_idle";
static final String KEY_FGS_ALLOW_OPT_OUT = "fgs_allow_opt_out";
private static final int DEFAULT_MAX_CACHED_PROCESSES = 32;
+ private static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60*1000;
private static final long DEFAULT_FGSERVICE_MIN_SHOWN_TIME = 2*1000;
private static final long DEFAULT_FGSERVICE_MIN_REPORT_TIME = 3*1000;
private static final long DEFAULT_FGSERVICE_SCREEN_ON_BEFORE_TIME = 1*1000;
@@ -153,10 +152,6 @@
private static final long DEFAULT_FG_TO_BG_FGS_GRACE_DURATION = 5 * 1000;
private static final int DEFAULT_FGS_START_FOREGROUND_TIMEOUT_MS = 10 * 1000;
private static final float DEFAULT_FGS_ATOM_SAMPLE_RATE = 1; // 100 %
-
- static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60 * 1000;
- static final boolean DEFAULT_KILL_FAS_CACHED_IDLE = true;
-
/**
* Same as {@link TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_NOT_ALLOWED}
*/
@@ -501,12 +496,6 @@
volatile float mFgsAtomSampleRate = DEFAULT_FGS_ATOM_SAMPLE_RATE;
/**
- * Whether or not to kill apps in force-app-standby state and it's cached, its UID state is
- * idle.
- */
- volatile boolean mKillForceAppStandByAndCachedIdle = DEFAULT_KILL_FAS_CACHED_IDLE;
-
- /**
* Whether to allow "opt-out" from the foreground service restrictions.
* (https://developer.android.com/about/versions/12/foreground-services)
*/
@@ -720,9 +709,6 @@
case KEY_FGS_ATOM_SAMPLE_RATE:
updateFgsAtomSamplePercent();
break;
- case KEY_KILL_FAS_CACHED_IDLE:
- updateKillFasCachedIdle();
- break;
case KEY_FGS_ALLOW_OPT_OUT:
updateFgsAllowOptOut();
break;
@@ -1065,13 +1051,6 @@
DEFAULT_FGS_ATOM_SAMPLE_RATE);
}
- private void updateKillFasCachedIdle() {
- mKillForceAppStandByAndCachedIdle = DeviceConfig.getBoolean(
- DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
- KEY_KILL_FAS_CACHED_IDLE,
- DEFAULT_KILL_FAS_CACHED_IDLE);
- }
-
private void updateFgsAllowOptOut() {
mFgsAllowOptOut = DeviceConfig.getBoolean(
DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index ec2e56e..119e487 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -14415,10 +14415,6 @@
final int capability = uidRec != null ? uidRec.getSetCapability() : 0;
final boolean ephemeral = uidRec != null ? uidRec.isEphemeral() : isEphemeralLocked(uid);
- if (uidRec != null && uidRec.isIdle() && (change & UidRecord.CHANGE_IDLE) != 0) {
- mProcessList.killAppIfForceStandbyAndCachedIdleLocked(uidRec);
- }
-
if (uidRec != null && !uidRec.isIdle() && (change & UidRecord.CHANGE_GONE) != 0) {
// If this uid is going away, and we haven't yet reported it is gone,
// then do so now.
@@ -16366,6 +16362,17 @@
return mConstants.mPushMessagingOverQuotaBehavior;
}
}
+
+ @Override
+ public int getUidCapability(int uid) {
+ synchronized (ActivityManagerService.this) {
+ UidRecord uidRecord = mProcessList.getUidRecordLOSP(uid);
+ if (uidRecord == null) {
+ throw new IllegalArgumentException("uid record for " + uid + " not found");
+ }
+ return uidRecord.getCurCapability();
+ }
+ }
}
long inputDispatchingTimedOut(int pid, final boolean aboveSystem, String reason) {
diff --git a/services/core/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java
index b325ea3..5a1a6b4 100644
--- a/services/core/java/com/android/server/am/CoreSettingsObserver.java
+++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java
@@ -93,8 +93,6 @@
sGlobalSettingToTypeMap.put(
Settings.Global.ANGLE_GL_DRIVER_SELECTION_VALUES, String.class);
sGlobalSettingToTypeMap.put(
- Settings.Global.ANGLE_ALLOWLIST, String.class);
- sGlobalSettingToTypeMap.put(
Settings.Global.ANGLE_EGL_FEATURES, String.class);
sGlobalSettingToTypeMap.put(
Settings.Global.SHOW_ANGLE_IN_USE_DIALOG_BOX, String.class);
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index aef402a..6cebf47 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -2835,8 +2835,6 @@
+ " target=" + state.getAdjTarget() + " capability=" + item.capability);
}
- mProcessList.killAppIfForceStandbyAndCachedIdleLocked(app);
-
return success;
}
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 1b67679..7c5d09c 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -125,7 +125,6 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.MemInfoReader;
-import com.android.server.AppStateTracker;
import com.android.server.LocalServices;
import com.android.server.ServiceThread;
import com.android.server.SystemConfig;
@@ -2370,12 +2369,6 @@
allowlistedAppDataInfoMap = null;
}
- AppStateTracker ast = LocalServices.getService(AppStateTracker.class);
- if (ast != null) {
- app.mState.setForcedAppStandby(ast.isAppInForcedAppStandby(
- app.info.uid, app.info.packageName));
- }
-
final Process.ProcessStartResult startResult;
boolean regularZygote = false;
if (hostingRecord.usesWebviewZygote()) {
@@ -4698,10 +4691,10 @@
final ApplicationInfo ai = AppGlobals.getPackageManager()
.getApplicationInfo(packageName, STOCK_PM_FLAGS, app.userId);
if (ai != null) {
+ app.getThread().scheduleApplicationInfoChanged(ai);
if (ai.packageName.equals(app.info.packageName)) {
app.info = ai;
}
- app.getThread().scheduleApplicationInfoChanged(ai);
targetProcesses.add(app.getWindowProcessController());
}
} catch (RemoteException e) {
@@ -4712,7 +4705,8 @@
});
}
- mService.mActivityTaskManager.updateAssetConfiguration(targetProcesses, updateFrameworkRes);
+ mService.mActivityTaskManager.updateAssetConfiguration(
+ updateFrameworkRes ? null : targetProcesses);
}
@GuardedBy("mService")
@@ -5007,55 +5001,6 @@
return true;
}
- @GuardedBy("mService")
- void updateForceAppStandbyForUidPackageLocked(int uid, String packageName, boolean standby) {
- final UidRecord uidRec = getUidRecordLOSP(uid);
- if (uidRec != null) {
- uidRec.forEachProcess(app -> {
- if (TextUtils.equals(app.info.packageName, packageName)) {
- app.mState.setForcedAppStandby(standby);
- killAppIfForceStandbyAndCachedIdleLocked(app);
- }
- });
- }
- }
-
- @GuardedBy("mService")
- void updateForcedAppStandbyForAllAppsLocked() {
- if (!mService.mConstants.mKillForceAppStandByAndCachedIdle) {
- return;
- }
- final AppStateTracker ast = LocalServices.getService(AppStateTracker.class);
- for (int i = mLruProcesses.size() - 1; i >= 0; i--) {
- final ProcessRecord app = mLruProcesses.get(i);
- final boolean standby = ast.isAppInForcedAppStandby(
- app.info.uid, app.info.packageName);
- app.mState.setForcedAppStandby(standby);
- if (standby) {
- killAppIfForceStandbyAndCachedIdleLocked(app);
- }
- }
- }
-
- @GuardedBy("mService")
- void killAppIfForceStandbyAndCachedIdleLocked(ProcessRecord app) {
- final UidRecord uidRec = app.getUidRecord();
- if (mService.mConstants.mKillForceAppStandByAndCachedIdle
- && uidRec != null && uidRec.isIdle()
- && !app.mState.shouldNotKillOnForcedAppStandbyAndIdle()
- && app.isCached() && app.mState.isForcedAppStandby()) {
- app.killLocked("cached idle & forced-app-standby",
- ApplicationExitInfo.REASON_OTHER,
- ApplicationExitInfo.SUBREASON_CACHED_IDLE_FORCED_APP_STANDBY,
- true);
- }
- }
-
- @GuardedBy("mService")
- void killAppIfForceStandbyAndCachedIdleLocked(UidRecord uidRec) {
- uidRec.forEachProcess(app -> killAppIfForceStandbyAndCachedIdleLocked(app));
- }
-
/**
* Called by ActivityManagerService when a process died.
*/
diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java
index 5dbd71a..c113bc2 100644
--- a/services/core/java/com/android/server/am/ProcessStateRecord.java
+++ b/services/core/java/com/android/server/am/ProcessStateRecord.java
@@ -302,12 +302,6 @@
private int mAllowStartFgsState = PROCESS_STATE_NONEXISTENT;
/**
- * Whether or not this process has been in forced-app-standby state.
- */
- @GuardedBy("mService")
- private boolean mForcedAppStandby;
-
- /**
* Debugging: primary thing impacting oom_adj.
*/
@GuardedBy("mService")
@@ -1126,16 +1120,6 @@
}
@GuardedBy("mService")
- void setForcedAppStandby(boolean standby) {
- mForcedAppStandby = standby;
- }
-
- @GuardedBy("mService")
- boolean isForcedAppStandby() {
- return mForcedAppStandby;
- }
-
- @GuardedBy("mService")
void updateLastInvisibleTime(boolean hasVisibleActivities) {
if (hasVisibleActivities) {
mLastInvisibleTime = Long.MAX_VALUE;
@@ -1203,8 +1187,7 @@
pw.print(" pendingUiClean="); pw.println(mApp.mProfile.hasPendingUiClean());
}
pw.print(prefix); pw.print("cached="); pw.print(mCached);
- pw.print(" empty="); pw.print(mEmpty);
- pw.print(" forcedAppStandby="); pw.println(mForcedAppStandby);
+ pw.print(" empty="); pw.println(mEmpty);
if (mServiceB) {
pw.print(prefix); pw.print("serviceb="); pw.print(mServiceB);
pw.print(" serviceHighRam="); pw.println(mServiceHighRam);
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index ba3e1fb..45d31f3 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -590,7 +590,11 @@
Slogf.w(TAG, "User key got locked unexpectedly, leaving user locked.");
return;
}
+
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
+ t.traceBegin("UM.onBeforeUnlockUser-" + userId);
mInjector.getUserManager().onBeforeUnlockUser(userId);
+ t.traceEnd();
synchronized (mLock) {
// Do not proceed if unexpected state
if (!uss.setState(STATE_RUNNING_LOCKED, STATE_RUNNING_UNLOCKING)) {
@@ -1683,7 +1687,11 @@
return false;
}
- if (!finishUserUnlocking(uss)) {
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
+ t.traceBegin("finishUserUnlocking-" + userId);
+ final boolean finishUserUnlockingResult = finishUserUnlocking(uss);
+ t.traceEnd();
+ if (!finishUserUnlockingResult) {
notifyFinished(userId, listener);
return false;
}
@@ -1849,6 +1857,9 @@
}
void dispatchUserSwitch(final UserState uss, final int oldUserId, final int newUserId) {
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
+ t.traceBegin("dispatchUserSwitch-" + oldUserId + "-to-" + newUserId);
+
EventLog.writeEvent(EventLogTags.UC_DISPATCH_USER_SWITCH, oldUserId, newUserId);
final int observerCount = mUserSwitchObservers.beginBroadcast();
@@ -1901,6 +1912,7 @@
}
}
mUserSwitchObservers.finishBroadcast();
+ t.traceEnd(); // end dispatchUserSwitch-
}
@GuardedBy("mLock")
@@ -1912,16 +1924,23 @@
}
void continueUserSwitch(UserState uss, int oldUserId, int newUserId) {
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
+ t.traceBegin("continueUserSwitch-" + oldUserId + "-to-" + newUserId);
+
EventLog.writeEvent(EventLogTags.UC_CONTINUE_USER_SWITCH, oldUserId, newUserId);
if (isUserSwitchUiEnabled()) {
+ t.traceBegin("stopFreezingScreen");
mInjector.getWindowManager().stopFreezingScreen();
+ t.traceEnd();
}
uss.switching = false;
mHandler.removeMessages(REPORT_USER_SWITCH_COMPLETE_MSG);
mHandler.sendMessage(mHandler.obtainMessage(REPORT_USER_SWITCH_COMPLETE_MSG, newUserId, 0));
stopGuestOrEphemeralUserIfBackground(oldUserId);
stopBackgroundUsersOnSwitchIfEnforced(oldUserId);
+
+ t.traceEnd(); // end continueUserSwitch
}
private void moveUserToForeground(UserState uss, int oldUserId, int newUserId) {
@@ -2670,7 +2689,11 @@
USER_LIFECYCLE_EVENT_STATE_FINISH);
logUserLifecycleEvent(msg.arg1, USER_LIFECYCLE_EVENT_UNLOCKED_USER,
USER_LIFECYCLE_EVENT_STATE_BEGIN);
+
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
+ t.traceBegin("finishUserUnlocked-" + userId);
finishUserUnlocked((UserState) msg.obj);
+ t.traceEnd();
break;
case USER_UNLOCKED_MSG:
mInjector.getSystemServiceManager().onUserUnlocked(msg.arg1);
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 55ed0d6..122880c 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -338,7 +338,14 @@
/*
* These are app op restrictions imposed per user from various parties.
*/
- private final ArrayMap<IBinder, ClientRestrictionState> mOpUserRestrictions = new ArrayMap<>();
+ private final ArrayMap<IBinder, ClientUserRestrictionState> mOpUserRestrictions =
+ new ArrayMap<>();
+
+ /*
+ * These are app op restrictions imposed globally from various parties within the system.
+ */
+ private final ArrayMap<IBinder, ClientGlobalRestrictionState> mOpGlobalRestrictions =
+ new ArrayMap<>();
SparseIntArray mProfileOwners;
@@ -2341,8 +2348,9 @@
boolean isCallerSystem = Binder.getCallingPid() == Process.myPid();
boolean isCallerPermissionController;
try {
- isCallerPermissionController = pm.getPackageUid(
- mContext.getPackageManager().getPermissionControllerPackageName(), 0)
+ isCallerPermissionController = pm.getPackageUidAsUser(
+ mContext.getPackageManager().getPermissionControllerPackageName(), 0,
+ UserHandle.getUserId(Binder.getCallingUid()))
== Binder.getCallingUid();
} catch (PackageManager.NameNotFoundException doesNotHappen) {
return;
@@ -3397,21 +3405,11 @@
boolean shouldCollectMessage) {
PackageVerificationResult pvr;
try {
- boolean isLocOrActivity = code == AppOpsManager.OP_FINE_LOCATION
- || code == AppOpsManager.OP_FINE_LOCATION_SOURCE
- || code == AppOpsManager.OP_ACTIVITY_RECOGNITION
- || code == AppOpsManager.OP_ACTIVITY_RECOGNITION_SOURCE;
- pvr = verifyAndGetBypass(uid, packageName, attributionTag, proxyPackageName,
- isLocOrActivity);
+ pvr = verifyAndGetBypass(uid, packageName, attributionTag, proxyPackageName);
boolean wasNull = attributionTag == null;
if (!pvr.isAttributionTagValid) {
attributionTag = null;
}
- if (attributionTag == null && isLocOrActivity
- && packageName.equals("com.google.android.gms")) {
- Slog.i("AppOpsDebug", "null tag on location or activity op " + code
- + " for " + packageName + ", was overridden: " + !wasNull, new Exception());
- }
} catch (SecurityException e) {
Slog.e(TAG, "noteOperation", e);
return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag,
@@ -3919,20 +3917,10 @@
int attributionChainId, boolean dryRun) {
PackageVerificationResult pvr;
try {
- boolean isLocOrActivity = code == AppOpsManager.OP_FINE_LOCATION
- || code == AppOpsManager.OP_FINE_LOCATION_SOURCE
- || code == AppOpsManager.OP_ACTIVITY_RECOGNITION
- || code == AppOpsManager.OP_ACTIVITY_RECOGNITION_SOURCE;
- pvr = verifyAndGetBypass(uid, packageName, attributionTag, proxyPackageName,
- isLocOrActivity);
+ pvr = verifyAndGetBypass(uid, packageName, attributionTag, proxyPackageName);
if (!pvr.isAttributionTagValid) {
attributionTag = null;
}
- if (attributionTag == null && isLocOrActivity
- && packageName.equals("com.google.android.gms")) {
- Slog.i("AppOpsDebug", "null tag on location or activity op "
- + code + " for " + packageName, new Exception());
- }
} catch (SecurityException e) {
Slog.e(TAG, "startOperation", e);
return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag,
@@ -4490,11 +4478,11 @@
}
/**
- * @see #verifyAndGetBypass(int, String, String, String, boolean)
+ * @see #verifyAndGetBypass(int, String, String, String)
*/
private @NonNull PackageVerificationResult verifyAndGetBypass(int uid, String packageName,
@Nullable String attributionTag) {
- return verifyAndGetBypass(uid, packageName, attributionTag, null, false);
+ return verifyAndGetBypass(uid, packageName, attributionTag, null);
}
/**
@@ -4511,7 +4499,7 @@
* attribution tag is valid
*/
private @NonNull PackageVerificationResult verifyAndGetBypass(int uid, String packageName,
- @Nullable String attributionTag, @Nullable String proxyPackageName, boolean extraLog) {
+ @Nullable String attributionTag, @Nullable String proxyPackageName) {
if (uid == Process.ROOT_UID) {
// For backwards compatibility, don't check package name for root UID.
return new PackageVerificationResult(null,
@@ -4558,20 +4546,6 @@
AndroidPackage pkg = pmInt.getPackage(packageName);
if (pkg != null) {
isAttributionTagValid = isAttributionInPackage(pkg, attributionTag);
- if (packageName.equals("com.google.android.gms") && extraLog) {
- if (isAttributionTagValid && attributionTag != null) {
- Slog.i("AppOpsDebug", "tag " + attributionTag + " found in "
- + packageName);
- } else {
- ArrayList<String> tagList = new ArrayList<>();
- for (int i = 0; i < pkg.getAttributions().size(); i++) {
- tagList.add(pkg.getAttributions().get(i).tag);
- }
- Slog.i("AppOpsDebug", "tag " + attributionTag + " missing from "
- + packageName + ", tags: " + tagList);
- }
- }
-
pkgUid = UserHandle.getUid(userId, UserHandle.getAppId(pkg.getUid()));
bypass = getBypassforPackage(pkg);
}
@@ -4755,13 +4729,22 @@
private boolean isOpRestrictedLocked(int uid, int code, String packageName,
String attributionTag, @Nullable RestrictionBypass appBypass) {
+ int restrictionSetCount = mOpGlobalRestrictions.size();
+
+ for (int i = 0; i < restrictionSetCount; i++) {
+ ClientGlobalRestrictionState restrictionState = mOpGlobalRestrictions.valueAt(i);
+ if (restrictionState.hasRestriction(code)) {
+ return true;
+ }
+ }
+
int userHandle = UserHandle.getUserId(uid);
- final int restrictionSetCount = mOpUserRestrictions.size();
+ restrictionSetCount = mOpUserRestrictions.size();
for (int i = 0; i < restrictionSetCount; i++) {
// For each client, check that the given op is not restricted, or that the given
// package is exempt from the restriction.
- ClientRestrictionState restrictionState = mOpUserRestrictions.valueAt(i);
+ ClientUserRestrictionState restrictionState = mOpUserRestrictions.valueAt(i);
if (restrictionState.hasRestriction(code, packageName, attributionTag, userHandle)) {
RestrictionBypass opBypass = opAllowSystemBypassRestriction(code);
if (opBypass != null) {
@@ -6328,10 +6311,31 @@
pw.println();
}
+ final int globalRestrictionCount = mOpGlobalRestrictions.size();
+ for (int i = 0; i < globalRestrictionCount; i++) {
+ IBinder token = mOpGlobalRestrictions.keyAt(i);
+ ClientGlobalRestrictionState restrictionState = mOpGlobalRestrictions.valueAt(i);
+ ArraySet<Integer> restrictedOps = restrictionState.mRestrictedOps;
+
+ pw.println(" Global restrictions for token " + token + ":");
+ StringBuilder restrictedOpsValue = new StringBuilder();
+ restrictedOpsValue.append("[");
+ final int restrictedOpCount = restrictedOps.size();
+ for (int j = 0; j < restrictedOpCount; j++) {
+ if (restrictedOpsValue.length() > 1) {
+ restrictedOpsValue.append(", ");
+ }
+ restrictedOpsValue.append(AppOpsManager.opToName(restrictedOps.valueAt(j)));
+ }
+ restrictedOpsValue.append("]");
+ pw.println(" Restricted ops: " + restrictedOpsValue);
+
+ }
+
final int userRestrictionCount = mOpUserRestrictions.size();
for (int i = 0; i < userRestrictionCount; i++) {
IBinder token = mOpUserRestrictions.keyAt(i);
- ClientRestrictionState restrictionState = mOpUserRestrictions.valueAt(i);
+ ClientUserRestrictionState restrictionState = mOpUserRestrictions.valueAt(i);
boolean printedTokenHeader = false;
if (dumpMode >= 0 || dumpWatchers || dumpHistory) {
@@ -6477,11 +6481,11 @@
private void setUserRestrictionNoCheck(int code, boolean restricted, IBinder token,
int userHandle, PackageTagsList excludedPackageTags) {
synchronized (AppOpsService.this) {
- ClientRestrictionState restrictionState = mOpUserRestrictions.get(token);
+ ClientUserRestrictionState restrictionState = mOpUserRestrictions.get(token);
if (restrictionState == null) {
try {
- restrictionState = new ClientRestrictionState(token);
+ restrictionState = new ClientUserRestrictionState(token);
} catch (RemoteException e) {
return;
}
@@ -6561,7 +6565,7 @@
synchronized (AppOpsService.this) {
final int tokenCount = mOpUserRestrictions.size();
for (int i = tokenCount - 1; i >= 0; i--) {
- ClientRestrictionState opRestrictions = mOpUserRestrictions.valueAt(i);
+ ClientUserRestrictionState opRestrictions = mOpUserRestrictions.valueAt(i);
opRestrictions.removeUser(userHandle);
}
removeUidsForUserLocked(userHandle);
@@ -7019,12 +7023,12 @@
return packageNames;
}
- private final class ClientRestrictionState implements DeathRecipient {
+ private final class ClientUserRestrictionState implements DeathRecipient {
private final IBinder token;
SparseArray<boolean[]> perUserRestrictions;
SparseArray<PackageTagsList> perUserExcludedPackageTags;
- public ClientRestrictionState(IBinder token)
+ ClientUserRestrictionState(IBinder token)
throws RemoteException {
token.linkToDeath(this, 0);
this.token = token;
@@ -7115,6 +7119,7 @@
if (perUserExclusions == null) {
return true;
}
+
return !perUserExclusions.contains(packageName, attributionTag);
}
@@ -7176,6 +7181,42 @@
}
}
+ private final class ClientGlobalRestrictionState implements DeathRecipient {
+ final IBinder mToken;
+ final ArraySet<Integer> mRestrictedOps = new ArraySet<>();
+
+ ClientGlobalRestrictionState(IBinder token)
+ throws RemoteException {
+ token.linkToDeath(this, 0);
+ this.mToken = token;
+ }
+
+ boolean setRestriction(int code, boolean restricted) {
+ if (restricted) {
+ return mRestrictedOps.add(code);
+ } else {
+ return mRestrictedOps.remove(code);
+ }
+ }
+
+ boolean hasRestriction(int code) {
+ return mRestrictedOps.contains(code);
+ }
+
+ boolean isDefault() {
+ return mRestrictedOps.isEmpty();
+ }
+
+ @Override
+ public void binderDied() {
+ destroy();
+ }
+
+ void destroy() {
+ mToken.unlinkToDeath(this, 0);
+ }
+ }
+
private final class AppOpsManagerInternalImpl extends AppOpsManagerInternal {
@Override public void setDeviceAndProfileOwners(SparseIntArray owners) {
synchronized (AppOpsService.this) {
@@ -7200,6 +7241,42 @@
int mode, @Nullable IAppOpsCallback callback) {
setMode(code, uid, packageName, mode, callback);
}
+
+
+ @Override
+ public void setGlobalRestriction(int code, boolean restricted, IBinder token) {
+ if (Binder.getCallingPid() != Process.myPid()) {
+ // TODO instead of this enforcement put in AppOpsManagerInternal
+ throw new SecurityException("Only the system can set global restrictions");
+ }
+
+ synchronized (AppOpsService.this) {
+ ClientGlobalRestrictionState restrictionState = mOpGlobalRestrictions.get(token);
+
+ if (restrictionState == null) {
+ try {
+ restrictionState = new ClientGlobalRestrictionState(token);
+ } catch (RemoteException e) {
+ return;
+ }
+ mOpGlobalRestrictions.put(token, restrictionState);
+ }
+
+ if (restrictionState.setRestriction(code, restricted)) {
+ mHandler.sendMessage(PooledLambda.obtainMessage(
+ AppOpsService::notifyWatchersOfChange, AppOpsService.this, code,
+ UID_ANY));
+ mHandler.sendMessage(PooledLambda.obtainMessage(
+ AppOpsService::updateStartedOpModeForUser, AppOpsService.this,
+ code, restricted, UserHandle.USER_ALL));
+ }
+
+ if (restrictionState.isDefault()) {
+ mOpGlobalRestrictions.remove(token);
+ restrictionState.destroy();
+ }
+ }
+ }
}
/**
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 17cee67..5210099 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -2585,14 +2585,6 @@
}
}
- /** @see AudioManager#adjustVolume(int, int) */
- public void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags,
- String callingPackage, String caller) {
- adjustSuggestedStreamVolume(direction, suggestedStreamType, flags, callingPackage,
- caller, Binder.getCallingUid(), callingHasAudioSettingsPermission(),
- VOL_ADJUST_NORMAL);
- }
-
public void setNavigationRepeatSoundEffectsEnabled(boolean enabled) {
mNavigationRepeatSoundEffectsEnabled = enabled;
}
@@ -2615,6 +2607,7 @@
return mHomeSoundEffectEnabled;
}
+ /** All callers come from platform apps/system server, so no attribution tag is needed */
private void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags,
String callingPackage, String caller, int uid, boolean hasModifyAudioSettings,
int keyEventMode) {
@@ -2690,7 +2683,7 @@
}
adjustStreamVolume(streamType, direction, flags, callingPackage, caller, uid,
- hasModifyAudioSettings, keyEventMode);
+ null, hasModifyAudioSettings, keyEventMode);
}
private boolean notifyExternalVolumeController(int direction) {
@@ -2708,10 +2701,16 @@
return true;
}
- /** @see AudioManager#adjustStreamVolume(int, int, int)
- * Part of service interface, check permissions here */
+ /** Retain API for unsupported app usage */
public void adjustStreamVolume(int streamType, int direction, int flags,
String callingPackage) {
+ adjustStreamVolumeWithAttribution(streamType, direction, flags, callingPackage, null);
+ }
+
+ /** @see AudioManager#adjustStreamVolume(int, int, int)
+ * Part of service interface, check permissions here */
+ public void adjustStreamVolumeWithAttribution(int streamType, int direction, int flags,
+ String callingPackage, String attributionTag) {
if ((streamType == AudioManager.STREAM_ACCESSIBILITY) && !canChangeAccessibilityVolume()) {
Log.w(TAG, "Trying to call adjustStreamVolume() for a11y without"
+ "CHANGE_ACCESSIBILITY_VOLUME / callingPackage=" + callingPackage);
@@ -2721,13 +2720,13 @@
sVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_ADJUST_STREAM_VOL, streamType,
direction/*val1*/, flags/*val2*/, callingPackage));
adjustStreamVolume(streamType, direction, flags, callingPackage, callingPackage,
- Binder.getCallingUid(), callingHasAudioSettingsPermission(),
+ Binder.getCallingUid(), attributionTag, callingHasAudioSettingsPermission(),
VOL_ADJUST_NORMAL);
}
protected void adjustStreamVolume(int streamType, int direction, int flags,
- String callingPackage, String caller, int uid, boolean hasModifyAudioSettings,
- int keyEventMode) {
+ String callingPackage, String caller, int uid, String attributionTag,
+ boolean hasModifyAudioSettings, int keyEventMode) {
if (mUseFixedVolume) {
return;
}
@@ -2792,8 +2791,8 @@
if (uid == android.os.Process.SYSTEM_UID) {
uid = UserHandle.getUid(getCurrentUserId(), UserHandle.getAppId(uid));
}
- if (mAppOps.noteOp(STREAM_VOLUME_OPS[streamTypeAlias], uid, callingPackage)
- != AppOpsManager.MODE_ALLOWED) {
+ if (mAppOps.noteOp(STREAM_VOLUME_OPS[streamTypeAlias], uid,
+ callingPackage, attributionTag, null) != AppOpsManager.MODE_ALLOWED) {
return;
}
@@ -3159,7 +3158,7 @@
/** @see AudioManager#setVolumeIndexForAttributes(attr, int, int) */
public void setVolumeIndexForAttributes(@NonNull AudioAttributes attr, int index, int flags,
- String callingPackage) {
+ String callingPackage, String attributionTag) {
enforceModifyAudioRoutingPermission();
Objects.requireNonNull(attr, "attr must not be null");
final int volumeGroup = getVolumeGroupIdForAttributes(attr);
@@ -3184,7 +3183,7 @@
continue;
}
setStreamVolume(groupedStream, index, flags, callingPackage, callingPackage,
- Binder.getCallingUid(), true /*hasModifyAudioSettings*/);
+ attributionTag, Binder.getCallingUid(), true /*hasModifyAudioSettings*/);
}
}
@@ -3226,9 +3225,15 @@
return AudioSystem.getMinVolumeIndexForAttributes(attr);
}
+ /** Retain API for unsupported app usage */
+ public void setStreamVolume(int streamType, int index, int flags, String callingPackage) {
+ setStreamVolumeWithAttribution(streamType, index, flags, callingPackage, null);
+ }
+
/** @see AudioManager#setStreamVolume(int, int, int)
* Part of service interface, check permissions here */
- public void setStreamVolume(int streamType, int index, int flags, String callingPackage) {
+ public void setStreamVolumeWithAttribution(int streamType, int index, int flags,
+ String callingPackage, String attributionTag) {
if ((streamType == AudioManager.STREAM_ACCESSIBILITY) && !canChangeAccessibilityVolume()) {
Log.w(TAG, "Trying to call setStreamVolume() for a11y without"
+ " CHANGE_ACCESSIBILITY_VOLUME callingPackage=" + callingPackage);
@@ -3254,7 +3259,7 @@
sVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_SET_STREAM_VOL, streamType,
index/*val1*/, flags/*val2*/, callingPackage));
setStreamVolume(streamType, index, flags, callingPackage, callingPackage,
- Binder.getCallingUid(), callingOrSelfHasAudioSettingsPermission());
+ attributionTag, Binder.getCallingUid(), callingOrSelfHasAudioSettingsPermission());
}
private boolean canChangeAccessibilityVolume() {
@@ -3489,7 +3494,8 @@
}
private void setStreamVolume(int streamType, int index, int flags, String callingPackage,
- String caller, int uid, boolean hasModifyAudioSettings) {
+ String caller, String attributionTag, int uid,
+ boolean hasModifyAudioSettings) {
if (DEBUG_VOL) {
Log.d(TAG, "setStreamVolume(stream=" + streamType+", index=" + index
+ ", calling=" + callingPackage + ")");
@@ -3516,8 +3522,8 @@
if (uid == android.os.Process.SYSTEM_UID) {
uid = UserHandle.getUid(getCurrentUserId(), UserHandle.getAppId(uid));
}
- if (mAppOps.noteOp(STREAM_VOLUME_OPS[streamTypeAlias], uid, callingPackage)
- != AppOpsManager.MODE_ALLOWED) {
+ if (mAppOps.noteOp(STREAM_VOLUME_OPS[streamTypeAlias], uid,
+ callingPackage, attributionTag, null) != AppOpsManager.MODE_ALLOWED) {
return;
}
@@ -3945,15 +3951,15 @@
}
private void setMasterMuteInternal(boolean mute, int flags, String callingPackage, int uid,
- int userId) {
+ int userId, String attributionTag) {
// If we are being called by the system check for user we are going to change
// so we handle user restrictions correctly.
if (uid == android.os.Process.SYSTEM_UID) {
uid = UserHandle.getUid(userId, UserHandle.getAppId(uid));
}
// If OP_AUDIO_MASTER_VOLUME is set, disallow unmuting.
- if (!mute && mAppOps.noteOp(AppOpsManager.OP_AUDIO_MASTER_VOLUME, uid, callingPackage)
- != AppOpsManager.MODE_ALLOWED) {
+ if (!mute && mAppOps.noteOp(AppOpsManager.OP_AUDIO_MASTER_VOLUME, uid,
+ callingPackage, attributionTag, null) != AppOpsManager.MODE_ALLOWED) {
return;
}
if (userId != UserHandle.getCallingUserId() &&
@@ -3995,10 +4001,12 @@
return AudioSystem.getMasterMute();
}
- public void setMasterMute(boolean mute, int flags, String callingPackage, int userId) {
+ /** @see AudioManager#setMasterMute(boolean, int) */
+ public void setMasterMute(boolean mute, int flags, String callingPackage, int userId,
+ String attributionTag) {
enforceModifyAudioRoutingPermission();
- setMasterMuteInternal(mute, flags, callingPackage, Binder.getCallingUid(),
- userId);
+ setMasterMuteInternal(mute, flags, callingPackage,
+ Binder.getCallingUid(), userId, attributionTag);
}
/** @see AudioManager#getStreamVolume(int) */
@@ -4069,7 +4077,8 @@
/** @see AudioManager#setMicrophoneMute(boolean) */
@Override
- public void setMicrophoneMute(boolean on, String callingPackage, int userId) {
+ public void setMicrophoneMute(boolean on, String callingPackage, int userId,
+ String attributionTag) {
// If we are being called by the system check for user we are going to change
// so we handle user restrictions correctly.
int uid = Binder.getCallingUid();
@@ -4084,8 +4093,8 @@
? MediaMetrics.Value.MUTE : MediaMetrics.Value.UNMUTE);
// If OP_MUTE_MICROPHONE is set, disallow unmuting.
- if (!on && mAppOps.noteOp(AppOpsManager.OP_MUTE_MICROPHONE, uid, callingPackage)
- != AppOpsManager.MODE_ALLOWED) {
+ if (!on && mAppOps.noteOp(AppOpsManager.OP_MUTE_MICROPHONE, uid,
+ callingPackage, attributionTag, null) != AppOpsManager.MODE_ALLOWED) {
mmi.set(MediaMetrics.Property.EARLY_RETURN, "disallow unmuting").record();
return;
}
@@ -4921,7 +4930,7 @@
}
adjustStreamVolume(streamType, direction, flags, packageName, packageName, uid,
- hasAudioSettingsPermission(uid, pid), VOL_ADJUST_NORMAL);
+ null, hasAudioSettingsPermission(uid, pid), VOL_ADJUST_NORMAL);
}
/** @see AudioManager#setStreamVolumeForUid(int, int, int, String, int, int, int) */
@@ -4933,7 +4942,7 @@
throw new SecurityException("Should only be called from system process");
}
- setStreamVolume(streamType, index, flags, packageName, packageName, uid,
+ setStreamVolume(streamType, index, flags, packageName, packageName, null, uid,
hasAudioSettingsPermission(uid, pid));
}
@@ -8069,8 +8078,8 @@
}
public int requestAudioFocus(AudioAttributes aa, int durationHint, IBinder cb,
- IAudioFocusDispatcher fd, String clientId, String callingPackageName, int flags,
- IAudioPolicyCallback pcb, int sdk) {
+ IAudioFocusDispatcher fd, String clientId, String callingPackageName,
+ String attributionTag, int flags, IAudioPolicyCallback pcb, int sdk) {
final int uid = Binder.getCallingUid();
MediaMetrics.Item mmi = new MediaMetrics.Item(mMetricsId + "focus")
.setUid(uid)
@@ -8122,7 +8131,7 @@
}
mmi.record();
return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd,
- clientId, callingPackageName, flags, sdk,
+ clientId, callingPackageName, attributionTag, flags, sdk,
forceFocusDuckingForAccessibility(aa, durationHint, uid), -1 /*testUid, ignored*/);
}
@@ -8139,7 +8148,7 @@
return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
}
return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd,
- clientId, callingPackageName, AudioManager.AUDIOFOCUS_FLAG_TEST,
+ clientId, callingPackageName, null, AudioManager.AUDIOFOCUS_FLAG_TEST,
sdk, false /*forceDuck*/, fakeUid);
}
diff --git a/services/core/java/com/android/server/audio/MediaFocusControl.java b/services/core/java/com/android/server/audio/MediaFocusControl.java
index e6c4abfa..6fe1295 100644
--- a/services/core/java/com/android/server/audio/MediaFocusControl.java
+++ b/services/core/java/com/android/server/audio/MediaFocusControl.java
@@ -857,6 +857,7 @@
* @param fd
* @param clientId
* @param callingPackageName
+ * @param attributionTag
* @param flags
* @param sdk
* @param forceDuck only true if
@@ -868,7 +869,7 @@
*/
protected int requestAudioFocus(@NonNull AudioAttributes aa, int focusChangeHint, IBinder cb,
IAudioFocusDispatcher fd, @NonNull String clientId, @NonNull String callingPackageName,
- int flags, int sdk, boolean forceDuck, int testUid) {
+ String attributionTag, int flags, int sdk, boolean forceDuck, int testUid) {
new MediaMetrics.Item(mMetricsId)
.setUid(Binder.getCallingUid())
.set(MediaMetrics.Property.CALLING_PACKAGE, callingPackageName)
@@ -903,7 +904,7 @@
if ((flags != AudioManager.AUDIOFOCUS_FLAG_TEST)
// note we're using the real uid for appOp evaluation
&& (mAppOps.noteOp(AppOpsManager.OP_TAKE_AUDIO_FOCUS, Binder.getCallingUid(),
- callingPackageName) != AppOpsManager.MODE_ALLOWED)) {
+ callingPackageName, attributionTag, null) != AppOpsManager.MODE_ALLOWED)) {
return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
}
diff --git a/services/core/java/com/android/server/biometrics/AuthSession.java b/services/core/java/com/android/server/biometrics/AuthSession.java
index 8f36489..bfb42f8 100644
--- a/services/core/java/com/android/server/biometrics/AuthSession.java
+++ b/services/core/java/com/android/server/biometrics/AuthSession.java
@@ -366,10 +366,9 @@
// sending the final error callback to the application.
for (BiometricSensor sensor : mPreAuthInfo.eligibleSensors) {
try {
- if (filter.apply(sensor)) {
- if (DEBUG) {
- Slog.v(TAG, "Canceling sensor: " + sensor.id);
- }
+ final boolean shouldCancel = filter.apply(sensor);
+ Slog.d(TAG, "sensorId: " + sensor.id + ", shouldCancel: " + shouldCancel);
+ if (shouldCancel) {
sensor.goToStateCancelling(mToken, mOpPackageName);
}
} catch (RemoteException e) {
@@ -542,9 +541,9 @@
if (mState != STATE_AUTH_STARTED
&& mState != STATE_AUTH_STARTED_UI_SHOWING
- && mState != STATE_AUTH_PAUSED) {
- Slog.e(TAG, "onStartFingerprint, unexpected state: " + mState);
- return;
+ && mState != STATE_AUTH_PAUSED
+ && mState != STATE_ERROR_PENDING_SYSUI) {
+ Slog.w(TAG, "onStartFingerprint, started from unexpected state: " + mState);
}
mMultiSensorState = MULTI_SENSOR_STATE_FP_SCANNING;
diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java
index e8e25f1..fed320d 100644
--- a/services/core/java/com/android/server/biometrics/BiometricService.java
+++ b/services/core/java/com/android/server/biometrics/BiometricService.java
@@ -1369,11 +1369,11 @@
/**
* handleAuthenticate() (above) which is called from BiometricPrompt determines which
* modality/modalities to start authenticating with. authenticateInternal() should only be
- * used for:
- * 1) Preparing <Biometric>Services for authentication when BiometricPrompt#authenticate is,
- * invoked, shortly after which BiometricPrompt is shown and authentication starts
- * 2) Preparing <Biometric>Services for authentication when BiometricPrompt is already shown
- * and the user has pressed "try again"
+ * used for preparing <Biometric>Services for authentication when BiometricPrompt#authenticate
+ * is invoked, shortly after which BiometricPrompt is shown and authentication starts.
+ *
+ * Note that this path is NOT invoked when the BiometricPrompt "Try again" button is pressed.
+ * In that case, see {@link #handleOnTryAgainPressed()}.
*/
private void authenticateInternal(IBinder token, long operationId, int userId,
IBiometricServiceReceiver receiver, String opPackageName, PromptInfo promptInfo,
diff --git a/services/core/java/com/android/server/biometrics/PreAuthInfo.java b/services/core/java/com/android/server/biometrics/PreAuthInfo.java
index c4bd18b..cd0ff10 100644
--- a/services/core/java/com/android/server/biometrics/PreAuthInfo.java
+++ b/services/core/java/com/android/server/biometrics/PreAuthInfo.java
@@ -408,22 +408,22 @@
public String toString() {
StringBuilder string = new StringBuilder(
"BiometricRequested: " + mBiometricRequested
- + "\nStrengthRequested: " + mBiometricStrengthRequested
- + "\nCredentialRequested: " + credentialRequested);
- string.append("\nEligible:{");
+ + ", StrengthRequested: " + mBiometricStrengthRequested
+ + ", CredentialRequested: " + credentialRequested);
+ string.append(", Eligible:{");
for (BiometricSensor sensor: eligibleSensors) {
string.append(sensor.id).append(" ");
}
string.append("}");
- string.append("\nIneligible:{");
+ string.append(", Ineligible:{");
for (Pair<BiometricSensor, Integer> ineligible : ineligibleSensors) {
string.append(ineligible.first).append(":").append(ineligible.second).append(" ");
}
string.append("}");
- string.append("\nCredentialAvailable: ").append(credentialAvailable);
- string.append("\n");
+ string.append(", CredentialAvailable: ").append(credentialAvailable);
+ string.append(", ");
return string.toString();
}
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
index 28e23e3..c8fb80a 100644
--- a/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/AcquisitionClient.java
@@ -17,7 +17,6 @@
package com.android.server.biometrics.sensors;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.content.Context;
import android.hardware.biometrics.BiometricConstants;
import android.media.AudioAttributes;
@@ -27,7 +26,6 @@
import android.os.SystemClock;
import android.os.VibrationEffect;
import android.os.Vibrator;
-import android.text.TextUtils;
import android.util.Slog;
/**
@@ -39,24 +37,18 @@
private static final String TAG = "Biometrics/AcquisitionClient";
- private static final AudioAttributes VIBRATION_SONFICATION_ATTRIBUTES =
+ private static final AudioAttributes VIBRATION_SONIFICATION_ATTRIBUTES =
new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.build();
- private final VibrationEffect mEffectTick = VibrationEffect.get(VibrationEffect.EFFECT_TICK);
- private final VibrationEffect mEffectTextureTick =
- VibrationEffect.get(VibrationEffect.EFFECT_TEXTURE_TICK);
- private final VibrationEffect mEffectClick = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
- private final VibrationEffect mEffectHeavy =
- VibrationEffect.get(VibrationEffect.EFFECT_HEAVY_CLICK);
- private final VibrationEffect mDoubleClick =
+ private static final VibrationEffect SUCCESS_VIBRATION_EFFECT =
+ VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
+ private static final VibrationEffect ERROR_VIBRATION_EFFECT =
VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK);
private final PowerManager mPowerManager;
- private final VibrationEffect mSuccessVibrationEffect;
- private final VibrationEffect mErrorVibrationEffect;
private boolean mShouldSendErrorToClient = true;
private boolean mAlreadyCancelled;
@@ -72,8 +64,6 @@
super(context, lazyDaemon, token, listener, userId, owner, cookie, sensorId, statsModality,
statsAction, statsClient);
mPowerManager = context.getSystemService(PowerManager.class);
- mSuccessVibrationEffect = mEffectClick;
- mErrorVibrationEffect = mDoubleClick;
}
@Override
@@ -192,49 +182,31 @@
mPowerManager.userActivity(now, PowerManager.USER_ACTIVITY_EVENT_TOUCH, 0);
}
- protected @Nullable VibrationEffect getSuccessVibrationEffect() {
- return mSuccessVibrationEffect;
+ protected boolean successHapticsEnabled() {
+ return true;
}
- protected @Nullable VibrationEffect getErrorVibrationEffect() {
- return mErrorVibrationEffect;
+ protected boolean errorHapticsEnabled() {
+ return true;
}
protected final void vibrateSuccess() {
+ if (!successHapticsEnabled()) {
+ return;
+ }
Vibrator vibrator = getContext().getSystemService(Vibrator.class);
- VibrationEffect effect = getSuccessVibrationEffect();
- if (vibrator != null && effect != null) {
- vibrator.vibrate(effect, VIBRATION_SONFICATION_ATTRIBUTES);
+ if (vibrator != null) {
+ vibrator.vibrate(SUCCESS_VIBRATION_EFFECT, VIBRATION_SONIFICATION_ATTRIBUTES);
}
}
protected final void vibrateError() {
+ if (!errorHapticsEnabled()) {
+ return;
+ }
Vibrator vibrator = getContext().getSystemService(Vibrator.class);
- VibrationEffect effect = getErrorVibrationEffect();
- if (vibrator != null && effect != null) {
- vibrator.vibrate(effect, VIBRATION_SONFICATION_ATTRIBUTES);
- }
- }
-
- protected final @NonNull VibrationEffect getVibration(@Nullable String effect,
- @NonNull VibrationEffect defaultEffect) {
- if (TextUtils.isEmpty(effect)) {
- return defaultEffect;
- }
-
- switch (effect.toLowerCase()) {
- case "click":
- return mEffectClick;
- case "heavy":
- return mEffectHeavy;
- case "texture_tick":
- return mEffectTextureTick;
- case "tick":
- return mEffectTick;
- case "double_click":
- return mDoubleClick;
- default:
- return defaultEffect;
+ if (vibrator != null) {
+ vibrator.vibrate(ERROR_VIBRATION_EFFECT, VIBRATION_SONIFICATION_ATTRIBUTES);
}
}
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java
index 6b9ff6f..cf545f3 100644
--- a/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/AuthenticationClient.java
@@ -22,7 +22,6 @@
import android.app.ActivityTaskManager;
import android.app.TaskStackListener;
import android.content.ComponentName;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.hardware.biometrics.BiometricAuthenticator;
@@ -31,8 +30,6 @@
import android.hardware.biometrics.BiometricsProtoEnums;
import android.os.IBinder;
import android.os.RemoteException;
-import android.os.VibrationEffect;
-import android.provider.Settings;
import android.security.KeyStore;
import android.util.EventLog;
import android.util.Slog;
@@ -59,14 +56,12 @@
private final LockoutTracker mLockoutTracker;
private final boolean mIsRestricted;
private final boolean mAllowBackgroundAuthentication;
- @NonNull private final ContentResolver mContentResolver;
protected final long mOperationId;
private long mStartTimeMs;
protected boolean mAuthAttempted;
- private final boolean mCustomHaptics;
public AuthenticationClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon,
@NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener,
@@ -85,10 +80,6 @@
mLockoutTracker = lockoutTracker;
mIsRestricted = restricted;
mAllowBackgroundAuthentication = allowBackgroundAuthentication;
-
- mContentResolver = context.getContentResolver();
- mCustomHaptics = Settings.Global.getInt(mContentResolver,
- "fp_custom_success_error", 0) == 1;
}
public @LockoutTracker.LockoutMode int handleFailedAttempt(int userId) {
@@ -342,33 +333,4 @@
public boolean interruptsPrecedingClients() {
return true;
}
-
- @Override
- protected @Nullable VibrationEffect getSuccessVibrationEffect() {
- if (!mCustomHaptics) {
- return super.getSuccessVibrationEffect();
- }
-
- if (Settings.Global.getInt(mContentResolver, "fp_success_enabled", 1) == 0) {
- return null;
- }
-
- return getVibration(Settings.Global.getString(mContentResolver,
- "fp_success_type"), super.getSuccessVibrationEffect());
- }
-
- @Override
- protected @Nullable VibrationEffect getErrorVibrationEffect() {
- if (!mCustomHaptics) {
- return super.getErrorVibrationEffect();
- }
-
- if (Settings.Global.getInt(mContentResolver, "fp_error_enabled", 1) == 0) {
- return null;
- }
-
- return getVibration(Settings.Global.getString(mContentResolver,
- "fp_error_type"), super.getErrorVibrationEffect());
-
- }
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java b/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java
index f51b1c2..e5e1385 100644
--- a/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java
+++ b/services/core/java/com/android/server/biometrics/sensors/BaseClientMonitor.java
@@ -268,9 +268,9 @@
public String toString() {
return "{[" + mSequentialId + "] "
+ this.getClass().getSimpleName()
- + ", " + getProtoEnum()
- + ", " + getOwnerString()
- + ", " + getCookie()
- + ", " + getTargetUserId() + "}";
+ + ", proto=" + getProtoEnum()
+ + ", owner=" + getOwnerString()
+ + ", cookie=" + getCookie()
+ + ", userId=" + getTargetUserId() + "}";
}
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java b/services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java
index aa50790..adda10e 100644
--- a/services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java
+++ b/services/core/java/com/android/server/biometrics/sensors/BiometricScheduler.java
@@ -110,11 +110,21 @@
@Nullable final BaseClientMonitor.Callback mClientCallback;
@OperationState int mState;
- Operation(@NonNull BaseClientMonitor clientMonitor,
- @Nullable BaseClientMonitor.Callback callback) {
- this.mClientMonitor = clientMonitor;
- this.mClientCallback = callback;
- mState = STATE_WAITING_IN_QUEUE;
+ Operation(
+ @NonNull BaseClientMonitor clientMonitor,
+ @Nullable BaseClientMonitor.Callback callback
+ ) {
+ this(clientMonitor, callback, STATE_WAITING_IN_QUEUE);
+ }
+
+ protected Operation(
+ @NonNull BaseClientMonitor clientMonitor,
+ @Nullable BaseClientMonitor.Callback callback,
+ @OperationState int state
+ ) {
+ mClientMonitor = clientMonitor;
+ mClientCallback = callback;
+ mState = state;
}
public boolean isHalOperation() {
@@ -569,6 +579,9 @@
final boolean isCorrectClient = isAuthenticationOrDetectionOperation(mCurrentOperation);
final boolean tokenMatches = mCurrentOperation.mClientMonitor.getToken() == token;
+ Slog.d(getTag(), "cancelAuthenticationOrDetection, isCorrectClient: " + isCorrectClient
+ + ", tokenMatches: " + tokenMatches);
+
if (isCorrectClient && tokenMatches) {
Slog.d(getTag(), "Cancelling: " + mCurrentOperation);
cancelInternal(mCurrentOperation);
diff --git a/services/core/java/com/android/server/biometrics/sensors/UserAwareBiometricScheduler.java b/services/core/java/com/android/server/biometrics/sensors/UserAwareBiometricScheduler.java
index f015a80..c4c98e3 100644
--- a/services/core/java/com/android/server/biometrics/sensors/UserAwareBiometricScheduler.java
+++ b/services/core/java/com/android/server/biometrics/sensors/UserAwareBiometricScheduler.java
@@ -50,16 +50,26 @@
@NonNull private final CurrentUserRetriever mCurrentUserRetriever;
@NonNull private final UserSwitchCallback mUserSwitchCallback;
- @NonNull @VisibleForTesting final ClientFinishedCallback mClientFinishedCallback;
-
@Nullable private StopUserClient<?> mStopUserClient;
- @VisibleForTesting
- class ClientFinishedCallback implements BaseClientMonitor.Callback {
+ private class ClientFinishedCallback implements BaseClientMonitor.Callback {
+ private final BaseClientMonitor mOwner;
+
+ ClientFinishedCallback(BaseClientMonitor owner) {
+ mOwner = owner;
+ }
+
@Override
public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, boolean success) {
mHandler.post(() -> {
- Slog.d(getTag(), "[Client finished] " + clientMonitor + ", success: " + success);
+ if (mOwner == clientMonitor && mOwner == mCurrentOperation.mClientMonitor) {
+ Slog.d(getTag(), "[Client finished] "
+ + clientMonitor + ", success: " + success);
+ mCurrentOperation = null;
+ } else {
+ Slog.e(getTag(), "[Client finished, but not current operation], actual: "
+ + mCurrentOperation + ", expected: " + mOwner);
+ }
startNextOperationIfIdle();
});
@@ -76,7 +86,6 @@
mCurrentUserRetriever = currentUserRetriever;
mUserSwitchCallback = userSwitchCallback;
- mClientFinishedCallback = new ClientFinishedCallback();
}
public UserAwareBiometricScheduler(@NonNull String tag,
@@ -112,17 +121,27 @@
} else if (currentUserId == UserHandle.USER_NULL) {
final BaseClientMonitor startClient =
mUserSwitchCallback.getStartUserClient(nextUserId);
+ final ClientFinishedCallback finishedCallback =
+ new ClientFinishedCallback(startClient);
+
Slog.d(getTag(), "[Starting User] " + startClient);
- startClient.start(mClientFinishedCallback);
+ startClient.start(finishedCallback);
+ mCurrentOperation = new Operation(
+ startClient, finishedCallback, Operation.STATE_STARTED);
} else {
if (mStopUserClient != null) {
Slog.d(getTag(), "[Waiting for StopUser] " + mStopUserClient);
} else {
mStopUserClient = mUserSwitchCallback
.getStopUserClient(currentUserId);
+ final ClientFinishedCallback finishedCallback =
+ new ClientFinishedCallback(mStopUserClient);
+
Slog.d(getTag(), "[Stopping User] current: " + currentUserId
+ ", next: " + nextUserId + ". " + mStopUserClient);
- mStopUserClient.start(mClientFinishedCallback);
+ mStopUserClient.start(finishedCallback);
+ mCurrentOperation = new Operation(
+ mStopUserClient, finishedCallback, Operation.STATE_STARTED);
}
}
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java
index 98f9fe1..db927b2 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceAuthenticationClient.java
@@ -33,7 +33,6 @@
import android.hardware.face.FaceManager;
import android.os.IBinder;
import android.os.RemoteException;
-import android.os.VibrationEffect;
import android.provider.Settings;
import android.util.Slog;
@@ -264,22 +263,16 @@
}
@Override
- protected @Nullable VibrationEffect getSuccessVibrationEffect() {
- if (!mCustomHaptics) {
- return super.getSuccessVibrationEffect();
- }
-
- return getVibration(Settings.Global.getString(mContentResolver,
- "face_success_type"), super.getSuccessVibrationEffect());
+ protected boolean successHapticsEnabled() {
+ return mCustomHaptics
+ ? Settings.Global.getInt(mContentResolver, "face_success_enabled", 1) == 0
+ : super.successHapticsEnabled();
}
@Override
- protected @Nullable VibrationEffect getErrorVibrationEffect() {
- if (!mCustomHaptics) {
- return super.getErrorVibrationEffect();
- }
-
- return getVibration(Settings.Global.getString(mContentResolver,
- "face_error_type"), super.getErrorVibrationEffect());
+ protected boolean errorHapticsEnabled() {
+ return mCustomHaptics
+ ? Settings.Global.getInt(mContentResolver, "face_error_enabled", 1) == 0
+ : super.errorHapticsEnabled();
}
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java
index d76036b..7cdeebb 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java
@@ -52,7 +52,13 @@
void onChallengeGenerated(int sensorId, int userId, long challenge) {
try {
- getListener().onChallengeGenerated(sensorId, userId, challenge);
+ final ClientMonitorCallbackConverter listener = getListener();
+ if (listener == null) {
+ Slog.e(TAG, "Listener is null in onChallengeGenerated");
+ mCallback.onClientFinished(this, false /* success */);
+ return;
+ }
+ listener.onChallengeGenerated(sensorId, userId, challenge);
mCallback.onClientFinished(this, true /* success */);
} catch (RemoteException e) {
Slog.e(TAG, "Unable to send challenge", e);
diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceAuthenticationClient.java
index 38e6f08..6c0adaf 100644
--- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceAuthenticationClient.java
@@ -28,7 +28,6 @@
import android.hardware.face.FaceManager;
import android.os.IBinder;
import android.os.RemoteException;
-import android.os.VibrationEffect;
import android.provider.Settings;
import android.util.Slog;
@@ -203,22 +202,16 @@
}
@Override
- protected @NonNull VibrationEffect getSuccessVibrationEffect() {
- if (!mCustomHaptics) {
- return super.getSuccessVibrationEffect();
- }
-
- return getVibration(Settings.Global.getString(mContentResolver,
- "face_success_type"), super.getSuccessVibrationEffect());
+ protected boolean successHapticsEnabled() {
+ return mCustomHaptics
+ ? Settings.Global.getInt(mContentResolver, "face_success_enabled", 1) == 0
+ : super.successHapticsEnabled();
}
@Override
- protected @NonNull VibrationEffect getErrorVibrationEffect() {
- if (!mCustomHaptics) {
- return super.getErrorVibrationEffect();
- }
-
- return getVibration(Settings.Global.getString(mContentResolver,
- "face_error_type"), super.getErrorVibrationEffect());
+ protected boolean errorHapticsEnabled() {
+ return mCustomHaptics
+ ? Settings.Global.getInt(mContentResolver, "face_error_enabled", 1) == 0
+ : super.errorHapticsEnabled();
}
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
index 70ad4c1..0e7120f 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java
@@ -498,6 +498,8 @@
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
+ Slog.d(TAG, "cancelAuthenticationFromService, sensorId: " + sensorId);
+
final ServiceProvider provider = getProviderForSensor(sensorId);
if (provider == null) {
Slog.w(TAG, "Null provider for cancelAuthenticationFromService");
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
index ba6ef29..1825eda 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java
@@ -19,6 +19,7 @@
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.TaskStackListener;
+import android.content.ContentResolver;
import android.content.Context;
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricFingerprintConstants;
@@ -29,6 +30,7 @@
import android.hardware.fingerprint.IUdfpsOverlayController;
import android.os.IBinder;
import android.os.RemoteException;
+import android.provider.Settings;
import android.util.Slog;
import com.android.server.biometrics.Utils;
@@ -55,6 +57,9 @@
@Nullable private final IUdfpsOverlayController mUdfpsOverlayController;
@Nullable private ICancellationSignal mCancellationSignal;
+ @NonNull private final ContentResolver mContentResolver;
+ private final boolean mCustomHaptics;
+
FingerprintAuthenticationClient(@NonNull Context context,
@NonNull LazyDaemon<ISession> lazyDaemon, @NonNull IBinder token,
@NonNull ClientMonitorCallbackConverter listener, int targetUserId, long operationId,
@@ -69,6 +74,10 @@
lockoutCache, allowBackgroundAuthentication);
mLockoutCache = lockoutCache;
mUdfpsOverlayController = udfpsOverlayController;
+
+ mContentResolver = context.getContentResolver();
+ mCustomHaptics = Settings.Global.getInt(mContentResolver,
+ "fp_custom_success_error", 0) == 1;
}
@NonNull
@@ -204,4 +213,18 @@
UdfpsHelper.hideUdfpsOverlay(getSensorId(), mUdfpsOverlayController);
mCallback.onClientFinished(this, false /* success */);
}
+
+ @Override
+ protected boolean successHapticsEnabled() {
+ return mCustomHaptics
+ ? Settings.Global.getInt(mContentResolver, "fp_success_enabled", 1) == 0
+ : super.successHapticsEnabled();
+ }
+
+ @Override
+ protected boolean errorHapticsEnabled() {
+ return mCustomHaptics
+ ? Settings.Global.getInt(mContentResolver, "fp_error_enabled", 1) == 0
+ : super.errorHapticsEnabled();
+ }
}
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java
index 6d01481..4f54f8a 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java
@@ -53,7 +53,13 @@
void onChallengeGenerated(int sensorId, int userId, long challenge) {
try {
- getListener().onChallengeGenerated(sensorId, userId, challenge);
+ final ClientMonitorCallbackConverter listener = getListener();
+ if (listener == null) {
+ Slog.e(TAG, "Listener is null in onChallengeGenerated");
+ mCallback.onClientFinished(this, false /* success */);
+ return;
+ }
+ listener.onChallengeGenerated(sensorId, userId, challenge);
mCallback.onClientFinished(this, true /* success */);
} catch (RemoteException e) {
Slog.e(TAG, "Unable to send challenge", e);
diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
index 102aecc..7daea88 100644
--- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
+++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java
@@ -632,6 +632,7 @@
@Override
public void cancelAuthentication(int sensorId, @NonNull IBinder token) {
+ Slog.d(TAG, "cancelAuthentication, sensorId: " + sensorId);
mHandler.post(() -> mScheduler.cancelAuthenticationOrDetection(token));
}
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 182a038..0decd33 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -1528,8 +1528,14 @@
if (requestedModeId == 0 && requestedRefreshRate != 0) {
// Scan supported modes returned by display.getInfo() to find a mode with the same
// size as the default display mode but with the specified refresh rate instead.
- requestedModeId = display.getDisplayInfoLocked().findDefaultModeByRefreshRate(
- requestedRefreshRate).getModeId();
+ Display.Mode mode = display.getDisplayInfoLocked().findDefaultModeByRefreshRate(
+ requestedRefreshRate);
+ if (mode != null) {
+ requestedModeId = mode.getModeId();
+ } else {
+ Slog.e(TAG, "Couldn't find a mode for the requestedRefreshRate: "
+ + requestedRefreshRate + " on Display: " + displayId);
+ }
}
mDisplayModeDirector.getAppRequestObserver().setAppRequest(
displayId, requestedModeId, requestedMaxRefreshRate);
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
index 505e743..63366f3 100755
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java
@@ -22,7 +22,9 @@
import android.hardware.hdmi.HdmiDeviceInfo;
import android.hardware.hdmi.IHdmiControlCallback;
import android.hardware.input.InputManager;
+import android.hardware.tv.cec.V1_0.Result;
import android.hardware.tv.cec.V1_0.SendMessageResult;
+import android.media.AudioManager;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
@@ -284,7 +286,7 @@
case Constants.MESSAGE_GIVE_OSD_NAME:
return handleGiveOsdName(message);
case Constants.MESSAGE_GIVE_DEVICE_VENDOR_ID:
- return handleGiveDeviceVendorId(null);
+ return handleGiveDeviceVendorId(message);
case Constants.MESSAGE_CEC_VERSION:
return handleCecVersion();
case Constants.MESSAGE_GET_CEC_VERSION:
@@ -392,12 +394,16 @@
@ServiceThreadOnly
@Constants.HandleMessageResult
- protected int handleGiveDeviceVendorId(@Nullable SendMessageCallback callback) {
+ protected int handleGiveDeviceVendorId(HdmiCecMessage message) {
assertRunOnServiceThread();
int vendorId = mService.getVendorId();
- HdmiCecMessage cecMessage =
- HdmiCecMessageBuilder.buildDeviceVendorIdCommand(mAddress, vendorId);
- mService.sendCecCommand(cecMessage, callback);
+ if (vendorId == Result.FAILURE_UNKNOWN) {
+ mService.maySendFeatureAbortCommand(message, Constants.ABORT_UNABLE_TO_DETERMINE);
+ } else {
+ HdmiCecMessage cecMessage =
+ HdmiCecMessageBuilder.buildDeviceVendorIdCommand(mAddress, vendorId);
+ mService.sendCecCommand(cecMessage);
+ }
return Constants.HANDLED;
}
@@ -685,6 +691,9 @@
Message.obtain(mHandler, MSG_USER_CONTROL_RELEASE_TIMEOUT),
FOLLOWER_SAFETY_TIMEOUT);
return Constants.HANDLED;
+ } else if (params.length > 0) {
+ // Handle CEC UI commands that are not mapped to an Android keycode
+ return handleUnmappedCecKeycode(params[0]);
}
return Constants.ABORT_INVALID_OPERAND;
@@ -692,6 +701,21 @@
@ServiceThreadOnly
@Constants.HandleMessageResult
+ protected int handleUnmappedCecKeycode(int cecKeycode) {
+ if (cecKeycode == HdmiCecKeycode.CEC_KEYCODE_MUTE_FUNCTION) {
+ mService.getAudioManager().adjustStreamVolume(AudioManager.STREAM_MUSIC,
+ AudioManager.ADJUST_MUTE, AudioManager.FLAG_SHOW_UI);
+ return Constants.HANDLED;
+ } else if (cecKeycode == HdmiCecKeycode.CEC_KEYCODE_RESTORE_VOLUME_FUNCTION) {
+ mService.getAudioManager().adjustStreamVolume(AudioManager.STREAM_MUSIC,
+ AudioManager.ADJUST_UNMUTE, AudioManager.FLAG_SHOW_UI);
+ return Constants.HANDLED;
+ }
+ return Constants.ABORT_INVALID_OPERAND;
+ }
+
+ @ServiceThreadOnly
+ @Constants.HandleMessageResult
protected int handleUserControlReleased() {
assertRunOnServiceThread();
mHandler.removeMessages(MSG_USER_CONTROL_RELEASE_TIMEOUT);
diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java
index d04cb6f..56b77b5 100644
--- a/services/core/java/com/android/server/pm/AppsFilter.java
+++ b/services/core/java/com/android/server/pm/AppsFilter.java
@@ -17,8 +17,6 @@
package com.android.server.pm;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
-import static android.os.UserHandle.USER_ALL;
-import static android.os.UserHandle.USER_NULL;
import static android.provider.DeviceConfig.NAMESPACE_PACKAGE_MANAGER_SERVICE;
import static com.android.internal.annotations.VisibleForTesting.Visibility.PRIVATE;
@@ -687,7 +685,7 @@
synchronized (mCacheLock) {
if (mShouldFilterCache != null) {
updateShouldFilterCacheForPackage(mShouldFilterCache, null, newPkgSetting,
- settings, users, USER_ALL, settings.size());
+ settings, users, settings.size());
if (additionalChangedPackages != null) {
for (int index = 0; index < additionalChangedPackages.size(); index++) {
String changedPackage = additionalChangedPackages.valueAt(index);
@@ -700,8 +698,7 @@
}
updateShouldFilterCacheForPackage(mShouldFilterCache, null,
- changedPkgSetting, settings, users, USER_ALL,
- settings.size());
+ changedPkgSetting, settings, users, settings.size());
}
}
} // else, rebuild entire cache when system is ready
@@ -833,57 +830,24 @@
}
}
}
- private void updateEntireShouldFilterCache() {
- updateEntireShouldFilterCache(USER_ALL);
- }
- private void updateEntireShouldFilterCache(int subjectUserId) {
+ private void updateEntireShouldFilterCache() {
mStateProvider.runWithState((settings, users) -> {
- int userId = USER_NULL;
- for (int u = 0; u < users.length; u++) {
- if (subjectUserId == users[u].id) {
- userId = subjectUserId;
- break;
- }
- }
- if (userId == USER_NULL) {
- Slog.e(TAG, "We encountered a new user that isn't a member of known users, "
- + "updating the whole cache");
- userId = USER_ALL;
- }
WatchedSparseBooleanMatrix cache =
- updateEntireShouldFilterCacheInner(settings, users, userId);
+ updateEntireShouldFilterCacheInner(settings, users);
synchronized (mCacheLock) {
- if (userId != USER_ALL) {
- // if we're only updating a single user id, we need to copy over the prior
- // cached values for the other users.
- int[] uids = mShouldFilterCache.keys();
- for (int i = 0; i < uids.length; i++) {
- int uid1 = uids[i];
- if (UserHandle.getUserId(uid1) == userId) {
- continue;
- }
- for (int j = 0; j < uids.length; j++) {
- int uid2 = uids[j];
- if (UserHandle.getUserId(uid2) == userId) {
- continue;
- }
- cache.put(uid1, uid2, mShouldFilterCache.get(uid1, uid2));
- }
- }
- }
mShouldFilterCache = cache;
}
});
}
private WatchedSparseBooleanMatrix updateEntireShouldFilterCacheInner(
- ArrayMap<String, PackageSetting> settings, UserInfo[] users, int subjectUserId) {
+ ArrayMap<String, PackageSetting> settings, UserInfo[] users) {
WatchedSparseBooleanMatrix cache =
new WatchedSparseBooleanMatrix(users.length * settings.size());
for (int i = settings.size() - 1; i >= 0; i--) {
updateShouldFilterCacheForPackage(cache,
- null /*skipPackage*/, settings.valueAt(i), settings, users, subjectUserId, i);
+ null /*skipPackage*/, settings.valueAt(i), settings, users, i);
}
return cache;
}
@@ -904,8 +868,8 @@
packagesCache.put(settings.keyAt(i), pkg);
}
});
- WatchedSparseBooleanMatrix cache = updateEntireShouldFilterCacheInner(
- settingsCopy, usersRef[0], USER_ALL);
+ WatchedSparseBooleanMatrix cache =
+ updateEntireShouldFilterCacheInner(settingsCopy, usersRef[0]);
boolean[] changed = new boolean[1];
// We have a cache, let's make sure the world hasn't changed out from under us.
mStateProvider.runWithState((settings, users) -> {
@@ -935,10 +899,10 @@
});
}
- public void onUserCreated(int newUserId) {
+ public void onUsersChanged() {
synchronized (mCacheLock) {
if (mShouldFilterCache != null) {
- updateEntireShouldFilterCache(newUserId);
+ updateEntireShouldFilterCache();
onChanged();
}
}
@@ -949,7 +913,7 @@
if (mShouldFilterCache != null) {
mStateProvider.runWithState((settings, users) -> {
updateShouldFilterCacheForPackage(mShouldFilterCache, null /* skipPackage */,
- settings.get(packageName), settings, users, USER_ALL,
+ settings.get(packageName), settings, users,
settings.size() /*maxIndex*/);
});
}
@@ -958,7 +922,7 @@
private void updateShouldFilterCacheForPackage(WatchedSparseBooleanMatrix cache,
@Nullable String skipPackageName, PackageSetting subjectSetting, ArrayMap<String,
- PackageSetting> allSettings, UserInfo[] allUsers, int subjectUserId, int maxIndex) {
+ PackageSetting> allSettings, UserInfo[] allUsers, int maxIndex) {
for (int i = Math.min(maxIndex, allSettings.size() - 1); i >= 0; i--) {
PackageSetting otherSetting = allSettings.valueAt(i);
if (subjectSetting.appId == otherSetting.appId) {
@@ -968,34 +932,25 @@
if (subjectSetting.name == skipPackageName || otherSetting.name == skipPackageName) {
continue;
}
- if (subjectUserId == USER_ALL) {
- for (int su = 0; su < allUsers.length; su++) {
- updateShouldFilterCacheForUser(cache, subjectSetting, allUsers, otherSetting,
- allUsers[su].id);
+ final int userCount = allUsers.length;
+ final int appxUidCount = userCount * allSettings.size();
+ for (int su = 0; su < userCount; su++) {
+ int subjectUser = allUsers[su].id;
+ for (int ou = 0; ou < userCount; ou++) {
+ int otherUser = allUsers[ou].id;
+ int subjectUid = UserHandle.getUid(subjectUser, subjectSetting.appId);
+ int otherUid = UserHandle.getUid(otherUser, otherSetting.appId);
+ cache.put(subjectUid, otherUid,
+ shouldFilterApplicationInternal(
+ subjectUid, subjectSetting, otherSetting, otherUser));
+ cache.put(otherUid, subjectUid,
+ shouldFilterApplicationInternal(
+ otherUid, otherSetting, subjectSetting, subjectUser));
}
- } else {
- updateShouldFilterCacheForUser(cache, subjectSetting, allUsers, otherSetting,
- subjectUserId);
}
}
}
- private void updateShouldFilterCacheForUser(WatchedSparseBooleanMatrix cache,
- PackageSetting subjectSetting, UserInfo[] allUsers, PackageSetting otherSetting,
- int subjectUserId) {
- for (int ou = 0; ou < allUsers.length; ou++) {
- int otherUser = allUsers[ou].id;
- int subjectUid = UserHandle.getUid(subjectUserId, subjectSetting.appId);
- int otherUid = UserHandle.getUid(otherUser, otherSetting.appId);
- cache.put(subjectUid, otherUid,
- shouldFilterApplicationInternal(
- subjectUid, subjectSetting, otherSetting, otherUser));
- cache.put(otherUid, subjectUid,
- shouldFilterApplicationInternal(
- otherUid, otherSetting, subjectSetting, subjectUserId));
- }
- }
-
private static boolean isSystemSigned(@NonNull SigningDetails sysSigningDetails,
PackageSetting pkgSetting) {
return pkgSetting.isSystem()
@@ -1190,7 +1145,7 @@
continue;
}
updateShouldFilterCacheForPackage(mShouldFilterCache, setting.name,
- siblingSetting, settings, users, USER_ALL, settings.size());
+ siblingSetting, settings, users, settings.size());
}
}
@@ -1207,7 +1162,7 @@
}
updateShouldFilterCacheForPackage(mShouldFilterCache, null,
- changedPkgSetting, settings, users, USER_ALL, settings.size());
+ changedPkgSetting, settings, users, settings.size());
}
}
}
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 3b2517e..fe419a6 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -990,7 +990,8 @@
SessionInfo info =
session.generateInfoForCaller(false /*withIcon*/, Process.SYSTEM_UID);
if (Objects.equals(info.getInstallerPackageName(), installerPackageName)
- && session.userId == userId && !session.hasParentSessionId()) {
+ && session.userId == userId && !session.hasParentSessionId()
+ && isCallingUidOwner(session)) {
result.add(info);
}
}
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 5917415..8090fa7 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -10134,7 +10134,22 @@
if (getInstantAppPackageName(getCallingUid()) != null) {
return EmptyArray.STRING;
}
- return mPermissionManager.getAppOpPermissionPackages(permissionName);
+ final int callingUid = Binder.getCallingUid();
+ final int callingUserId = UserHandle.getUserId(callingUid);
+
+ final ArraySet<String> packageNames = new ArraySet(
+ mPermissionManager.getAppOpPermissionPackages(permissionName));
+ synchronized (mLock) {
+ for (int i = packageNames.size() - 1; i >= 0; i--) {
+ final String packageName = packageNames.valueAt(i);
+ if (!shouldFilterApplicationLocked(mSettings.getPackageLPr(packageName),
+ callingUid, callingUserId)) {
+ continue;
+ }
+ packageNames.removeAt(i);
+ }
+ }
+ return packageNames.toArray(new String[packageNames.size()]);
}
@Override
@@ -21479,7 +21494,7 @@
// user handle installed state
int[] allUsers;
final int freezeUser;
- final SparseArray<Pair<Integer, String>> enabledStateAndCallerPerUser;
+ final SparseArray<TempUserState> priorUserStates;
/** enabled state of the uninstalled application */
synchronized (mLock) {
uninstalledPs = mSettings.getPackageLPr(packageName);
@@ -21530,16 +21545,16 @@
// We're downgrading a system app, which will apply to all users, so
// freeze them all during the downgrade
freezeUser = UserHandle.USER_ALL;
- enabledStateAndCallerPerUser = new SparseArray<>();
+ priorUserStates = new SparseArray<>();
for (int i = 0; i < allUsers.length; i++) {
PackageUserState userState = uninstalledPs.readUserState(allUsers[i]);
- Pair<Integer, String> enabledStateAndCaller =
- new Pair<>(userState.enabled, userState.lastDisableAppCaller);
- enabledStateAndCallerPerUser.put(allUsers[i], enabledStateAndCaller);
+ priorUserStates.put(allUsers[i],
+ new TempUserState(userState.enabled, userState.lastDisableAppCaller,
+ userState.installed));
}
} else {
freezeUser = removeUser;
- enabledStateAndCallerPerUser = null;
+ priorUserStates = null;
}
}
@@ -21576,6 +21591,30 @@
if (info.args != null) {
info.args.doPostDeleteLI(true);
}
+
+ boolean reEnableStub = false;
+
+ if (priorUserStates != null) {
+ synchronized (mLock) {
+ for (int i = 0; i < allUsers.length; i++) {
+ TempUserState priorUserState = priorUserStates.get(allUsers[i]);
+ int enabledState = priorUserState.enabledState;
+ PackageSetting pkgSetting = getPackageSetting(packageName);
+ pkgSetting.setEnabled(enabledState, allUsers[i],
+ priorUserState.lastDisableAppCaller);
+
+ AndroidPackage aPkg = pkgSetting.getPkg();
+ boolean pkgEnabled = aPkg != null && aPkg.isEnabled();
+ if (!reEnableStub && priorUserState.installed
+ && ((enabledState == COMPONENT_ENABLED_STATE_DEFAULT && pkgEnabled)
+ || enabledState == COMPONENT_ENABLED_STATE_ENABLED)) {
+ reEnableStub = true;
+ }
+ }
+ mSettings.writeAllUsersPackageRestrictionsLPr();
+ }
+ }
+
final AndroidPackage stubPkg =
(disabledSystemPs == null) ? null : disabledSystemPs.pkg;
if (stubPkg != null && stubPkg.isStub()) {
@@ -21585,19 +21624,7 @@
}
if (stubPs != null) {
- boolean enable = false;
- for (int aUserId : allUsers) {
- if (stubPs.getInstalled(aUserId)) {
- int enabled = stubPs.getEnabled(aUserId);
- if (enabled == COMPONENT_ENABLED_STATE_DEFAULT
- || enabled == COMPONENT_ENABLED_STATE_ENABLED) {
- enable = true;
- break;
- }
- }
- }
-
- if (enable) {
+ if (reEnableStub) {
if (DEBUG_COMPRESSION) {
Slog.i(TAG, "Enabling system stub after removal; pkg: "
+ stubPkg.getPackageName());
@@ -21609,19 +21636,6 @@
}
}
}
- if (enabledStateAndCallerPerUser != null) {
- synchronized (mLock) {
- for (int i = 0; i < allUsers.length; i++) {
- Pair<Integer, String> enabledStateAndCaller =
- enabledStateAndCallerPerUser.get(allUsers[i]);
- getPackageSetting(packageName)
- .setEnabled(enabledStateAndCaller.first,
- allUsers[i],
- enabledStateAndCaller.second);
- }
- mSettings.writeAllUsersPackageRestrictionsLPr();
- }
- }
}
return res ? PackageManager.DELETE_SUCCEEDED : PackageManager.DELETE_FAILED_INTERNAL_ERROR;
@@ -26479,7 +26493,7 @@
synchronized (mLock) {
scheduleWritePackageRestrictionsLocked(userId);
scheduleWritePackageListLocked(userId);
- mAppsFilter.onUserCreated(userId);
+ mAppsFilter.onUsersChanged();
}
}
@@ -28994,6 +29008,20 @@
PendingIntent.FLAG_IMMUTABLE, null /* bOptions */, userId);
return new IntentSender(target);
}
+
+ private static class TempUserState {
+ public final int enabledState;
+ @Nullable
+ public final String lastDisableAppCaller;
+ public final boolean installed;
+
+ private TempUserState(int enabledState, @Nullable String lastDisableAppCaller,
+ boolean installed) {
+ this.enabledState = enabledState;
+ this.lastDisableAppCaller = lastDisableAppCaller;
+ this.installed = installed;
+ }
+ }
}
interface PackageSender {
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index d4feb3a..89f2bfe 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -4814,8 +4814,15 @@
final int userSerial = userInfo.serialNumber;
// Migrate only if build fingerprints mismatch
boolean migrateAppsData = !Build.FINGERPRINT.equals(userInfo.lastLoggedInFingerprint);
+
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
+ t.traceBegin("prepareUserData-" + userId);
mUserDataPreparer.prepareUserData(userId, userSerial, StorageManager.FLAG_STORAGE_CE);
+ t.traceEnd();
+
+ t.traceBegin("reconcileAppsData-" + userId);
mPm.reconcileAppsData(userId, StorageManager.FLAG_STORAGE_CE, migrateAppsData);
+ t.traceEnd();
}
/**
diff --git a/services/core/java/com/android/server/policy/AppOpsPolicy.java b/services/core/java/com/android/server/policy/AppOpsPolicy.java
index 563acf7..a389f40 100644
--- a/services/core/java/com/android/server/policy/AppOpsPolicy.java
+++ b/services/core/java/com/android/server/policy/AppOpsPolicy.java
@@ -39,7 +39,6 @@
import android.service.voice.VoiceInteractionManagerInternal;
import android.service.voice.VoiceInteractionManagerInternal.HotwordDetectionServiceIdentity;
import android.text.TextUtils;
-import android.util.ArraySet;
import android.util.Log;
import android.util.SparseArray;
@@ -69,10 +68,6 @@
"android:activity_recognition_allow_listed_tags";
private static final String ACTIVITY_RECOGNITION_TAGS_SEPARATOR = ";";
- private static final ArraySet<String> sExpectedTags = new ArraySet<>(new String[] {
- "awareness_provider", "activity_recognition_provider", "network_location_provider",
- "network_location_calibration", "fused_location_provider", "geofencer_provider"});
-
@NonNull
private final Object mLock = new Object();
@@ -269,32 +264,14 @@
if (resolvedCode != code) {
if (isDatasourceAttributionTag(uid, packageName, attributionTag,
mLocationTags)) {
- if (packageName.equals("com.google.android.gms")
- && !sExpectedTags.contains(attributionTag)) {
- Log.i("AppOpsDebugRemapping", "remapping " + packageName + " location "
- + "for tag " + attributionTag);
- }
return resolvedCode;
- } else if (packageName.equals("com.google.android.gms")
- && sExpectedTags.contains(attributionTag)) {
- Log.i("AppOpsDebugRemapping", "NOT remapping " + packageName + " code "
- + code + " for tag " + attributionTag);
}
} else {
resolvedCode = resolveArOp(code);
if (resolvedCode != code) {
if (isDatasourceAttributionTag(uid, packageName, attributionTag,
mActivityRecognitionTags)) {
- if (packageName.equals("com.google.android.gms")
- && !sExpectedTags.contains(attributionTag)) {
- Log.i("AppOpsDebugRemapping", "remapping " + packageName + " "
- + "activity recognition for tag " + attributionTag);
- }
return resolvedCode;
- } else if (packageName.equals("com.google.android.gms")
- && sExpectedTags.contains(attributionTag)) {
- Log.i("AppOpsDebugRemapping", "NOT remapping " + packageName
- + " code " + code + " for tag " + attributionTag);
}
}
}
diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java
index 89d5415..ad43514 100644
--- a/services/core/java/com/android/server/policy/PermissionPolicyService.java
+++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java
@@ -71,6 +71,7 @@
import com.android.server.pm.parsing.pkg.AndroidPackage;
import com.android.server.pm.permission.PermissionManagerServiceInternal;
import com.android.server.policy.PermissionPolicyInternal.OnInitializedCallback;
+import com.android.server.utils.TimingsTraceAndSlog;
import java.util.ArrayList;
import java.util.Collections;
@@ -365,7 +366,11 @@
return;
}
+
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
+ t.traceBegin("Permission_grant_default_permissions-" + userId);
grantOrUpgradeDefaultRuntimePermissionsIfNeeded(userId);
+ t.traceEnd();
final OnInitializedCallback callback;
@@ -375,11 +380,15 @@
}
// Force synchronization as permissions might have changed
+ t.traceBegin("Permission_synchronize_permissions-" + userId);
synchronizePermissionsAndAppOpsForUser(userId);
+ t.traceEnd();
// Tell observers we are initialized for this user.
if (callback != null) {
+ t.traceBegin("Permission_onInitialized-" + userId);
callback.onInitialized(userId);
+ t.traceEnd();
}
}
@@ -394,6 +403,7 @@
private void grantOrUpgradeDefaultRuntimePermissionsIfNeeded(@UserIdInt int userId) {
if (DEBUG) Slog.i(LOG_TAG, "grantOrUpgradeDefaultPermsIfNeeded(" + userId + ")");
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
final PackageManagerInternal packageManagerInternal =
LocalServices.getService(PackageManagerInternal.class);
@@ -426,9 +436,12 @@
}
});
try {
+ t.traceBegin("Permission_callback_waiting-" + userId);
future.get();
} catch (InterruptedException | ExecutionException e) {
throw new IllegalStateException(e);
+ } finally {
+ t.traceEnd();
}
permissionControllerManager.updateUserSensitive();
@@ -494,14 +507,19 @@
*/
private void synchronizePermissionsAndAppOpsForUser(@UserIdInt int userId) {
if (DEBUG) Slog.i(LOG_TAG, "synchronizePermissionsAndAppOpsForUser(" + userId + ")");
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog();
final PackageManagerInternal packageManagerInternal = LocalServices.getService(
PackageManagerInternal.class);
final PermissionToOpSynchroniser synchronizer = new PermissionToOpSynchroniser(
getUserContext(getContext(), UserHandle.of(userId)));
+ t.traceBegin("Permission_synchronize_addPackages-" + userId);
packageManagerInternal.forEachPackage(
(pkg) -> synchronizer.addPackage(pkg.getPackageName()));
+ t.traceEnd();
+ t.traceBegin("Permission_syncPackages-" + userId);
synchronizer.syncPackages();
+ t.traceEnd();
}
private void resetAppOpPermissionsIfNotRequestedForUidAsync(int uid) {
diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
index 7713320..2c56359 100644
--- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
+++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java
@@ -1816,26 +1816,26 @@
@Override
public void onUnlockUser(final int userId) {
- TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG);
- t.traceBegin("on-unlock-user-" + userId);
- try {
- synchronized (mLock) {
- if (mCurrentUserId == userId) {
- if (mWaitingForUnlock) {
- // the desired wallpaper is not direct-boot aware, load it now
- final WallpaperData systemWallpaper =
- getWallpaperSafeLocked(userId, FLAG_SYSTEM);
- switchWallpaper(systemWallpaper, null);
- notifyCallbacksLocked(systemWallpaper);
- }
+ synchronized (mLock) {
+ if (mCurrentUserId == userId) {
+ if (mWaitingForUnlock) {
+ // the desired wallpaper is not direct-boot aware, load it now
+ final WallpaperData systemWallpaper =
+ getWallpaperSafeLocked(userId, FLAG_SYSTEM);
+ switchWallpaper(systemWallpaper, null);
+ notifyCallbacksLocked(systemWallpaper);
+ }
- // Make sure that the SELinux labeling of all the relevant files is correct.
- // This corrects for mislabeling bugs that might have arisen from move-to
- // operations involving the wallpaper files. This isn't timing-critical,
- // so we do it in the background to avoid holding up the user unlock operation.
- if (!mUserRestorecon.get(userId)) {
- mUserRestorecon.put(userId, true);
- Runnable relabeler = () -> {
+ // Make sure that the SELinux labeling of all the relevant files is correct.
+ // This corrects for mislabeling bugs that might have arisen from move-to
+ // operations involving the wallpaper files. This isn't timing-critical,
+ // so we do it in the background to avoid holding up the user unlock operation.
+ if (!mUserRestorecon.get(userId)) {
+ mUserRestorecon.put(userId, true);
+ Runnable relabeler = () -> {
+ final TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG);
+ t.traceBegin("Wallpaper_selinux_restorecon-" + userId);
+ try {
final File wallpaperDir = getWallpaperDir(userId);
for (String filename : sPerUserFiles) {
File f = new File(wallpaperDir, filename);
@@ -1843,13 +1843,13 @@
SELinux.restorecon(f);
}
}
- };
- BackgroundThread.getHandler().post(relabeler);
- }
+ } finally {
+ t.traceEnd();
+ }
+ };
+ BackgroundThread.getHandler().post(relabeler);
}
}
- } finally {
- t.traceEnd();
}
}
@@ -1868,7 +1868,7 @@
void switchUser(int userId, IRemoteCallback reply) {
TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG);
- t.traceBegin("switch-user-" + userId);
+ t.traceBegin("Wallpaper_switch-user-" + userId);
try {
final WallpaperData systemWallpaper;
final WallpaperData lockWallpaper;
diff --git a/services/core/java/com/android/server/wm/ActivityStartController.java b/services/core/java/com/android/server/wm/ActivityStartController.java
index 7257478..b6f2f24 100644
--- a/services/core/java/com/android/server/wm/ActivityStartController.java
+++ b/services/core/java/com/android/server/wm/ActivityStartController.java
@@ -16,6 +16,7 @@
package com.android.server.wm;
+import static android.app.ActivityManager.START_CANCELED;
import static android.app.ActivityManager.START_SUCCESS;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
@@ -390,15 +391,18 @@
0 /* startFlags */, null /* profilerInfo */, userId, filterCallingUid);
aInfo = mService.mAmInternal.getActivityInfoForUser(aInfo, userId);
- // Carefully collect grants without holding lock
if (aInfo != null) {
- intentGrants = mSupervisor.mService.mUgmInternal
- .checkGrantUriPermissionFromIntent(intent, filterCallingUid,
- aInfo.applicationInfo.packageName,
- UserHandle.getUserId(aInfo.applicationInfo.uid));
- }
+ try {
+ // Carefully collect grants without holding lock
+ intentGrants = mSupervisor.mService.mUgmInternal
+ .checkGrantUriPermissionFromIntent(intent, filterCallingUid,
+ aInfo.applicationInfo.packageName,
+ UserHandle.getUserId(aInfo.applicationInfo.uid));
+ } catch (SecurityException e) {
+ Slog.d(TAG, "Not allowed to start activity since no uri permission.");
+ return START_CANCELED;
+ }
- if (aInfo != null) {
if ((aInfo.applicationInfo.privateFlags
& ApplicationInfo.PRIVATE_FLAG_CANT_SAVE_STATE) != 0) {
throw new IllegalArgumentException(
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 4045e87..a670631 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -4172,21 +4172,21 @@
/**
* Update the asset configuration and increase the assets sequence number.
- * @param processes the processes that needs to update the asset configuration
+ * @param processes the processes that needs to update the asset configuration, if none
+ * updates the global configuration for all processes.
*/
- public void updateAssetConfiguration(List<WindowProcessController> processes,
- boolean updateFrameworkRes) {
+ public void updateAssetConfiguration(List<WindowProcessController> processes) {
synchronized (mGlobalLock) {
final int assetSeq = increaseAssetConfigurationSeq();
- if (updateFrameworkRes) {
+ // Update the global configuration if the no target processes
+ if (processes == null) {
Configuration newConfig = new Configuration();
newConfig.assetsSeq = assetSeq;
updateConfiguration(newConfig);
+ return;
}
- // Always update the override of every process so the asset sequence of the process is
- // always greater than or equal to the global configuration.
for (int i = processes.size() - 1; i >= 0; i--) {
final WindowProcessController wpc = processes.get(i);
wpc.updateAssetConfiguration(assetSeq);
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
index 8a8d3ae..5b64546 100644
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -20,6 +20,7 @@
import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
+import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
import static android.content.res.Configuration.UI_MODE_TYPE_CAR;
@@ -1416,7 +1417,7 @@
/**
* @return true if the system bars are forced to stay visible
*/
- public boolean areSystemBarsForcedShownLw(WindowState windowState) {
+ public boolean areSystemBarsForcedShownLw() {
return mForceShowSystemBars;
}
@@ -2631,8 +2632,6 @@
final WindowState win = winCandidate;
mSystemUiControllingWindow = win;
- mDisplayContent.getInsetsPolicy().updateBarControlTarget(win);
-
final boolean inSplitScreen =
mService.mRoot.getDefaultTaskDisplayArea().isSplitScreenModeActivated();
if (inSplitScreen) {
@@ -2779,19 +2778,22 @@
}
private int updateSystemBarsLw(WindowState win, int disableFlags) {
- final boolean dockedRootTaskVisible = mDisplayContent.getDefaultTaskDisplayArea()
- .isRootTaskVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
- final boolean resizing = mDisplayContent.getDockedDividerController().isResizing();
+ final TaskDisplayArea defaultTaskDisplayArea = mDisplayContent.getDefaultTaskDisplayArea();
+ final boolean multiWindowTaskVisible =
+ defaultTaskDisplayArea.isRootTaskVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY)
+ || defaultTaskDisplayArea.isRootTaskVisible(WINDOWING_MODE_MULTI_WINDOW);
+ final boolean freeformRootTaskVisible =
+ defaultTaskDisplayArea.isRootTaskVisible(WINDOWING_MODE_FREEFORM);
- // We need to force system bars when the docked root task is visible, when the freeform
- // root task is focused but also when we are resizing for the transitions when docked
- // root task visibility changes.
- mForceShowSystemBars = dockedRootTaskVisible || win.inFreeformWindowingMode() || resizing;
+ // We need to force showing system bars when the multi-window or freeform root task is
+ // visible.
+ mForceShowSystemBars = multiWindowTaskVisible || freeformRootTaskVisible;
+ mDisplayContent.getInsetsPolicy().updateBarControlTarget(win);
int appearance = APPEARANCE_OPAQUE_NAVIGATION_BARS | APPEARANCE_OPAQUE_STATUS_BARS;
-
appearance = configureStatusBarOpacity(appearance);
- appearance = configureNavBarOpacity(appearance, dockedRootTaskVisible, resizing);
+ appearance = configureNavBarOpacity(appearance, multiWindowTaskVisible,
+ freeformRootTaskVisible);
final boolean requestHideNavBar = !win.getRequestedVisibility(ITYPE_NAVIGATION_BAR);
final long now = SystemClock.uptimeMillis();
@@ -2910,10 +2912,8 @@
* @return the current visibility flags with the nav-bar opacity related flags toggled based
* on the nav bar opacity rules chosen by {@link #mNavBarOpacityMode}.
*/
- private int configureNavBarOpacity(int appearance, boolean dockedRootTaskVisible,
- boolean isDockedDividerResizing) {
- final boolean freeformRootTaskVisible = mDisplayContent.getDefaultTaskDisplayArea()
- .isRootTaskVisible(WINDOWING_MODE_FREEFORM);
+ private int configureNavBarOpacity(int appearance, boolean multiWindowTaskVisible,
+ boolean freeformRootTaskVisible) {
final boolean fullscreenDrawsBackground =
drawsBarBackground(mTopFullscreenOpaqueWindowState);
final boolean dockedDrawsBackground =
@@ -2922,26 +2922,18 @@
if (mNavBarOpacityMode == NAV_BAR_FORCE_TRANSPARENT) {
if (fullscreenDrawsBackground && dockedDrawsBackground) {
appearance = clearNavBarOpaqueFlag(appearance);
- } else if (dockedRootTaskVisible) {
- appearance = setNavBarOpaqueFlag(appearance);
}
} else if (mNavBarOpacityMode == NAV_BAR_OPAQUE_WHEN_FREEFORM_OR_DOCKED) {
- if (dockedRootTaskVisible || freeformRootTaskVisible || isDockedDividerResizing) {
+ if (multiWindowTaskVisible || freeformRootTaskVisible) {
if (mIsFreeformWindowOverlappingWithNavBar) {
appearance = clearNavBarOpaqueFlag(appearance);
- } else {
- appearance = setNavBarOpaqueFlag(appearance);
}
} else if (fullscreenDrawsBackground) {
appearance = clearNavBarOpaqueFlag(appearance);
}
} else if (mNavBarOpacityMode == NAV_BAR_TRANSLUCENT_WHEN_FREEFORM_OPAQUE_OTHERWISE) {
- if (isDockedDividerResizing) {
- appearance = setNavBarOpaqueFlag(appearance);
- } else if (freeformRootTaskVisible) {
+ if (freeformRootTaskVisible) {
appearance = clearNavBarOpaqueFlag(appearance);
- } else {
- appearance = setNavBarOpaqueFlag(appearance);
}
}
@@ -2953,10 +2945,6 @@
return appearance;
}
- private int setNavBarOpaqueFlag(int appearance) {
- return appearance | APPEARANCE_OPAQUE_NAVIGATION_BARS;
- }
-
private int clearNavBarOpaqueFlag(int appearance) {
return appearance & ~APPEARANCE_OPAQUE_NAVIGATION_BARS;
}
diff --git a/services/core/java/com/android/server/wm/InsetsPolicy.java b/services/core/java/com/android/server/wm/InsetsPolicy.java
index 6fd827b..afffe16 100644
--- a/services/core/java/com/android/server/wm/InsetsPolicy.java
+++ b/services/core/java/com/android/server/wm/InsetsPolicy.java
@@ -18,8 +18,6 @@
import static android.app.StatusBarManager.WINDOW_STATE_HIDDEN;
import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
-import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.view.InsetsController.ANIMATION_TYPE_HIDE;
import static android.view.InsetsController.ANIMATION_TYPE_SHOW;
import static android.view.InsetsController.LAYOUT_INSETS_DURING_ANIMATION_HIDDEN;
@@ -136,11 +134,8 @@
abortTransient();
}
mFocusedWin = focusedWin;
- boolean forceShowsSystemBarsForWindowingMode = forceShowsSystemBarsForWindowingMode();
- InsetsControlTarget statusControlTarget = getStatusControlTarget(focusedWin,
- forceShowsSystemBarsForWindowingMode);
- InsetsControlTarget navControlTarget = getNavControlTarget(focusedWin,
- forceShowsSystemBarsForWindowingMode);
+ InsetsControlTarget statusControlTarget = getStatusControlTarget(focusedWin);
+ InsetsControlTarget navControlTarget = getNavControlTarget(focusedWin);
mStateController.onBarControlTargetChanged(statusControlTarget,
getFakeControlTarget(focusedWin, statusControlTarget),
navControlTarget,
@@ -314,8 +309,7 @@
return realControlTarget == mDummyControlTarget ? focused : null;
}
- private @Nullable InsetsControlTarget getStatusControlTarget(@Nullable WindowState focusedWin,
- boolean forceShowsSystemBarsForWindowingMode) {
+ private @Nullable InsetsControlTarget getStatusControlTarget(@Nullable WindowState focusedWin) {
if (mShowingTransientTypes.indexOf(ITYPE_STATUS_BAR) != -1) {
return mDummyControlTarget;
}
@@ -329,10 +323,9 @@
focusedWin.mAttrs.packageName);
return mDisplayContent.mRemoteInsetsControlTarget;
}
- if (forceShowsSystemBarsForWindowingMode) {
- // Status bar is forcibly shown for the windowing mode which is a steady state.
- // We don't want the client to control the status bar, and we will dispatch the real
- // visibility of status bar to the client.
+ if (mPolicy.areSystemBarsForcedShownLw()) {
+ // Status bar is forcibly shown. We don't want the client to control the status bar, and
+ // we will dispatch the real visibility of status bar to the client.
return null;
}
if (forceShowsStatusBarTransiently()) {
@@ -360,8 +353,7 @@
&& !win.inMultiWindowMode();
}
- private @Nullable InsetsControlTarget getNavControlTarget(@Nullable WindowState focusedWin,
- boolean forceShowsSystemBarsForWindowingMode) {
+ private @Nullable InsetsControlTarget getNavControlTarget(@Nullable WindowState focusedWin) {
final WindowState imeWin = mDisplayContent.mInputMethodWindow;
if (imeWin != null && imeWin.isVisible()) {
// Force showing navigation bar while IME is visible.
@@ -379,10 +371,9 @@
focusedWin.mAttrs.packageName);
return mDisplayContent.mRemoteInsetsControlTarget;
}
- if (forceShowsSystemBarsForWindowingMode) {
- // Navigation bar is forcibly shown for the windowing mode which is a steady state.
- // We don't want the client to control the navigation bar, and we will dispatch the real
- // visibility of navigation bar to the client.
+ if (mPolicy.areSystemBarsForcedShownLw()) {
+ // Navigation bar is forcibly shown. We don't want the client to control the navigation
+ // bar, and we will dispatch the real visibility of navigation bar to the client.
return null;
}
if (forceShowsNavigationBarTransiently()) {
@@ -427,19 +418,6 @@
&& (win.mAttrs.privateFlags & PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION) != 0;
}
- private boolean forceShowsSystemBarsForWindowingMode() {
- final boolean isDockedRootTaskVisible = mDisplayContent.getDefaultTaskDisplayArea()
- .isRootTaskVisible(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
- final boolean isFreeformRootTaskVisible = mDisplayContent.getDefaultTaskDisplayArea()
- .isRootTaskVisible(WINDOWING_MODE_FREEFORM);
- final boolean isResizing = mDisplayContent.getDockedDividerController().isResizing();
-
- // We need to force system bars when the docked root task is visible, when the freeform
- // root task is visible but also when we are resizing for the transitions when docked
- // root task visibility changes.
- return isDockedRootTaskVisible || isFreeformRootTaskVisible || isResizing;
- }
-
@VisibleForTesting
void startAnimation(boolean show, Runnable callback) {
int typesReady = 0;
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index bbb48e8..dc39bf9 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -2483,7 +2483,7 @@
if (win.mActivityRecord != null) {
win.mActivityRecord.updateReportedVisibilityLocked();
}
- if (displayPolicy.areSystemBarsForcedShownLw(win)) {
+ if (displayPolicy.areSystemBarsForcedShownLw()) {
result |= WindowManagerGlobal.RELAYOUT_RES_CONSUME_ALWAYS_SYSTEM_BARS;
}
if (!win.isGoneForLayout()) {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index b1526c7..8ec6ed2 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -203,6 +203,7 @@
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.Region;
+import android.gui.TouchOcclusionMode;
import android.os.Binder;
import android.os.Build;
import android.os.Debug;
@@ -212,7 +213,6 @@
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.SystemClock;
-import android.os.TouchOcclusionMode;
import android.os.Trace;
import android.os.WorkSource;
import android.provider.Settings;
@@ -3893,7 +3893,7 @@
final boolean forceRelayout = syncRedraw || reportOrientation || isDragResizeChanged();
final DisplayContent displayContent = getDisplayContent();
final boolean alwaysConsumeSystemBars =
- displayContent.getDisplayPolicy().areSystemBarsForcedShownLw(this);
+ displayContent.getDisplayPolicy().areSystemBarsForcedShownLw();
final int displayId = displayContent.getDisplayId();
markRedrawForSyncReported();
diff --git a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
index f439777..7513512 100644
--- a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
+++ b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
@@ -133,8 +133,12 @@
static int waitForDataOrSignal(int fd, int event_fd) {
struct pollfd pfds[2] = {{fd, POLLIN, 0}, {event_fd, POLLIN, 0}};
- // Wait indefinitely until either data is ready or stop signal is received
+ // Wait until either data is ready or stop signal is received
int res = poll(pfds, 2, PollTimeoutMs);
+ if (res == -1 && errno == EINTR) {
+ // Treat it the same as timeout and allow the caller to retry.
+ return 0;
+ }
if (res <= 0) {
return res;
}
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index 757c9de..0e96567 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -91,7 +91,7 @@
static constexpr auto readLogsMaxInterval = 2h;
// How long should we wait till dataLoader reports destroyed.
- static constexpr auto destroyTimeout = 60s;
+ static constexpr auto destroyTimeout = 10s;
static constexpr auto anyStatus = INT_MIN;
};
diff --git a/services/tests/PackageManagerServiceTests/appenumeration/AndroidTest.xml b/services/tests/PackageManagerServiceTests/appenumeration/AndroidTest.xml
index 6f168a3..7b821c0 100644
--- a/services/tests/PackageManagerServiceTests/appenumeration/AndroidTest.xml
+++ b/services/tests/PackageManagerServiceTests/appenumeration/AndroidTest.xml
@@ -32,6 +32,7 @@
<!-- Load additional APKs onto device -->
<target_preparer class="com.android.compatibility.common.tradefed.targetprep.FilePusher">
<option name="push" value="AppEnumerationSyncProviderTestApp.apk->/data/local/tmp/appenumerationtests/AppEnumerationSyncProviderTestApp.apk" />
+ <option name="push" value="AppEnumerationHasAppOpPermissionTestApp.apk->/data/local/tmp/appenumerationtests/AppEnumerationHasAppOpPermissionTestApp.apk" />
</target_preparer>
<option name="test-tag" value="AppEnumerationInternalTest" />
diff --git a/services/tests/PackageManagerServiceTests/appenumeration/src/com/android/server/pm/test/appenumeration/AppEnumerationInternalTests.java b/services/tests/PackageManagerServiceTests/appenumeration/src/com/android/server/pm/test/appenumeration/AppEnumerationInternalTests.java
index 9337845..63aaf24 100644
--- a/services/tests/PackageManagerServiceTests/appenumeration/src/com/android/server/pm/test/appenumeration/AppEnumerationInternalTests.java
+++ b/services/tests/PackageManagerServiceTests/appenumeration/src/com/android/server/pm/test/appenumeration/AppEnumerationInternalTests.java
@@ -43,8 +43,16 @@
private static final String TEST_DATA_PATH = "/data/local/tmp/appenumerationtests/";
private static final String SYNC_PROVIDER_APK_PATH =
TEST_DATA_PATH + "AppEnumerationSyncProviderTestApp.apk";
- private static final String SYNC_PROVIDER_PKG_NAME = "com.android.appenumeration.syncprovider";
- private static final String SYNC_PROVIDER_AUTHORITY = SYNC_PROVIDER_PKG_NAME;
+ private static final String HAS_APPOP_PERMISSION_APK_PATH =
+ TEST_DATA_PATH + "AppEnumerationHasAppOpPermissionTestApp.apk";
+
+ private static final String TARGET_SYNC_PROVIDER = "com.android.appenumeration.syncprovider";
+ private static final String TARGET_HAS_APPOP_PERMISSION =
+ "com.android.appenumeration.hasappoppermission";
+
+ private static final String SYNC_PROVIDER_AUTHORITY = TARGET_SYNC_PROVIDER;
+ private static final String PERMISSION_REQUEST_INSTALL_PACKAGES =
+ "android.permission.REQUEST_INSTALL_PACKAGES";
private IPackageManager mIPackageManager;
@@ -55,7 +63,8 @@
@After
public void tearDown() throws Exception {
- uninstallPackage(SYNC_PROVIDER_PKG_NAME);
+ uninstallPackage(TARGET_SYNC_PROVIDER);
+ uninstallPackage(TARGET_HAS_APPOP_PERMISSION);
}
@Test
@@ -67,7 +76,7 @@
assertThat(names).contains(SYNC_PROVIDER_AUTHORITY);
assertThat(infos.stream().map(info -> info.packageName).collect(Collectors.toList()))
- .contains(SYNC_PROVIDER_PKG_NAME);
+ .contains(TARGET_SYNC_PROVIDER);
}
@Test
@@ -79,7 +88,27 @@
assertThat(names).doesNotContain(SYNC_PROVIDER_AUTHORITY);
assertThat(infos.stream().map(info -> info.packageName).collect(Collectors.toList()))
- .doesNotContain(SYNC_PROVIDER_PKG_NAME);
+ .doesNotContain(TARGET_SYNC_PROVIDER);
+ }
+
+ @Test
+ public void getAppOpPermissionPackages_canSeeForceQueryable() throws Exception {
+ installPackage(HAS_APPOP_PERMISSION_APK_PATH, true /* forceQueryable */);
+
+ final String[] packageNames = mIPackageManager.getAppOpPermissionPackages(
+ PERMISSION_REQUEST_INSTALL_PACKAGES);
+
+ assertThat(packageNames).asList().contains(TARGET_HAS_APPOP_PERMISSION);
+ }
+
+ @Test
+ public void getAppOpPermissionPackages_cannotSeeHasAppOpPermission() throws Exception {
+ installPackage(HAS_APPOP_PERMISSION_APK_PATH, false /* forceQueryable */);
+
+ final String[] packageNames = mIPackageManager.getAppOpPermissionPackages(
+ PERMISSION_REQUEST_INSTALL_PACKAGES);
+
+ assertThat(packageNames).asList().doesNotContain(TARGET_HAS_APPOP_PERMISSION);
}
private static void installPackage(String apkPath, boolean forceQueryable) {
diff --git a/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/Android.bp b/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/Android.bp
index 64239b4..7aa300b 100644
--- a/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/Android.bp
+++ b/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/Android.bp
@@ -34,3 +34,17 @@
test_suites: ["device-tests"],
platform_apis: true,
}
+
+android_test_helper_app {
+ name: "AppEnumerationHasAppOpPermissionTestApp",
+ srcs: ["src/**/*.java"],
+ manifest: "AndroidManifest-hasAppOpPermission.xml",
+ dex_preopt: {
+ enabled: false,
+ },
+ optimize: {
+ enabled: false,
+ },
+ test_suites: ["device-tests"],
+ platform_apis: true,
+}
diff --git a/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/AndroidManifest-hasAppOpPermission.xml b/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/AndroidManifest-hasAppOpPermission.xml
new file mode 100644
index 0000000..be8a6dc
--- /dev/null
+++ b/services/tests/PackageManagerServiceTests/appenumeration/test-apps/target/AndroidManifest-hasAppOpPermission.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2021 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.appenumeration.hasappoppermission">
+
+ <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
+ <application>
+ <uses-library android:name="android.test.runner" />
+ </application>
+</manifest>
diff --git a/services/tests/PackageManagerServiceTests/host/src/com/android/server/pm/test/SystemStubMultiUserDisableUninstallTest.kt b/services/tests/PackageManagerServiceTests/host/src/com/android/server/pm/test/SystemStubMultiUserDisableUninstallTest.kt
index 46120af..45e0d09 100644
--- a/services/tests/PackageManagerServiceTests/host/src/com/android/server/pm/test/SystemStubMultiUserDisableUninstallTest.kt
+++ b/services/tests/PackageManagerServiceTests/host/src/com/android/server/pm/test/SystemStubMultiUserDisableUninstallTest.kt
@@ -281,7 +281,7 @@
assertState(
primaryInstalled = false, primaryEnabled = true,
secondaryInstalled = true, secondaryEnabled = true,
- codePaths = listOf(CodePath.DIFFERENT, CodePath.SYSTEM)
+ codePaths = listOf(CodePath.SAME, CodePath.SYSTEM)
)
uninstall(User.SECONDARY)
@@ -289,7 +289,7 @@
assertState(
primaryInstalled = false, primaryEnabled = true,
secondaryInstalled = false, secondaryEnabled = true,
- codePaths = listOf(CodePath.DIFFERENT, CodePath.SYSTEM)
+ codePaths = listOf(CodePath.SAME, CodePath.SYSTEM)
)
installExisting(User.PRIMARY)
@@ -311,20 +311,20 @@
@Test
fun uninstallSecondaryFirstByUserAndInstallExistingSecondaryFirst() {
+ uninstall(User.SECONDARY)
+
+ assertState(
+ primaryInstalled = true, primaryEnabled = true,
+ secondaryInstalled = false, secondaryEnabled = true,
+ codePaths = listOf(CodePath.SAME, CodePath.SYSTEM)
+ )
+
uninstall(User.PRIMARY)
assertState(
primaryInstalled = false, primaryEnabled = true,
- secondaryInstalled = true, secondaryEnabled = true,
- codePaths = listOf(CodePath.DIFFERENT, CodePath.SYSTEM)
- )
-
- uninstall(User.SECONDARY)
-
- assertState(
- primaryInstalled = false, primaryEnabled = true,
secondaryInstalled = false, secondaryEnabled = true,
- codePaths = listOf(CodePath.DIFFERENT, CodePath.SYSTEM)
+ codePaths = listOf(CodePath.SAME, CodePath.SYSTEM)
)
installExisting(User.SECONDARY)
@@ -348,15 +348,14 @@
fun uninstallUpdatesAndEnablePrimaryFirst() {
device.executeShellCommand("pm uninstall-system-updates $TEST_PKG_NAME")
- // Uninstall-system-updates always disables system user 0
- // TODO: Is this intentional? There is no user argument for this command.
assertState(
- primaryInstalled = true, primaryEnabled = false,
+ primaryInstalled = true, primaryEnabled = true,
secondaryInstalled = true, secondaryEnabled = true,
// If any user is enabled when uninstalling updates, /data is re-uncompressed
codePaths = listOf(CodePath.DIFFERENT, CodePath.SYSTEM)
)
+ toggleEnabled(false, User.PRIMARY)
toggleEnabled(true, User.PRIMARY)
assertState(
@@ -379,14 +378,15 @@
fun uninstallUpdatesAndEnableSecondaryFirst() {
device.executeShellCommand("pm uninstall-system-updates $TEST_PKG_NAME")
- // Uninstall-system-updates always disables system user 0
assertState(
- primaryInstalled = true, primaryEnabled = false,
+ primaryInstalled = true, primaryEnabled = true,
secondaryInstalled = true, secondaryEnabled = true,
// If any user is enabled when uninstalling updates, /data is re-uncompressed
codePaths = listOf(CodePath.DIFFERENT, CodePath.SYSTEM)
)
+ toggleEnabled(false, User.PRIMARY)
+
toggleEnabled(true, User.SECONDARY)
assertState(
@@ -417,6 +417,7 @@
codePaths = listOf(CodePath.SYSTEM)
)
+ toggleEnabled(false, User.PRIMARY)
toggleEnabled(true, User.PRIMARY)
assertState(
@@ -447,6 +448,7 @@
codePaths = listOf(CodePath.SYSTEM)
)
+ toggleEnabled(false, User.PRIMARY)
toggleEnabled(true, User.SECONDARY)
assertState(
@@ -471,13 +473,13 @@
device.executeShellCommand("pm uninstall-system-updates $TEST_PKG_NAME")
- // Uninstall-system-updates always disables system user 0
assertState(
- primaryInstalled = false, primaryEnabled = false,
+ primaryInstalled = false, primaryEnabled = true,
secondaryInstalled = false, secondaryEnabled = true,
codePaths = listOf(CodePath.SYSTEM)
)
+ toggleEnabled(false, User.PRIMARY)
toggleEnabled(true, User.PRIMARY)
assertState(
@@ -502,9 +504,8 @@
device.executeShellCommand("pm uninstall-system-updates $TEST_PKG_NAME")
- // Uninstall-system-updates always disables system user 0
assertState(
- primaryInstalled = false, primaryEnabled = false,
+ primaryInstalled = false, primaryEnabled = true,
secondaryInstalled = false, secondaryEnabled = true,
codePaths = listOf(CodePath.SYSTEM)
)
@@ -512,7 +513,7 @@
toggleEnabled(true, User.SECONDARY)
assertState(
- primaryInstalled = false, primaryEnabled = false,
+ primaryInstalled = false, primaryEnabled = true,
secondaryInstalled = false, secondaryEnabled = true,
codePaths = listOf(CodePath.DIFFERENT, CodePath.SYSTEM)
)
@@ -582,22 +583,24 @@
codePaths: List<CodePath>
) {
HostUtils.getUserIdToPkgInstalledState(device, TEST_PKG_NAME)
- .forEach { (userId, installed) ->
- if (userId == 0) {
- assertThat(installed).isEqualTo(primaryInstalled)
- } else {
- assertThat(installed).isEqualTo(secondaryInstalled)
- }
+ .also { assertThat(it.size).isAtLeast(USER_COUNT) }
+ .forEach { (userId, installed) ->
+ if (userId == 0) {
+ assertThat(installed).isEqualTo(primaryInstalled)
+ } else {
+ assertThat(installed).isEqualTo(secondaryInstalled)
}
+ }
HostUtils.getUserIdToPkgEnabledState(device, TEST_PKG_NAME)
- .forEach { (userId, enabled) ->
- if (userId == 0) {
- assertThat(enabled).isEqualTo(primaryEnabled)
- } else {
- assertThat(enabled).isEqualTo(secondaryEnabled)
- }
+ .also { assertThat(it.size).isAtLeast(USER_COUNT) }
+ .forEach { (userId, enabled) ->
+ if (userId == 0) {
+ assertThat(enabled).isEqualTo(primaryEnabled)
+ } else {
+ assertThat(enabled).isEqualTo(secondaryEnabled)
}
+ }
assertCodePaths(codePaths.first(), codePaths.getOrNull(1))
}
diff --git a/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java b/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java
index 624e7dd..607fb47 100644
--- a/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java
@@ -1003,8 +1003,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean());
- verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2),
- eq(true));
verify(l, times(0)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1019,8 +1017,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean());
- verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2),
- eq(false));
verify(l, times(0)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1034,7 +1030,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1052,8 +1047,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean());
- verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2),
- eq(true));
verify(l, times(1)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1070,7 +1063,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(1)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1089,7 +1081,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(1)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1104,7 +1095,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(1)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1121,7 +1111,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1137,7 +1126,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1154,7 +1142,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(1)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1171,7 +1158,6 @@
verify(l, times(2)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(1)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1186,7 +1172,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(1)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1203,7 +1188,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1219,7 +1203,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(anyInt());
@@ -1242,7 +1225,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1));
@@ -1258,7 +1240,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1));
@@ -1274,7 +1255,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1));
@@ -1290,7 +1270,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1));
@@ -1307,7 +1286,6 @@
verify(l, times(1)).updateAllJobs();
verify(l, times(0)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(1)).updateAllAlarms();
verify(l, times(0)).updateAlarmsForUid(eq(UID_10_1));
@@ -1323,7 +1301,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1));
@@ -1339,7 +1316,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1));
@@ -1355,7 +1331,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1));
@@ -1371,7 +1346,6 @@
verify(l, times(0)).updateAllJobs();
verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean());
verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean());
- verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean());
verify(l, times(0)).updateAllAlarms();
verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1));
diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java
index e19aa72..4b030d1 100644
--- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java
@@ -52,7 +52,6 @@
import android.support.test.uiautomator.UiDevice;
import android.test.suitebuilder.annotation.LargeTest;
import android.text.TextUtils;
-import android.util.KeyValueListParser;
import android.util.Log;
import androidx.test.InstrumentationRegistry;
@@ -421,142 +420,6 @@
return false;
}
- @LargeTest
- @Test
- public void testKillAppIfFasCachedIdle() throws Exception {
- final long shortTimeoutMs = 5_000;
- final long backgroundSettleMs = 10_000;
- final PackageManager pm = mContext.getPackageManager();
- final int uid = pm.getPackageUid(TEST_APP1, 0);
- final MyUidImportanceListener uidListener1 = new MyUidImportanceListener(uid);
- final MyUidImportanceListener uidListener2 = new MyUidImportanceListener(uid);
- SettingsSession<String> amConstantsSettings = null;
- DeviceConfigSession<Boolean> killForceAppStandByAndCachedIdle = null;
- final ActivityManager am = mContext.getSystemService(ActivityManager.class);
- final CountDownLatch[] latchHolder = new CountDownLatch[1];
- final H handler = new H(Looper.getMainLooper(), latchHolder);
- final Messenger messenger = new Messenger(handler);
- try {
- am.addOnUidImportanceListener(uidListener1,
- RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE);
- am.addOnUidImportanceListener(uidListener2, RunningAppProcessInfo.IMPORTANCE_GONE);
- toggleScreenOn(true);
-
- killForceAppStandByAndCachedIdle = new DeviceConfigSession<>(
- DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
- ActivityManagerConstants.KEY_KILL_FAS_CACHED_IDLE,
- DeviceConfig::getBoolean,
- ActivityManagerConstants.DEFAULT_KILL_FAS_CACHED_IDLE);
- killForceAppStandByAndCachedIdle.set(true);
- amConstantsSettings = new SettingsSession<>(
- Settings.Global.getUriFor(Settings.Global.ACTIVITY_MANAGER_CONSTANTS),
- Settings.Global::getString, Settings.Global::putString);
- final KeyValueListParser parser = new KeyValueListParser(',');
- long currentBackgroundSettleMs =
- ActivityManagerConstants.DEFAULT_BACKGROUND_SETTLE_TIME;
- try {
- parser.setString(amConstantsSettings.get());
- currentBackgroundSettleMs = parser.getLong(
- ActivityManagerConstants.KEY_BACKGROUND_SETTLE_TIME,
- ActivityManagerConstants.DEFAULT_BACKGROUND_SETTLE_TIME);
- } catch (IllegalArgumentException e) {
- }
- // Drain queue to make sure the existing UID_IDLE_MSG has been processed.
- Thread.sleep(currentBackgroundSettleMs);
- amConstantsSettings.set(
- ActivityManagerConstants.KEY_BACKGROUND_SETTLE_TIME + "=" + backgroundSettleMs);
- runShellCommand("cmd appops set " + TEST_APP1 + " RUN_ANY_IN_BACKGROUND allow");
-
- final Intent intent = new Intent(ACTION_FGS_STATS_TEST);
- final ComponentName cn = ComponentName.unflattenFromString(
- TEST_APP1 + "/" + TEST_FGS_CLASS);
- final Bundle bundle = new Bundle();
- intent.setComponent(cn);
- bundle.putBinder(EXTRA_MESSENGER, messenger.getBinder());
- intent.putExtras(bundle);
-
- // Start the FGS.
- latchHolder[0] = new CountDownLatch(1);
- mContext.startForegroundService(intent);
- assertTrue("Timed out to start fg service", uidListener1.waitFor(
- RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs));
- assertTrue("Timed out to get the remote messenger", latchHolder[0].await(
- shortTimeoutMs, TimeUnit.MILLISECONDS));
- assertFalse("FGS shouldn't be killed", uidListener2.waitFor(
- RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs));
-
- // Stop the FGS, it shouldn't be killed because it's not in FAS state.
- latchHolder[0] = new CountDownLatch(1);
- handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null);
- assertTrue("Timed out to wait for stop fg", latchHolder[0].await(
- shortTimeoutMs, TimeUnit.MILLISECONDS));
- assertFalse("FGS shouldn't be killed", uidListener2.waitFor(
- RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs));
-
- // Set the FAS state.
- runShellCommand("cmd appops set " + TEST_APP1 + " RUN_ANY_IN_BACKGROUND deny");
- // Now it should've been killed.
- assertTrue("Should have been killed", uidListener2.waitFor(
- RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs));
-
- // Start the FGS.
- // Temporarily allow RUN_ANY_IN_BACKGROUND to start FGS.
- runShellCommand("cmd appops set " + TEST_APP1 + " RUN_ANY_IN_BACKGROUND allow");
- latchHolder[0] = new CountDownLatch(1);
- mContext.startForegroundService(intent);
- assertTrue("Timed out to start fg service", uidListener1.waitFor(
- RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs));
- assertTrue("Timed out to get the remote messenger", latchHolder[0].await(
- shortTimeoutMs, TimeUnit.MILLISECONDS));
- runShellCommand("cmd appops set " + TEST_APP1 + " RUN_ANY_IN_BACKGROUND deny");
- // It shouldn't be killed since it's not cached.
- assertFalse("FGS shouldn't be killed", uidListener2.waitFor(
- RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs));
-
- // Stop the FGS, it should get killed because it's cached & uid idle & in FAS state.
- latchHolder[0] = new CountDownLatch(1);
- handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null);
- assertTrue("Timed out to wait for stop fg", latchHolder[0].await(
- shortTimeoutMs, TimeUnit.MILLISECONDS));
- assertTrue("Should have been killed", uidListener2.waitFor(
- RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs));
-
- // Disable this FAS cached idle kill feature.
- killForceAppStandByAndCachedIdle.set(false);
-
- // Start the FGS.
- // Temporarily allow RUN_ANY_IN_BACKGROUND to start FGS.
- runShellCommand("cmd appops set " + TEST_APP1 + " RUN_ANY_IN_BACKGROUND allow");
- latchHolder[0] = new CountDownLatch(1);
- mContext.startForegroundService(intent);
- assertTrue("Timed out to start fg service", uidListener1.waitFor(
- RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs));
- assertTrue("Timed out to get the remote messenger", latchHolder[0].await(
- shortTimeoutMs, TimeUnit.MILLISECONDS));
- runShellCommand("cmd appops set " + TEST_APP1 + " RUN_ANY_IN_BACKGROUND deny");
- assertFalse("FGS shouldn't be killed", uidListener2.waitFor(
- RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs));
-
- // Stop the FGS, it shouldn't be killed because the feature has been turned off.
- latchHolder[0] = new CountDownLatch(1);
- handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null);
- assertTrue("Timed out to wait for stop fg", latchHolder[0].await(
- shortTimeoutMs, TimeUnit.MILLISECONDS));
- assertFalse("FGS shouldn't be killed", uidListener2.waitFor(
- RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs));
- } finally {
- runShellCommand("cmd appops set " + TEST_APP1 + " RUN_ANY_IN_BACKGROUND default");
- if (amConstantsSettings != null) {
- amConstantsSettings.close();
- }
- if (killForceAppStandByAndCachedIdle != null) {
- killForceAppStandByAndCachedIdle.close();
- }
- am.removeOnUidImportanceListener(uidListener1);
- am.removeOnUidImportanceListener(uidListener2);
- }
- }
-
@Ignore("Need to disable calling uid check in ActivityManagerService.killPids before this test")
@Test
public void testKillPids() throws Exception {
diff --git a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
index 54945fb..c0ba3c7 100644
--- a/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/audio/AudioServiceTest.java
@@ -75,7 +75,7 @@
for (boolean muted : new boolean[] { true, false}) {
testAudioSystem.configureIsMicrophoneMuted(!muted);
mAudioService.setMicrophoneMute(muted, mContext.getOpPackageName(),
- UserHandle.getCallingUserId());
+ UserHandle.getCallingUserId(), null);
Assert.assertEquals("mic mute reporting wrong value",
muted, mAudioService.isMicrophoneMuted());
// verify the intent for mic mute changed is supposed to be fired
@@ -100,7 +100,7 @@
for (boolean muted : new boolean[] { true, false}) {
testAudioSystem.configureIsMicrophoneMuted(!muted);
mAudioService.setMicrophoneMute(muted, mContext.getOpPackageName(),
- UserHandle.getCallingUserId());
+ UserHandle.getCallingUserId(), null);
Assert.assertEquals("mic mute reporting wrong value",
!muted, mAudioService.isMicrophoneMuted());
// verify the intent for mic mute changed is supposed to be fired
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/sensors/UserAwareBiometricSchedulerTest.java b/services/tests/servicestests/src/com/android/server/biometrics/sensors/UserAwareBiometricSchedulerTest.java
index 9937ec1..7ff253f 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/sensors/UserAwareBiometricSchedulerTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/sensors/UserAwareBiometricSchedulerTest.java
@@ -19,6 +19,7 @@
import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -57,12 +58,16 @@
private TestUserStartedCallback mUserStartedCallback;
private TestUserStoppedCallback mUserStoppedCallback;
private int mCurrentUserId = UserHandle.USER_NULL;
+ private boolean mStartOperationsFinish;
+ private int mStartUserClientCount;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mToken = new Binder();
+ mStartOperationsFinish = true;
+ mStartUserClientCount = 0;
mUserStartedCallback = new TestUserStartedCallback();
mUserStoppedCallback = new TestUserStoppedCallback();
@@ -81,8 +86,9 @@
@NonNull
@Override
public StartUserClient<?, ?> getStartUserClient(int newUserId) {
+ mStartUserClientCount++;
return new TestStartUserClient(mContext, Object::new, mToken, newUserId,
- TEST_SENSOR_ID, mUserStartedCallback);
+ TEST_SENSOR_ID, mUserStartedCallback, mStartOperationsFinish);
}
});
}
@@ -91,21 +97,42 @@
public void testScheduleOperation_whenNoUser() {
mCurrentUserId = UserHandle.USER_NULL;
- final int nextUserId = 0;
-
- BaseClientMonitor nextClient = mock(BaseClientMonitor.class);
- when(nextClient.getTargetUserId()).thenReturn(nextUserId);
+ final BaseClientMonitor nextClient = mock(BaseClientMonitor.class);
+ when(nextClient.getTargetUserId()).thenReturn(0);
mScheduler.scheduleClientMonitor(nextClient);
+ waitForIdle();
assertEquals(0, mUserStoppedCallback.numInvocations);
assertEquals(1, mUserStartedCallback.numInvocations);
-
- waitForIdle();
verify(nextClient).start(any());
}
@Test
+ public void testScheduleOperation_whenNoUser_notStarted() {
+ mCurrentUserId = UserHandle.USER_NULL;
+ mStartOperationsFinish = false;
+
+ final BaseClientMonitor[] nextClients = new BaseClientMonitor[] {
+ mock(BaseClientMonitor.class),
+ mock(BaseClientMonitor.class),
+ mock(BaseClientMonitor.class)
+ };
+ for (BaseClientMonitor client : nextClients) {
+ when(client.getTargetUserId()).thenReturn(5);
+ mScheduler.scheduleClientMonitor(client);
+ waitForIdle();
+ }
+
+ assertEquals(0, mUserStoppedCallback.numInvocations);
+ assertEquals(0, mUserStartedCallback.numInvocations);
+ assertEquals(1, mStartUserClientCount);
+ for (BaseClientMonitor client : nextClients) {
+ verify(client, never()).start(any());
+ }
+ }
+
+ @Test
public void testScheduleOperation_whenSameUser() {
mCurrentUserId = 10;
@@ -192,10 +219,13 @@
}
private static class TestStartUserClient extends StartUserClient<Object, Object> {
+ private final boolean mShouldFinish;
+
public TestStartUserClient(@NonNull Context context,
@NonNull LazyDaemon<Object> lazyDaemon, @Nullable IBinder token, int userId,
- int sensorId, @NonNull UserStartedCallback<Object> callback) {
+ int sensorId, @NonNull UserStartedCallback<Object> callback, boolean shouldFinish) {
super(context, lazyDaemon, token, userId, sensorId, callback);
+ mShouldFinish = shouldFinish;
}
@Override
@@ -206,8 +236,10 @@
@Override
public void start(@NonNull Callback callback) {
super.start(callback);
- mUserStartedCallback.onUserStarted(getTargetUserId(), new Object());
- callback.onClientFinished(this, true /* success */);
+ if (mShouldFinish) {
+ mUserStartedCallback.onUserStarted(getTargetUserId(), new Object());
+ callback.onClientFinished(this, true /* success */);
+ }
}
@Override
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/FakeNativeWrapper.java b/services/tests/servicestests/src/com/android/server/hdmi/FakeNativeWrapper.java
index 1958cb0..d630ef6 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/FakeNativeWrapper.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/FakeNativeWrapper.java
@@ -56,6 +56,7 @@
private final Map<Integer, Boolean> mPortConnectionStatus = new HashMap<>();
private final HashMap<Integer, Integer> mMessageSendResult = new HashMap<>();
private int mMyPhysicalAddress = 0;
+ private int mVendorId = 0;
private HdmiPortInfo[] mHdmiPortInfo = null;
private HdmiCecController.HdmiCecCallback mCallback = null;
private int mCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0;
@@ -102,7 +103,7 @@
@Override
public int nativeGetVendorId() {
- return 0;
+ return mVendorId;
}
@Override
@@ -181,6 +182,11 @@
}
@VisibleForTesting
+ protected void setVendorId(int vendorId) {
+ mVendorId = vendorId;
+ }
+
+ @VisibleForTesting
protected void setPhysicalAddress(int physicalAddress) {
mMyPhysicalAddress = physicalAddress;
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
index 0578276..7057c50 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
@@ -32,9 +32,16 @@
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
import android.content.Context;
import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiPortInfo;
+import android.hardware.tv.cec.V1_0.Result;
+import android.media.AudioManager;
import android.os.test.TestLooper;
import android.platform.test.annotations.Presubmit;
@@ -45,6 +52,8 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays;
@@ -123,8 +132,12 @@
private boolean isControlEnabled;
private int mPowerStatus;
+ @Mock
+ private AudioManager mAudioManager;
+
@Before
public void SetUp() {
+ MockitoAnnotations.initMocks(this);
Context context = InstrumentationRegistry.getTargetContext();
@@ -161,6 +174,11 @@
void wakeUp() {
mWakeupMessageReceived = true;
}
+
+ @Override
+ AudioManager getAudioManager() {
+ return mAudioManager;
+ }
};
mHdmiControlService.setIoLooper(mTestLooper.getLooper());
mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context));
@@ -188,6 +206,7 @@
mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
mNativeWrapper.setPhysicalAddress(0x2000);
mTestLooper.dispatchAll();
+ mNativeWrapper.clearResultMessages();
}
@Test
@@ -226,15 +245,37 @@
@Test
public void handleGiveDeviceVendorId_success() {
- mSrcAddr = ADDR_UNREGISTERED;
- mDesAddr = ADDR_BROADCAST;
- /** nativeGetVendorId returns 0 */
- param = new byte[] {(byte) ((0 >> 8) & 0xFF), (byte) (0 & 0xFF), (byte) (0 & 0xFF)};
- callbackResult = -1;
- mHdmiLocalDevice.handleGiveDeviceVendorId(
- (int finalResult) -> callbackResult = finalResult);
+ /** Set vendor id to 0 */
+ mNativeWrapper.setVendorId(0);
+ HdmiCecMessage expectedMessage =
+ HdmiCecMessageBuilder.buildDeviceVendorIdCommand(ADDR_TV, 0);
+ @Constants.HandleMessageResult
+ int handleResult =
+ mHdmiLocalDevice.handleGiveDeviceVendorId(
+ HdmiCecMessageBuilder.buildGiveDeviceVendorIdCommand(
+ ADDR_PLAYBACK_1, ADDR_TV));
mTestLooper.dispatchAll();
- assertEquals(0, callbackResult);
+ assertEquals(Constants.HANDLED, handleResult);
+ assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage);
+ }
+
+ @Test
+ public void handleGiveDeviceVendorId_failure() {
+ mNativeWrapper.setVendorId(Result.FAILURE_UNKNOWN);
+ HdmiCecMessage expectedMessage =
+ HdmiCecMessageBuilder.buildFeatureAbortCommand(
+ ADDR_TV,
+ ADDR_PLAYBACK_1,
+ Constants.MESSAGE_GIVE_DEVICE_VENDOR_ID,
+ Constants.ABORT_UNABLE_TO_DETERMINE);
+ @Constants.HandleMessageResult
+ int handleResult =
+ mHdmiLocalDevice.handleGiveDeviceVendorId(
+ HdmiCecMessageBuilder.buildGiveDeviceVendorIdCommand(
+ ADDR_PLAYBACK_1, ADDR_TV));
+ mTestLooper.dispatchAll();
+ assertEquals(Constants.HANDLED, handleResult);
+ assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage);
}
@Test
@@ -419,6 +460,28 @@
}
@Test
+ public void handleUserControlPressed_muteFunction() {
+ @Constants.HandleMessageResult int result = mHdmiLocalDevice.handleUserControlPressed(
+ HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
+ HdmiCecKeycode.CEC_KEYCODE_MUTE_FUNCTION));
+
+ assertEquals(result, Constants.HANDLED);
+ verify(mAudioManager, times(1))
+ .adjustStreamVolume(anyInt(), eq(AudioManager.ADJUST_MUTE), anyInt());
+ }
+
+ @Test
+ public void handleUserControlPressed_restoreVolumeFunction() {
+ @Constants.HandleMessageResult int result = mHdmiLocalDevice.handleUserControlPressed(
+ HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
+ HdmiCecKeycode.CEC_KEYCODE_RESTORE_VOLUME_FUNCTION));
+
+ assertEquals(result, Constants.HANDLED);
+ verify(mAudioManager, times(1))
+ .adjustStreamVolume(anyInt(), eq(AudioManager.ADJUST_UNMUTE), anyInt());
+ }
+
+ @Test
public void handleVendorCommand_notHandled() {
HdmiCecMessage vendorCommand = HdmiCecMessageBuilder.buildVendorCommand(ADDR_TV,
ADDR_PLAYBACK_1, new byte[]{0});
diff --git a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
index e7171ff..be942d6 100644
--- a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
@@ -82,17 +82,9 @@
private static final int DUMMY_OVERLAY_APPID = 10756;
private static final int SYSTEM_USER = 0;
private static final int SECONDARY_USER = 10;
- private static final int ADDED_USER = 11;
private static final int[] USER_ARRAY = {SYSTEM_USER, SECONDARY_USER};
- private static final int[] USER_ARRAY_WITH_ADDED = {SYSTEM_USER, SECONDARY_USER, ADDED_USER};
- private static final UserInfo[] USER_INFO_LIST = toUserInfos(USER_ARRAY);
- private static final UserInfo[] USER_INFO_LIST_WITH_ADDED = toUserInfos(USER_ARRAY_WITH_ADDED);
-
- private static UserInfo[] toUserInfos(int[] userIds) {
- return Arrays.stream(userIds)
- .mapToObj(id -> new UserInfo(id, Integer.toString(id), 0))
- .toArray(UserInfo[]::new);
- }
+ private static final UserInfo[] USER_INFO_LIST = Arrays.stream(USER_ARRAY).mapToObj(
+ id -> new UserInfo(id, Integer.toString(id), 0)).toArray(UserInfo[]::new);
@Mock
AppsFilter.FeatureConfig mFeatureConfigMock;
@@ -326,47 +318,6 @@
}
@Test
- public void testOnUserCreated_FilterMatches() throws Exception {
- final AppsFilter appsFilter =
- new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
- mMockExecutor);
- simulateAddBasicAndroid(appsFilter);
-
- appsFilter.onSystemReady();
-
- PackageSetting target = simulateAddPackage(appsFilter,
- pkgWithProvider("com.some.package", "com.some.authority"), DUMMY_TARGET_APPID);
- PackageSetting calling = simulateAddPackage(appsFilter,
- pkgQueriesProvider("com.some.other.package", "com.some.authority"),
- DUMMY_CALLING_APPID);
-
- for (int subjectUserId : USER_ARRAY) {
- for (int otherUserId : USER_ARRAY) {
- assertFalse(appsFilter.shouldFilterApplication(
- UserHandle.getUid(DUMMY_CALLING_APPID, subjectUserId), calling, target,
- otherUserId));
- }
- }
-
- // adds new user
- doAnswer(invocation -> {
- ((AppsFilter.StateProvider.CurrentStateCallback) invocation.getArgument(0))
- .currentState(mExisting, USER_INFO_LIST_WITH_ADDED);
- return new Object();
- }).when(mStateProvider)
- .runWithState(any(AppsFilter.StateProvider.CurrentStateCallback.class));
- appsFilter.onUserCreated(ADDED_USER);
-
- for (int subjectUserId : USER_ARRAY_WITH_ADDED) {
- for (int otherUserId : USER_ARRAY_WITH_ADDED) {
- assertFalse(appsFilter.shouldFilterApplication(
- UserHandle.getUid(DUMMY_CALLING_APPID, subjectUserId), calling, target,
- otherUserId));
- }
- }
- }
-
- @Test
public void testQueriesDifferentProvider_Filters() throws Exception {
final AppsFilter appsFilter =
new AppsFilter(mStateProvider, mFeatureConfigMock, new String[]{}, false, null,
diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java
index bf3ed69..5b04c91 100644
--- a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java
@@ -18,6 +18,7 @@
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
+import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
import static android.view.InsetsState.ITYPE_STATUS_BAR;
@@ -80,7 +81,7 @@
}
@Test
- public void testControlsForDispatch_dockedStackVisible() {
+ public void testControlsForDispatch_dockedTaskVisible() {
addWindow(TYPE_STATUS_BAR, "statusBar");
addWindow(TYPE_NAVIGATION_BAR, "navBar");
@@ -93,7 +94,20 @@
}
@Test
- public void testControlsForDispatch_freeformStackVisible() {
+ public void testControlsForDispatch_multiWindowTaskVisible() {
+ addWindow(TYPE_STATUS_BAR, "statusBar");
+ addWindow(TYPE_NAVIGATION_BAR, "navBar");
+
+ final WindowState win = createWindow(null, WINDOWING_MODE_MULTI_WINDOW,
+ ACTIVITY_TYPE_STANDARD, TYPE_APPLICATION, mDisplayContent, "app");
+ final InsetsSourceControl[] controls = addWindowAndGetControlsForDispatch(win);
+
+ // The app must not control any system bars.
+ assertNull(controls);
+ }
+
+ @Test
+ public void testControlsForDispatch_freeformTaskVisible() {
addWindow(TYPE_STATUS_BAR, "statusBar");
addWindow(TYPE_NAVIGATION_BAR, "navBar");
@@ -101,18 +115,6 @@
ACTIVITY_TYPE_STANDARD, TYPE_APPLICATION, mDisplayContent, "app");
final InsetsSourceControl[] controls = addWindowAndGetControlsForDispatch(win);
- // The app must not control any bars.
- assertNull(controls);
- }
-
- @Test
- public void testControlsForDispatch_dockedDividerControllerResizing() {
- addWindow(TYPE_STATUS_BAR, "statusBar");
- addWindow(TYPE_NAVIGATION_BAR, "navBar");
- mDisplayContent.getDockedDividerController().setResizing(true);
-
- final InsetsSourceControl[] controls = addAppWindowAndGetControlsForDispatch();
-
// The app must not control any system bars.
assertNull(controls);
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java
index 20b987d..e169692 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java
@@ -24,9 +24,11 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
import android.view.Display.Mode;
import android.view.DisplayInfo;
+import android.view.WindowManager.LayoutParams;
import androidx.test.filters.FlakyTest;
import androidx.test.filters.SmallTest;
@@ -50,6 +52,16 @@
private RefreshRatePolicy mPolicy;
private HighRefreshRateDenylist mDenylist = mock(HighRefreshRateDenylist.class);
+ // Parcel and Unparcel the LayoutParams in the window state to test the path the object
+ // travels from the app's process to system server
+ void parcelLayoutParams(WindowState window) {
+ Parcel parcel = Parcel.obtain();
+ window.mAttrs.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ window.mAttrs.copyFrom(new LayoutParams(parcel));
+ parcel.recycle();
+ }
+
@Before
public void setUp() {
DisplayInfo di = new DisplayInfo(mDisplayInfo);
@@ -69,6 +81,7 @@
final WindowState cameraUsingWindow = createWindow(null, TYPE_BASE_APPLICATION,
"cameraUsingWindow");
cameraUsingWindow.mAttrs.packageName = "com.android.test";
+ parcelLayoutParams(cameraUsingWindow);
assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
assertEquals(0, mPolicy.getPreferredRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
assertEquals(0, mPolicy.getPreferredMaxRefreshRate(cameraUsingWindow), FLOAT_TOLERANCE);
@@ -86,6 +99,7 @@
final WindowState denylistedWindow = createWindow(null, TYPE_BASE_APPLICATION,
"denylistedWindow");
denylistedWindow.mAttrs.packageName = "com.android.test";
+ parcelLayoutParams(denylistedWindow);
when(mDenylist.isDenylisted("com.android.test")).thenReturn(true);
assertEquals(0, mPolicy.getPreferredModeId(denylistedWindow));
assertEquals(60, mPolicy.getPreferredRefreshRate(denylistedWindow), FLOAT_TOLERANCE);
@@ -97,6 +111,7 @@
"overrideWindow");
overrideWindow.mAttrs.packageName = "com.android.test";
overrideWindow.mAttrs.preferredDisplayModeId = LOW_MODE_ID;
+ parcelLayoutParams(overrideWindow);
when(mDenylist.isDenylisted("com.android.test")).thenReturn(true);
assertEquals(LOW_MODE_ID, mPolicy.getPreferredModeId(overrideWindow));
assertEquals(60, mPolicy.getPreferredRefreshRate(overrideWindow), FLOAT_TOLERANCE);
@@ -108,6 +123,7 @@
"overrideWindow");
overrideWindow.mAttrs.packageName = "com.android.test";
overrideWindow.mAttrs.preferredDisplayModeId = LOW_MODE_ID;
+ parcelLayoutParams(overrideWindow);
mPolicy.addNonHighRefreshRatePackage("com.android.test");
assertEquals(LOW_MODE_ID, mPolicy.getPreferredModeId(overrideWindow));
assertEquals(0, mPolicy.getPreferredRefreshRate(overrideWindow), FLOAT_TOLERANCE);
@@ -120,6 +136,7 @@
"overrideWindow");
overrideWindow.mAttrs.packageName = "com.android.test";
overrideWindow.mAttrs.preferredDisplayModeId = LOW_MODE_ID;
+ parcelLayoutParams(overrideWindow);
overrideWindow.mActivityRecord.mSurfaceAnimator.startAnimation(
overrideWindow.getPendingTransaction(), mock(AnimationAdapter.class),
false /* hidden */, ANIMATION_TYPE_APP_TRANSITION);
@@ -134,6 +151,7 @@
final WindowState cameraUsingWindow = createWindow(null, TYPE_BASE_APPLICATION,
"cameraUsingWindow");
cameraUsingWindow.mAttrs.packageName = "com.android.test";
+ parcelLayoutParams(cameraUsingWindow);
mPolicy.addNonHighRefreshRatePackage("com.android.test");
assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
@@ -152,6 +170,7 @@
public void testAppMaxRefreshRate() {
final WindowState window = createWindow(null, TYPE_BASE_APPLICATION, "window");
window.mAttrs.preferredMaxDisplayRefreshRate = 60f;
+ parcelLayoutParams(window);
assertEquals(0, mPolicy.getPreferredModeId(window));
assertEquals(0, mPolicy.getPreferredRefreshRate(window), FLOAT_TOLERANCE);
assertEquals(60, mPolicy.getPreferredMaxRefreshRate(window), FLOAT_TOLERANCE);
diff --git a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
index 16a2d8d..6606fb0 100644
--- a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
+++ b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java
@@ -182,15 +182,28 @@
+ "translation state for token=" + token + " taskId=" + taskId);
return;
}
+ int translationActivityUid = -1;
try {
+ IBinder activityToken = taskTopActivityTokens.getActivityToken();
taskTopActivityTokens.getApplicationThread().updateUiTranslationState(
- taskTopActivityTokens.getActivityToken(), state, sourceSpec, targetSpec,
+ activityToken, state, sourceSpec, targetSpec,
viewIds, uiTranslationSpec);
mLastActivityTokens = new WeakReference<>(taskTopActivityTokens);
+ ComponentName componentName =
+ mActivityTaskManagerInternal.getActivityName(activityToken);
+ try {
+ if (componentName != null) {
+ translationActivityUid =
+ getContext().getPackageManager().getApplicationInfoAsUser(
+ componentName.getPackageName(), 0, getUserId()).uid;
+ }
+ } catch (PackageManager.NameNotFoundException e) {
+ Slog.d(TAG, "Cannot find package for" + componentName);
+ }
} catch (RemoteException e) {
Slog.w(TAG, "Update UiTranslationState fail: " + e);
}
- invokeCallbacks(state, sourceSpec, targetSpec);
+ invokeCallbacks(state, sourceSpec, targetSpec, translationActivityUid);
}
@GuardedBy("mLock")
@@ -216,7 +229,8 @@
}
private void invokeCallbacks(
- int state, TranslationSpec sourceSpec, TranslationSpec targetSpec) {
+ int state, TranslationSpec sourceSpec, TranslationSpec targetSpec,
+ int translationActivityUid) {
Bundle res = new Bundle();
res.putInt(EXTRA_STATE, state);
// TODO(177500482): Store the locale pair so it can be sent for RESUME events.
@@ -229,6 +243,14 @@
LocalServices.getService(InputMethodManagerInternal.class)
.getEnabledInputMethodListAsUser(mUserId);
mCallbacks.broadcast((callback, uid) -> {
+ // callback to the application that is translated if registered.
+ if ((int) uid == translationActivityUid) {
+ try {
+ callback.sendResult(res);
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Failed to invoke UiTranslationStateCallback: " + e);
+ }
+ }
// Code here is non-optimal since it's temporary..
boolean isIme = false;
for (InputMethodInfo inputMethod : enabledInputMethods) {
diff --git a/telephony/java/android/telephony/data/QosBearerFilter.java b/telephony/java/android/telephony/data/QosBearerFilter.java
index 5642549..54930d0 100644
--- a/telephony/java/android/telephony/data/QosBearerFilter.java
+++ b/telephony/java/android/telephony/data/QosBearerFilter.java
@@ -57,6 +57,12 @@
public static final int QOS_PROTOCOL_UDP = android.hardware.radio.V1_6.QosProtocol.UDP;
public static final int QOS_PROTOCOL_ESP = android.hardware.radio.V1_6.QosProtocol.ESP;
public static final int QOS_PROTOCOL_AH = android.hardware.radio.V1_6.QosProtocol.AH;
+ public static final int QOS_MIN_PORT = android.hardware.radio.V1_6.QosPortRange.MIN;
+ /**
+ * Hardcoded inplace of android.hardware.radio.V1_6.QosPortRange.MAX as it
+ * returns -1 due to uint16_t to int conversion in java. (TODO: Fix the HAL)
+ */
+ public static final int QOS_MAX_PORT = 65535; // android.hardware.radio.V1_6.QosPortRange.MIN;
@QosProtocol
private int protocol;
@@ -229,6 +235,12 @@
return end;
}
+ public boolean isValid() {
+ return start >= QOS_MIN_PORT && start <= QOS_MAX_PORT
+ && end >= QOS_MIN_PORT && end <= QOS_MAX_PORT
+ && start <= end;
+ }
+
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(start);
diff --git a/telephony/java/android/telephony/ims/RcsContactUceCapability.java b/telephony/java/android/telephony/ims/RcsContactUceCapability.java
index 530003d..9112118 100644
--- a/telephony/java/android/telephony/ims/RcsContactUceCapability.java
+++ b/telephony/java/android/telephony/ims/RcsContactUceCapability.java
@@ -331,7 +331,7 @@
return null;
}
for (RcsContactPresenceTuple tuple : mPresenceTuples) {
- if (tuple.getServiceId().equals(serviceId)) {
+ if (tuple.getServiceId() != null && tuple.getServiceId().equals(serviceId)) {
return tuple;
}
}