diff options
336 files changed, 2378 insertions, 2378 deletions
diff --git a/apct-tests/perftests/autofill/src/android/view/autofill/AbstractAutofillPerfTestCase.java b/apct-tests/perftests/autofill/src/android/view/autofill/AbstractAutofillPerfTestCase.java index d97b5003b252..54e1860d3390 100644 --- a/apct-tests/perftests/autofill/src/android/view/autofill/AbstractAutofillPerfTestCase.java +++ b/apct-tests/perftests/autofill/src/android/view/autofill/AbstractAutofillPerfTestCase.java @@ -16,19 +16,23 @@ package android.view.autofill; +import static com.android.compatibility.common.util.ShellUtils.runShellCommand; + import static org.junit.Assert.assertTrue; import android.os.Looper; import android.perftests.utils.PerfStatusReporter; import android.perftests.utils.PerfTestActivity; -import android.perftests.utils.SettingsHelper; import android.perftests.utils.SettingsStateKeeperRule; import android.provider.Settings; +import android.util.Log; import androidx.test.InstrumentationRegistry; import androidx.test.rule.ActivityTestRule; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Rule; import org.junit.rules.RuleChain; @@ -38,6 +42,8 @@ import org.junit.rules.RuleChain; */ public abstract class AbstractAutofillPerfTestCase { + private static final String TAG = "AbstractAutofillPerfTestCase"; + @ClassRule public static final SettingsStateKeeperRule mServiceSettingsKeeper = new SettingsStateKeeperRule(InstrumentationRegistry.getTargetContext(), @@ -60,6 +66,27 @@ public abstract class AbstractAutofillPerfTestCase { mLayoutId = layoutId; } + @BeforeClass + public static void disableDefaultAugmentedService() { + Log.v(TAG, "@BeforeClass: disableDefaultAugmentedService()"); + setDefaultAugmentedAutofillServiceEnabled(false); + } + + @AfterClass + public static void enableDefaultAugmentedService() { + Log.v(TAG, "@AfterClass: enableDefaultAugmentedService()"); + setDefaultAugmentedAutofillServiceEnabled(true); + } + + /** + * Enables / disables the default augmented autofill service. + */ + private static void setDefaultAugmentedAutofillServiceEnabled(boolean enabled) { + Log.d(TAG, "setDefaultAugmentedAutofillServiceEnabled(): " + enabled); + runShellCommand("cmd autofill set default-augmented-service-enabled 0 %s", + Boolean.toString(enabled)); + } + /** * Prepares the activity so that by the time the test is run it has reference to its fields. */ @@ -80,23 +107,4 @@ public abstract class AbstractAutofillPerfTestCase { * Initializes the {@link PerfTestActivity} after it was launched. */ protected abstract void onCreate(PerfTestActivity activity); - - /** - * Uses the {@code settings} binary to set the autofill service. - */ - protected void setService() { - SettingsHelper.syncSet(InstrumentationRegistry.getTargetContext(), - SettingsHelper.NAMESPACE_SECURE, - Settings.Secure.AUTOFILL_SERVICE, - MyAutofillService.COMPONENT_NAME); - } - - /** - * Uses the {@code settings} binary to reset the autofill service. - */ - protected void resetService() { - SettingsHelper.syncDelete(InstrumentationRegistry.getTargetContext(), - SettingsHelper.NAMESPACE_SECURE, - Settings.Secure.AUTOFILL_SERVICE); - } } diff --git a/apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java b/apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java index f1f812ddf1c7..2475d988f107 100644 --- a/apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java +++ b/apct-tests/perftests/autofill/src/android/view/autofill/AutofillTestWatcher.java @@ -18,10 +18,13 @@ package android.view.autofill; import static com.android.compatibility.common.util.ShellUtils.runShellCommand; +import android.perftests.utils.SettingsHelper; +import android.provider.Settings; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.test.InstrumentationRegistry; import org.junit.rules.TestWatcher; import org.junit.runner.Description; @@ -44,19 +47,26 @@ final class AutofillTestWatcher extends TestWatcher { @Override protected void starting(Description description) { super.starting(description); + final String testName = description.getDisplayName(); + Log.i(TAG, "Starting " + testName); enableVerboseLog(); - MyAutofillService.resetStaticState(); - MyAutofillService.setEnabled(true); + // Prepare the service before each test. + // Disable the current AutofillService. + resetAutofillService(); + // Set MyAutofillService status enable, it can start to accept the calls. + enableMyAutofillService(); setServiceWatcher(); } @Override protected void finished(Description description) { super.finished(description); - + final String testName = description.getDisplayName(); + Log.i(TAG, "Finished " + testName); restoreLogLevel(); - disableService(); + // Set MyAutofillService status disable, so the calls are ignored. + disableMyAutofillService(); clearServiceWatcher(); } @@ -67,12 +77,31 @@ final class AutofillTestWatcher extends TestWatcher { } } - private void enableService() { + /** + * Uses the {@code settings} binary to set the autofill service. + */ + void setAutofillService() { + SettingsHelper.syncSet(InstrumentationRegistry.getTargetContext(), + SettingsHelper.NAMESPACE_SECURE, + Settings.Secure.AUTOFILL_SERVICE, + MyAutofillService.COMPONENT_NAME); + } + + /** + * Uses the {@code settings} binary to reset the autofill service. + */ + void resetAutofillService() { + SettingsHelper.syncDelete(InstrumentationRegistry.getTargetContext(), + SettingsHelper.NAMESPACE_SECURE, + Settings.Secure.AUTOFILL_SERVICE); + } + + private void enableMyAutofillService() { MyAutofillService.resetStaticState(); MyAutofillService.setEnabled(true); } - private void disableService() { + private void disableMyAutofillService() { // Must disable service so calls are ignored in case of errors during the test case; // otherwise, other tests will fail because these calls are made in the UI thread (as both // the service, the tests, and the app run in the same process). @@ -88,7 +117,7 @@ final class AutofillTestWatcher extends TestWatcher { } private void restoreLogLevel() { - Log.w(TAG, "restoreLogLevel to " + mOriginalLogLevel); + Log.d(TAG, "restoreLogLevel to " + mOriginalLogLevel); if (!mOriginalLogLevel.equals("verbose")) { runShellCommand("cmd autofill set log_level %s", mOriginalLogLevel); } diff --git a/apct-tests/perftests/autofill/src/android/view/autofill/LoginTest.java b/apct-tests/perftests/autofill/src/android/view/autofill/LoginTest.java index 99b2590e4049..37b4bde034df 100644 --- a/apct-tests/perftests/autofill/src/android/view/autofill/LoginTest.java +++ b/apct-tests/perftests/autofill/src/android/view/autofill/LoginTest.java @@ -55,7 +55,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { */ @Test public void testFocus_noService() throws Throwable { - resetService(); + mTestWatcher.resetAutofillService(); BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); while (state.keepRunning()) { @@ -73,7 +73,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { @Test public void testFocus_serviceDoesNotAutofill() throws Throwable { MyAutofillService.newCannedResponse().reply(); - setService(); + mTestWatcher.setAutofillService(); // Must first focus in a field to trigger autofill and wait for service response // outside the loop @@ -102,7 +102,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { .setUsername(mUsername.getAutofillId(), "user") .setPassword(mPassword.getAutofillId(), "pass") .reply(); - setService(); + mTestWatcher.setAutofillService(); // Callback is used to slow down the calls made to the autofill server so the // app is not crashed due to binder exhaustion. But the time spent waiting for the callbacks @@ -157,7 +157,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { .setUsername(mUsername.getAutofillId(), "user") .setIgnored(mPassword.getAutofillId()) .reply(); - setService(); + mTestWatcher.setAutofillService(); // Callback is used to slow down the calls made to the autofill server so the // app is not crashed due to binder exhaustion. But the time spent waiting for the callbacks @@ -201,7 +201,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { */ @Test public void testChange_noService() throws Throwable { - resetService(); + mTestWatcher.resetAutofillService(); changeTest(false); } @@ -213,7 +213,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { @Test public void testChange_serviceDoesNotAutofill() throws Throwable { MyAutofillService.newCannedResponse().reply(); - setService(); + mTestWatcher.setAutofillService(); changeTest(true); } @@ -227,7 +227,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { .setUsername(mUsername.getAutofillId(), "user") .setPassword(mPassword.getAutofillId(), "pass") .reply(); - setService(); + mTestWatcher.setAutofillService(); changeTest(true); } @@ -242,7 +242,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { .setUsername(mUsername.getAutofillId(), "user") .setIgnored(mPassword.getAutofillId()) .reply(); - setService(); + mTestWatcher.setAutofillService(); changeTest(true); } @@ -274,7 +274,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { .setUsername(mUsername.getAutofillId(), "user") .setPassword(mPassword.getAutofillId(), "pass") .reply(); - setService(); + mTestWatcher.setAutofillService(); MyAutofillCallback callback = new MyAutofillCallback(); mAfm.registerCallback(callback); diff --git a/apct-tests/perftests/autofill/src/android/view/autofill/MyAutofillService.java b/apct-tests/perftests/autofill/src/android/view/autofill/MyAutofillService.java index 77c1b85b10ab..ddac68b93ebd 100644 --- a/apct-tests/perftests/autofill/src/android/view/autofill/MyAutofillService.java +++ b/apct-tests/perftests/autofill/src/android/view/autofill/MyAutofillService.java @@ -126,6 +126,7 @@ public class MyAutofillService extends AutofillService { onError("ignoring onFillRequest(): response not set", callback); return; } + // TODO(b/162216576): fix error FillResponse Dataset.Builder dataset = new Dataset.Builder(newDatasetPresentation("dataset")); boolean hasData = false; if (response.mUsername != null) { diff --git a/api/current.txt b/api/current.txt index c0dbdef4ab42..4b0901a122e7 100644 --- a/api/current.txt +++ b/api/current.txt @@ -6138,7 +6138,6 @@ package android.app { field @NonNull public static final android.os.Parcelable.Creator<android.app.PendingIntent> CREATOR; field public static final int FLAG_CANCEL_CURRENT = 268435456; // 0x10000000 field public static final int FLAG_IMMUTABLE = 67108864; // 0x4000000 - field public static final int FLAG_MUTABLE = 33554432; // 0x2000000 field public static final int FLAG_NO_CREATE = 536870912; // 0x20000000 field public static final int FLAG_ONE_SHOT = 1073741824; // 0x40000000 field public static final int FLAG_UPDATE_CURRENT = 134217728; // 0x8000000 @@ -16390,7 +16389,9 @@ package android.graphics.fonts { method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes(); method @NonNull public java.nio.ByteBuffer getBuffer(); method @Nullable public java.io.File getFile(); + method public float getGlyphBounds(@IntRange(from=0) int, @NonNull android.graphics.Paint, @Nullable android.graphics.RectF); method @NonNull public android.os.LocaleList getLocaleList(); + method public void getMetrics(@NonNull android.graphics.Paint, @Nullable android.graphics.Paint.FontMetrics); method @NonNull public android.graphics.fonts.FontStyle getStyle(); method @IntRange(from=0) public int getTtcIndex(); } @@ -16402,6 +16403,7 @@ package android.graphics.fonts { ctor public Font.Builder(@NonNull android.os.ParcelFileDescriptor, @IntRange(from=0) long, @IntRange(from=0xffffffff) long); ctor public Font.Builder(@NonNull android.content.res.AssetManager, @NonNull String); ctor public Font.Builder(@NonNull android.content.res.Resources, int); + ctor public Font.Builder(@NonNull android.graphics.fonts.Font); method @NonNull public android.graphics.fonts.Font build() throws java.io.IOException; method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable String); method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]); @@ -26304,6 +26306,7 @@ package android.media { field public static final String KEY_ROTATION = "rotation-degrees"; field public static final String KEY_SAMPLE_RATE = "sample-rate"; field public static final String KEY_SLICE_HEIGHT = "slice-height"; + field public static final String KEY_SLOW_MOTION_MARKERS = "slow-motion-markers"; field public static final String KEY_STRIDE = "stride"; field public static final String KEY_TEMPORAL_LAYERING = "ts-schema"; field public static final String KEY_TILE_HEIGHT = "tile-height"; diff --git a/api/system-current.txt b/api/system-current.txt index 7b572741d2a8..118184df9d00 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7428,7 +7428,7 @@ package android.net.wifi { field public static final int EASY_CONNECT_NETWORK_ROLE_AP = 1; // 0x1 field public static final int EASY_CONNECT_NETWORK_ROLE_STA = 0; // 0x0 field public static final String EXTRA_CHANGE_REASON = "changeReason"; - field public static final String EXTRA_LINK_PROPERTIES = "android.net.wifi.extra.LINK_PROPERTIES"; + field @Deprecated public static final String EXTRA_LINK_PROPERTIES = "android.net.wifi.extra.LINK_PROPERTIES"; field public static final String EXTRA_MULTIPLE_NETWORKS_CHANGED = "multipleChanges"; field public static final String EXTRA_OSU_NETWORK = "android.net.wifi.extra.OSU_NETWORK"; field public static final String EXTRA_PREVIOUS_WIFI_AP_STATE = "previous_wifi_state"; diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java index fbc87ce0cace..cd352e141994 100644 --- a/core/java/android/app/PendingIntent.java +++ b/core/java/android/app/PendingIntent.java @@ -19,16 +19,12 @@ package android.app; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; -import android.compat.Compatibility; -import android.compat.annotation.ChangeId; -import android.compat.annotation.EnabledAfter; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.IIntentReceiver; import android.content.IIntentSender; import android.content.Intent; import android.content.IntentSender; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -39,7 +35,6 @@ import android.os.RemoteException; import android.os.UserHandle; import android.util.AndroidException; import android.util.ArraySet; -import android.util.Log; import android.util.proto.ProtoOutputStream; import com.android.internal.os.IResultReceiver; @@ -107,20 +102,11 @@ import java.lang.annotation.RetentionPolicy; * FLAG_ONE_SHOT, <b>both</b> FLAG_ONE_SHOT and FLAG_NO_CREATE need to be supplied. */ public final class PendingIntent implements Parcelable { - private static final String TAG = "PendingIntent"; private final IIntentSender mTarget; private IResultReceiver mCancelReceiver; private IBinder mWhitelistToken; private ArraySet<CancelListener> mCancelListeners; - /** - * It is now required to specify either {@link #FLAG_IMMUTABLE} - * or {@link #FLAG_MUTABLE} when creating a PendingIntent. - */ - @ChangeId - @EnabledAfter(targetSdkVersion = android.os.Build.VERSION_CODES.R) - static final long PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED = 160794467L; - /** @hide */ @IntDef(flag = true, value = { @@ -129,7 +115,6 @@ public final class PendingIntent implements Parcelable { FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT, FLAG_IMMUTABLE, - FLAG_MUTABLE, Intent.FILL_IN_ACTION, Intent.FILL_IN_DATA, @@ -190,20 +175,6 @@ public final class PendingIntent implements Parcelable { public static final int FLAG_IMMUTABLE = 1<<26; /** - * Flag indicating that the created PendingIntent should be mutable. - * This flag cannot be combined with {@link #FLAG_IMMUTABLE}. <p>Up until - * {@link android.os.Build.VERSION_CODES#R}, PendingIntents are assumed to - * be mutable by default, unless {@link #FLAG_IMMUTABLE} is set. Starting - * with {@link android.os.Build.VERSION_CODES#S}, it will be required to - * explicitly specify the mutability of PendingIntents on creation with - * either (@link #FLAG_IMMUTABLE} or {@link #FLAG_MUTABLE}. It is strongly - * recommended to use {@link #FLAG_IMMUTABLE} when creating a - * PendingIntent. {@link #FLAG_MUTABLE} should only be used when some - * functionality relies on modifying the underlying intent. - */ - public static final int FLAG_MUTABLE = 1<<25; - - /** * Exception thrown when trying to send through a PendingIntent that * has been canceled or is otherwise no longer able to execute the request. */ @@ -315,23 +286,6 @@ public final class PendingIntent implements Parcelable { sOnMarshaledListener.set(listener); } - private static void checkFlags(int flags, String packageName) { - final boolean flagImmutableSet = (flags & PendingIntent.FLAG_IMMUTABLE) != 0; - final boolean flagMutableSet = (flags & PendingIntent.FLAG_MUTABLE) != 0; - - if (flagImmutableSet && flagMutableSet) { - throw new IllegalArgumentException( - "Cannot set both FLAG_IMMUTABLE and FLAG_MUTABLE for PendingIntent"); - } - - if (Compatibility.isChangeEnabled(PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED) - && !flagImmutableSet && !flagMutableSet) { - Log.wtf(TAG, packageName + ": Targeting S+ (version " + Build.VERSION_CODES.S - + " and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE" - + " be specified when creating a PendingIntent"); - } - } - /** * Retrieve a PendingIntent that will start a new activity, like calling * {@link Context#startActivity(Intent) Context.startActivity(Intent)}. @@ -396,7 +350,6 @@ public final class PendingIntent implements Parcelable { String packageName = context.getPackageName(); String resolvedType = intent != null ? intent.resolveTypeIfNeeded( context.getContentResolver()) : null; - checkFlags(flags, packageName); try { intent.migrateExtraStreamToClipData(context); intent.prepareToLeaveProcess(context); @@ -423,7 +376,6 @@ public final class PendingIntent implements Parcelable { String packageName = context.getPackageName(); String resolvedType = intent != null ? intent.resolveTypeIfNeeded( context.getContentResolver()) : null; - checkFlags(flags, packageName); try { intent.migrateExtraStreamToClipData(context); intent.prepareToLeaveProcess(context); @@ -543,7 +495,6 @@ public final class PendingIntent implements Parcelable { intents[i].prepareToLeaveProcess(context); resolvedTypes[i] = intents[i].resolveTypeIfNeeded(context.getContentResolver()); } - checkFlags(flags, packageName); try { IIntentSender target = ActivityManager.getService().getIntentSenderWithFeature( @@ -570,7 +521,6 @@ public final class PendingIntent implements Parcelable { intents[i].prepareToLeaveProcess(context); resolvedTypes[i] = intents[i].resolveTypeIfNeeded(context.getContentResolver()); } - checkFlags(flags, packageName); try { IIntentSender target = ActivityManager.getService().getIntentSenderWithFeature( @@ -622,7 +572,6 @@ public final class PendingIntent implements Parcelable { String packageName = context.getPackageName(); String resolvedType = intent != null ? intent.resolveTypeIfNeeded( context.getContentResolver()) : null; - checkFlags(flags, packageName); try { intent.prepareToLeaveProcess(context); IIntentSender target = @@ -702,7 +651,6 @@ public final class PendingIntent implements Parcelable { String packageName = context.getPackageName(); String resolvedType = intent != null ? intent.resolveTypeIfNeeded( context.getContentResolver()) : null; - checkFlags(flags, packageName); try { intent.prepareToLeaveProcess(context); IIntentSender target = diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index af2b9056dc81..24282365a8c7 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -793,4 +793,6 @@ interface IPackageManager { List<String> getMimeGroup(String packageName, String group); boolean isAutoRevokeWhitelisted(String packageName); + + void grantImplicitAccess(int queryingUid, String visibleAuthority); } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index f0b2329385af..4eec56c0d87b 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -8085,6 +8085,20 @@ public abstract class PackageManager { "getMimeGroup not implemented in subclass"); } + /** + * Grants implicit visibility of the package that provides an authority to a querying UID. + * + * @throws SecurityException when called by a package other than the contacts provider + * @hide + */ + public void grantImplicitAccess(int queryingUid, String visibleAuthority) { + try { + ActivityThread.getPackageManager().grantImplicitAccess(queryingUid, visibleAuthority); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + // Some of the flags don't affect the query result, but let's be conservative and cache // each combination of flags separately. diff --git a/core/java/android/hardware/biometrics/BiometricManager.java b/core/java/android/hardware/biometrics/BiometricManager.java index f86eb9082e01..8d0cc68056f8 100644 --- a/core/java/android/hardware/biometrics/BiometricManager.java +++ b/core/java/android/hardware/biometrics/BiometricManager.java @@ -103,6 +103,7 @@ public class BiometricManager { @IntDef(flag = true, value = { BIOMETRIC_STRONG, BIOMETRIC_WEAK, + BIOMETRIC_CONVENIENCE, DEVICE_CREDENTIAL, }) @interface Types {} diff --git a/core/java/android/hardware/biometrics/SensorProperties.java b/core/java/android/hardware/biometrics/SensorProperties.java new file mode 100644 index 000000000000..0f33ac4f0568 --- /dev/null +++ b/core/java/android/hardware/biometrics/SensorProperties.java @@ -0,0 +1,82 @@ +/* + * Copyright (C) 2020 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.hardware.biometrics; + +import android.annotation.IntDef; +import android.os.Parcel; +import android.os.Parcelable; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * The base class containing all sensor-agnostic information. This is a superset of the + * {@link android.hardware.biometrics.common.CommonProps}, and provides backwards-compatible + * behavior with the older generation of HIDL (non-AIDL) interfaces. + * @hide + */ +public class SensorProperties implements Parcelable { + + public static final int STRENGTH_CONVENIENCE = 0; + public static final int STRENGTH_WEAK = 1; + public static final int STRENGTH_STRONG = 2; + + @IntDef({STRENGTH_CONVENIENCE, STRENGTH_WEAK, STRENGTH_STRONG}) + @Retention(RetentionPolicy.SOURCE) + public @interface Strength {} + + public final int sensorId; + @Strength public final int sensorStrength; + public final int maxEnrollmentsPerUser; + + protected SensorProperties(int sensorId, @Strength int sensorStrength, + int maxEnrollmentsPerUser) { + this.sensorId = sensorId; + this.sensorStrength = sensorStrength; + this.maxEnrollmentsPerUser = maxEnrollmentsPerUser; + } + + protected SensorProperties(Parcel in) { + sensorId = in.readInt(); + sensorStrength = in.readInt(); + maxEnrollmentsPerUser = in.readInt(); + } + + public static final Creator<SensorProperties> CREATOR = new Creator<SensorProperties>() { + @Override + public SensorProperties createFromParcel(Parcel in) { + return new SensorProperties(in); + } + + @Override + public SensorProperties[] newArray(int size) { + return new SensorProperties[size]; + } + }; + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(sensorId); + dest.writeInt(sensorStrength); + dest.writeInt(maxEnrollmentsPerUser); + } +} diff --git a/core/java/android/hardware/face/IFaceService.aidl b/core/java/android/hardware/face/IFaceService.aidl index 437feb13b845..e744c840c298 100644 --- a/core/java/android/hardware/face/IFaceService.aidl +++ b/core/java/android/hardware/face/IFaceService.aidl @@ -110,5 +110,5 @@ interface IFaceService { String opPackageName); // Give FaceService its ID. See AuthService.java - void initializeConfiguration(int sensorId); + void initializeConfiguration(int sensorId, int strength); } diff --git a/core/java/android/hardware/fingerprint/FingerprintSensorProperties.java b/core/java/android/hardware/fingerprint/FingerprintSensorProperties.java index 2fd006809046..718141a4845a 100644 --- a/core/java/android/hardware/fingerprint/FingerprintSensorProperties.java +++ b/core/java/android/hardware/fingerprint/FingerprintSensorProperties.java @@ -17,6 +17,7 @@ package android.hardware.fingerprint; import android.annotation.IntDef; +import android.hardware.biometrics.SensorProperties; import android.hardware.face.FaceSensorProperties; import android.os.Parcel; import android.os.Parcelable; @@ -28,45 +29,44 @@ import java.lang.annotation.RetentionPolicy; * Container for fingerprint sensor properties. * @hide */ -public class FingerprintSensorProperties implements Parcelable { +public class FingerprintSensorProperties extends SensorProperties { public static final int TYPE_UNKNOWN = 0; public static final int TYPE_REAR = 1; - public static final int TYPE_UDFPS = 2; - public static final int TYPE_POWER_BUTTON = 3; + public static final int TYPE_UDFPS_ULTRASONIC = 2; + public static final int TYPE_UDFPS_OPTICAL = 3; + public static final int TYPE_POWER_BUTTON = 4; + public static final int TYPE_HOME_BUTTON = 5; - @IntDef({ - TYPE_UNKNOWN, + @IntDef({TYPE_UNKNOWN, TYPE_REAR, - TYPE_UDFPS, - TYPE_POWER_BUTTON}) + TYPE_UDFPS_ULTRASONIC, + TYPE_UDFPS_OPTICAL, + TYPE_POWER_BUTTON, + TYPE_HOME_BUTTON}) @Retention(RetentionPolicy.SOURCE) public @interface SensorType {} - public final int sensorId; public final @SensorType int sensorType; // IBiometricsFingerprint@2.1 does not manage timeout below the HAL, so the Gatekeeper HAT // cannot be checked public final boolean resetLockoutRequiresHardwareAuthToken; - // Maximum number of enrollments a user/profile can have. - public final int maxTemplatesAllowed; /** * Initializes SensorProperties with specified values */ - public FingerprintSensorProperties(int sensorId, @SensorType int sensorType, - boolean resetLockoutRequiresHardwareAuthToken, int maxTemplatesAllowed) { - this.sensorId = sensorId; + public FingerprintSensorProperties(int sensorId, @Strength int strength, + int maxEnrollmentsPerUser, @SensorType int sensorType, + boolean resetLockoutRequiresHardwareAuthToken) { + super(sensorId, strength, maxEnrollmentsPerUser); this.sensorType = sensorType; this.resetLockoutRequiresHardwareAuthToken = resetLockoutRequiresHardwareAuthToken; - this.maxTemplatesAllowed = maxTemplatesAllowed; } protected FingerprintSensorProperties(Parcel in) { - sensorId = in.readInt(); + super(in); sensorType = in.readInt(); resetLockoutRequiresHardwareAuthToken = in.readBoolean(); - maxTemplatesAllowed = in.readInt(); } public static final Creator<FingerprintSensorProperties> CREATOR = @@ -89,9 +89,18 @@ public class FingerprintSensorProperties implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(sensorId); + super.writeToParcel(dest, flags); dest.writeInt(sensorType); dest.writeBoolean(resetLockoutRequiresHardwareAuthToken); - dest.writeInt(maxTemplatesAllowed); + } + + public boolean isAnyUdfpsType() { + switch (sensorType) { + case TYPE_UDFPS_OPTICAL: + case TYPE_UDFPS_ULTRASONIC: + return true; + default: + return false; + } } } diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl index 0fae15648e15..cc2b520b3152 100644 --- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl +++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl @@ -118,7 +118,7 @@ interface IFingerprintService { void removeClientActiveCallback(IFingerprintClientActiveCallback callback); // Give FingerprintService its ID. See AuthService.java - void initializeConfiguration(int sensorId); + void initializeConfiguration(int sensorId, int strength); // Notifies about a finger touching the sensor area. void onFingerDown(int x, int y, float minor, float major); diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 60ddd8ab22a0..d62d1e1e5775 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -16,10 +16,10 @@ package android.inputmethodservice; +import static android.graphics.Color.TRANSPARENT; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static android.view.WindowInsets.Type.navigationBars; -import static android.view.WindowInsets.Type.statusBars; import static android.view.WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS; import static java.lang.annotation.RetentionPolicy.SOURCE; @@ -69,7 +69,6 @@ import android.view.ViewGroup; import android.view.ViewRootImpl; import android.view.ViewTreeObserver; import android.view.Window; -import android.view.WindowInsets; import android.view.WindowInsets.Side; import android.view.WindowManager; import android.view.animation.AnimationUtils; @@ -1204,25 +1203,22 @@ public class InputMethodService extends AbstractInputMethodService { Context.LAYOUT_INFLATER_SERVICE); mWindow = new SoftInputWindow(this, "InputMethod", mTheme, null, null, mDispatcherState, WindowManager.LayoutParams.TYPE_INPUT_METHOD, Gravity.BOTTOM, false); - mWindow.getWindow().getAttributes().setFitInsetsTypes(statusBars() | navigationBars()); + mWindow.getWindow().getAttributes().setFitInsetsTypes(navigationBars()); mWindow.getWindow().getAttributes().setFitInsetsSides(Side.all() & ~Side.BOTTOM); mWindow.getWindow().getAttributes().setFitInsetsIgnoringVisibility(true); - // IME layout should always be inset by navigation bar, no matter its current visibility, - // unless automotive requests it. Automotive devices may request the navigation bar to be - // hidden when the IME shows up (controlled via config_automotiveHideNavBarForKeyboard) - // in order to maximize the visible screen real estate. When this happens, the IME window - // should animate from the bottom of the screen to reduce the jank that happens from the - // lack of synchronization between the bottom system window and the IME window. + // Our window will extend into the status bar area no matter the bar is visible or not. + // We don't want the ColorView to be visible when status bar is shown. + mWindow.getWindow().setStatusBarColor(TRANSPARENT); + + // Automotive devices may request the navigation bar to be hidden when the IME shows up + // (controlled via config_automotiveHideNavBarForKeyboard) in order to maximize the visible + // screen real estate. When this happens, the IME window should animate from the bottom of + // the screen to reduce the jank that happens from the lack of synchronization between the + // bottom system window and the IME window. if (mIsAutomotive && mAutomotiveHideNavBarForKeyboard) { mWindow.getWindow().setDecorFitsSystemWindows(false); } - mWindow.getWindow().getDecorView().setOnApplyWindowInsetsListener( - (v, insets) -> v.onApplyWindowInsets( - new WindowInsets.Builder(insets).setInsets( - navigationBars(), - insets.getInsetsIgnoringVisibility(navigationBars())) - .build())); // For ColorView in DecorView to work, FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS needs to be set // by default (but IME developers can opt this out later if they want a new behavior). diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 4b2cfe222dd6..a2e53e29193c 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -2551,14 +2551,16 @@ public final class Debug public static native long getZramFreeKb(); /** - * Return memory size in kilobytes allocated for ION heaps. + * Return memory size in kilobytes allocated for ION heaps or -1 if + * /sys/kernel/ion/total_heaps_kb could not be read. * * @hide */ public static native long getIonHeapsSizeKb(); /** - * Return memory size in kilobytes allocated for ION pools. + * Return memory size in kilobytes allocated for ION pools or -1 if + * /sys/kernel/ion/total_pools_kb could not be read. * * @hide */ diff --git a/core/java/android/view/InputChannel.java b/core/java/android/view/InputChannel.java index e1b042160062..f2d3f5ad08bf 100644 --- a/core/java/android/view/InputChannel.java +++ b/core/java/android/view/InputChannel.java @@ -83,7 +83,7 @@ public final class InputChannel implements Parcelable { * * @hide */ - public void setNativeInputChannel(long nativeChannel) { + private void setNativeInputChannel(long nativeChannel) { if (nativeChannel == 0) { throw new IllegalArgumentException("Attempting to set native input channel to null."); } @@ -148,12 +148,11 @@ public final class InputChannel implements Parcelable { } /** - * Transfers ownership of the internal state of the input channel to another - * instance and invalidates this instance. This is used to pass an input channel + * Creates a copy of this instance to the outParameter. This is used to pass an input channel * as an out parameter in a binder call. * @param other The other input channel instance. */ - public void transferTo(InputChannel outParameter) { + public void copyTo(InputChannel outParameter) { if (outParameter == null) { throw new IllegalArgumentException("outParameter must not be null"); } diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index b644e9efa666..abda698fdf73 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -420,8 +420,6 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall final boolean useBLAST = viewRoot.useBLAST(); viewRoot.registerRtFrameCallback(frame -> { try { - final SurfaceControl.Transaction t = useBLAST ? - viewRoot.getBLASTSyncTransaction() : new SurfaceControl.Transaction(); synchronized (mSurfaceControlLock) { if (!parent.isValid()) { if (DEBUG) { @@ -443,16 +441,22 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall Log.d(TAG, System.identityHashCode(this) + " updateSurfaceAlpha RT: set alpha=" + alpha); } - t.setAlpha(mSurfaceControl, alpha); - if (!useBLAST) { + if (useBLAST) { + synchronized (viewRoot.getBlastTransactionLock()) { + viewRoot.getBLASTSyncTransaction() + .setAlpha(mSurfaceControl, alpha); + } + } else { + Transaction t = new SurfaceControl.Transaction(); + t.setAlpha(mSurfaceControl, alpha); t.deferTransactionUntil(mSurfaceControl, viewRoot.getRenderSurfaceControl(), frame); + t.apply(); } } // It's possible that mSurfaceControl is released in the UI thread before // the transaction completes. If that happens, an exception is thrown, which // must be caught immediately. - t.apply(); } catch (Exception e) { Log.e(TAG, System.identityHashCode(this) + "updateSurfaceAlpha RT: Exception during surface transaction", e); @@ -793,23 +797,26 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall final boolean useBLAST = viewRoot.useBLAST(); viewRoot.registerRtFrameCallback(frame -> { try { - final SurfaceControl.Transaction t = useBLAST - ? viewRoot.getBLASTSyncTransaction() - : new SurfaceControl.Transaction(); synchronized (mSurfaceControlLock) { if (!parent.isValid() || mSurfaceControl == null) { return; } - updateRelativeZ(t); - if (!useBLAST) { + + if (useBLAST) { + synchronized (viewRoot.getBlastTransactionLock()) { + updateRelativeZ(viewRoot.getBLASTSyncTransaction()); + } + } else { + final SurfaceControl.Transaction t = new SurfaceControl.Transaction(); + updateRelativeZ(t); t.deferTransactionUntil(mSurfaceControl, viewRoot.getRenderSurfaceControl(), frame); + t.apply(); } } // It's possible that mSurfaceControl is released in the UI thread before // the transaction completes. If that happens, an exception is thrown, which // must be caught immediately. - t.apply(); } catch (Exception e) { Log.e(TAG, System.identityHashCode(this) + "setZOrderOnTop RT: Exception during surface transaction", e); @@ -1252,7 +1259,7 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall private void applySurfaceTransforms(SurfaceControl surface, SurfaceControl.Transaction t, Rect position, long frameNumber) { final ViewRootImpl viewRoot = getViewRootImpl(); - if (frameNumber > 0 && viewRoot != null && !viewRoot.isDrawingToBLASTTransaction()) { + if (frameNumber > 0 && viewRoot != null && !viewRoot.useBLAST()) { t.deferTransactionUntil(surface, viewRoot.getRenderSurfaceControl(), frameNumber); } @@ -1277,19 +1284,23 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall return mRTLastReportedPosition; } - private void setParentSpaceRectangle(Rect position, long frameNumber) { + private void setParentSpaceRectangle(Transaction t, Rect position, long frameNumber) { final ViewRootImpl viewRoot = getViewRootImpl(); - final boolean useBLAST = viewRoot.isDrawingToBLASTTransaction(); - final SurfaceControl.Transaction t = useBLAST ? viewRoot.getBLASTSyncTransaction() : - mRtTransaction; - applySurfaceTransforms(mSurfaceControl, t, position, frameNumber); + applyChildSurfaceTransaction_renderWorker(t, viewRoot.mSurface, frameNumber); + } - applyChildSurfaceTransaction_renderWorker(t, viewRoot.mSurface, - frameNumber); + private void setParentSpaceRectangle(Rect position, long frameNumber) { + final ViewRootImpl viewRoot = getViewRootImpl(); + final boolean useBLAST = viewRoot.useBLAST(); - if (!useBLAST) { - t.apply(); + if (useBLAST) { + synchronized (viewRoot.getBlastTransactionLock()) { + setParentSpaceRectangle(viewRoot.getBLASTSyncTransaction(), position, frameNumber); + } + } else { + setParentSpaceRectangle(mRtTransaction, position, frameNumber); + mRtTransaction.apply(); } } @@ -1337,10 +1348,20 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall } } + private void releaseSurfaces(Transaction t) { + if (mRtReleaseSurfaces) { + mRtReleaseSurfaces = false; + t.remove(mSurfaceControl); + t.remove(mBackgroundControl); + mSurfaceControl = null; + mBackgroundControl = null; + } + } + @Override public void positionLost(long frameNumber) { final ViewRootImpl viewRoot = getViewRootImpl(); - boolean useBLAST = viewRoot != null && viewRoot.isDrawingToBLASTTransaction(); + boolean useBLAST = viewRoot != null && viewRoot.useBLAST(); if (DEBUG) { Log.d(TAG, String.format("%d windowPositionLost, frameNr = %d", System.identityHashCode(this), frameNumber)); @@ -1351,38 +1372,31 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall return; } - final SurfaceControl.Transaction t = useBLAST ? - (viewRoot != null ? viewRoot.getBLASTSyncTransaction() : mRtTransaction) : - mRtTransaction; - /** * positionLost can be called while UI thread is un-paused so we * need to hold the lock here. */ synchronized (mSurfaceControlLock) { - if (frameNumber > 0 && viewRoot != null && !useBLAST) { - if (viewRoot.mSurface.isValid()) { + if (useBLAST) { + synchronized (viewRoot.getBlastTransactionLock()) { + viewRoot.getBLASTSyncTransaction().hide(mSurfaceControl); + releaseSurfaces(viewRoot.getBLASTSyncTransaction()); + } + } else { + if (frameNumber > 0 && viewRoot != null && viewRoot.mSurface.isValid()) { mRtTransaction.deferTransactionUntil(mSurfaceControl, viewRoot.getRenderSurfaceControl(), frameNumber); } - } - t.hide(mSurfaceControl); - - if (mRtReleaseSurfaces) { - mRtReleaseSurfaces = false; - mRtTransaction.remove(mSurfaceControl); - mRtTransaction.remove(mBackgroundControl); - mSurfaceControl = null; - mBackgroundControl = null; + mRtTransaction.hide(mSurfaceControl); + releaseSurfaces(mRtTransaction); + // If we aren't using BLAST, we apply the transaction locally, otherwise we let + // the ViewRoot apply it for us. + // If the ViewRoot is null, we behave as if we aren't using BLAST so we need to + // apply the transaction. + mRtTransaction.apply(); } mRtHandlingPositionUpdates = false; } - - // If we aren't using BLAST, we apply the transaction locally, otherise we let the ViewRoot apply it for us. - // If the ViewRoot is null, we behave as if we aren't using BLAST so we need to apply the transaction. - if (!useBLAST || viewRoot == null) { - mRtTransaction.apply(); - } } }; diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 0bbd8992bc1a..7ce7a12d77aa 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -654,26 +654,25 @@ public final class ViewRootImpl implements ViewParent, int localChanges; } - // If set, ViewRootImpl will call BLASTBufferQueue::setNextTransaction with - // mRtBLASTSyncTransaction, prior to invoking draw. This provides a way - // to redirect the buffers in to transactions. + // If set, ViewRootImpl will request a callback from HWRender when it's ready to render the next + // frame. This will allow VRI to call BLASTBufferQueue::setNextTransaction with + // mRtBLASTSyncTransaction, so the next frame submitted will be added to the + // mRtBLASTSyncTransaction instead of getting applied. private boolean mNextDrawUseBLASTSyncTransaction; - // Set when calling setNextTransaction, we can't just reuse mNextDrawUseBLASTSyncTransaction - // because, imagine this scenario: - // 1. First draw is using BLAST, mNextDrawUseBLAST = true - // 2. We call perform draw and are waiting on the callback - // 3. After the first perform draw but before the first callback and the - // second perform draw, a second draw sets mNextDrawUseBLAST = true (it already was) - // 4. At this point the callback fires and we set mNextDrawUseBLAST = false; - // 5. We get to performDraw and fail to sync as we intended because mNextDrawUseBLAST - // is now false. - // This is why we use a two-step latch with the two booleans, one consumed from - // performDraw and one consumed from finishBLASTSync() - private boolean mNextReportConsumeBLAST; - // Be very careful with the threading here. This is used from the render thread while - // the UI thread is paused and then applied and cleared from the UI thread right after - // draw returns. - private SurfaceControl.Transaction mRtBLASTSyncTransaction = new SurfaceControl.Transaction(); + + // This is used to signal if the mRtBLASTSyncTransaction should be applied/merged. When true, + // it indicates mRtBLASTSyncTransaction was sent to BLASTBufferQueue::setNextTransaction. + // Therefore, in onFrameComplete, if mRtNextFrameReportConsumeWithBlast is true, that means + // mRtBLASTSyncTransaction now contains the next buffer frame to be applied. + private boolean mRtNextFrameReportedConsumeWithBlast; + + // Be very careful with the threading here. This is used from a thread pool generated by the + // render thread. Therefore, it needs to be locked when updating from the thread pool since + // multiple threads can be accessing it. It does not need to be locked when applied or merged + // since that can only happen from the frame complete callback after the other callbacks have + // been invoked. + private final SurfaceControl.Transaction mRtBLASTSyncTransaction = + new SurfaceControl.Transaction(); // Keeps track of whether the WM requested us to use BLAST Sync when calling relayout. // We use this to make sure we don't send the WM transactions from an internal BLAST sync @@ -3783,26 +3782,29 @@ public final class ViewRootImpl implements ViewParent, commitCallbacks.get(i).run(); } } - });}); + }); + }); } } try { if (mNextDrawUseBLASTSyncTransaction) { - // TODO(b/149747443) - // We aren't prepared to handle overlapping use of mRtBLASTSyncTransaction - // so if we are BLAST syncing we make sure the previous draw has - // totally finished. - if (mAttachInfo.mThreadedRenderer != null) { - mAttachInfo.mThreadedRenderer.pause(); - } - - mNextReportConsumeBLAST = true; + // Frame callbacks will always occur after submitting draw requests and before + // the draw actually occurs. This will ensure that we set the next transaction + // for the frame that's about to get drawn and not on a previous frame that. + // + // This is thread safe since mRtNextFrameReportConsumeWithBlast will only be + // modified in onFrameDraw and then again in onFrameComplete. This is to ensure the + // next frame completed should be reported with the blast sync transaction. + registerRtFrameCallback(frame -> { + mRtNextFrameReportedConsumeWithBlast = true; + if (mBlastBufferQueue != null) { + // We don't need to synchronize mRtBLASTSyncTransaction here since it's not + // being modified and only sent to BlastBufferQueue. + mBlastBufferQueue.setNextTransaction(mRtBLASTSyncTransaction); + } + }); mNextDrawUseBLASTSyncTransaction = false; - - if (mBlastBufferQueue != null) { - mBlastBufferQueue.setNextTransaction(mRtBLASTSyncTransaction); - } } boolean canUseAsync = draw(fullRedrawNeeded); if (usingAsyncReport && !canUseAsync) { @@ -9757,9 +9759,12 @@ public final class ViewRootImpl implements ViewParent, private void finishBLASTSync(boolean apply) { mSendNextFrameToWm = false; - if (mNextReportConsumeBLAST) { - mNextReportConsumeBLAST = false; + if (mRtNextFrameReportedConsumeWithBlast) { + mRtNextFrameReportedConsumeWithBlast = false; + // We don't need to synchronize mRtBLASTSyncTransaction here we're guaranteed that this + // is called after all onFrameDraw and after callbacks to PositionUpdateListener. + // Therefore, no one should be modifying this object until the next vsync. if (apply) { mRtBLASTSyncTransaction.apply(); } else { @@ -9772,6 +9777,10 @@ public final class ViewRootImpl implements ViewParent, return mRtBLASTSyncTransaction; } + Object getBlastTransactionLock() { + return mRtBLASTSyncTransaction; + } + /** * @hide */ @@ -9799,12 +9808,4 @@ public final class ViewRootImpl implements ViewParent, boolean useBLAST() { return mUseBLASTAdapter && !mForceDisableBLAST; } - - /** - * Returns true if we are about to or currently processing a draw directed - * in to a BLAST transaction. - */ - boolean isDrawingToBLASTTransaction() { - return mNextReportConsumeBLAST; - } } diff --git a/core/java/android/window/WindowContainerTransaction.java b/core/java/android/window/WindowContainerTransaction.java index 8be37e9e492d..ba901549f2b5 100644 --- a/core/java/android/window/WindowContainerTransaction.java +++ b/core/java/android/window/WindowContainerTransaction.java @@ -238,6 +238,22 @@ public final class WindowContainerTransaction implements Parcelable { } /** + * Sets whether a container should ignore the orientation request from apps below it. It + * currently only applies to {@link com.android.server.wm.TaskDisplayArea}. When {@code false}, + * it may rotate based on the orientation request; When {@code true}, it can never specify + * orientation, but shows the fixed-orientation apps in the letterbox. + * @hide + */ + @NonNull + public WindowContainerTransaction setIgnoreOrientationRequest( + @NonNull WindowContainerToken container, boolean ignoreOrientationRequest) { + Change chg = getOrCreateChange(container.asBinder()); + chg.mIgnoreOrientationRequest = ignoreOrientationRequest; + chg.mChangeMask |= Change.CHANGE_IGNORE_ORIENTATION_REQUEST; + return this; + } + + /** * Reparents a container into another one. The effect of a {@code null} parent can vary. For * example, reparenting a stack to {@code null} will reparent it to its display. * @@ -341,10 +357,12 @@ public final class WindowContainerTransaction implements Parcelable { public static final int CHANGE_PIP_CALLBACK = 1 << 2; public static final int CHANGE_HIDDEN = 1 << 3; public static final int CHANGE_BOUNDS_TRANSACTION_RECT = 1 << 4; + public static final int CHANGE_IGNORE_ORIENTATION_REQUEST = 1 << 5; private final Configuration mConfiguration = new Configuration(); private boolean mFocusable = true; private boolean mHidden = false; + private boolean mIgnoreOrientationRequest = false; private int mChangeMask = 0; private @ActivityInfo.Config int mConfigSetMask = 0; private @WindowConfiguration.WindowConfig int mWindowSetMask = 0; @@ -362,6 +380,7 @@ public final class WindowContainerTransaction implements Parcelable { mConfiguration.readFromParcel(in); mFocusable = in.readBoolean(); mHidden = in.readBoolean(); + mIgnoreOrientationRequest = in.readBoolean(); mChangeMask = in.readInt(); mConfigSetMask = in.readInt(); mWindowSetMask = in.readInt(); @@ -404,6 +423,9 @@ public final class WindowContainerTransaction implements Parcelable { if ((other.mChangeMask & CHANGE_HIDDEN) != 0) { mHidden = other.mHidden; } + if ((other.mChangeMask & CHANGE_IGNORE_ORIENTATION_REQUEST) != 0) { + mIgnoreOrientationRequest = other.mIgnoreOrientationRequest; + } mChangeMask |= other.mChangeMask; if (other.mActivityWindowingMode >= 0) { mActivityWindowingMode = other.mActivityWindowingMode; @@ -445,6 +467,15 @@ public final class WindowContainerTransaction implements Parcelable { return mHidden; } + /** Gets the requested state of whether to ignore orientation request. */ + public boolean getIgnoreOrientationRequest() { + if ((mChangeMask & CHANGE_IGNORE_ORIENTATION_REQUEST) == 0) { + throw new RuntimeException("IgnoreOrientationRequest not set. " + + "Check CHANGE_IGNORE_ORIENTATION_REQUEST first"); + } + return mIgnoreOrientationRequest; + } + public int getChangeMask() { return mChangeMask; } @@ -509,6 +540,9 @@ public final class WindowContainerTransaction implements Parcelable { if (mBoundsChangeTransaction != null) { sb.append("hasBoundsTransaction,"); } + if ((mChangeMask & CHANGE_IGNORE_ORIENTATION_REQUEST) != 0) { + sb.append("ignoreOrientationRequest:" + mIgnoreOrientationRequest + ","); + } sb.append("}"); return sb.toString(); } @@ -518,6 +552,7 @@ public final class WindowContainerTransaction implements Parcelable { mConfiguration.writeToParcel(dest, flags); dest.writeBoolean(mFocusable); dest.writeBoolean(mHidden); + dest.writeBoolean(mIgnoreOrientationRequest); dest.writeInt(mChangeMask); dest.writeInt(mConfigSetMask); dest.writeInt(mWindowSetMask); diff --git a/core/java/com/android/internal/BrightnessSynchronizer.java b/core/java/com/android/internal/BrightnessSynchronizer.java index f08d0ef8c052..6b8cf6361e91 100644 --- a/core/java/com/android/internal/BrightnessSynchronizer.java +++ b/core/java/com/android/internal/BrightnessSynchronizer.java @@ -36,7 +36,7 @@ import java.util.Queue; * (new) system for storing the brightness. It has methods to convert between the two and also * observes for when one of the settings is changed and syncs this with the other. */ -public class BrightnessSynchronizer{ +public class BrightnessSynchronizer { private static final int MSG_UPDATE_FLOAT = 1; private static final int MSG_UPDATE_INT = 2; @@ -78,6 +78,26 @@ public class BrightnessSynchronizer{ mContext = context; mBrightnessSyncObserver = new BrightnessSyncObserver(mHandler); mBrightnessSyncObserver.startObserving(); + + // It is possible for the system to start up with the int and float values not + // synchronized. So we force an update to the int value, since float is the source + // of truth. Fallback to int value, if float is invalid. If both are invalid, use default + // float value from config. + final float currentFloatBrightness = getScreenBrightnessFloat(context); + final int currentIntBrightness = getScreenBrightnessInt(context); + + if (!Float.isNaN(currentFloatBrightness)) { + updateBrightnessIntFromFloat(currentFloatBrightness); + } else if (currentIntBrightness != -1) { + updateBrightnessFloatFromInt(currentIntBrightness); + } else { + final float defaultBrightness = mContext.getResources().getFloat( + com.android.internal.R.dimen.config_screenBrightnessSettingDefaultFloat); + Settings.System.putFloatForUser(mContext.getContentResolver(), + Settings.System.SCREEN_BRIGHTNESS_FLOAT, defaultBrightness, + UserHandle.USER_CURRENT); + + } } /** @@ -132,7 +152,8 @@ public class BrightnessSynchronizer{ private static int getScreenBrightnessInt(Context context) { return Settings.System.getIntForUser(context.getContentResolver(), - Settings.System.SCREEN_BRIGHTNESS, 0, UserHandle.USER_CURRENT); + Settings.System.SCREEN_BRIGHTNESS, PowerManager.BRIGHTNESS_INVALID, + UserHandle.USER_CURRENT); } private float mPreferredSettingValue; diff --git a/core/java/com/android/internal/logging/UiEventLoggerImpl.java b/core/java/com/android/internal/logging/UiEventLoggerImpl.java index c9156c13aae3..c0f44a5eb39b 100644 --- a/core/java/com/android/internal/logging/UiEventLoggerImpl.java +++ b/core/java/com/android/internal/logging/UiEventLoggerImpl.java @@ -33,7 +33,11 @@ public class UiEventLoggerImpl implements UiEventLogger { public void log(UiEventEnum event, int uid, String packageName) { final int eventID = event.getId(); if (eventID > 0) { - FrameworkStatsLog.write(FrameworkStatsLog.UI_EVENT_REPORTED, eventID, uid, packageName); + FrameworkStatsLog.write(FrameworkStatsLog.UI_EVENT_REPORTED, + /* event_id = 1 */ eventID, + /* uid = 2 */ uid, + /* package_name = 3 */ packageName, + /* instance_id = 4 */ 0); } } @@ -42,8 +46,11 @@ public class UiEventLoggerImpl implements UiEventLogger { InstanceId instance) { final int eventID = event.getId(); if ((eventID > 0) && (instance != null)) { - FrameworkStatsLog.write(FrameworkStatsLog.UI_EVENT_REPORTED, eventID, uid, packageName, - instance.getId()); + FrameworkStatsLog.write(FrameworkStatsLog.UI_EVENT_REPORTED, + /* event_id = 1 */ eventID, + /* uid = 2 */ uid, + /* package_name = 3 */ packageName, + /* instance_id = 4 */ instance.getId()); } else { log(event, uid, packageName); } diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 7516a879211f..4a0e26a5c7cb 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -156,7 +156,7 @@ public class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version - static final int VERSION = 187 + (USE_OLD_HISTORY ? 1000 : 0); + static final int VERSION = 188 + (USE_OLD_HISTORY ? 1000 : 0); // The maximum number of names wakelocks we will keep track of // per uid; once the limit is reached, we batch the remaining wakelocks @@ -14576,6 +14576,7 @@ public class BatteryStatsImpl extends BatteryStats { mDailyStartTimeMs = in.readLong(); mNextMinDailyDeadlineMs = in.readLong(); mNextMaxDailyDeadlineMs = in.readLong(); + mBatteryTimeToFullSeconds = in.readLong(); mStartCount++; @@ -15068,6 +15069,7 @@ public class BatteryStatsImpl extends BatteryStats { out.writeLong(mDailyStartTimeMs); out.writeLong(mNextMinDailyDeadlineMs); out.writeLong(mNextMaxDailyDeadlineMs); + out.writeLong(mBatteryTimeToFullSeconds); mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS); mScreenDozeTimer.writeSummaryFromParcelLocked(out, NOWREAL_SYS); @@ -15651,6 +15653,7 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeLightDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mDischargeDeepDozeCounter = new LongSamplingCounter(mOnBatteryTimeBase, in); mLastWriteTimeMs = in.readLong(); + mBatteryTimeToFullSeconds = in.readLong(); mRpmStats.clear(); int NRPMS = in.readInt(); @@ -15850,6 +15853,7 @@ public class BatteryStatsImpl extends BatteryStats { mDischargeLightDozeCounter.writeToParcel(out); mDischargeDeepDozeCounter.writeToParcel(out); out.writeLong(mLastWriteTimeMs); + out.writeLong(mBatteryTimeToFullSeconds); out.writeInt(mRpmStats.size()); for (Map.Entry<String, SamplingTimer> ent : mRpmStats.entrySet()) { diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java index 1f8a829aaacd..4512fbac38c1 100644 --- a/core/java/com/android/internal/policy/DecorView.java +++ b/core/java/com/android/internal/policy/DecorView.java @@ -1105,15 +1105,18 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind : controller.getSystemBarsAppearance(); if (insets != null) { - final Insets systemBarInsets = insets.getInsets(WindowInsets.Type.systemBars()); - final Insets stableBarInsets = insets.getInsetsIgnoringVisibility( - WindowInsets.Type.systemBars()); final boolean clearCompatInsets = clearCompatInsets(attrs.type, attrs.flags, getResources().getConfiguration().windowConfiguration.getWindowingMode()); - mLastTopInset = clearCompatInsets ? 0 : systemBarInsets.top; - mLastBottomInset = clearCompatInsets ? 0 : systemBarInsets.bottom; - mLastRightInset = clearCompatInsets ? 0 : systemBarInsets.right; - mLastLeftInset = clearCompatInsets ? 0 : systemBarInsets.left; + final Insets stableBarInsets = insets.getInsetsIgnoringVisibility( + WindowInsets.Type.systemBars()); + final Insets systemInsets = clearCompatInsets + ? Insets.NONE + : Insets.min(insets.getInsets(WindowInsets.Type.systemBars() + | WindowInsets.Type.displayCutout()), stableBarInsets); + mLastTopInset = systemInsets.top; + mLastBottomInset = systemInsets.bottom; + mLastRightInset = systemInsets.right; + mLastLeftInset = systemInsets.left; // Don't animate if the presence of stable insets has changed, because that // indicates that the window was either just added and received them for the diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index ef0eeec2c7af..5a859aabce7b 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -792,7 +792,7 @@ static jlong android_os_Debug_getFreeZramKb(JNIEnv* env, jobject clazz) { } static jlong android_os_Debug_getIonHeapsSizeKb(JNIEnv* env, jobject clazz) { - jlong heapsSizeKb = 0; + jlong heapsSizeKb = -1; uint64_t size; if (meminfo::ReadIonHeapsSizeKb(&size)) { @@ -803,7 +803,7 @@ static jlong android_os_Debug_getIonHeapsSizeKb(JNIEnv* env, jobject clazz) { } static jlong android_os_Debug_getIonPoolsSizeKb(JNIEnv* env, jobject clazz) { - jlong poolsSizeKb = 0; + jlong poolsSizeKb = -1; uint64_t size; if (meminfo::ReadIonPoolsSizeKb(&size)) { diff --git a/core/jni/android_view_InputChannel.cpp b/core/jni/android_view_InputChannel.cpp index 2436b23a45d0..d4a746290baa 100644 --- a/core/jni/android_view_InputChannel.cpp +++ b/core/jni/android_view_InputChannel.cpp @@ -36,6 +36,9 @@ namespace android { static struct { jclass clazz; + jmethodID mCtor; + jmethodID mSetNativeInputChannel; + jfieldID mPtr; // native object attached to the DVM InputChannel } gInputChannelClassInfo; @@ -43,7 +46,7 @@ static struct { class NativeInputChannel { public: - explicit NativeInputChannel(const std::shared_ptr<InputChannel>& inputChannel); + explicit NativeInputChannel(std::unique_ptr<InputChannel> inputChannel); ~NativeInputChannel(); inline std::shared_ptr<InputChannel> getInputChannel() { return mInputChannel; } @@ -59,8 +62,8 @@ private: // ---------------------------------------------------------------------------- -NativeInputChannel::NativeInputChannel(const std::shared_ptr<InputChannel>& inputChannel) - : mInputChannel(inputChannel), mDisposeCallback(nullptr) {} +NativeInputChannel::NativeInputChannel(std::unique_ptr<InputChannel> inputChannel) + : mInputChannel(std::move(inputChannel)), mDisposeCallback(nullptr) {} NativeInputChannel::~NativeInputChannel() { } @@ -110,13 +113,33 @@ void android_view_InputChannel_setDisposeCallback(JNIEnv* env, jobject inputChan } static jlong android_view_InputChannel_createInputChannel( - JNIEnv* env, std::shared_ptr<InputChannel> inputChannel) { + JNIEnv* env, std::unique_ptr<InputChannel> inputChannel) { std::unique_ptr<NativeInputChannel> nativeInputChannel = - std::make_unique<NativeInputChannel>(inputChannel); + std::make_unique<NativeInputChannel>(std::move(inputChannel)); return reinterpret_cast<jlong>(nativeInputChannel.release()); } +jobject android_view_InputChannel_createJavaObject(JNIEnv* env, + std::unique_ptr<InputChannel> inputChannel) { + std::string name = inputChannel->getName(); + jlong ptr = android_view_InputChannel_createInputChannel(env, std::move(inputChannel)); + jobject javaInputChannel = + env->NewObject(gInputChannelClassInfo.clazz, gInputChannelClassInfo.mCtor); + if (!javaInputChannel) { + ALOGE("Failed to create a Java InputChannel for channel %s.", name.c_str()); + return nullptr; + } + + env->CallVoidMethod(javaInputChannel, gInputChannelClassInfo.mSetNativeInputChannel, ptr); + if (env->ExceptionOccurred()) { + ALOGE("Failed to set native ptr to the Java InputChannel for channel %s.", + inputChannel->getName().c_str()); + return nullptr; + } + return javaInputChannel; +} + static jlongArray android_view_InputChannel_nativeOpenInputChannelPair(JNIEnv* env, jclass clazz, jstring nameObj) { ScopedUtfChars nameChars(env, nameObj); @@ -180,9 +203,10 @@ static jlong android_view_InputChannel_nativeReadFromParcel(JNIEnv* env, jobject if (parcel) { bool isInitialized = parcel->readInt32(); if (isInitialized) { - std::shared_ptr<InputChannel> inputChannel = std::make_shared<InputChannel>(); + std::unique_ptr<InputChannel> inputChannel = std::make_unique<InputChannel>(); inputChannel->readFromParcel(parcel); - NativeInputChannel* nativeInputChannel = new NativeInputChannel(inputChannel); + NativeInputChannel* nativeInputChannel = + new NativeInputChannel(std::move(inputChannel)); return reinterpret_cast<jlong>(nativeInputChannel); } } @@ -233,13 +257,13 @@ static jlong android_view_InputChannel_nativeDup(JNIEnv* env, jobject obj, jlong return 0; } - std::shared_ptr<InputChannel> dupInputChannel = inputChannel->dup(); + std::unique_ptr<InputChannel> dupInputChannel = inputChannel->dup(); if (dupInputChannel == nullptr) { std::string message = android::base::StringPrintf( "Could not duplicate input channel %s", inputChannel->getName().c_str()); jniThrowRuntimeException(env, message.c_str()); } - return reinterpret_cast<jlong>(new NativeInputChannel(dupInputChannel)); + return reinterpret_cast<jlong>(new NativeInputChannel(std::move(dupInputChannel))); } static jobject android_view_InputChannel_nativeGetToken(JNIEnv* env, jobject obj, jlong channel) { @@ -281,6 +305,11 @@ int register_android_view_InputChannel(JNIEnv* env) { jclass clazz = FindClassOrDie(env, "android/view/InputChannel"); gInputChannelClassInfo.clazz = MakeGlobalRefOrDie(env, clazz); + gInputChannelClassInfo.mCtor = + GetMethodIDOrDie(env, gInputChannelClassInfo.clazz, "<init>", "()V"); + gInputChannelClassInfo.mSetNativeInputChannel = + GetMethodIDOrDie(env, gInputChannelClassInfo.clazz, "setNativeInputChannel", "(J)V"); + gInputChannelClassInfo.mPtr = GetFieldIDOrDie(env, gInputChannelClassInfo.clazz, "mPtr", "J"); return res; diff --git a/core/jni/android_view_InputChannel.h b/core/jni/android_view_InputChannel.h index 8030c96ab19f..50b9aed4b12c 100644 --- a/core/jni/android_view_InputChannel.h +++ b/core/jni/android_view_InputChannel.h @@ -36,6 +36,8 @@ extern std::shared_ptr<InputChannel> android_view_InputChannel_getInputChannel( extern void android_view_InputChannel_setDisposeCallback(JNIEnv* env, jobject inputChannelObj, InputChannelObjDisposeCallback callback, void* data = NULL); +extern jobject android_view_InputChannel_createJavaObject( + JNIEnv* env, std::unique_ptr<InputChannel> inputChannel); } // namespace android #endif // _ANDROID_OS_INPUTCHANNEL_H diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index f5facea7fc26..b54dfc011735 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d uur lank</item> <item quantity="one">1 uur lank</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (volgende wekker)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Totdat jy dit afskakel"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index bea18616cba9..668ce4232f76 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">ለ%d ሰዓት</item> <item quantity="other">ለ%d ሰዓት</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"እስከ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"እስከ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ድረስ"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"እስከ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (ቀጣይ ማንቂያ)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"እስኪያጠፉት ድረስ"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 68323448a44f..fdb351ca52a2 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -1953,6 +1953,7 @@ <item quantity="other">لمدة %d من الساعات</item> <item quantity="one">لمدة ساعة</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"حتى <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"حتى <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"حتى <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (التنبيه التالي)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"إلى أن يتم إيقاف الوضع"</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index bad330e75864..93ce15fc73b4 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">%d ঘণ্টাৰ বাবে</item> <item quantity="other">%d ঘণ্টাৰ বাবে</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> পৰ্যন্ত"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> পৰ্যন্ত"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (পৰৱৰ্তী এলার্ম) পর্যন্ত"</string> <string name="zen_mode_forever" msgid="740585666364912448">"আপুনি অফ নকৰা পর্যন্ত"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index c721bbf8c829..01b815b43202 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d saat üçün</item> <item quantity="one">1 saat üçün</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Bu vaxtadək: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Saat <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> qədər"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> radəsinə qədər (növbəti siqnal)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Deaktiv edənə qədər"</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 93ddbe521ac5..e2fc8f1f7862 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -243,7 +243,7 @@ <string name="global_action_power_off" msgid="4404936470711393203">"Isključi"</string> <string name="global_action_power_options" msgid="1185286119330160073">"Napajanje"</string> <string name="global_action_restart" msgid="4678451019561687074">"Restartuj"</string> - <string name="global_action_emergency" msgid="1387617624177105088">"Hitni poziv"</string> + <string name="global_action_emergency" msgid="1387617624177105088">"Hitan poziv"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Izveštaj o grešci"</string> <string name="global_action_logout" msgid="6093581310002476511">"Završi sesiju"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"Snimak ekrana"</string> @@ -835,7 +835,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pritisnite „Meni“ da biste otključali telefon ili uputite hitan poziv."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pritisnite „Meni“ za otključavanje."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Unesite šablon za otključavanje"</string> - <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Hitni poziv"</string> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Hitan poziv"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Nazad na poziv"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Tačno!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Probajte ponovo"</string> @@ -1815,7 +1815,7 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Potvrdi"</string> - <string name="battery_saver_description_with_learn_more" msgid="4424488535318105801">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n• uključuje tamnu temu\n• isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer, „Ok Google“\n\n"<annotation id="url">"Saznajte više"</annotation></string> + <string name="battery_saver_description_with_learn_more" msgid="4424488535318105801">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n• uključuje tamnu temu\n• isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer „Ok Google“\n\n"<annotation id="url">"Saznajte više"</annotation></string> <string name="battery_saver_description" msgid="6794188153647295212">"Da bi se produžilo trajanje baterije, Ušteda baterije:\n\n• uključuje tamnu temu\n• isključuje ili ograničava aktivnosti u pozadini, neke vizuelne efekte i druge funkcije, na primer, „Ok Google“"</string> <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjila potrošnja podataka, Ušteda podataka sprečava neke aplikacije da šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može da pristupa podacima, ali će to činiti ređe. Na primer, slike se neće prikazivati dok ih ne dodirnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Želite da uključite Uštedu podataka?"</string> @@ -1860,6 +1860,7 @@ <item quantity="few">Za %d s</item> <item quantity="other">Za %d s</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (sledeći alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Dok ne isključite"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 08aeacf9307e..45008f2458bb 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="many">На %d гадз</item> <item quantity="other">На %d гадз</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Да <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Да <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Да <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (наступны будзільнік)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Пакуль не выключыце"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index e49ae26a93ac..0c2c0225eab9 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">За %d ч</item> <item quantity="one">За 1 ч</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"До следващия будилник (<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"До изключване"</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index 22589cd00b06..b10d8dcad74f 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -1829,6 +1829,8 @@ <item quantity="one">%d ঘন্টার জন্য</item> <item quantity="other">%d ঘন্টার জন্য</item> </plurals> + <!-- no translation found for zen_mode_until_next_day (1403042784161725038) --> + <skip /> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> পর্যন্ত"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> পর্যন্ত (পরবর্তী অ্যালার্ম)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"যতক্ষণ না আপনি বন্ধ করছেন"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 755ee472afb3..17c0d1daa0fb 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -593,7 +593,7 @@ <string name="face_acquired_not_detected" msgid="2945945257956443257">"Postavite lice direktno ispred telefona"</string> <string name="face_acquired_too_much_motion" msgid="8199691445085189528">"Previše pokreta. Držite telefon mirno."</string> <string name="face_acquired_recalibrate" msgid="8724013080976469746">"Ponovo registrirajte lice."</string> - <string name="face_acquired_too_different" msgid="4699657338753282542">"Nije više moguće prepoznati lice. Pokušajte opet."</string> + <string name="face_acquired_too_different" msgid="4699657338753282542">"Više nije moguće prepoznati lice. Pokušajte opet."</string> <string name="face_acquired_too_similar" msgid="7684650785108399370">"Previše slično, promijenite položaj."</string> <string name="face_acquired_pan_too_extreme" msgid="7822191262299152527">"Malo manje zakrenite glavu."</string> <string name="face_acquired_tilt_too_extreme" msgid="8119978324129248059">"Malo manje zakrenite glavu."</string> @@ -1860,6 +1860,7 @@ <item quantity="few">%d sata</item> <item quantity="other">%d sati</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (sljedeći alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Dok ne isključite"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 4f55bf51c826..e0c709d4e380 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1224,7 +1224,7 @@ <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"S\'ha establert el so de silenci"</string> <string name="volume_call" msgid="7625321655265747433">"Volum en trucada"</string> <string name="volume_bluetooth_call" msgid="2930204618610115061">"Volum en trucada per Bluetooth"</string> - <string name="volume_alarm" msgid="4486241060751798448">"Volum de l\'alarma"</string> + <string name="volume_alarm" msgid="4486241060751798448">"Volum d\'alarma"</string> <string name="volume_notification" msgid="6864412249031660057">"Volum de notificacions"</string> <string name="volume_unknown" msgid="4041914008166576293">"Volum"</string> <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"Volum del Bluetooth"</string> @@ -1829,6 +1829,7 @@ <item quantity="other">Durant %d h</item> <item quantity="one">Durant 1 h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Finalitza: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Fins a les <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Fins a les <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (propera alarma)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Fins que no el desactivis"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index fcf9b837cfa1..095ec69af783 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="other">%d h</item> <item quantity="one">1 h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (příští budík)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Dokud tuto funkci nevypnete"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 0b7e396839ef..499b9dee0d87 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">I %d t.</item> <item quantity="other">I %d t.</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Indtil <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Indtil <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Indtil <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (næste alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Indtil du deaktiverer"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index faa78df458e0..867efac7df21 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -1829,6 +1829,8 @@ <item quantity="other">Für %d h</item> <item quantity="one">Für 1 h</item> </plurals> + <!-- no translation found for zen_mode_until_next_day (1403042784161725038) --> + <skip /> <string name="zen_mode_until" msgid="2250286190237669079">"Bis <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Bis <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (nächste Weckzeit)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Bis zur Deaktivierung"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 2e1b56ad9ff9..d4d1c5a43374 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Για %d ώρες</item> <item quantity="one">Για 1 ώρα</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Έως <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Έως τις <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Μέχρι τις <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (επόμενο ξυπνητήρι)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Μέχρι την απενεργοποίηση"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index dcfbf5a49748..f140ce3fe155 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">For %d hr</item> <item quantity="one">For 1 hr</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (next alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Until you turn off"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 65f2426b6e08..e814bdfbad83 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">For %d hr</item> <item quantity="one">For 1 hr</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (next alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Until you turn off"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index d38e2fe844ad..73f1562e5058 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">For %d hr</item> <item quantity="one">For 1 hr</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (next alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Until you turn off"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 30a9bf88619d..122ea7fa7386 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">For %d hr</item> <item quantity="one">For 1 hr</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (next alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Until you turn off"</string> diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index 6503f7ce65a7..53d8c6653461 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">For %d hr</item> <item quantity="one">For 1 hr</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Until <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (next alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Until you turn off"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 2308b5a521bd..953b6fc3a9d7 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Durante %d horas</item> <item quantity="one">Durante 1 hora</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Hasta las <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Hasta la(s) <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Hasta la hora <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (próxima alarma)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Hasta que lo desactives"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 67350cb04fe1..465d2ec63d3a 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Durante %d horas</item> <item quantity="one">Durante 1 hora</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Hasta las <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Hasta <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Hasta las <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (próxima alarma)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Hasta que lo desactives"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 3929ed4d50da..6d2a4c0f2bfb 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d h</item> <item quantity="one">1 h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Kuni <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Kuni <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Kuni <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (järgmine äratus)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Kuni välja lülitate"</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index c93dbbfda5ef..7241b974c3c8 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d orduz</item> <item quantity="one">Ordubetez</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> arte"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> arte"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> arte (hurrengo alarma)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Zuk desaktibatu arte"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 1ee4be59733b..02f4728de45e 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1267,7 +1267,7 @@ <string name="sms_control_title" msgid="4748684259903148341">"درحال ارسال پیامکها"</string> <string name="sms_control_message" msgid="6574313876316388239">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> درحال ارسال تعداد زیادی پیامک است. آیا اجازه میدهید این برنامه همچنان پیامک ارسال کند؟"</string> <string name="sms_control_yes" msgid="4858845109269524622">"مجاز است"</string> - <string name="sms_control_no" msgid="4845717880040355570">"اجازه ندارد"</string> + <string name="sms_control_no" msgid="4845717880040355570">"مجاز نبودن"</string> <string name="sms_short_code_confirm_message" msgid="1385416688897538724">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> مایل است پیامی به <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b> ارسال کند."</string> <string name="sms_short_code_details" msgid="2723725738333388351">"این مورد "<b>"شاید هزینهای"</b>" را به حساب دستگاه همراهتان بگذارد."</string> <string name="sms_premium_short_code_details" msgid="1400296309866638111"><b>"این مورد هزینهای را به حساب دستگاه همراهتان میگذارد."</b></string> @@ -1413,7 +1413,7 @@ <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"میخواهید به این درخواست اجازه دهید؟"</string> <string name="grant_permissions_header_text" msgid="3420736827804657201">"درخواست دسترسی"</string> <string name="allow" msgid="6195617008611933762">"ارزیابیشده"</string> - <string name="deny" msgid="6632259981847676572">"اجازه ندارد"</string> + <string name="deny" msgid="6632259981847676572">"مجاز نبودن"</string> <string name="permission_request_notification_title" msgid="1810025922441048273">"مجوز درخواست شد"</string> <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"مجوز\nبرای حساب <xliff:g id="ACCOUNT">%s</xliff:g> درخواست شد."</string> <string name="forward_intent_to_owner" msgid="4620359037192871015">"شما از این برنامه در خارج از نمایه کاریتان استفاده میکنید"</string> @@ -1639,7 +1639,7 @@ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"مشاهده و انجام کنشها"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"این عملکرد میتواند با برنامه یا حسگری سختافزاری تعاملاتتان را ردیابی کند و ازطرف شما با برنامهها تعامل داشته باشد."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"مجاز"</string> - <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"رد کردن"</string> + <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"مجاز نبودن"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"برای استفاده از ویژگی، روی آن ضربه بزنید:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"انتخاب ویژگیهای موردنظر برای استفاده با دکمه دسترسپذیری"</string> <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"انتخاب ویژگیهای موردنظر برای استفاده با میانبر کلید میزان صدا"</string> @@ -1829,6 +1829,7 @@ <item quantity="one">برای %d ساعت</item> <item quantity="other">برای %d ساعت</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"تا <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"تا <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"تا <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (زنگ بعدی)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"تا زمانیکه آن را خاموش کنید"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 1eff983e803f..0c94f35de91b 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d tunnin ajan</item> <item quantity="one">1 tunnin ajan</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> asti"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Kunnes kello on <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> asti (seuraava hälytys)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Kunnes laitat pois päältä"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index c6f347b1833b..dcfe8ad100cb 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">Pendant %d h</item> <item quantity="other">Pendant %d h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (alarme suivante)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Jusqu\'à la désactivation"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 6307c354317b..5fc2d6918a19 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">Pendant %d h</item> <item quantity="other">Pendant %d h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Jusqu\'à <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (alarme suivante)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Jusqu\'à la désactivation"</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index 0f281469bbf1..a6eac55b8caa 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Durante %d h</item> <item quantity="one">Durante unha h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Ata: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Ata as <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Ata as <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (próxima alarma)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Ata a desactivación"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index f11a228ecae8..6b4bbf36a447 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -1829,6 +1829,8 @@ <item quantity="one">%d કલાક માટે</item> <item quantity="other">%d કલાક માટે</item> </plurals> + <!-- no translation found for zen_mode_until_next_day (1403042784161725038) --> + <skip /> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> સુધી"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (આગલા એલાર્મ) સુધી"</string> <string name="zen_mode_forever" msgid="740585666364912448">"તમે બંધ ન કરો ત્યાં સુધી"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 7b0bd238d7f7..3bf9dcd90ee2 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">%d घंटे के लिए</item> <item quantity="other">%d घंटे के लिए</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> तक"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> तक"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (अगले अलार्म) तक"</string> <string name="zen_mode_forever" msgid="740585666364912448">"जब तक आप बंद नहीं करते"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index eb41c9f8f6f8..d350d04b15f4 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1860,6 +1860,7 @@ <item quantity="few">%d h</item> <item quantity="other">%d h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (sljedeći alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Dok ne isključite"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 3b44295755c1..70f87b689edc 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d órán keresztül</item> <item quantity="one">1 órán keresztül</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Eddig: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Eddig: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Eddig: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (ez a következő ébresztés)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Kikapcsolásig"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 4f66b6e8a947..32ac6a8beb2a 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -48,7 +48,7 @@ <string name="invalidPin" msgid="7542498253319440408">"Մուտքագրեք PIN, որը 4-ից 8 թիվ է:"</string> <string name="invalidPuk" msgid="8831151490931907083">"Մուտքագրեք PUK, որն 8 կամ ավել թիվ ունի:"</string> <string name="needPuk" msgid="7321876090152422918">"Ձեր SIM քարտը PUK-ով կողպված է: Մուտքագրեք PUK կոդը այն ապակողպելու համար:"</string> - <string name="needPuk2" msgid="7032612093451537186">"Մուտքագրեք PUK2-ը` SIM քարտն արգելահանելու համար:"</string> + <string name="needPuk2" msgid="7032612093451537186">"Մուտքագրեք PUK2-ը՝ SIM քարտն արգելահանելու համար:"</string> <string name="enablePin" msgid="2543771964137091212">"Ձախողվեց: Միացրեք SIM/RUIM կողպումը:"</string> <plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584"> <item quantity="one">Մնաց <xliff:g id="NUMBER_1">%d</xliff:g> փորձ, որից հետո SIM քարտն արգելափակվելու է:</item> @@ -411,7 +411,7 @@ <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Թույլ է տալիս հավելվածին փոփոխել ձեր պլանշետի զանգերի մատյանը, այդ թվում` մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել` ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string> <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Թույլ է տալիս հավելվածին փոփոխել Android TV սարքի զանգերի մատյանը, այդ թվում՝ մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել՝ ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string> <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Թույլ է տալիս հավելվածին փոփոխել ձեր հեռախոսի զանգերի մատյանը, այդ թվում` մուտքային և ելքային զանգերի մասին տվյալները: Վնասարար հավելվածները կարող են սա օգտագործել` ձեր զանգերի մատյանը ջնջելու կամ փոփոխելու համար:"</string> - <string name="permlab_bodySensors" msgid="3411035315357380862">"օգտագործել մարմնի սենսորները (օրինակ` սրտի կծկումների հաճախականության չափիչ)"</string> + <string name="permlab_bodySensors" msgid="3411035315357380862">"օգտագործել մարմնի սենսորները (օրինակ՝ սրտի կծկումների հաճախականության չափիչ)"</string> <string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Հավելվածին թույլ է տալիս մուտք ունենալ սենսորների տվյալներին, որոնք վերահսկում են ձեր ֆիզիկական վիճակը, օրինակ՝ ձեր սրտի զարկերը:"</string> <string name="permlab_readCalendar" msgid="6408654259475396200">"Կարդալ օրացույցի միջոցառումները և տվյալները"</string> <string name="permdesc_readCalendar" product="tablet" msgid="515452384059803326">"Այս հավելվածը կարող է կարդալ օրացույցի՝ ձեր պլանշետում պահված բոլոր միջոցառումները, ինչպես նաև հրապարակել կամ պահել ձեր օրացույցի տվյալները:"</string> @@ -430,7 +430,7 @@ <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"տեղադրության մասին տվյալների հասանելիություն ֆոնային ռեժիմում"</string> <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Այս հավելվածը ցանկացած ժամանակ կարող է տեսնել տեղադրության տվյալները, նույնիսկ երբ այն ակտիվ չէ։"</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"փոխել ձեր աուդիո կարգավորումները"</string> - <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ` ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string> + <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ՝ ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"ձայնագրել աուդիո ֆայլ"</string> <string name="permdesc_recordAudio" msgid="3976213377904701093">"Այս հավելվածը ցանկացած պահի կարող է ձայնագրել խոսափողի օգնությամբ:"</string> <string name="permlab_sim_communication" msgid="176788115994050692">"ուղարկել հրամաններ SIM քարտին"</string> @@ -495,7 +495,7 @@ <string name="permlab_changeTetherState" msgid="9079611809931863861">"փոխել միացված կապը"</string> <string name="permdesc_changeTetherState" msgid="3025129606422533085">"Թույլ է տալիս հավելվածին փոխել կապված ցանցի միացման կարգավիճակը:"</string> <string name="permlab_accessWifiState" msgid="5552488500317911052">"դիտել Wi-Fi կապերը"</string> - <string name="permdesc_accessWifiState" msgid="6913641669259483363">"Թույլ է տալիս հավելվածին տեսնել Wi-Fi ցանցի տեղեկություններ, ինչպես օրինակ` արդյոք Wi-Fi-ը միացված է, թե` ոչ, և միացված Wi-Fi սարքի անունը:"</string> + <string name="permdesc_accessWifiState" msgid="6913641669259483363">"Թույլ է տալիս հավելվածին տեսնել Wi-Fi ցանցի տեղեկություններ, ինչպես օրինակ՝ արդյոք Wi-Fi-ը միացված է, թե` ոչ, և միացված Wi-Fi սարքի անունը:"</string> <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> @@ -615,7 +615,7 @@ </string-array> <string name="face_icon_content_description" msgid="465030547475916280">"Դեմքի պատկերակ"</string> <string name="permlab_readSyncSettings" msgid="6250532864893156277">"կարդալ համաժամացման կարգավորումները"</string> - <string name="permdesc_readSyncSettings" msgid="1325658466358779298">"Թույլ է տալիս հավելվածին կարդալ համաժամացման կարգավորումները հաշվի համար: Օրինակ` այն կարող է որոշել, արդյոք Մարդիկ հավելվածը համաժամացված է հաշվի հետ:"</string> + <string name="permdesc_readSyncSettings" msgid="1325658466358779298">"Թույլ է տալիս հավելվածին կարդալ համաժամացման կարգավորումները հաշվի համար: Օրինակ՝ այն կարող է որոշել, արդյոք Մարդիկ հավելվածը համաժամացված է հաշվի հետ:"</string> <string name="permlab_writeSyncSettings" msgid="6583154300780427399">"համաժամացումը փոխարկել միացվածի և անջատվածի"</string> <string name="permdesc_writeSyncSettings" msgid="6029151549667182687">"Թույլ է տալիս հավելվածին փոփոխել համաժամացման կարգավորումները հաշվի համար: Օրինակ, այն կարող է օգտագործվել` միացնելու Մարդիկ հավելվածի համաժամացումը հաշվի հետ:"</string> <string name="permlab_readSyncStats" msgid="3747407238320105332">"կարդալ համաժամացման վիճակագրությունը"</string> @@ -876,7 +876,7 @@ <string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"Մոռացե՞լ եք սխեման:"</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_instructions" msgid="4695162942525531700">"Ապակողպելու համար՝ մուտք գործեք ձեր Google հաշվով:"</string> <string name="lockscreen_glogin_username_hint" msgid="6916101478673157045">"Օգտանուն (էլփոստ)"</string> <string name="lockscreen_glogin_password_hint" msgid="3031027901286812848">"Գաղտնաբառ"</string> <string name="lockscreen_glogin_submit_button" msgid="3590556636347843733">"Մուտք գործել"</string> @@ -1407,7 +1407,7 @@ <string name="ime_action_done" msgid="6299921014822891569">"Պատրաստ է"</string> <string name="ime_action_previous" msgid="6548799326860401611">"Նախորդ"</string> <string name="ime_action_default" msgid="8265027027659800121">"Կատարել"</string> - <string name="dial_number_using" msgid="6060769078933953531">"Հավաքել հեռախոսահամարը`\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string> + <string name="dial_number_using" msgid="6060769078933953531">"Հավաքել հեռախոսահամարը՝\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string> <string name="create_contact_using" msgid="6200708808003692594">"Ստեղծել կոնտակտ`\nօգտագործելով <xliff:g id="NUMBER">%s</xliff:g>-ը"</string> <string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"Հետևյալ մեկ կամ մի քանի հավելվածներին թույլտվություն է անհրաժեշտ՝ այժմ և հետագայում ձեր հաշվի տվյալներն օգտագործելու համար։"</string> <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"Թույլատրե՞լ"</string> @@ -1474,7 +1474,7 @@ <string name="number_picker_increment_button" msgid="7621013714795186298">"Ավելացնել"</string> <string name="number_picker_decrement_button" msgid="5116948444762708204">"Նվազեցնել"</string> <string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"<xliff:g id="VALUE">%s</xliff:g> հպեք և պահեք:"</string> - <string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Սահեցրեք վերև` ավելացնելու համար, և ներքև` նվազեցնելու համար:"</string> + <string name="number_picker_increment_scroll_action" msgid="8310191318914268271">"Սահեցրեք վերև՝ ավելացնելու համար, և ներքև՝ նվազեցնելու համար:"</string> <string name="time_picker_increment_minute_button" msgid="7195870222945784300">"Աճեցնել րոպեն"</string> <string name="time_picker_decrement_minute_button" msgid="230925389943411490">"Նվազեցնել րոպեն"</string> <string name="time_picker_increment_hour_button" msgid="3063572723197178242">"Աճեցնել ժամը"</string> @@ -1598,7 +1598,7 @@ <string name="kg_invalid_puk" msgid="4809502818518963344">"Վերամուտքագրեք ճիշտ PUK ծածկագիրը: Կրկնվող փորձերը ընդմիշտ կկասեցնեն SIM քարտը:"</string> <string name="kg_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"PIN ծածկագրերը չեն համընկնում"</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> @@ -1829,6 +1829,7 @@ <item quantity="one">%d ժամով</item> <item quantity="other">%d ժամով</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Մինչև <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Մինչև <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Մինչև ժ. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>-ը (հաջորդ զարթուցիչը)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Մինչև չանջատեք"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index f6f50402b3ff..f8ba016e1530 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Selama %d jam</item> <item quantity="one">Selama 1 jam</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Sampai <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Hingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Hingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (alarm berikutnya)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Sampai Anda menonaktifkannya"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 899fa52fbb9f..9278bbb5f595 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">Í %d klst.</item> <item quantity="other">Í %d klst.</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Þangað til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (næsta viðvörun)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Þar til þú slekkur"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 14bfa03bb706..b962d8b7c3c8 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Per %d ore</item> <item quantity="one">Per 1 ora</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Fino a: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Fino a <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Fino a <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (prossima sveglia)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Fino alla disattivazione"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 2b6d22681f52..821e4fd0acbf 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="other">למשך %d שעות</item> <item quantity="one">למשך שעה אחת</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"עד <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"עד <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"עד <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (ההתראה הבאה)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"עד הכיבוי"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index fdb505b696dc..4b48495a562e 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d時間</item> <item quantity="one">1時間</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>まで"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>まで"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>(次のアラーム)まで"</string> <string name="zen_mode_forever" msgid="740585666364912448">"自分が OFF にするまで"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 3d0d88b9e823..cdac64757058 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d სთ.</item> <item quantity="one">1 სთ.</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>-მდე"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>-მდე"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>-მდე (შემდეგი მაღვიძარა)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"გამორთვამდე"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 9798cc9db1b8..608ed1e0186b 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d сағат</item> <item quantity="one">1 сағат</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> дейін"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> дейін"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> дейін (келесі дабыл)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Өшірілгенге дейін"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index a0b8faa12f78..14b0189a4aa0 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">អស់រយៈពេល %d ម៉ោង</item> <item quantity="one">អស់រយៈពេល 1 ម៉ោង</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"រហូតដល់ម៉ោង <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"រហូតដល់ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"រហូតដល់ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (ម៉ោងរោទិ៍បន្ទាប់)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"រហូតទាល់តែអ្នកបិទ"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index c7786aebe9e4..0fe1c24bddf0 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -1829,6 +1829,8 @@ <item quantity="one">%d ಗಂಟೆಗೆ</item> <item quantity="other">%d ಗಂಟೆಗೆ</item> </plurals> + <!-- no translation found for zen_mode_until_next_day (1403042784161725038) --> + <skip /> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ವರೆಗೆ"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ವರೆಗೆ (ಮುಂದಿನ ಅಲಾರಮ್)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"ನೀವು ಆಫ್ ಮಾಡುವವರೆಗೆ"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 78c3286eecf3..e3406c1bf003 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d시간 동안</item> <item quantity="one">1시간 동안</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>까지"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>까지"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>(다음 알람)까지"</string> <string name="zen_mode_forever" msgid="740585666364912448">"사용 중지할 때까지"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 162b4d3fdb26..3268d16c1df9 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d саатка</item> <item quantity="one">1 саатка</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> чейин"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> чейин"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> чейин (кийинки ойготкуч)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Бул функция өчүрүлгөнгө чейин"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 44511398c694..d22ce0c1f964 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">ເປັນເວລາ %d ຊມ</item> <item quantity="one">ເປັນເວລາ 1 ຊມ</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"ຈົນຮອດ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"ຈົນຮອດ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"ຈົນກ່ວາ <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (ສັນຍານເຕືອນຕໍ່ໄປ)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"ຈົນກວ່າທ່ານຈະປິດ"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index fa0797846de4..ff687c575396 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="many">%d val.</item> <item quantity="other">%d val.</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Iki <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Iki <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Iki <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (kitas signalas)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Kol išjungsite"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index e8107fb0c744..2cb6058c1ef7 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1860,6 +1860,7 @@ <item quantity="one">%d h</item> <item quantity="other">%d h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Līdz: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Līdz <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Līdz plkst. <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (nākamais signāls)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Līdz brīdim, kad izslēgsiet"</string> diff --git a/core/res/res/values-mcc310-mnc150-as/strings.xml b/core/res/res/values-mcc310-mnc150-as/strings.xml deleted file mode 100644 index 2a4e46bd6107..000000000000 --- a/core/res/res/values-mcc310-mnc150-as/strings.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- -/* //device/apps/common/assets/res/any/strings.xml -** -** Copyright 2006, 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 xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="mmcc_illegal_me" msgid="8004509200390992737">"ফ\'নৰ অনুমতি নাই MM#6"</string> -</resources> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index df7781e089dd..bf7220c7586e 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">За %d ч.</item> <item quantity="other">За %d ч.</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (следниот аларм)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Додека не го исклучите"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 12c0cb4025ee..513ed1d6c2e6 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d മണിക്കൂറത്തേക്ക്</item> <item quantity="one">ഒരു മണിക്കൂറത്തേക്ക്</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> വരെ"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> വരെ"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> വരെ (അടുത്ത അലാറം)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"നിങ്ങൾ ഓഫാക്കുന്നത് വരെ"</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 2c041dced482..b95b6897eb7a 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d цагийн турш</item> <item quantity="one">1 цагийн турш:</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> хүртэл"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> хүртэл"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> хүртэл (дараагийн сэрүүлэг)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Таныг унтраах хүртэл"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index da6f2b71c65a..40c7dbd384c9 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -1829,6 +1829,8 @@ <item quantity="other">%d तासासाठी</item> <item quantity="one">1 तासासाठी</item> </plurals> + <!-- no translation found for zen_mode_until_next_day (1403042784161725038) --> + <skip /> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> पर्यंत"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> पर्यंत (पुढील अलार्म)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"तुम्ही बंद करेपर्यंत"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index 2e78b45cbb67..fb24a06dd3a5 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Selama %d jam</item> <item quantity="one">Selama 1 jam</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Hingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Sehingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Sehingga <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (penggera akan datang)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Sehingga anda matikan"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 1ebafa47f76e..2c3fbcbeac41 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d နာရီ အတွက်</item> <item quantity="one">၁ နာရီအတွက်</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> အထိ"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>အထိ"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> အထိ (လာမည့် နှိုးစက်)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"သင်ပိတ်လိုက်သည် အထိ"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index ac21aec0080e..fced2070c93b 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">I %d timer</item> <item quantity="one">I én time</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Til <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (neste alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Til du slår av"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index ee0362e4a184..fadabe83dd55 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -1829,6 +1829,8 @@ <item quantity="other">%d घन्टाका लागि</item> <item quantity="one">१ घन्टाको लागि</item> </plurals> + <!-- no translation found for zen_mode_until_next_day (1403042784161725038) --> + <skip /> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> सम्म"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (अर्को अलार्म) सम्म"</string> <string name="zen_mode_forever" msgid="740585666364912448">"तपाईंले निष्क्रिय नपार्नुभएसम्म"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 14cfee028fdc..337bf17fd7fa 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Gedurende %d u</item> <item quantity="one">Gedurende 1 u</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Tot <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (volgende wekker)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Totdat je uitschakelt"</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 1cb01ead277b..85ca06564d7a 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d ଘଣ୍ଟା ପାଇଁ</item> <item quantity="one">1 ଘଣ୍ଟା ପାଇଁ</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ପର୍ଯ୍ୟନ୍ତ"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ପର୍ଯ୍ୟନ୍ତ"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (ପରବର୍ତ୍ତୀ ଆଲାର୍ମ) ପର୍ଯ୍ୟନ୍ତ"</string> <string name="zen_mode_forever" msgid="740585666364912448">"ବନ୍ଦ ନକରିବା ପର୍ଯ୍ୟନ୍ତ"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index b5560f186e3a..ed663a8bb5d6 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -1829,6 +1829,8 @@ <item quantity="one">%d ਘੰਟਿਆਂ ਲਈ</item> <item quantity="other">%d ਘੰਟਿਆਂ ਲਈ</item> </plurals> + <!-- no translation found for zen_mode_until_next_day (1403042784161725038) --> + <skip /> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ਤੱਕ"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> ਤੱਕ (ਅਗਲਾ ਅਲਾਰਮ)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਬੰਦ ਨਹੀਂ ਕਰਦੇ ਹੋ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index aeebf8845567..16b3fafe3520 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="other">%d godz.</item> <item quantity="one">1 godz.</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (następny alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Dopóki nie wyłączysz"</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index aedc0471ac6f..2883d6fd8ae2 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">Por %d horas</item> <item quantity="other">Por %d horas</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Até às <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (próximo alarme)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Até você desativar"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 883e4bf09251..3bc9530ab46e 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Durante %d h</item> <item quantity="one">Durante 1 h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Até às <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (próximo alarme)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Até desativar"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index aedc0471ac6f..2883d6fd8ae2 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">Por %d horas</item> <item quantity="other">Por %d horas</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Até às <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Até <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (próximo alarme)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Até você desativar"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index ebc5827c2a7a..d5a9297c8298 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1860,6 +1860,7 @@ <item quantity="other">Pentru %d h</item> <item quantity="one">Pentru 1 h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Până <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Până la <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Până la <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (următoarea alarmă)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Până când dezactivați"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index f3d13ceec060..3339fb52b72a 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="many">На %d часов</item> <item quantity="other">На %d часа</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (будильник)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Пока вы не отключите"</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index cc6783a4fb3d..c26f23f3cc6d 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">පැය %d ක් සඳහා</item> <item quantity="other">පැය %d ක් සඳහා</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> දක්වා"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> තෙක්"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> තෙක් (ඊළඟ එලාමය)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"ඔබ ක්රියාවිරහිත කරන තුරු"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index b6125657f408..1a4f07e397e6 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="other">Na %d h</item> <item quantity="one">Na 1 h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (ďalší budík)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Dokým funkciu nevypnete"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 3ef51a7e6dab..0079e389116f 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="few">%d h</item> <item quantity="other">%d h</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Do <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (naslednji alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Dokler ne izklopite"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 37a995a5a799..b29582c05d6b 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Për %d orë</item> <item quantity="one">Për 1 orë</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Deri në <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Deri në <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Deri në <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (alarmi tjetër)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Derisa ta çaktivizosh"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index a3eb3e412c55..f24e285700c5 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -243,7 +243,7 @@ <string name="global_action_power_off" msgid="4404936470711393203">"Искључи"</string> <string name="global_action_power_options" msgid="1185286119330160073">"Напајање"</string> <string name="global_action_restart" msgid="4678451019561687074">"Рестартуј"</string> - <string name="global_action_emergency" msgid="1387617624177105088">"Хитни позив"</string> + <string name="global_action_emergency" msgid="1387617624177105088">"Хитан позив"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Извештај о грешци"</string> <string name="global_action_logout" msgid="6093581310002476511">"Заврши сесију"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"Снимак екрана"</string> @@ -835,7 +835,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Притисните „Мени“ да бисте откључали телефон или упутите хитан позив."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Притисните „Мени“ за откључавање."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Унесите шаблон за откључавање"</string> - <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Хитни позив"</string> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Хитан позив"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Назад на позив"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Тачно!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Пробајте поново"</string> @@ -1815,7 +1815,7 @@ <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">"Потврди"</string> - <string name="battery_saver_description_with_learn_more" msgid="4424488535318105801">"Да би се продужило трајање батерије, Уштеда батерије:\n\n• укључује тамну тему\n• искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример, „Ок Google“\n\n"<annotation id="url">"Сазнајте више"</annotation></string> + <string name="battery_saver_description_with_learn_more" msgid="4424488535318105801">"Да би се продужило трајање батерије, Уштеда батерије:\n\n• укључује тамну тему\n• искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример „Ок Google“\n\n"<annotation id="url">"Сазнајте више"</annotation></string> <string name="battery_saver_description" msgid="6794188153647295212">"Да би се продужило трајање батерије, Уштеда батерије:\n\n• укључује тамну тему\n• искључује или ограничава активности у позадини, неке визуелне ефекте и друге функције, на пример, „Ок Google“"</string> <string name="data_saver_description" msgid="4995164271550590517">"Да би се смањила потрошња података, Уштеда података спречава неке апликације да шаљу или примају податке у позадини. Апликација коју тренутно користите може да приступа подацима, али ће то чинити ређе. На пример, слике се неће приказивати док их не додирнете."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Желите да укључите Уштеду података?"</string> @@ -1860,6 +1860,7 @@ <item quantity="few">За %d с</item> <item quantity="other">За %d с</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (следећи аларм)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Док не искључите"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 3711e2bf0530..5c9ce2c8a608 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">I %d tim</item> <item quantity="one">I en 1 tim</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Till <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Till <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Till <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (nästa alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Tills du stänger av"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 23b6c3b5a029..55db3eb45225 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Kwa saa %d </item> <item quantity="one">Kwa saa 1 </item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Hadi <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Hadi <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Mpaka <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (kengele inayofuata)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Hadi utakapoizima"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index 42b2d9c2f273..be030d16b1ed 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d மணிநேரத்திற்கு</item> <item quantity="one">1 மணிநேரத்திற்கு</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> வரை"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> வரை"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> மணி (அடுத்த அலாரம்) வரை"</string> <string name="zen_mode_forever" msgid="740585666364912448">"ஆஃப் செய்யும் வரை"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index 6b9caf15a745..0966d235f5dd 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d గం పాటు</item> <item quantity="one">1 గం పాటు</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> వరకు"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> వరకు"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (తర్వాత అలారం) వరకు"</string> <string name="zen_mode_forever" msgid="740585666364912448">"మీరు ఆఫ్ చేసే వరకు"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 4b39c63a1bdf..7ff76ec7bde6 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">เป็นเวลา %d ชม.</item> <item quantity="one">เป็นเวลา 1 ชม.</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"จนถึง <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"จนถึงเวลา <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"จนถึงเวลา <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (การปลุกครั้งถัดไป)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"จนกว่าคุณจะปิด"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index beebbd23448c..7d9c7173c84e 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">Sa loob ng %d oras</item> <item quantity="other">Sa loob ng %d na oras</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Hanggang <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Hanggang <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Hanggang <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (susunod na alarm)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Hanggang sa i-off mo"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 17852a6615de..a658bf18ab95 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d saat</item> <item quantity="one">1 saat</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Şu saate kadar: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Şu saate kadar: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (sonraki alarma) saatine kadar"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Siz kapatana kadar"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 31684e0d1b29..7e81784d1043 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1891,6 +1891,7 @@ <item quantity="many">Протягом %d год</item> <item quantity="other">Протягом %d год</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"До: <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"До <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (наступний будильник)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Доки ви не вимкнете"</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index ed32b2453bf3..b9b9c586d8bb 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -1829,6 +1829,8 @@ <item quantity="other">%d گھنٹے کیلئے</item> <item quantity="one">1 گھنٹہ کیلئے</item> </plurals> + <!-- no translation found for zen_mode_until_next_day (1403042784161725038) --> + <skip /> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> تک"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> تک (اگلا الارم)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"یہاں تک کہ آپ آف کر دیں"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 7671809ebcc8..5edd9dc8332b 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d soat</item> <item quantity="one">1 soat</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> gacha"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> gacha"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> gacha (keyingi signal)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Rejimdan chiqilgunicha"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 1899f8fd2077..e3c765872cca 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">Trong %d giờ</item> <item quantity="one">Trong 1 giờ</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Cho tới <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Cho đến <xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Cho tới <xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (cảnh báo tiếp theo)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Cho đến khi bạn tắt"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 0a241dab0954..dee9d95b3a93 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d 小时</item> <item quantity="one">1 小时</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"结束时间:<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"到<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"直到<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>(闹钟下次响铃时)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"直到您将其关闭"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 6e584d6182d9..44ad8634223a 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d 小時</item> <item quantity="one">1 小時</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"直至<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"完成時間:<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"直至<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (下一次響鬧)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"直至您關閉為止"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index ab1a42375871..8831bf0b0815 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="other">%d 小時</item> <item quantity="one">1 小時</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"結束時間:<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"結束時間:<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"到<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> 為止 (下一個鬧鐘)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"直到你關閉為止"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 582d4350882c..5fb9fa61bb36 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1829,6 +1829,7 @@ <item quantity="one">Ngamahora angu-%d</item> <item quantity="other">Ngamahora angu-%d</item> </plurals> + <string name="zen_mode_until_next_day" msgid="1403042784161725038">"Kuze kube ngu-<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_until" msgid="2250286190237669079">"Kuze kube ngu-<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"Kuze kube ngu-<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> (i-alamu elandelayo)"</string> <string name="zen_mode_forever" msgid="740585666364912448">"Uze uvale isikrini"</string> diff --git a/data/etc/platform.xml b/data/etc/platform.xml index dd8f40d586bc..10c2b096ef98 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -229,8 +229,7 @@ <library name="android.test.base" file="/system/framework/android.test.base.jar" /> <library name="android.test.mock" - file="/system/framework/android.test.mock.jar" - dependency="android.test.base" /> + file="/system/framework/android.test.mock.jar" /> <library name="android.test.runner" file="/system/framework/android.test.runner.jar" dependency="android.test.base:android.test.mock" /> diff --git a/graphics/java/android/graphics/fonts/Font.java b/graphics/java/android/graphics/fonts/Font.java index b09082e65ca4..cbae67507a64 100644 --- a/graphics/java/android/graphics/fonts/Font.java +++ b/graphics/java/android/graphics/fonts/Font.java @@ -22,6 +22,8 @@ import android.annotation.Nullable; import android.content.res.AssetFileDescriptor; import android.content.res.AssetManager; import android.content.res.Resources; +import android.graphics.Paint; +import android.graphics.RectF; import android.os.LocaleList; import android.os.ParcelFileDescriptor; import android.util.TypedValue; @@ -29,6 +31,7 @@ import android.util.TypedValue; import com.android.internal.util.Preconditions; import dalvik.annotation.optimization.CriticalNative; +import dalvik.annotation.optimization.FastNative; import libcore.util.NativeAllocationRegistry; @@ -63,6 +66,7 @@ public final class Font { private @Nullable ByteBuffer mBuffer; private @Nullable File mFile; + private @Nullable Font mFont; private @NonNull String mLocaleList = ""; private @IntRange(from = -1, to = 1000) int mWeight = NOT_SPECIFIED; private @IntRange(from = -1, to = 1) int mItalic = NOT_SPECIFIED; @@ -204,6 +208,22 @@ public final class Font { } /** + * Constructs a builder from existing Font instance. + * + * @param font the font instance. + */ + public Builder(@NonNull Font font) { + mFont = font; + // Copies all parameters as a default value. + mBuffer = font.getBuffer(); + mWeight = font.getStyle().getWeight(); + mItalic = font.getStyle().getSlant(); + mAxes = font.getAxes(); + mFile = font.getFile(); + mTtcIndex = font.getTtcIndex(); + } + + /** * Creates a buffer containing font data using the assetManager and other * provided inputs. * @@ -430,8 +450,13 @@ public final class Font { } final ByteBuffer readonlyBuffer = mBuffer.asReadOnlyBuffer(); final String filePath = mFile == null ? "" : mFile.getAbsolutePath(); - final long ptr = nBuild(builderPtr, readonlyBuffer, filePath, mWeight, italic, - mTtcIndex); + + long ptr; + if (mFont == null) { + ptr = nBuild(builderPtr, readonlyBuffer, filePath, mWeight, italic, mTtcIndex); + } else { + ptr = nClone(mFont.getNativePtr(), builderPtr, mWeight, italic, mTtcIndex); + } final Font font = new Font(ptr, readonlyBuffer, mFile, new FontStyle(mWeight, slant), mTtcIndex, mAxes, mLocaleList); sFontRegistry.registerNativeAllocation(font, ptr); @@ -449,6 +474,10 @@ public final class Font { boolean italic, int ttcIndex); @CriticalNative private static native long nGetReleaseNativeFont(); + + @FastNative + private static native long nClone(long fontPtr, long builderPtr, int weight, + boolean italic, int ttcIndex); } private final long mNativePtr; // address of the shared ptr of minikin::Font @@ -538,6 +567,40 @@ public final class Font { return LocaleList.forLanguageTags(mLocaleList); } + /** + * Retrieve the glyph horizontal advance and bounding box. + * + * Note that {@link android.graphics.Typeface} in {@link android.graphics.Paint} is ignored. + * + * @param glyphId a glyph ID + * @param paint a paint object used for resolving glyph style + * @param rect a nullable destination object. If null is passed, this function just return the + * horizontal advance. If non-null is passed, this function fills bounding box + * information to this object. + * @return the amount of horizontal advance in pixels + */ + public float getGlyphBounds(@IntRange(from = 0) int glyphId, @NonNull Paint paint, + @Nullable RectF rect) { + return nGetGlyphBounds(mNativePtr, glyphId, paint.getNativeInstance(), rect); + } + + /** + * Retrieve the font metrics information. + * + * Note that {@link android.graphics.Typeface} in {@link android.graphics.Paint} is ignored. + * + * @param paint a paint object used for retrieving font metrics. + * @param metrics a nullable destination object. If null is passed, this function only retrieve + * recommended interline spacing. If non-null is passed, this function fills to + * font metrics to it. + * + * @see Paint#getFontMetrics() + * @see Paint#getFontMetricsInt() + */ + public void getMetrics(@NonNull Paint paint, @Nullable Paint.FontMetrics metrics) { + nGetFontMetrics(mNativePtr, paint.getNativeInstance(), metrics); + } + /** @hide */ public long getNativePtr() { return mNativePtr; @@ -573,4 +636,10 @@ public final class Font { + ", buffer=" + mBuffer + "}"; } + + @FastNative + private static native float nGetGlyphBounds(long font, int glyphId, long paint, RectF rect); + + @FastNative + private static native float nGetFontMetrics(long font, long paint, Paint.FontMetrics metrics); } diff --git a/libs/hwui/OWNERS b/libs/hwui/OWNERS index c232d1360419..bb93e66968be 100644 --- a/libs/hwui/OWNERS +++ b/libs/hwui/OWNERS @@ -5,3 +5,6 @@ njawad@google.com reed@google.com scroggo@google.com stani@google.com + +# For text, e.g. Typeface, Font, Minikin, etc. +nona@google.com diff --git a/libs/hwui/hwui/MinikinSkia.cpp b/libs/hwui/hwui/MinikinSkia.cpp index a6137b073d5a..0e338f35b8e7 100644 --- a/libs/hwui/hwui/MinikinSkia.cpp +++ b/libs/hwui/hwui/MinikinSkia.cpp @@ -33,8 +33,7 @@ namespace android { MinikinFontSkia::MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize, std::string_view filePath, int ttcIndex, const std::vector<minikin::FontVariation>& axes) - : minikin::MinikinFont(typeface->uniqueID()) - , mTypeface(std::move(typeface)) + : mTypeface(std::move(typeface)) , mFontData(fontData) , mFontSize(fontSize) , mTtcIndex(ttcIndex) diff --git a/libs/hwui/jni/Graphics.cpp b/libs/hwui/jni/Graphics.cpp index ecbb55ec878d..77f46beb2100 100644 --- a/libs/hwui/jni/Graphics.cpp +++ b/libs/hwui/jni/Graphics.cpp @@ -9,6 +9,7 @@ #include "GraphicsJNI.h" #include "SkCanvas.h" +#include "SkFontMetrics.h" #include "SkMath.h" #include "SkRegion.h" #include <cutils/ashmem.h> @@ -228,6 +229,20 @@ static jfieldID gColorSpace_Named_LinearExtendedSRGBFieldID; static jclass gTransferParameters_class; static jmethodID gTransferParameters_constructorMethodID; +static jclass gFontMetrics_class; +static jfieldID gFontMetrics_top; +static jfieldID gFontMetrics_ascent; +static jfieldID gFontMetrics_descent; +static jfieldID gFontMetrics_bottom; +static jfieldID gFontMetrics_leading; + +static jclass gFontMetricsInt_class; +static jfieldID gFontMetricsInt_top; +static jfieldID gFontMetricsInt_ascent; +static jfieldID gFontMetricsInt_descent; +static jfieldID gFontMetricsInt_bottom; +static jfieldID gFontMetricsInt_leading; + /////////////////////////////////////////////////////////////////////////////// void GraphicsJNI::get_jrect(JNIEnv* env, jobject obj, int* L, int* T, int* R, int* B) @@ -468,6 +483,32 @@ SkRegion* GraphicsJNI::getNativeRegion(JNIEnv* env, jobject region) return r; } +void GraphicsJNI::set_metrics(JNIEnv* env, jobject metrics, const SkFontMetrics& skmetrics) { + if (metrics == nullptr) return; + SkASSERT(env->IsInstanceOf(metrics, gFontMetrics_class)); + env->SetFloatField(metrics, gFontMetrics_top, SkScalarToFloat(skmetrics.fTop)); + env->SetFloatField(metrics, gFontMetrics_ascent, SkScalarToFloat(skmetrics.fAscent)); + env->SetFloatField(metrics, gFontMetrics_descent, SkScalarToFloat(skmetrics.fDescent)); + env->SetFloatField(metrics, gFontMetrics_bottom, SkScalarToFloat(skmetrics.fBottom)); + env->SetFloatField(metrics, gFontMetrics_leading, SkScalarToFloat(skmetrics.fLeading)); +} + +int GraphicsJNI::set_metrics_int(JNIEnv* env, jobject metrics, const SkFontMetrics& skmetrics) { + int ascent = SkScalarRoundToInt(skmetrics.fAscent); + int descent = SkScalarRoundToInt(skmetrics.fDescent); + int leading = SkScalarRoundToInt(skmetrics.fLeading); + + if (metrics) { + SkASSERT(env->IsInstanceOf(metrics, gFontMetricsInt_class)); + env->SetIntField(metrics, gFontMetricsInt_top, SkScalarFloorToInt(skmetrics.fTop)); + env->SetIntField(metrics, gFontMetricsInt_ascent, ascent); + env->SetIntField(metrics, gFontMetricsInt_descent, descent); + env->SetIntField(metrics, gFontMetricsInt_bottom, SkScalarCeilToInt(skmetrics.fBottom)); + env->SetIntField(metrics, gFontMetricsInt_leading, leading); + } + return descent - ascent + leading; +} + /////////////////////////////////////////////////////////////////////////////////////////// jobject GraphicsJNI::createBitmapRegionDecoder(JNIEnv* env, skia::BitmapRegionDecoder* bitmap) @@ -764,5 +805,23 @@ int register_android_graphics_Graphics(JNIEnv* env) gTransferParameters_constructorMethodID = GetMethodIDOrDie(env, gTransferParameters_class, "<init>", "(DDDDDDD)V"); + gFontMetrics_class = FindClassOrDie(env, "android/graphics/Paint$FontMetrics"); + gFontMetrics_class = MakeGlobalRefOrDie(env, gFontMetrics_class); + + gFontMetrics_top = GetFieldIDOrDie(env, gFontMetrics_class, "top", "F"); + gFontMetrics_ascent = GetFieldIDOrDie(env, gFontMetrics_class, "ascent", "F"); + gFontMetrics_descent = GetFieldIDOrDie(env, gFontMetrics_class, "descent", "F"); + gFontMetrics_bottom = GetFieldIDOrDie(env, gFontMetrics_class, "bottom", "F"); + gFontMetrics_leading = GetFieldIDOrDie(env, gFontMetrics_class, "leading", "F"); + + gFontMetricsInt_class = FindClassOrDie(env, "android/graphics/Paint$FontMetricsInt"); + gFontMetricsInt_class = MakeGlobalRefOrDie(env, gFontMetricsInt_class); + + gFontMetricsInt_top = GetFieldIDOrDie(env, gFontMetricsInt_class, "top", "I"); + gFontMetricsInt_ascent = GetFieldIDOrDie(env, gFontMetricsInt_class, "ascent", "I"); + gFontMetricsInt_descent = GetFieldIDOrDie(env, gFontMetricsInt_class, "descent", "I"); + gFontMetricsInt_bottom = GetFieldIDOrDie(env, gFontMetricsInt_class, "bottom", "I"); + gFontMetricsInt_leading = GetFieldIDOrDie(env, gFontMetricsInt_class, "leading", "I"); + return 0; } diff --git a/libs/hwui/jni/GraphicsJNI.h b/libs/hwui/jni/GraphicsJNI.h index 79ab617411e3..541d5a53de07 100644 --- a/libs/hwui/jni/GraphicsJNI.h +++ b/libs/hwui/jni/GraphicsJNI.h @@ -18,6 +18,7 @@ #include "graphics_jni_helpers.h" class SkCanvas; +struct SkFontMetrics; namespace android { namespace skia { @@ -85,6 +86,17 @@ public: bool* isHardware); static SkRegion* getNativeRegion(JNIEnv*, jobject region); + /** + * Set SkFontMetrics to Java Paint.FontMetrics. + * Do nothing if metrics is nullptr. + */ + static void set_metrics(JNIEnv*, jobject metrics, const SkFontMetrics& skmetrics); + /** + * Set SkFontMetrics to Java Paint.FontMetricsInt and return recommended interline space. + * Do nothing if metrics is nullptr. + */ + static int set_metrics_int(JNIEnv*, jobject metrics, const SkFontMetrics& skmetrics); + /* * LegacyBitmapConfig is the old enum in Skia that matched the enum int values * in Bitmap.Config. Skia no longer supports this config, but has replaced it diff --git a/libs/hwui/jni/Paint.cpp b/libs/hwui/jni/Paint.cpp index 554674a331cd..d275659094be 100644 --- a/libs/hwui/jni/Paint.cpp +++ b/libs/hwui/jni/Paint.cpp @@ -59,20 +59,6 @@ using namespace android::uirenderer; namespace android { -struct JMetricsID { - jfieldID top; - jfieldID ascent; - jfieldID descent; - jfieldID bottom; - jfieldID leading; -}; - -static jclass gFontMetrics_class; -static JMetricsID gFontMetrics_fieldID; - -static jclass gFontMetricsInt_class; -static JMetricsID gFontMetricsInt_fieldID; - static void getPosTextPath(const SkFont& font, const uint16_t glyphs[], int count, const SkPoint pos[], SkPath* dst) { dst->reset(); @@ -618,35 +604,14 @@ namespace PaintGlue { static jfloat getFontMetrics(JNIEnv* env, jobject, jlong paintHandle, jobject metricsObj) { SkFontMetrics metrics; SkScalar spacing = getMetricsInternal(paintHandle, &metrics); - - if (metricsObj) { - SkASSERT(env->IsInstanceOf(metricsObj, gFontMetrics_class)); - env->SetFloatField(metricsObj, gFontMetrics_fieldID.top, SkScalarToFloat(metrics.fTop)); - env->SetFloatField(metricsObj, gFontMetrics_fieldID.ascent, SkScalarToFloat(metrics.fAscent)); - env->SetFloatField(metricsObj, gFontMetrics_fieldID.descent, SkScalarToFloat(metrics.fDescent)); - env->SetFloatField(metricsObj, gFontMetrics_fieldID.bottom, SkScalarToFloat(metrics.fBottom)); - env->SetFloatField(metricsObj, gFontMetrics_fieldID.leading, SkScalarToFloat(metrics.fLeading)); - } + GraphicsJNI::set_metrics(env, metricsObj, metrics); return SkScalarToFloat(spacing); } static jint getFontMetricsInt(JNIEnv* env, jobject, jlong paintHandle, jobject metricsObj) { SkFontMetrics metrics; - getMetricsInternal(paintHandle, &metrics); - int ascent = SkScalarRoundToInt(metrics.fAscent); - int descent = SkScalarRoundToInt(metrics.fDescent); - int leading = SkScalarRoundToInt(metrics.fLeading); - - if (metricsObj) { - SkASSERT(env->IsInstanceOf(metricsObj, gFontMetricsInt_class)); - env->SetIntField(metricsObj, gFontMetricsInt_fieldID.top, SkScalarFloorToInt(metrics.fTop)); - env->SetIntField(metricsObj, gFontMetricsInt_fieldID.ascent, ascent); - env->SetIntField(metricsObj, gFontMetricsInt_fieldID.descent, descent); - env->SetIntField(metricsObj, gFontMetricsInt_fieldID.bottom, SkScalarCeilToInt(metrics.fBottom)); - env->SetIntField(metricsObj, gFontMetricsInt_fieldID.leading, leading); - } - return descent - ascent + leading; + return GraphicsJNI::set_metrics_int(env, metricsObj, metrics); } @@ -1137,24 +1102,6 @@ static const JNINativeMethod methods[] = { }; int register_android_graphics_Paint(JNIEnv* env) { - gFontMetrics_class = FindClassOrDie(env, "android/graphics/Paint$FontMetrics"); - gFontMetrics_class = MakeGlobalRefOrDie(env, gFontMetrics_class); - - gFontMetrics_fieldID.top = GetFieldIDOrDie(env, gFontMetrics_class, "top", "F"); - gFontMetrics_fieldID.ascent = GetFieldIDOrDie(env, gFontMetrics_class, "ascent", "F"); - gFontMetrics_fieldID.descent = GetFieldIDOrDie(env, gFontMetrics_class, "descent", "F"); - gFontMetrics_fieldID.bottom = GetFieldIDOrDie(env, gFontMetrics_class, "bottom", "F"); - gFontMetrics_fieldID.leading = GetFieldIDOrDie(env, gFontMetrics_class, "leading", "F"); - - gFontMetricsInt_class = FindClassOrDie(env, "android/graphics/Paint$FontMetricsInt"); - gFontMetricsInt_class = MakeGlobalRefOrDie(env, gFontMetricsInt_class); - - gFontMetricsInt_fieldID.top = GetFieldIDOrDie(env, gFontMetricsInt_class, "top", "I"); - gFontMetricsInt_fieldID.ascent = GetFieldIDOrDie(env, gFontMetricsInt_class, "ascent", "I"); - gFontMetricsInt_fieldID.descent = GetFieldIDOrDie(env, gFontMetricsInt_class, "descent", "I"); - gFontMetricsInt_fieldID.bottom = GetFieldIDOrDie(env, gFontMetricsInt_class, "bottom", "I"); - gFontMetricsInt_fieldID.leading = GetFieldIDOrDie(env, gFontMetricsInt_class, "leading", "I"); - return RegisterMethodsOrDie(env, "android/graphics/Paint", methods, NELEM(methods)); } diff --git a/libs/hwui/jni/fonts/Font.cpp b/libs/hwui/jni/fonts/Font.cpp index 996cdceed8a7..bcdb4f5f1d13 100644 --- a/libs/hwui/jni/fonts/Font.cpp +++ b/libs/hwui/jni/fonts/Font.cpp @@ -18,6 +18,8 @@ #define LOG_TAG "Minikin" #include "SkData.h" +#include "SkFont.h" +#include "SkFontMetrics.h" #include "SkFontMgr.h" #include "SkRefCnt.h" #include "SkTypeface.h" @@ -27,6 +29,7 @@ #include "FontUtils.h" #include <hwui/MinikinSkia.h> +#include <hwui/Paint.h> #include <hwui/Typeface.h> #include <minikin/FontFamily.h> #include <ui/FatVector.h> @@ -120,6 +123,36 @@ static jlong Font_Builder_build(JNIEnv* env, jobject clazz, jlong builderPtr, jo return reinterpret_cast<jlong>(new FontWrapper(std::move(font))); } +// Fast Native +static jlong Font_Builder_clone(JNIEnv* env, jobject clazz, jlong fontPtr, jlong builderPtr, + jint weight, jboolean italic, jint ttcIndex) { + FontWrapper* font = reinterpret_cast<FontWrapper*>(fontPtr); + MinikinFontSkia* minikinSkia = static_cast<MinikinFontSkia*>(font->font.typeface().get()); + std::unique_ptr<NativeFontBuilder> builder(toBuilder(builderPtr)); + + // Reconstruct SkTypeface with different arguments from existing SkTypeface. + FatVector<SkFontArguments::VariationPosition::Coordinate, 2> skVariation; + for (const auto& axis : builder->axes) { + skVariation.push_back({axis.axisTag, axis.value}); + } + SkFontArguments args; + args.setCollectionIndex(ttcIndex); + args.setVariationDesignPosition({skVariation.data(), static_cast<int>(skVariation.size())}); + + sk_sp<SkTypeface> newTypeface = minikinSkia->GetSkTypeface()->makeClone(args); + + std::shared_ptr<minikin::MinikinFont> newMinikinFont = std::make_shared<MinikinFontSkia>( + std::move(newTypeface), + minikinSkia->GetFontData(), + minikinSkia->GetFontSize(), + minikinSkia->getFilePath(), + minikinSkia->GetFontIndex(), + builder->axes); + minikin::Font newFont = minikin::Font::Builder(newMinikinFont).setWeight(weight) + .setSlant(static_cast<minikin::FontStyle::Slant>(italic)).build(); + return reinterpret_cast<jlong>(new FontWrapper(std::move(newFont))); +} + // Critical Native static jlong Font_Builder_getReleaseNativeFont(CRITICAL_JNI_PARAMS) { return reinterpret_cast<jlong>(releaseFont); @@ -127,16 +160,64 @@ static jlong Font_Builder_getReleaseNativeFont(CRITICAL_JNI_PARAMS) { /////////////////////////////////////////////////////////////////////////////// +// Fast Native +static jfloat Font_getGlyphBounds(JNIEnv* env, jobject, jlong fontHandle, jint glyphId, + jlong paintHandle, jobject rect) { + FontWrapper* font = reinterpret_cast<FontWrapper*>(fontHandle); + MinikinFontSkia* minikinSkia = static_cast<MinikinFontSkia*>(font->font.typeface().get()); + Paint* paint = reinterpret_cast<Paint*>(paintHandle); + + SkFont* skFont = &paint->getSkFont(); + // We don't use populateSkFont since it is designed to be used for layout result with addressing + // auto fake-bolding. + skFont->setTypeface(minikinSkia->RefSkTypeface()); + + uint16_t glyph16 = glyphId; + SkRect skBounds; + SkScalar skWidth; + skFont->getWidthsBounds(&glyph16, 1, &skWidth, &skBounds, nullptr); + GraphicsJNI::rect_to_jrectf(skBounds, env, rect); + return SkScalarToFloat(skWidth); +} + +// Fast Native +static jfloat Font_getFontMetrics(JNIEnv* env, jobject, jlong fontHandle, jlong paintHandle, + jobject metricsObj) { + FontWrapper* font = reinterpret_cast<FontWrapper*>(fontHandle); + MinikinFontSkia* minikinSkia = static_cast<MinikinFontSkia*>(font->font.typeface().get()); + Paint* paint = reinterpret_cast<Paint*>(paintHandle); + + SkFont* skFont = &paint->getSkFont(); + // We don't use populateSkFont since it is designed to be used for layout result with addressing + // auto fake-bolding. + skFont->setTypeface(minikinSkia->RefSkTypeface()); + + SkFontMetrics metrics; + SkScalar spacing = skFont->getMetrics(&metrics); + GraphicsJNI::set_metrics(env, metricsObj, metrics); + return spacing; +} + +/////////////////////////////////////////////////////////////////////////////// + static const JNINativeMethod gFontBuilderMethods[] = { { "nInitBuilder", "()J", (void*) Font_Builder_initBuilder }, { "nAddAxis", "(JIF)V", (void*) Font_Builder_addAxis }, { "nBuild", "(JLjava/nio/ByteBuffer;Ljava/lang/String;IZI)J", (void*) Font_Builder_build }, + { "nClone", "(JJIZI)J", (void*) Font_Builder_clone }, { "nGetReleaseNativeFont", "()J", (void*) Font_Builder_getReleaseNativeFont }, }; +static const JNINativeMethod gFontMethods[] = { + { "nGetGlyphBounds", "(JIJLandroid/graphics/RectF;)F", (void*) Font_getGlyphBounds }, + { "nGetFontMetrics", "(JJLandroid/graphics/Paint$FontMetrics;)F", (void*) Font_getFontMetrics }, +}; + int register_android_graphics_fonts_Font(JNIEnv* env) { return RegisterMethodsOrDie(env, "android/graphics/fonts/Font$Builder", gFontBuilderMethods, - NELEM(gFontBuilderMethods)); + NELEM(gFontBuilderMethods)) + + RegisterMethodsOrDie(env, "android/graphics/fonts/Font", gFontMethods, + NELEM(gFontMethods)); } } diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java index 755bbfb94362..1a49b85403e4 100644 --- a/media/java/android/media/MediaFormat.java +++ b/media/java/android/media/MediaFormat.java @@ -20,10 +20,12 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; +import android.util.Log; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.AbstractSet; import java.util.HashMap; import java.util.Iterator; @@ -436,6 +438,52 @@ public final class MediaFormat { public static final String KEY_CAPTURE_RATE = "capture-rate"; /** + * A key for retrieving the slow-motion marker information associated with a video track. + * <p> + * The associated value is a ByteBuffer in {@link ByteOrder#BIG_ENDIAN} + * (networking order) of the following format: + * </p> + * <pre class="prettyprint"> + * float(32) playbackRate; + * unsigned int(32) numMarkers; + * for (i = 0;i < numMarkers; i++) { + * int(64) timestampUs; + * float(32) speedRatio; + * }</pre> + * The meaning of each field is as follows: + * <table border="1" width="90%" align="center" cellpadding="5"> + * <tbody> + * <tr> + * <td>playbackRate</td> + * <td>The frame rate at which the playback should happen (or the flattened + * clip should be).</td> + * </tr> + * <tr> + * <td>numMarkers</td> + * <td>The number of slow-motion markers that follows.</td> + * </tr> + * <tr> + * <td>timestampUs</td> + * <td>The starting point of a new segment.</td> + * </tr> + * <tr> + * <td>speedRatio</td> + * <td>The playback speed for that segment. The playback speed is a floating + * point number, indicating how fast the time progresses relative to that + * written in the container. (Eg. 4.0 means time goes 4x as fast, which + * makes 30fps become 120fps.)</td> + * </tr> + * </table> + * <p> + * The following constraints apply to the timestampUs of the markers: + * </p> + * <li>The timestampUs shall be monotonically increasing.</li> + * <li>The timestampUs shall fall within the time span of the video track.</li> + * <li>The first timestampUs should match that of the first video sample.</li> + */ + public static final String KEY_SLOW_MOTION_MARKERS = "slow-motion-markers"; + + /** * A key describing the frequency of key frames expressed in seconds between key frames. * <p> * This key is used by video encoders. diff --git a/media/java/android/media/browse/MediaBrowser.java b/media/java/android/media/browse/MediaBrowser.java index 011e835e02ec..b662901176e6 100644 --- a/media/java/android/media/browse/MediaBrowser.java +++ b/media/java/android/media/browse/MediaBrowser.java @@ -184,7 +184,7 @@ public final class MediaBrowser { boolean bound = false; try { bound = mContext.bindService(intent, mServiceConnection, - Context.BIND_AUTO_CREATE); + Context.BIND_AUTO_CREATE | Context.BIND_INCLUDE_CAPABILITIES); } catch (Exception ex) { Log.e(TAG, "Failed binding to service " + mServiceComponent); } diff --git a/non-updatable-api/current.txt b/non-updatable-api/current.txt index 2d5d48f3f09b..d46f1d1606ba 100644 --- a/non-updatable-api/current.txt +++ b/non-updatable-api/current.txt @@ -6138,7 +6138,6 @@ package android.app { field @NonNull public static final android.os.Parcelable.Creator<android.app.PendingIntent> CREATOR; field public static final int FLAG_CANCEL_CURRENT = 268435456; // 0x10000000 field public static final int FLAG_IMMUTABLE = 67108864; // 0x4000000 - field public static final int FLAG_MUTABLE = 33554432; // 0x2000000 field public static final int FLAG_NO_CREATE = 536870912; // 0x20000000 field public static final int FLAG_ONE_SHOT = 1073741824; // 0x40000000 field public static final int FLAG_UPDATE_CURRENT = 134217728; // 0x8000000 @@ -16372,7 +16371,9 @@ package android.graphics.fonts { method @Nullable public android.graphics.fonts.FontVariationAxis[] getAxes(); method @NonNull public java.nio.ByteBuffer getBuffer(); method @Nullable public java.io.File getFile(); + method public float getGlyphBounds(@IntRange(from=0) int, @NonNull android.graphics.Paint, @Nullable android.graphics.RectF); method @NonNull public android.os.LocaleList getLocaleList(); + method public void getMetrics(@NonNull android.graphics.Paint, @Nullable android.graphics.Paint.FontMetrics); method @NonNull public android.graphics.fonts.FontStyle getStyle(); method @IntRange(from=0) public int getTtcIndex(); } @@ -16384,6 +16385,7 @@ package android.graphics.fonts { ctor public Font.Builder(@NonNull android.os.ParcelFileDescriptor, @IntRange(from=0) long, @IntRange(from=0xffffffff) long); ctor public Font.Builder(@NonNull android.content.res.AssetManager, @NonNull String); ctor public Font.Builder(@NonNull android.content.res.Resources, int); + ctor public Font.Builder(@NonNull android.graphics.fonts.Font); method @NonNull public android.graphics.fonts.Font build() throws java.io.IOException; method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable String); method @NonNull public android.graphics.fonts.Font.Builder setFontVariationSettings(@Nullable android.graphics.fonts.FontVariationAxis[]); @@ -26262,6 +26264,7 @@ package android.media { field public static final String KEY_ROTATION = "rotation-degrees"; field public static final String KEY_SAMPLE_RATE = "sample-rate"; field public static final String KEY_SLICE_HEIGHT = "slice-height"; + field public static final String KEY_SLOW_MOTION_MARKERS = "slow-motion-markers"; field public static final String KEY_STRIDE = "stride"; field public static final String KEY_TEMPORAL_LAYERING = "ts-schema"; field public static final String KEY_TILE_HEIGHT = "tile-height"; diff --git a/packages/CarSystemUI/res/layout/sysui_overlay_window.xml b/packages/CarSystemUI/res/layout/sysui_overlay_window.xml index 2c9788955bfa..e7295aa6383d 100644 --- a/packages/CarSystemUI/res/layout/sysui_overlay_window.xml +++ b/packages/CarSystemUI/res/layout/sysui_overlay_window.xml @@ -25,7 +25,8 @@ <ViewStub android:id="@+id/notification_panel_stub" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout="@layout/notification_panel_container"/> + android:layout="@layout/notification_panel_container" + android:layout_marginBottom="@dimen/car_bottom_navigation_bar_height"/> <ViewStub android:id="@+id/keyguard_stub" android:layout_width="match_parent" diff --git a/packages/CarSystemUI/res/values/dimens.xml b/packages/CarSystemUI/res/values/dimens.xml index 28b8eadf9750..fe060ac8e707 100644 --- a/packages/CarSystemUI/res/values/dimens.xml +++ b/packages/CarSystemUI/res/values/dimens.xml @@ -207,6 +207,12 @@ <dimen name="car_navigation_bar_width">760dp</dimen> <dimen name="car_left_navigation_bar_width">96dp</dimen> <dimen name="car_right_navigation_bar_width">96dp</dimen> + <!-- In order to change the height of the bottom nav bar, overlay navigation_bar_height in + frameworks/base/core/res/res instead. --> + <dimen name="car_bottom_navigation_bar_height">@*android:dimen/navigation_bar_height</dimen> + <!-- In order to change the height of the top nav bar, overlay status_bar_height in + frameworks/base/core/res/res instead. --> + <dimen name="car_top_navigation_bar_height">@*android:dimen/status_bar_height</dimen> <dimen name="car_user_switcher_container_height">420dp</dimen> <!-- This must be the negative of car_user_switcher_container_height for the animation. --> diff --git a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java index 078196e18b88..dfda4e6b2635 100644 --- a/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java +++ b/packages/CarSystemUI/src/com/android/systemui/car/navigationbar/SystemBarConfigs.java @@ -216,7 +216,7 @@ public class SystemBarConfigs { new SystemBarConfigBuilder() .setSide(TOP) .setGirth(mResources.getDimensionPixelSize( - com.android.internal.R.dimen.status_bar_height)) + R.dimen.car_top_navigation_bar_height)) .setBarType(mResources.getInteger(R.integer.config_topSystemBarType)) .setZOrder(mResources.getInteger(R.integer.config_topSystemBarZOrder)) .setHideForKeyboard(mResources.getBoolean( @@ -230,7 +230,7 @@ public class SystemBarConfigs { new SystemBarConfigBuilder() .setSide(BOTTOM) .setGirth(mResources.getDimensionPixelSize( - com.android.internal.R.dimen.navigation_bar_height)) + R.dimen.car_bottom_navigation_bar_height)) .setBarType(mResources.getInteger(R.integer.config_bottomSystemBarType)) .setZOrder( mResources.getInteger(R.integer.config_bottomSystemBarZOrder)) diff --git a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java index c7155f4b21d2..b647f13cbe1f 100644 --- a/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java +++ b/packages/CarSystemUI/src/com/android/systemui/car/notification/NotificationPanelViewController.java @@ -16,8 +16,6 @@ package com.android.systemui.car.notification; -import static android.view.WindowInsets.Type.navigationBars; - import android.app.ActivityManager; import android.car.Car; import android.car.drivingstate.CarUxRestrictionsManager; @@ -25,6 +23,8 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.inputmethodservice.InputMethodService; +import android.os.IBinder; import android.os.RemoteException; import android.util.Log; import android.view.GestureDetector; @@ -82,6 +82,7 @@ public class NotificationPanelViewController extends OverlayPanelViewController private final StatusBarStateController mStatusBarStateController; private final boolean mEnableHeadsUpNotificationWhenNotificationShadeOpen; private final NotificationVisibilityLogger mNotificationVisibilityLogger; + private final int mNavBarHeight; private float mInitialBackgroundAlpha; private float mBackgroundAlphaDiff; @@ -138,7 +139,10 @@ public class NotificationPanelViewController extends OverlayPanelViewController mStatusBarStateController = statusBarStateController; mNotificationVisibilityLogger = notificationVisibilityLogger; + mNavBarHeight = mResources.getDimensionPixelSize(R.dimen.car_bottom_navigation_bar_height); + mCommandQueue.addCallback(this); + // Notification background setup. mInitialBackgroundAlpha = (float) mResources.getInteger( R.integer.config_initialNotificationBackgroundAlpha) / 100; @@ -179,6 +183,27 @@ public class NotificationPanelViewController extends OverlayPanelViewController } } + @Override + public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition, + boolean showImeSwitcher) { + if (mContext.getDisplayId() != displayId) { + return; + } + boolean isKeyboardVisible = (vis & InputMethodService.IME_VISIBLE) != 0; + int bottomMargin = isKeyboardVisible ? 0 : mNavBarHeight; + ViewGroup container = (ViewGroup) getLayout(); + if (container == null) { + // Notification panel hasn't been inflated before. We shouldn't try to update the layout + // params. + return; + } + + ViewGroup.MarginLayoutParams params = + (ViewGroup.MarginLayoutParams) container.getLayoutParams(); + params.setMargins(params.leftMargin, params.topMargin, params.rightMargin, bottomMargin); + container.setLayoutParams(params); + } + // OverlayViewController @Override @@ -204,7 +229,7 @@ public class NotificationPanelViewController extends OverlayPanelViewController @Override protected int getInsetTypesToFit() { - return navigationBars(); + return 0; } @Override diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml index 4bc7bf6e5d1f..462a6a9bb7ac 100644 --- a/packages/InputDevices/res/values-af/strings.xml +++ b/packages/InputDevices/res/values-af/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Switserse Duits"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgies"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaars"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgaars, foneties"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiaans"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Deens"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noors"</string> diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml index 7a4ffeff433a..1559fa890bcd 100644 --- a/packages/InputDevices/res/values-am/strings.xml +++ b/packages/InputDevices/res/values-am/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"የስዊዝ ጀርመን"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ቤልጂየም"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ቡልጋሪያ"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ቡልጋሪያኛ፣ ፎነቲክ"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ጣሊያንኛ"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ዴኒሽ"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ኖርዌጂያ"</string> diff --git a/packages/InputDevices/res/values-as/strings.xml b/packages/InputDevices/res/values-as/strings.xml index a63821e76633..49fbef92c114 100644 --- a/packages/InputDevices/res/values-as/strings.xml +++ b/packages/InputDevices/res/values-as/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ছুইছ জাৰ্মান"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"বেলজিয়ান"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"বুলগেৰিয়ান"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"বুলগেৰিয়ান ফ’নেটিক"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ইটালিয়ান"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ডেনিশ্ব"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ন\'ৰৱেয়ান"</string> diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml index 16badc456e73..c5a1e1ee2e2e 100644 --- a/packages/InputDevices/res/values-az/strings.xml +++ b/packages/InputDevices/res/values-az/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"İsveçrə Almanı"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belçikalı"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bolqar"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bolqar dili, Fonetika"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"İtalyan"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danimarkalı"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norveçli"</string> diff --git a/packages/InputDevices/res/values-b+sr+Latn/strings.xml b/packages/InputDevices/res/values-b+sr+Latn/strings.xml index 95ef45916031..16f1cb2fc591 100644 --- a/packages/InputDevices/res/values-b+sr+Latn/strings.xml +++ b/packages/InputDevices/res/values-b+sr+Latn/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švajcarsko nemačka"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgijska"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bugarska"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"bugarska fonetska"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"italijanska"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"danska"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norveška"</string> diff --git a/packages/InputDevices/res/values-be/strings.xml b/packages/InputDevices/res/values-be/strings.xml index 63b899af1c98..6b0523f2bdf8 100644 --- a/packages/InputDevices/res/values-be/strings.xml +++ b/packages/InputDevices/res/values-be/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Нямецкая (Швейцарыя)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Бельгійская"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Балгарская"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Балгарская фанетычная"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Італьянская"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Дацкая"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Нарвежская"</string> diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml index 90b7f6c5e9d3..a7088c930395 100644 --- a/packages/InputDevices/res/values-bg/strings.xml +++ b/packages/InputDevices/res/values-bg/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"швейцарски немски"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"белгийски"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"български"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Българска фонетична клавиатура"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"италиански"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"датски"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"норвежки"</string> diff --git a/packages/InputDevices/res/values-bs/strings.xml b/packages/InputDevices/res/values-bs/strings.xml index f6a229c34eb4..b92ac8cad498 100644 --- a/packages/InputDevices/res/values-bs/strings.xml +++ b/packages/InputDevices/res/values-bs/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švicarski njemački"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgijski"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bugarski"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"bugarski, fonetski"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"italijanski"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"danski"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norveški"</string> diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml index ec3b247ac6d3..a5b5e10129d4 100644 --- a/packages/InputDevices/res/values-ca/strings.xml +++ b/packages/InputDevices/res/values-ca/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemany suís"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgar"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Búlgar, fonètic"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italià"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danès"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noruec"</string> diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml index dbe685cb2329..cf2aecf1783a 100644 --- a/packages/InputDevices/res/values-da/strings.xml +++ b/packages/InputDevices/res/values-da/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Schweizertysk"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgisk"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarsk"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgarsk, fonetisk"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiensk"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dansk"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norsk"</string> diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml index fd7fca014548..1e786855ac25 100644 --- a/packages/InputDevices/res/values-de/strings.xml +++ b/packages/InputDevices/res/values-de/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Schweizerdeutsch"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgisch"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarisch"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgarisch – phonetisch"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italienisch"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dänisch"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norwegisch"</string> diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml index 8bdd6f8bc967..eb2cc9b09a09 100644 --- a/packages/InputDevices/res/values-el/strings.xml +++ b/packages/InputDevices/res/values-el/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Γερμανικά Ελβετίας"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Βελγικά"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Βουλγαρικά"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Βουλγαρικά (Φωνητικό)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Ιταλικά"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Δανικά"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Νορβηγικά"</string> diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml index 5319f968afc3..e8d6597f0e57 100644 --- a/packages/InputDevices/res/values-es-rUS/strings.xml +++ b/packages/InputDevices/res/values-es-rUS/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemán de Suiza"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Búlgaro fonético"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danés"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noruego"</string> diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml index 95b3b1c80cdf..9396e460eba1 100644 --- a/packages/InputDevices/res/values-es/strings.xml +++ b/packages/InputDevices/res/values-es/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemán suizo"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Búlgaro (fonético)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danés"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noruego"</string> diff --git a/packages/InputDevices/res/values-et/strings.xml b/packages/InputDevices/res/values-et/strings.xml index a5fb8ac08502..cf28e9f66dae 100644 --- a/packages/InputDevices/res/values-et/strings.xml +++ b/packages/InputDevices/res/values-et/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Šveitsisaksa"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgia"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaaria"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgaaria, foneetiline"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Itaalia"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Taani"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norra"</string> diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml index 1c75a7c0f67f..1e080fc83141 100644 --- a/packages/InputDevices/res/values-eu/strings.xml +++ b/packages/InputDevices/res/values-eu/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemana (Suitza)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgikarra"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgariarra"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgariarra, fonetikoa"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiarra"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Daniarra"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvegiarra"</string> diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml index ca7d43a1400f..5cb237e35053 100644 --- a/packages/InputDevices/res/values-fa/strings.xml +++ b/packages/InputDevices/res/values-fa/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"آلمانی سوئیسی"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"بلژیکی"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"بلغاری"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"بلغاری، آوایی"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ایتالیایی"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"دانمارکی"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"نروژی"</string> diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml index 2878c78318f7..da7210657381 100644 --- a/packages/InputDevices/res/values-fi/strings.xml +++ b/packages/InputDevices/res/values-fi/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"sveitsinsaksa"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgialainen"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bulgaria"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"bulgaria, foneettinen"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"italia"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"tanska"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norja"</string> diff --git a/packages/InputDevices/res/values-gl/strings.xml b/packages/InputDevices/res/values-gl/strings.xml index e1ca7cfefa1c..40ede04c8e05 100644 --- a/packages/InputDevices/res/values-gl/strings.xml +++ b/packages/InputDevices/res/values-gl/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemán suízo"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Búlgaro, fonético"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dinamarqués"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noruegués"</string> diff --git a/packages/InputDevices/res/values-gu/strings.xml b/packages/InputDevices/res/values-gu/strings.xml index bc2ee8303290..631fc1497ce4 100644 --- a/packages/InputDevices/res/values-gu/strings.xml +++ b/packages/InputDevices/res/values-gu/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"સ્વિસ જર્મન"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"બેલ્જિયન"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"બલ્ગેરિયન"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"બલ્ગેરિયન ફોનેટિક"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ઇટાલિયન"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ડેનિશ"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"નોર્વેજીયન"</string> diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml index 0430f8662014..aff2a37c2b7f 100644 --- a/packages/InputDevices/res/values-hr/strings.xml +++ b/packages/InputDevices/res/values-hr/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švicarsko-njemačka"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgijska"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bugarska"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"bugarska (fonetska)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"talijanska"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"danska"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norveška"</string> diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml index 76d10f544280..50d667b40b62 100644 --- a/packages/InputDevices/res/values-hu/strings.xml +++ b/packages/InputDevices/res/values-hu/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"svájci német"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bolgár"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"bolgár fonetikus"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"olasz"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"dán"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norvég"</string> diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml index fa4e24550639..4a6fe2b3be4f 100644 --- a/packages/InputDevices/res/values-hy/strings.xml +++ b/packages/InputDevices/res/values-hy/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Շվեյցարական գերմաներեն"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Բելգիական"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Բուլղարերեն"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"բուլղարերեն (հնչյունային)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Իտալերեն"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Դանիերեն"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Նորվեգերեն"</string> diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml index f5d173a338a0..90ba97d16f6a 100644 --- a/packages/InputDevices/res/values-in/strings.xml +++ b/packages/InputDevices/res/values-in/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Jerman Swiss"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgia"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaria"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgaria, Fonetik"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italia"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Denmark"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norwegia"</string> diff --git a/packages/InputDevices/res/values-is/strings.xml b/packages/InputDevices/res/values-is/strings.xml index 09eedd300177..0889b21f3a64 100644 --- a/packages/InputDevices/res/values-is/strings.xml +++ b/packages/InputDevices/res/values-is/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Svissneskt-þýskt"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgískt"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgarskt"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Búlgarskt hljóðritunarlyklaborð"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Ítalskt"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danskt"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norskt"</string> diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml index e15c01ff6a62..77f78c6f49d0 100644 --- a/packages/InputDevices/res/values-it/strings.xml +++ b/packages/InputDevices/res/values-it/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Tedesco svizzero"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaro"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgara, fonetica"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danese"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvegese"</string> diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml index 4abdf87ec4d4..52641b2ba1ff 100644 --- a/packages/InputDevices/res/values-iw/strings.xml +++ b/packages/InputDevices/res/values-iw/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"גרמנית שוויצרית"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"בלגית"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"בולגרית"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"בולגרית פונטית"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"איטלקית"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"דנית"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"נורווגית"</string> diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml index 606ab3cd2239..2961548599a6 100644 --- a/packages/InputDevices/res/values-ja/strings.xml +++ b/packages/InputDevices/res/values-ja/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ドイツ語(スイス)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ベルギー語"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ブルガリア語"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ブルガリア語(表音)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"イタリア語"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"デンマーク語"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ノルウェー語"</string> diff --git a/packages/InputDevices/res/values-ka/strings.xml b/packages/InputDevices/res/values-ka/strings.xml index b4b1a2df4d30..2ccfeb2f635f 100644 --- a/packages/InputDevices/res/values-ka/strings.xml +++ b/packages/InputDevices/res/values-ka/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"შვეიცარიული გერმანული"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ბელგიური"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ბულგარული"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ბულგარული ფონეტიკური"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"იტალიური"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"დანიური"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ნორვეგიული"</string> diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml index 8f62eb36a1f6..1e3c6932c3d4 100644 --- a/packages/InputDevices/res/values-kn/strings.xml +++ b/packages/InputDevices/res/values-kn/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ಸ್ವಿಸ್ ಜರ್ಮನ್"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ಬೆಲ್ಜಿಯನ್"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ಬಲ್ಗೇರಿಯನ್"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ಬಲ್ಗೇರಿಯನ್ ಫೋನೆಟಿಕ್"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ಇಟಾಲಿಯನ್"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ಡ್ಯಾನಿಶ್"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ನಾರ್ವೇಜಿಯನ್"</string> diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml index b1f658202c46..147050462eab 100644 --- a/packages/InputDevices/res/values-ko/strings.xml +++ b/packages/InputDevices/res/values-ko/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"독일어(스위스)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"벨기에어"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"불가리아어"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"불가리아어, 표음"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"이탈리아어"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"덴마크어"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"노르웨이어"</string> diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml index bc521a2cd6cb..cb9dbb2f0abb 100644 --- a/packages/InputDevices/res/values-ky/strings.xml +++ b/packages/InputDevices/res/values-ky/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Немис (Швейцария)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Белгия"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Болгар"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Болгарча, фонетикалык"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Италия"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Дания"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Норвег"</string> diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml index edb59f3964ed..4ae4b7d9c58b 100644 --- a/packages/InputDevices/res/values-lo/strings.xml +++ b/packages/InputDevices/res/values-lo/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ສະວິສ ເຢຍລະມັນ"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ເບວຢ້ຽນ"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ຮັງກາຣຽນ"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ບັງກາຣຽນ, ການອອກສຽງ"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ອິຕາລຽນ"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ເດັນນິຊ"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ນໍເວກຽນ"</string> diff --git a/packages/InputDevices/res/values-lt/strings.xml b/packages/InputDevices/res/values-lt/strings.xml index f33eb42e6a4f..d2aef7f057db 100644 --- a/packages/InputDevices/res/values-lt/strings.xml +++ b/packages/InputDevices/res/values-lt/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Šveicarijos vokiečių k."</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgų k."</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarų k."</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Fonetinė bulgarų"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italų k."</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danų k."</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvegų k."</string> diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml index 4f47a3ba65db..8f3ff0ab2264 100644 --- a/packages/InputDevices/res/values-lv/strings.xml +++ b/packages/InputDevices/res/values-lv/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Vācu (Šveice)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Beļģu"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgāru"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgāru, fonētiskā"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Itāļu"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dāņu"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvēģu"</string> diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml index 65fbf22d5fe7..9e5344367eae 100644 --- a/packages/InputDevices/res/values-ml/strings.xml +++ b/packages/InputDevices/res/values-ml/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"സ്വിസ് ജര്മന്"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ബെൽജിയൻ"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ബൾഗേറിയൻ"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ബൾഗേറിയൻ, ഉച്ചാരണശബ്ദം"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ഇറ്റാലിയൻ"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ഡാനിഷ്"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"നോർവീജിയൻ"</string> diff --git a/packages/InputDevices/res/values-mn/strings.xml b/packages/InputDevices/res/values-mn/strings.xml index a8fc6615f4c1..18c2faf7e464 100644 --- a/packages/InputDevices/res/values-mn/strings.xml +++ b/packages/InputDevices/res/values-mn/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Швейцарийн Герман"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Бельги"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Болгар"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Болгар хэл, Авиа зүй"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Итали"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Дани"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Норвеги"</string> diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml index da6caab3842e..d8788c97b90c 100644 --- a/packages/InputDevices/res/values-mr/strings.xml +++ b/packages/InputDevices/res/values-mr/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"स्विस जर्मन"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"बेल्जियन"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"बल्गेरियन"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"बल्गेरियन, फोनेटिक"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"इटालियन"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"डॅनिश"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"नॉर्वेजियन"</string> diff --git a/packages/InputDevices/res/values-ms/strings.xml b/packages/InputDevices/res/values-ms/strings.xml index 975024ba1cdf..8bc9b2a73cb2 100644 --- a/packages/InputDevices/res/values-ms/strings.xml +++ b/packages/InputDevices/res/values-ms/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Jerman Switzerland"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Bahasa Belgium"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bahasa Bulgaria"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bahasa Bulgaria, Fonetik"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Bahasa Itali"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Bahasa Denmark"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Bahasa Norway"</string> diff --git a/packages/InputDevices/res/values-my/strings.xml b/packages/InputDevices/res/values-my/strings.xml index 5484d9d2a2e8..26720576ee91 100644 --- a/packages/InputDevices/res/values-my/strings.xml +++ b/packages/InputDevices/res/values-my/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ဆွစ် ဂျာမန်"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ဘယ်လ်ဂျီယန်"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ဘူဂေးရီယန်း"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ဘူလ်ဂေးရီးယား အသံထွက်"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"အီတာလီယန်"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ဒိန်းမတ်"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"နောဝေဂျီယန်"</string> diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml index 54840338b966..83b87e5dd45e 100644 --- a/packages/InputDevices/res/values-nb/strings.xml +++ b/packages/InputDevices/res/values-nb/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Sveitsisk standardtysk"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgisk"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarsk"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgarsk, fonetisk"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiensk"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dansk"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norsk"</string> diff --git a/packages/InputDevices/res/values-nl/strings.xml b/packages/InputDevices/res/values-nl/strings.xml index e000a30f9cf9..6e5849013fe7 100644 --- a/packages/InputDevices/res/values-nl/strings.xml +++ b/packages/InputDevices/res/values-nl/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Zwitsers Duits"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgisch"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgaars"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgaars, fonetisch"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiaans"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Deens"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Noors"</string> diff --git a/packages/InputDevices/res/values-or/strings.xml b/packages/InputDevices/res/values-or/strings.xml index 6185ff77695d..aa16151752e6 100644 --- a/packages/InputDevices/res/values-or/strings.xml +++ b/packages/InputDevices/res/values-or/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ସୁଇସ୍ ଜର୍ମାନ୍"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ବେଲ୍ଜିଆନ୍"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ବୁଲଗାରିଆନ୍"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ବୁଲଗେରିଆନ୍, ଫୋନେଟିକ୍"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ଇଟାଲିୟାନ୍"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ଡାନିଶ୍"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ନରୱେଜିଆନ୍"</string> diff --git a/packages/InputDevices/res/values-pa/strings.xml b/packages/InputDevices/res/values-pa/strings.xml index 97cf28bbc66c..7e5a03cde986 100644 --- a/packages/InputDevices/res/values-pa/strings.xml +++ b/packages/InputDevices/res/values-pa/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ਸਵਿਸ ਜਰਮਨ"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"ਬੈਲਜੀਅਨ"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"ਬਲਗੇਰੀਅਨ"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ਬਲਗੇਰੀਅਨ, ਧੁਨੀਆਤਮਿਕ"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ਇਤਾਲਵੀ"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ਡੈਨਿਸ਼"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"ਨਾਰਵੇਜੀਅਨ"</string> diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml index 61819b624112..51755e2b2b52 100644 --- a/packages/InputDevices/res/values-pl/strings.xml +++ b/packages/InputDevices/res/values-pl/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Niemiecki (Szwajcaria)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgijski"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bułgarski"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bułgarski (znaki fonetyczne)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Włoski"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Duński"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norweski"</string> diff --git a/packages/InputDevices/res/values-pt-rBR/strings.xml b/packages/InputDevices/res/values-pt-rBR/strings.xml index 665a1c7632f1..128868856f5a 100644 --- a/packages/InputDevices/res/values-pt-rBR/strings.xml +++ b/packages/InputDevices/res/values-pt-rBR/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemão suíço"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Búlgaro, fonético"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dinamarquês"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norueguês"</string> diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml index 1ccc64409452..89bb3e376678 100644 --- a/packages/InputDevices/res/values-pt-rPT/strings.xml +++ b/packages/InputDevices/res/values-pt-rPT/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemão (Suíça)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Búlgaro, fonético"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dinamarquês"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norueguês"</string> diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml index 665a1c7632f1..128868856f5a 100644 --- a/packages/InputDevices/res/values-pt/strings.xml +++ b/packages/InputDevices/res/values-pt/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Alemão suíço"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belga"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Búlgaro"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Búlgaro, fonético"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiano"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Dinamarquês"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norueguês"</string> diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml index e0b488585c78..f7ff2504f31f 100644 --- a/packages/InputDevices/res/values-ro/strings.xml +++ b/packages/InputDevices/res/values-ro/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Germană (Elveția)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgiană"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgară"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgară fonetică"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italiană"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Daneză"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvegiană"</string> diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml index 41ccf1a4f689..0cb4f34d4ab1 100644 --- a/packages/InputDevices/res/values-ru/strings.xml +++ b/packages/InputDevices/res/values-ru/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"немецкий (Швейцария)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"нидерландский (Бельгия)"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"болгарский"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"болгарский (фонетическая)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"итальянский"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"датский"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"норвежский"</string> diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml index 4d355d73e985..eb3c44678db2 100644 --- a/packages/InputDevices/res/values-si/strings.xml +++ b/packages/InputDevices/res/values-si/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"ස්විස් ජර්මන්"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"බෙල්ගියන්"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"බල්ගේරියානු"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"බල්ගේරියානු, ශබ්දිම"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ඉතාලි"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ඩෙන්මාර්ක"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"නෝර්වීජියානු"</string> diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml index c7ff2fd5d994..e7e15b0cbd00 100644 --- a/packages/InputDevices/res/values-sk/strings.xml +++ b/packages/InputDevices/res/values-sk/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švajčiarske (nemčina)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgické"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bulharské"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulharská fonetická klávesnica"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"talianske"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"dánske"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"nórske"</string> diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml index 68741b42e880..f4d1e5732fc5 100644 --- a/packages/InputDevices/res/values-sl/strings.xml +++ b/packages/InputDevices/res/values-sl/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"švicarska nemška"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"belgijska"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"bolgarska"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"bolgarščina (fonetična)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"italijanska"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"danska"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"norveška"</string> diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml index 2f68903c4e2d..e3a20438f34a 100644 --- a/packages/InputDevices/res/values-sr/strings.xml +++ b/packages/InputDevices/res/values-sr/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"швајцарско немачка"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"белгијска"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"бугарска"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"бугарска фонетска"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"италијанска"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"данска"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"норвешка"</string> diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml index b465fa64ce82..097ada40be63 100644 --- a/packages/InputDevices/res/values-sv/strings.xml +++ b/packages/InputDevices/res/values-sv/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Tyskt (Schweiz)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgiskt"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgariskt"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgariska (fonetiskt)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italienskt"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danskt"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norskt"</string> diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml index 794d907f006d..325796232d76 100644 --- a/packages/InputDevices/res/values-sw/strings.xml +++ b/packages/InputDevices/res/values-sw/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Kijerumani cha Uswisi"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Kibelgiji"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Kibulgaria"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Kibulgaria, Fonetiki"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Kiitaliano"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Kidenmarki"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Kinorwei"</string> diff --git a/packages/InputDevices/res/values-te/strings.xml b/packages/InputDevices/res/values-te/strings.xml index d40c3e0d5d9f..c0253e528684 100644 --- a/packages/InputDevices/res/values-te/strings.xml +++ b/packages/InputDevices/res/values-te/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"స్విస్ జర్మన్"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"బెల్జియన్"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"బల్గేరియన్"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"బల్గేరియన్, ఫోనెటిక్"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"ఇటాలియన్"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"డేనిష్"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"నార్వేజియన్"</string> diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml index 59136506abe0..c8e0e62f6e18 100644 --- a/packages/InputDevices/res/values-th/strings.xml +++ b/packages/InputDevices/res/values-th/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"เยอรมันสวิส"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"เบลเยียม"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"บัลแกเรีย"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"ภาษาบัลแกเรีย ตามการออกเสียง"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"อิตาลี"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"เดนมาร์ก"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"นอร์เวย์"</string> diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml index a89cea59b30f..f093abb9a708 100644 --- a/packages/InputDevices/res/values-tr/strings.xml +++ b/packages/InputDevices/res/values-tr/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"İsviçre Almancası"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belçika dili"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bulgarca"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bulgarca, Fonetik"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"İtalyanca"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Danca"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norveççe"</string> diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml index 4b37ca954d37..d9b58d21c14f 100644 --- a/packages/InputDevices/res/values-uk/strings.xml +++ b/packages/InputDevices/res/values-uk/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"німецька (Швейцарія)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"бельгійська"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"болгарська"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Болгарська (фонетична)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"італійська"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"данська"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"норвезька"</string> diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml index ca42086b8811..2bff7ed2f234 100644 --- a/packages/InputDevices/res/values-ur/strings.xml +++ b/packages/InputDevices/res/values-ur/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"سوئس جرمن"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"بیلجیئن"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"بلغاریائی"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"بلغاریائی، فونیٹک"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"اطالوی"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"ڈینش"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"نارویجین"</string> diff --git a/packages/InputDevices/res/values-uz/strings.xml b/packages/InputDevices/res/values-uz/strings.xml index 77a06b5a4d79..9245aebd22ba 100644 --- a/packages/InputDevices/res/values-uz/strings.xml +++ b/packages/InputDevices/res/values-uz/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Nemis (Shveytsariya)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Belgiyancha"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Bolgarcha"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Bolgar, fonetik"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Italyancha"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Datcha"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Norvegcha"</string> diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml index fd570efe8693..1b42ece3deed 100644 --- a/packages/InputDevices/res/values-vi/strings.xml +++ b/packages/InputDevices/res/values-vi/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Tiếng Đức Thụy Sĩ"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Tiếng Bỉ"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Tiếng Bungary"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Tiếng Bulgaria, Ngữ âm"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Tiếng Ý"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Tiếng Đan Mạch"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Tiếng Na Uy"</string> diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml index afc373acd61f..aa75605b5abd 100644 --- a/packages/InputDevices/res/values-zh-rCN/strings.xml +++ b/packages/InputDevices/res/values-zh-rCN/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"瑞士德语"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"比利时语"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"保加利亚语"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"保加利亚语,注音"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"意大利语"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"丹麦语"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"挪威语"</string> diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml index 775fa2acfcec..dc824b97369d 100644 --- a/packages/InputDevices/res/values-zh-rHK/strings.xml +++ b/packages/InputDevices/res/values-zh-rHK/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"德文(瑞士)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"比利時文"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"保加利亞文"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"保加利亞文 (拼音)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"意大利文"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"丹麥文"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"挪威文"</string> diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml index b4a059cbeb1f..c2714da0c3d9 100644 --- a/packages/InputDevices/res/values-zh-rTW/strings.xml +++ b/packages/InputDevices/res/values-zh-rTW/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"德文 (瑞士)"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"比利時式"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"保加利亞文"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"保加利亞文 (拼音)"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"義大利文"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"丹麥文"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"挪威文"</string> diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml index 0a2499ad8967..3af1da1ac694 100644 --- a/packages/InputDevices/res/values-zu/strings.xml +++ b/packages/InputDevices/res/values-zu/strings.xml @@ -19,8 +19,7 @@ <string name="keyboard_layout_swiss_german_label" msgid="2305520941993314258">"Isi-Swiss German"</string> <string name="keyboard_layout_belgian" msgid="2011984572838651558">"Isi-Belgian"</string> <string name="keyboard_layout_bulgarian" msgid="8951224309972028398">"Isi-Bulgarian"</string> - <!-- no translation found for keyboard_layout_bulgarian_phonetic (7568914730360106653) --> - <skip /> + <string name="keyboard_layout_bulgarian_phonetic" msgid="7568914730360106653">"Isi-Bulgarian, Ifonetiki"</string> <string name="keyboard_layout_italian" msgid="6497079660449781213">"Isi-Italian"</string> <string name="keyboard_layout_danish" msgid="8036432066627127851">"Isi-Danish"</string> <string name="keyboard_layout_norwegian" msgid="9090097917011040937">"Isi-Norwegian"</string> diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml index 2696f5a01785..a279872a088e 100644 --- a/packages/SettingsLib/res/values-hy/arrays.xml +++ b/packages/SettingsLib/res/values-hy/arrays.xml @@ -55,7 +55,7 @@ </string-array> <string-array name="hdcp_checking_summaries"> <item msgid="4045840870658484038">"Երբեք չօգտագործել HDCP ստուգումը"</item> - <item msgid="8254225038262324761">"Օգտագործել HDCP-ը` միայն DRM-ի բովանդակությունը ստուգելու համար"</item> + <item msgid="8254225038262324761">"Օգտագործել HDCP-ը՝ միայն DRM-ի բովանդակությունը ստուգելու համար"</item> <item msgid="6421717003037072581">"Միշտ օգտագործել HDCP ստուգումը"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index ffd95a45b61e..e434cac36b34 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -343,7 +343,7 @@ <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Թարմացվելիս ընդգծել սարքաշարի ծածկույթները կանաչ գույնով"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Վրիպազերծել GPU գերազանցումները"</string> <string name="disable_overlays" msgid="4206590799671557143">"Կասեցնել HW վրադրումները"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"Միշտ օգտագործել GPU-ն` էկրանի կազմման համար"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"Միշտ օգտագործել GPU-ն՝ էկրանի կազմման համար"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Նմանակել գունատարածքը"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Ակտիվացնել OpenGL հետքերը"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Անջատել USB աուդիո երթուղումը"</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/OWNERS b/packages/SettingsLib/src/com/android/settingslib/wifi/OWNERS index f506b7c12d81..0bde5c030eb0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/OWNERS +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/OWNERS @@ -1,7 +1,9 @@ # Default reviewers for this and subdirectories. -qal@google.com +andychou@google.com arcwang@google.com -govenliu@google.com asapperstein@google.com +goldmanj@google.com +qal@google.com +wengsu@google.com -# Emergency approvers in case the above are not available
\ No newline at end of file +# Emergency approvers in case the above are not available diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml index 24b5c23a6732..52b7fab768c5 100644 --- a/packages/SystemUI/res-keyguard/values-km/strings.xml +++ b/packages/SystemUI/res-keyguard/values-km/strings.xml @@ -100,7 +100,7 @@ <string name="kg_pin_accepted" msgid="1625501841604389716">"កូដត្រូវបានទទួលយក!"</string> <string name="keyguard_carrier_default" msgid="6359808469637388586">"គ្មានសេវាទេ។"</string> <string name="accessibility_ime_switch_button" msgid="9082358310194861329">"ប្ដូរវិធីបញ្ចូល"</string> - <string name="airplane_mode" msgid="2528005343938497866">"មុខងារពេលជិះយន្តហោះ"</string> + <string name="airplane_mode" msgid="2528005343938497866">"ពេលជិះយន្តហោះ"</string> <string name="kg_prompt_reason_restart_pattern" msgid="4720554342633852066">"តម្រូវឲ្យប្រើលំនាំ បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string> <string name="kg_prompt_reason_restart_pin" msgid="1587671566498057656">"តម្រូវឲ្យបញ្ចូលកូដ PIN បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string> <string name="kg_prompt_reason_restart_password" msgid="8061279087240952002">"តម្រូវឲ្យបញ្ចូលពាក្យសម្ងាត់ បន្ទាប់ពីឧបករណ៍ចាប់ផ្តើមឡើងវិញ"</string> diff --git a/packages/SystemUI/res/drawable/tv_rect_dark_left_rounded.xml b/packages/SystemUI/res/drawable/tv_rect_dark_left_rounded.xml deleted file mode 100644 index 9b48a70d9439..000000000000 --- a/packages/SystemUI/res/drawable/tv_rect_dark_left_rounded.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ Copyright (C) 2019 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" - android:shape="rectangle"> - - <corners - android:bottomLeftRadius="8dp" - android:topLeftRadius="8dp" /> - <solid android:color="@color/tv_audio_recording_indicator_background" /> - -</shape>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable/tv_rect_dark_right_rounded.xml b/packages/SystemUI/res/drawable/tv_rect_dark_right_rounded.xml deleted file mode 100644 index 03348756231b..000000000000 --- a/packages/SystemUI/res/drawable/tv_rect_dark_right_rounded.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ Copyright (C) 2019 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" - android:shape="rectangle"> - - <corners - android:bottomRightRadius="8dp" - android:topRightRadius="8dp" /> - <solid android:color="@color/tv_audio_recording_indicator_background" /> - -</shape>
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/tv_audio_recording_indicator.xml b/packages/SystemUI/res/layout/tv_audio_recording_indicator.xml index f9336a540376..b62018d7cb9e 100644 --- a/packages/SystemUI/res/layout/tv_audio_recording_indicator.xml +++ b/packages/SystemUI/res/layout/tv_audio_recording_indicator.xml @@ -22,80 +22,17 @@ android:padding="12dp"> <FrameLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content"> + android:layout_width="34dp" + android:layout_height="24dp" + android:layout_gravity="center" + android:background="@drawable/tv_rect_shadow_rounded"> - <LinearLayout - android:id="@+id/icon_texts_container" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="horizontal"> - - <FrameLayout - android:layout_width="wrap_content" - android:layout_height="match_parent"> - - <View - android:id="@+id/icon_container_bg" - android:layout_width="50dp" - android:layout_height="match_parent" - android:background="@drawable/tv_rect_dark_left_rounded"/> - - <FrameLayout - android:id="@+id/icon_mic" - android:layout_width="34dp" - android:layout_height="24dp" - android:layout_gravity="center" - android:background="@drawable/tv_rect_shadow_rounded"> - - <ImageView - android:layout_width="13dp" - android:layout_height="13dp" - android:layout_gravity="center" - android:background="@drawable/tv_ic_mic_white"/> - </FrameLayout> - - </FrameLayout> - - <LinearLayout - android:id="@+id/texts_container" - android:layout_width="wrap_content" - android:layout_height="47dp" - android:background="@color/tv_audio_recording_indicator_background" - android:orientation="vertical" - android:visibility="visible"> - - <TextView - android:layout_width="wrap_content" - android:layout_height="14dp" - android:layout_marginTop="10dp" - android:layout_marginBottom="1dp" - android:text="@string/mic_active" - android:textColor="@android:color/white" - android:fontFamily="sans-serif" - android:textSize="10dp"/> - - <TextView - android:id="@+id/text" - android:layout_width="wrap_content" - android:layout_height="14dp" - android:singleLine="true" - android:text="SomeApplication accessed your microphone" - android:textColor="@android:color/white" - android:fontFamily="sans-serif" - android:textSize="8dp"/> - - </LinearLayout> - - </LinearLayout> + <ImageView + android:layout_width="13dp" + android:layout_height="13dp" + android:layout_gravity="center" + android:src="@drawable/tv_ic_mic_white"/> </FrameLayout> - <View - android:id="@+id/bg_end" - android:layout_width="12dp" - android:layout_height="47dp" - android:background="@drawable/tv_rect_dark_right_rounded" - android:visibility="visible"/> - </LinearLayout> diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 556c39091cce..72dfe74b2fde 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Wys laeprioriteit-kennisgewingikone"</string> <string name="other" msgid="429768510980739978">"Ander"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"verwyder teël"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"voeg teël aan einde by"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Skuif teël"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Voeg teël by"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Skuif na <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Voeg by posisie <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posisie <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Kitsinstellingswysiger."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g>-kennisgewing: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Maak instellings oop."</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index c8462976528c..0ec236de8867 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"አነስተኛ ቅድሚያ ያላቸው የማሳወቂያ አዶዎችን አሳይ"</string> <string name="other" msgid="429768510980739978">"ሌላ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ሰቅ አስወግድ"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ሰቅ መጨረሻው ላይ አክል"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ሰቁን ውሰድ"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ሰቅ ያክሉ"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ወደ <xliff:g id="POSITION">%1$d</xliff:g> ውሰድ"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"ወደ <xliff:g id="POSITION">%1$d</xliff:g> ቦታ አክል"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"የ<xliff:g id="POSITION">%1$d</xliff:g> አቀማመጥ"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"የፈጣን ቅንብሮች አርታዒ።"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"የ<xliff:g id="ID_1">%1$s</xliff:g> ማሳወቂያ፦ <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ቅንብሮችን ክፈት።"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 785f8feb551a..e1d195028dcb 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -899,20 +899,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"إظهار رموز الإشعارات ذات الأولوية المنخفضة"</string> <string name="other" msgid="429768510980739978">"غير ذلك"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"إزالة البطاقة"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"إضافة بطاقة إلى النهاية"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"نقل البطاقة"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"إضافة بطاقة"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"الانتقال إلى <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"الإضافة إلى الموضع <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"الموضع: <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"برنامج تعديل الإعدادات السريعة."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"إشعار <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"فتح الإعدادات."</string> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index 059c4bca8181..61ba6dc1265c 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"কম গুৰুত্বপূৰ্ণ জাননীৰ আইকনসমূহ দেখুৱাওক"</string> <string name="other" msgid="429768510980739978">"অন্যান্য"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"টাইল আঁতৰাবলৈ"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"টাইল শেষত যোগ দিবলৈ"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"টাইল স্থানান্তৰ কৰক"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"টাইল যোগ দিয়ক"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> নম্বৰলৈ স্থানান্তৰ কৰক"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> নম্বৰ স্থানত যোগ দিয়ক"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g> নম্বৰ স্থান"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ক্ষিপ্ৰ ছেটিংসমূহৰ সম্পাদক।"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> জাননী: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ছেটিংসমূহ খোলক।"</string> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 2381d3330730..bee0e5fdca54 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Aşağı prioritet bildiriş işarələrini göstərin"</string> <string name="other" msgid="429768510980739978">"Digər"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"lövhəni silin"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"sona lövhə əlavə edin"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Lövhəni köçürün"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Lövhə əlavə edin"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> mövqeyinə köçürün"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> mövqeyinə əlavə edin"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g> mövqeyi"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Sürətli ayarlar redaktoru."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> bildiriş: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Ayarları açın."</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 55abfda98bc8..5966356d1e66 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -884,20 +884,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obaveštenja niskog prioriteta"</string> <string name="other" msgid="429768510980739978">"Drugo"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklonili pločicu"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodali pločicu na kraj"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premestite pločicu"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodajte pločicu"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Premestite na <xliff:g id="POSITION">%1$d</xliff:g>. poziciju"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodajte na <xliff:g id="POSITION">%1$d</xliff:g>. poziciju"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g>. pozicija"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Uređivač za Brza podešavanja."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Obaveštenja za <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Otvori Podešavanja."</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 47f9861f640b..cedc3753da42 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -889,20 +889,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Паказваць значкі апавяшчэнняў з нізкім прыярытэтам"</string> <string name="other" msgid="429768510980739978">"Іншае"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"выдаліць плітку"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"дадаць плітку ў канец"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Перамясціць плітку"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Дадаць плітку"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Перамясціць на пазіцыю <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Дадаць на пазіцыю <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Пазіцыя <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Рэдактар хуткіх налад."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Апавяшчэнне <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Адкрыць налады."</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index efe12673fe78..14088404e81b 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Показване на иконите за известията с нисък приоритет"</string> <string name="other" msgid="429768510980739978">"Друго"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"премахване на панел"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"добавяне на панел в края"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместване на панел"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Добавяне на панел"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Преместване към позиция <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Добавяне към позиция <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Позиция <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Редактор за бързи настройки."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Известие от <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Отваряне на настройките."</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 811a971ab02b..41a2671466df 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -884,20 +884,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obavještenja niskog prioriteta"</string> <string name="other" msgid="429768510980739978">"Ostalo"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklanjanje kartice"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodavanje kartice na kraj"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pomjeranje kartice"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodavanje kartice"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Pomjeranje u položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodavanje u položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Uređivanje brzih postavki"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> obavještenje: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Otvori postavke."</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 793c44b4544b..783f7877e230 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -92,10 +92,10 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processant gravació de pantalla"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificació en curs d\'una sessió de gravació de la pantalla"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Vols iniciar la gravació?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"Quan graves contingut, el sistema Android pot capturar qualsevol informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu. Això inclou les contrasenyes, la informació de pagament, les fotos, els missatges i l\'àudio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"Durant la gravació, el sistema Android pot capturar qualsevol informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu. Això inclou contrasenyes, informació de pagament, fotos, missatges i àudio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Grava l\'àudio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Àudio del dispositiu"</string> - <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sons del dispositiu, com ara la música, les trucades i els sons de trucada"</string> + <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"So del dispositiu, com ara música, trucades i sons de trucada"</string> <string name="screenrecord_mic_label" msgid="2111264835791332350">"Micròfon"</string> <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Àudio del dispositiu i micròfon"</string> <string name="screenrecord_start" msgid="330991441575775004">"Inicia"</string> @@ -387,7 +387,7 @@ <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"La Wi‑Fi no està connectada"</string> <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brillantor"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"AUTOMÀTICA"</string> - <string name="quick_settings_inversion_label" msgid="5078769633069667698">"Inverteix els colors"</string> + <string name="quick_settings_inversion_label" msgid="5078769633069667698">"Inverteix colors"</string> <string name="quick_settings_color_space_label" msgid="537528291083575559">"Mode de correcció de color"</string> <string name="quick_settings_more_settings" msgid="2878235926753776694">"Més opcions"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Fet"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostra les icones de notificació amb prioritat baixa"</string> <string name="other" msgid="429768510980739978">"Altres"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"suprimir el mosaic"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"afegir una targeta al final"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mou la targeta"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Afegeix una targeta"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mou a la posició <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Afegeix a la posició <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posició <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor de configuració ràpida."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notificació de <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Obre la configuració."</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 1d9238932283..f2e8a3f908f3 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Vis ikoner for notifikationer med lav prioritet"</string> <string name="other" msgid="429768510980739978">"Andet"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjern kortet"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"føj kortet til slutningen"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flyt kortet"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Tilføj et kort"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Flyt til <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Føj til placering <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Placering <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Redigeringsværktøj til Kvikmenu."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g>-notifikation: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Åbn Indstillinger."</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 5976a1c95362..887aad5d9aa6 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Symbole für Benachrichtigungen mit einer niedrigen Priorität anzeigen"</string> <string name="other" msgid="429768510980739978">"Sonstiges"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"die Kachel zu entfernen"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"die Kachel am Ende hinzuzufügen"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Kachel verschieben"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Kachel hinzufügen"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Auf Position <xliff:g id="POSITION">%1$d</xliff:g> verschieben"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Zur Position <xliff:g id="POSITION">%1$d</xliff:g> hinzufügen"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Position <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor für Schnelleinstellungen."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Benachrichtigung von <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Einstellungen öffnen."</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 1eae5d4a12f9..1b912c7a6ed9 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Εμφάνιση εικονιδίων ειδοποιήσεων χαμηλής προτεραιότητας"</string> <string name="other" msgid="429768510980739978">"Άλλο"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"κατάργηση πλακιδίου"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"προσθήκη πλακιδίου στο τέλος"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Μετακίνηση πλακιδίου"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Προσθήκη πλακιδίου"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Μετακίνηση στη θέση <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Προσθήκη στη θέση <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Θέση <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Επεξεργασία γρήγορων ρυθμίσεων."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Ειδοποίηση <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Άνοιγμα ρυθμίσεων."</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 4ea0341f8c39..065c17bec41a 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 3916e58ba076..1cc662521645 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 4ea0341f8c39..065c17bec41a 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 4ea0341f8c39..065c17bec41a 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -92,7 +92,7 @@ <string name="screenrecord_background_processing_label" msgid="7244617554884238898">"Processing screen recording"</string> <string name="screenrecord_channel_description" msgid="4147077128486138351">"Ongoing notification for a screen record session"</string> <string name="screenrecord_start_label" msgid="1750350278888217473">"Start recording?"</string> - <string name="screenrecord_description" msgid="1123231719680353736">"While recording, Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> + <string name="screenrecord_description" msgid="1123231719680353736">"While recording, the Android System can capture any sensitive information that’s visible on your screen or played on your device. This includes passwords, payment info, photos, messages and audio."</string> <string name="screenrecord_audio_label" msgid="6183558856175159629">"Record audio"</string> <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Device audio"</string> <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sound from your device, like music, calls and ringtones"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index b1ee41f4c53c..dfd42c3ea54f 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar íconos de notificaciones con prioridad baja"</string> <string name="other" msgid="429768510980739978">"Otros"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"Quitar tarjeta"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"Agregar tarjeta al final"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover la tarjeta"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Agregar tarjeta"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover a <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Agregar a la posición <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posición <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor de Configuración rápida"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notificación de <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Abrir Configuración"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 7e5361b4f70c..20b50abd5b08 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar iconos de notificaciones con prioridad baja"</string> <string name="other" msgid="429768510980739978">"Otros"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar icono"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"añadir icono al final"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover icono"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Añadir icono"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover a <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Añadir a la posición <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posición <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor de ajustes rápidos."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notificación de <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Abrir ajustes."</string> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 78de793517f4..ced06044f331 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Kuva madala prioriteediga märguande ikoonid"</string> <string name="other" msgid="429768510980739978">"Muu"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"paani eemaldamiseks"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"paani lõppu lisamiseks"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Teisalda paan"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Lisa paan"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Teisaldamine asendisse <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Lisamine asendisse <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Asend <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Kiirseadete redigeerija."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Teenuse <xliff:g id="ID_1">%1$s</xliff:g> märguanne: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Ava seaded."</string> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index b5d84447271a..c1ab20c9ebb6 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Erakutsi lehentasun txikiko jakinarazpenen ikonoak"</string> <string name="other" msgid="429768510980739978">"Beste bat"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"kendu lauza"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"gehitu lauza amaieran"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Aldatu tokiz lauza"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Gehitu lauza"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Eraman <xliff:g id="POSITION">%1$d</xliff:g>garren kokapenera"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Gehitu <xliff:g id="POSITION">%1$d</xliff:g>garren kokapenean"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Kokapena: <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Ezarpen bizkorren editorea."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> zerbitzuaren jakinarazpena: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Ireki ezarpenak."</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index d453f91da504..f6cf179d7d00 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"نمایش نمادهای اعلان کماهمیت"</string> <string name="other" msgid="429768510980739978">"موارد دیگر"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"برداشتن کاشی"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"افزودن کاشی به انتها"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"انتقال کاشی"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"افزودن کاشی"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"انتقال به <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"افزودن به موقعیت <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"موقعیت <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ویرایشگر تنظیمات سریع."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"اعلان <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"باز کردن تنظیمات."</string> @@ -967,7 +960,7 @@ <string name="slice_permission_text_2" msgid="6758906940360746983">"- میتواند در <xliff:g id="APP">%1$s</xliff:g> اقدام انجام دهد"</string> <string name="slice_permission_checkbox" msgid="4242888137592298523">"به <xliff:g id="APP">%1$s</xliff:g> اجازه داده شود تکههایی از برنامهها نشان دهد"</string> <string name="slice_permission_allow" msgid="6340449521277951123">"مجاز"</string> - <string name="slice_permission_deny" msgid="6870256451658176895">"رد کردن"</string> + <string name="slice_permission_deny" msgid="6870256451658176895">"مجاز نبودن"</string> <string name="auto_saver_title" msgid="6873691178754086596">"برای زمانبندی «بهینهسازی باتری» ضربه بزنید"</string> <string name="auto_saver_text" msgid="3214960308353838764">"وقتی باتری روبهاتمام است، بهینهسازی باتری را روشن کنید"</string> <string name="no_auto_saver_action" msgid="7467924389609773835">"نه متشکرم"</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index dde2449d8894..3d9a6dbee1f9 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -379,7 +379,7 @@ <string name="quick_settings_wifi_on_label" msgid="2489928193654318511">"Wi-Fi on käytössä"</string> <string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"Ei Wi-Fi-verkkoja käytettävissä"</string> <string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"Otetaan käyttöön…"</string> - <string name="quick_settings_cast_title" msgid="2279220930629235211">"Näytön suoratoisto"</string> + <string name="quick_settings_cast_title" msgid="2279220930629235211">"Näytön striimaus"</string> <string name="quick_settings_casting" msgid="1435880708719268055">"Lähetetään"</string> <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"Nimetön laite"</string> <string name="quick_settings_cast_device_default_description" msgid="2580520859212250265">"Valmis lähetystä varten"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Näytä vähemmän tärkeät ilmoituskuvakkeet"</string> <string name="other" msgid="429768510980739978">"Muu"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"poista kiekko"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"lisää kiekko loppuun"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Siirrä kiekkoa"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Lisää kiekko"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Siirrä paikkaan <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Lisää paikkaan <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Paikka <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Pika-asetusten muokkausnäkymä"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Ilmoitus kohteesta <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Avaa asetukset."</string> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index aba2d8fd389a..9075a69b2ed8 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar iconas das notificacións que teñan baixa prioridade"</string> <string name="other" msgid="429768510980739978">"Outros"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"quitar tarxeta"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"engadir tarxeta ao final"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover tarxeta"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Engadir tarxeta"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover a <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Engadir á posición <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posición <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor de configuración rápida."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notificación de <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Abrir configuración."</string> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 1acef350034a..e8b446063922 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"ઓછી પ્રાધાન્યતાનું નોટિફિકેશન આઇકન બતાવો"</string> <string name="other" msgid="429768510980739978">"અન્ય"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ટાઇલ કાઢી નાખો"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ટાઇલને અંતે ઉમેરો"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ટાઇલ ખસેડો"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ટાઇલ ઉમેરો"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> પર ખસેડો"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"જગ્યા પર <xliff:g id="POSITION">%1$d</xliff:g> ઉમેરો"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"જગ્યા <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ઝડપી સેટિંગ્સ સંપાદક."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> નોટિફિકેશન: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"સેટિંગ્સ ખોલો."</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 9b3f99748375..649299b1cd7d 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -884,20 +884,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Prikaži ikone obavijesti niskog prioriteta"</string> <string name="other" msgid="429768510980739978">"Ostalo"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"uklanjanje kartice"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodavanje kartice na kraj"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premještanje kartice"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodavanje kartice"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Premještanje u prostoriju <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodavanje na položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Uređivač brzih postavki."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> obavijest: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Otvaranje postavki."</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 7f4fa9d0acd3..f658bb76c649 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Alacsony prioritású értesítési ikonok mutatása"</string> <string name="other" msgid="429768510980739978">"Egyéb"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"mozaik eltávolításához"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"mozaiknak a végéhez való hozzáadásához"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mozaik áthelyezése"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Mozaik hozzáadása"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Áthelyezés ide: <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Hozzáadás a következő pozícióhoz: <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g>. hely"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Gyorsbeállítások szerkesztője"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g>-értesítések: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Beállítások megnyitása."</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 70cbf493feca..28c79fbc8852 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Ցուցադրել ցածր առաջնահերթության ծանուցումների պատկերակները"</string> <string name="other" msgid="429768510980739978">"Այլ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"հեռացնել սալիկը"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ավելացնել սալիկ վերջում"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Տեղափոխել սալիկը"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Ավելացնել սալիկ"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Տեղափոխել դիրք <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Ավելացնել դիրք <xliff:g id="POSITION">%1$d</xliff:g>-ում"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Դիրք <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Արագ կարգավորումների խմբագրիչ:"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> ծանուցում՝ <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Բացել կարգավորումները:"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index dc0a5128b808..12f42e84c3db 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -862,7 +862,7 @@ <string name="left_icon" msgid="5036278531966897006">"Ikon kiri"</string> <string name="right_icon" msgid="1103955040645237425">"Ikon kanan"</string> <string name="drag_to_add_tiles" msgid="8933270127508303672">"Tahan dan tarik untuk menambahkan kartu"</string> - <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tahan dan tarik untuk mengatur ulang kartu"</string> + <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tahan dan tarik untuk menata ulang kartu"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Tarik ke sini untuk menghapus"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"Anda membutuhkan setidaknya <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> kartu"</string> <string name="qs_edit" msgid="5583565172803472437">"Edit"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Tampilkan ikon notifikasi prioritas rendah"</string> <string name="other" msgid="429768510980739978">"Lainnya"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"menghapus kartu"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"menambahkan kartu ke akhir"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pindahkan kartu"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Tambahkan kartu"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Pindahkan ke <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Tambahkan ke posisi <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posisi <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor setelan cepat."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notifikasi <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Buka setelan."</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index f79796b6276d..1f8f2aa2fc27 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -861,10 +861,10 @@ <string name="right_keycode" msgid="2480715509844798438">"Lykiltákn til hægri"</string> <string name="left_icon" msgid="5036278531966897006">"Tákn til vinstri"</string> <string name="right_icon" msgid="1103955040645237425">"Tákn til hægri"</string> - <string name="drag_to_add_tiles" msgid="8933270127508303672">"Haltu inni og dragðu til að bæta við reitum"</string> + <string name="drag_to_add_tiles" msgid="8933270127508303672">"Haltu inni og dragðu til að bæta við flísum"</string> <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Haltu og dragðu til að endurraða flísum"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Dragðu hingað til að fjarlægja"</string> - <string name="drag_to_remove_disabled" msgid="933046987838658850">"Reitirnir mega ekki vera færri en <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> + <string name="drag_to_remove_disabled" msgid="933046987838658850">"Flísarnar mega ekki vera færri en <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>"</string> <string name="qs_edit" msgid="5583565172803472437">"Breyta"</string> <string name="tuner_time" msgid="2450785840990529997">"Tími"</string> <string-array name="clock_options"> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Sýna tákn fyrir tilkynningar með litlum forgangi"</string> <string name="other" msgid="429768510980739978">"Annað"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjarlægja reit"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"bæta reit við aftast"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Færa reit"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Bæta reit við"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Færa í <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Bæta við í stöðu <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Staða <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Flýtistillingaritill."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> tilkynning: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Opna stillingar."</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 3b99dc2e1f6e..eb76a4b58fcd 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostra icone di notifiche con priorità bassa"</string> <string name="other" msgid="429768510980739978">"Altro"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"rimuovere il riquadro"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"aggiungere il riquadro alla fine"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Sposta riquadro"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Aggiungi riquadro"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Sposta nella posizione <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Aggiungi alla posizione <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posizione <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor di impostazioni rapide."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notifica di <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Apri le impostazioni."</string> @@ -975,7 +968,7 @@ <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Il Risparmio energetico verrà attivato automaticamente quando la carica della batteria sarà inferiore a <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"Impostazioni"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"OK"</string> - <string name="heap_dump_tile_name" msgid="2464189856478823046">"Esegui dump heap SysUI"</string> + <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump heap SysUI"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="2969750601815230385">"L\'app <xliff:g id="APP">%1$s</xliff:g> sta usando <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"Le app stanno usando <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 3bb8ea5fe1dd..31e6befca5ff 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -889,20 +889,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"הצגת סמלי התראות בעדיפות נמוכה"</string> <string name="other" msgid="429768510980739978">"אחר"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"הסרת האריח"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"הוספת האריח לקצה"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"הזזת האריח"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"הוספת אריח"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"העברה אל <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"הוספה למיקום <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"מיקום <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"עורך הגדרות מהירות."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"התראות <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"פתיחת הגדרות."</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 2c55569bb96a..b358f3d866dc 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"優先度の低い通知アイコンを表示"</string> <string name="other" msgid="429768510980739978">"その他"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"タイルを削除"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"タイルを最後に追加"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"タイルを移動"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"タイルを追加"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> に移動"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"ポジション <xliff:g id="POSITION">%1$d</xliff:g> に追加"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"位置: <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"クイック設定エディタ"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> の通知: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"設定を開きます。"</string> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index ca5b7da19247..4e85d608a72b 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"დაბალი პრიორიტეტის მქონე შეტყობინებების ხატულების ჩვენება"</string> <string name="other" msgid="429768510980739978">"სხვა"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"მოზაიკის ფილის წაშლა"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ფილის ბოლოში დამატება"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"მოზაიკის გადატანა"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"მოზაიკის დამატება"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"გადატანა <xliff:g id="POSITION">%1$d</xliff:g>-ზე"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"დამატება პოზიციაზე <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"პოზიცია <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"სწრაფი პარამეტრების რედაქტორი."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> შეტყობინება: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"პარამეტრების გახსნა."</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index a4bf498edfff..f17210602b83 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -865,7 +865,7 @@ <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердің ретін өзгерту үшін оларды басып тұрып сүйреңіз"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Керексіздерін осы жерге сүйреңіз"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"Кемінде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> бөлшек қажет."</string> - <string name="qs_edit" msgid="5583565172803472437">"Өңдеу"</string> + <string name="qs_edit" msgid="5583565172803472437">"Өзгерту"</string> <string name="tuner_time" msgid="2450785840990529997">"Уақыт"</string> <string-array name="clock_options"> <item msgid="3986445361435142273">"Сағаттарды, минуттарды және секундтарды көрсету"</item> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Маңызды емес хабарландыру белгішелерін көрсету"</string> <string name="other" msgid="429768510980739978">"Басқа"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"бөлшекті өшіру"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"бөлшекті соңына қосу"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Бөлшекті жылжыту"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Бөлшек қосу"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> орнына жылжыту"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> орнына қосу"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g> орны"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Жылдам параметрлер өңдегіші."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> хабарландыруы: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Параметрлерді ашу."</string> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 7eaa3039947a..b126a11d1310 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"បង្ហាញរូបការជូនដំណឹងដែលមានអាទិភាពទាប"</string> <string name="other" msgid="429768510980739978">"ផ្សេងៗ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ដកប្រអប់ចេញ"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"បញ្ចូលប្រអប់ទៅខាងចុង"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ផ្លាស់ទីប្រអប់"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"បញ្ចូលប្រអប់"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ផ្លាស់ទីទៅ <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"បញ្ចូលទៅទីតាំងទី <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"ទីតាំងទី <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"កម្មវិធីកែការកំណត់រហ័ស"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> ការជូនដំណឹង៖ <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"បើកការកំណត់"</string> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 79f845290365..475677be3845 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -387,7 +387,7 @@ <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"ವೈ-ಫೈ ಸಂಪರ್ಕಗೊಂಡಿಲ್ಲ"</string> <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ಪ್ರಕಾಶಮಾನ"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"ಸ್ವಯಂ"</string> - <string name="quick_settings_inversion_label" msgid="5078769633069667698">"ಬಣ್ಣಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string> + <string name="quick_settings_inversion_label" msgid="5078769633069667698">"ಬಣ್ಣಗಳನ್ನು ಇನ್ವರ್ಟ್ ಮಾಡಿ"</string> <string name="quick_settings_color_space_label" msgid="537528291083575559">"ಬಣ್ಣ ತಿದ್ದುಪಡಿ ಮೋಡ್"</string> <string name="quick_settings_more_settings" msgid="2878235926753776694">"ಹೆಚ್ಚಿನ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ಮುಗಿದಿದೆ"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"ಕಡಿಮೆ-ಆದ್ಯತೆ ಸೂಚನೆಯ ಐಕಾನ್ಗಳನ್ನು ತೋರಿಸಿ"</string> <string name="other" msgid="429768510980739978">"ಇತರ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ಟೈಲ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ಕೊನೆಯಲ್ಲಿ ಟೈಲ್ ಸೇರಿಸಿ"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ಟೈಲ್ ಸರಿಸಿ"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ಟೈಲ್ ಸೇರಿಸಿ"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ಇಲ್ಲಿಗೆ ಸರಿಸಿ <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> ಸ್ಥಾನಕ್ಕೆ ಸೇರಿಸಿ"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"ಸ್ಥಾನ <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್ಗಳ ಎಡಿಟರ್."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> ಅಧಿಸೂಚನೆ: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ತೆರೆಯಿರಿ."</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 6a755e52f058..ac7f04e77586 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -371,7 +371,7 @@ <string name="quick_settings_time_label" msgid="3352680970557509303">"시간"</string> <string name="quick_settings_user_label" msgid="1253515509432672496">"나"</string> <string name="quick_settings_user_title" msgid="8673045967216204537">"사용자"</string> - <string name="quick_settings_user_new_user" msgid="3347905871336069666">"새 사용자"</string> + <string name="quick_settings_user_new_user" msgid="3347905871336069666">"신규 사용자"</string> <string name="quick_settings_wifi_label" msgid="2879507532983487244">"Wi-Fi"</string> <string name="quick_settings_wifi_not_connected" msgid="4071097522427039160">"연결되어 있지 않음"</string> <string name="quick_settings_wifi_no_network" msgid="6003178398713839313">"네트워크가 연결되지 않음"</string> @@ -473,7 +473,7 @@ <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"현재 사용자: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_quick_contact" msgid="4504508915324898576">"프로필 표시"</string> <string name="user_add_user" msgid="4336657383006913022">"사용자 추가"</string> - <string name="user_new_user_name" msgid="2019166282704195789">"새 사용자"</string> + <string name="user_new_user_name" msgid="2019166282704195789">"신규 사용자"</string> <string name="guest_exit_guest_dialog_title" msgid="5015697561580641422">"게스트를 삭제하시겠습니까?"</string> <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"이 세션에 있는 모든 앱과 데이터가 삭제됩니다."</string> <string name="guest_exit_guest_dialog_remove" msgid="7505817591242703757">"삭제"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"우선순위가 낮은 알림 아이콘 표시"</string> <string name="other" msgid="429768510980739978">"기타"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"타일 삭제"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"끝에 타일 추가"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"타일 이동"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"타일 추가"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> 위치로 이동"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> 위치에 추가"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g> 위치"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"빠른 설정 편집기"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> 알림: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"설정 열기"</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index a740d07f7eac..d775823b298c 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -862,7 +862,7 @@ <string name="left_icon" msgid="5036278531966897006">"¨Солго¨ сүрөтчөсү"</string> <string name="right_icon" msgid="1103955040645237425">"¨Оңго¨ сүрөтчөсү"</string> <string name="drag_to_add_tiles" msgid="8933270127508303672">"Керектүү элементтерди сүйрөп келиңиз"</string> - <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердин иретин өзгөртүү үчүн, кармап туруп, сүйрөңүз"</string> + <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Элементтердин иретин өзгөртүү үчүн кармап туруп, сүйрөңүз"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Алып салуу үчүн бул жерге сүйрөңүз"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"Сизге жок дегенде <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> мозаика керек"</string> <string name="qs_edit" msgid="5583565172803472437">"Түзөтүү"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Анча маанилүү эмес билдирменин сүрөтчөлөрүн көрсөтүү"</string> <string name="other" msgid="429768510980739978">"Башка"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"плитканы өчүрүү"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"плитканы аягына кошуу"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Плитканы жылдыруу"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Плитка кошуу"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Төмөнкүгө жылдыруу: <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g>-позицияга кошуу"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g>-позиция"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Ыкчам жөндөөлөр түзөткүчү."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> эскертмеси: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Жөндөөлөрдү ачуу."</string> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 1fb2ca0b0bd2..67642d3471f5 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"ສະແດງໄອຄອນການແຈ້ງເຕືອນຄວາມສຳຄັນຕ່ຳ"</string> <string name="other" msgid="429768510980739978">"ອື່ນໆ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ລຶບແຜ່ນອອກ"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ເພີ່ມແຜ່ນໃສ່ທ້າຍ"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ຍ້າຍແຜ່ນ"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ເພີ່ມແຜ່ນ"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ຍ້າຍໄປ <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"ເພີ່ມໃສ່ຕຳແໜ່ງ <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"ຕຳແໜ່ງ <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ຕົວແກ້ໄຂການຕັ້ງຄ່າດ່ວນ"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"ການແຈ້ງເຕືອນ <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ເປີດການຕັ້ງຄ່າ."</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index bd24722436dd..e17f6e490373 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -889,20 +889,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Rodyti mažo prioriteto pranešimų piktogramas"</string> <string name="other" msgid="429768510980739978">"Kita"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"pašalintumėte išklotinės elementą"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"pridėtumėte išklotinės elementą gale"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Perkelti išklotinės elementą"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Pridėti išklotinės elementą"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Perkelkite į <xliff:g id="POSITION">%1$d</xliff:g> poziciją"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Pridėkite <xliff:g id="POSITION">%1$d</xliff:g> pozicijoje"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g> pozicija"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Sparčiųjų nustatymų redagavimo priemonė."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"„<xliff:g id="ID_1">%1$s</xliff:g>“ pranešimas: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Atidaryti nustatymus."</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index e8d9a4d8c797..96d563c61a75 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -884,20 +884,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Rādīt zemas prioritātes paziņojumu ikonas"</string> <string name="other" msgid="429768510980739978">"Citi"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"noņemt elementu"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"pievienot elementu beigās"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Pārvietot elementu"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Pievienot elementu"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Pārvietot uz pozīciju numur <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Pievienot elementu pozīcijā numur <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Pozīcija numur <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Ātro iestatījumu redaktors."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> paziņojums: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Atvērt iestatījumus."</string> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 164cb96bf046..f53147e03c84 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Прикажувај икони за известувања со низок приоритет"</string> <string name="other" msgid="429768510980739978">"Друго"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"отстранување на плочката"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"додавање на плочката на крај"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместување на плочката"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Додавање плочка"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Преместување на <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Додавање на позиција <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Позиција <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Уредник за брзи поставки."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Известување од <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Отворете ги поставките."</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index ba379d3b7116..fc6868152dc0 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -387,7 +387,7 @@ <string name="quick_settings_cast_no_wifi" msgid="6980194769795014875">"വൈഫൈ കണക്റ്റ് ചെയ്തിട്ടില്ല"</string> <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"തെളിച്ചം"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="2325362583903258677">"യാന്ത്രികം"</string> - <string name="quick_settings_inversion_label" msgid="5078769633069667698">"നിറം മാറ്റുക"</string> + <string name="quick_settings_inversion_label" msgid="5078769633069667698">"നെഗറ്റീവ് ലുക്ക്"</string> <string name="quick_settings_color_space_label" msgid="537528291083575559">"വർണ്ണം ശരിയാക്കൽ മോഡ്"</string> <string name="quick_settings_more_settings" msgid="2878235926753776694">"കൂടുതൽ ക്രമീകരണങ്ങൾ"</string> <string name="quick_settings_done" msgid="2163641301648855793">"പൂർത്തിയാക്കി"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"പ്രാധാന്യം കുറഞ്ഞ അറിയിപ്പ് ചിഹ്നങ്ങൾ"</string> <string name="other" msgid="429768510980739978">"മറ്റുള്ളവ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ടൈൽ നീക്കം ചെയ്യുക"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ടൈൽ, അവസാന ഭാഗത്ത് ചേർക്കുക"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ടൈൽ നീക്കുക"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ടൈൽ ചേർക്കുക"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"സ്ഥാനം <xliff:g id="POSITION">%1$d</xliff:g>-ലേക്ക് നീക്കുക"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"സ്ഥാനം <xliff:g id="POSITION">%1$d</xliff:g>-ൽ ചേർക്കുക"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"സ്ഥാനം <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ദ്രുത ക്രമീകരണ എഡിറ്റർ."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> അറിയിപ്പ്: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ക്രമീകരണം തുറക്കുക."</string> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 56c5ef27baec..1c82e48c9ad9 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Бага ач холбогдолтой мэдэгдлийн дүрс тэмдгийг харуулах"</string> <string name="other" msgid="429768510980739978">"Бусад"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"хавтанг хасна уу"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"дуусгахын тулд хавтан нэмэх"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Хавтанг зөөх"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Хавтан нэмэх"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> руу зөөнө үү"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> байрлалд нэмнэ үү"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g> байрлал"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Түргэн тохиргоо засварлагч."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> мэдэгдэл: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Тохиргоог нээнэ үү."</string> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 728065fbd5cc..b26f89f63243 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"कमी प्राधान्य सूचना आयकन दर्शवा"</string> <string name="other" msgid="429768510980739978">"अन्य"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल काढून टाका"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"टाइल शेवटच्या स्थानावर जोडा"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल हलवा"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"टाइल जोडा"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> यावर हलवा"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> स्थानावर जोडा"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"स्थान <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"द्रुत सेटिंग्ज संपादक."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> सूचना: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"सेटिंग्ज उघडा."</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index 62d845c3f72a..92bc807e76cc 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Tunjukkan ikon pemberitahuan keutamaan rendah"</string> <string name="other" msgid="429768510980739978">"Lain-lain"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"alih keluar jubin"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"tambahkan jubin pada bahagian hujung"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Alihkan jubin"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Tambahkan jubin"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Alih ke <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Tambahkan pada kedudukan <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Kedudukan <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor tetapan pantas."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Pemberitahuan <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Buka tetapan."</string> @@ -975,7 +968,7 @@ <string name="auto_saver_enabled_text" msgid="7889491183116752719">"Penjimat Bateri akan dihidupkan secara automatik setelah kuasa bateri kurang daripada <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"Tetapan"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"OK"</string> - <string name="heap_dump_tile_name" msgid="2464189856478823046">"Longgok Tmbunn SysUI"</string> + <string name="heap_dump_tile_name" msgid="2464189856478823046">"DumpSys"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="2969750601815230385">"<xliff:g id="APP">%1$s</xliff:g> sedang menggunakan <xliff:g id="TYPES_LIST">%2$s</xliff:g> anda."</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"Aplikasi sedang menggunakan <xliff:g id="TYPES_LIST">%s</xliff:g> anda."</string> <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index e72f16925eab..9cc9398979de 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"အရေးမကြီးသော အကြောင်းကြားချက် သင်္ကေတများ ပြရန်"</string> <string name="other" msgid="429768510980739978">"အခြား"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"အကွက်ငယ်ကို ဖယ်ရှားရန်"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"အဆုံးတွင် အကွက်ငယ်ထည့်ရန်"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"အကွက်ငယ်ကို ရွှေ့ရန်"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"အကွက်ငယ်ကို ထည့်ရန်"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> သို့ ရွှေ့ရန်"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> အနေအထားသို့ ပေါင်းထည့်ရန်"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g> အနေအထား"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"မြန်ဆန်သည့် ဆက်တင်တည်းဖြတ်စနစ်"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> အကြောင်းကြားချက် − <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ဆက်တင်များကို ဖွင့်ပါ။"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 41aabcb89b65..92ae68943352 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Vis ikoner for varsler med lav prioritet"</string> <string name="other" msgid="429768510980739978">"Annet"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"fjerne infobrikken"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"legge til en infobrikke på slutten"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flytt infobrikken"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Legg til en infobrikke"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Flytt til <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Legg til posisjonen <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posisjon <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Redigeringsvindu for hurtiginnstillinger."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g>-varsel: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Åpne innstillingene."</string> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 0cf09d2bdd0d..1346874ed08f 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"कम प्राथमिकताका सूचना आइकनहरू देखाउनुहोस्"</string> <string name="other" msgid="429768510980739978">"अन्य"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"टाइल हटाउनुहोस्"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"टाइल अन्त्यमा हाल्नुहोस्"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"टाइल सार्नुहोस्"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"टाइल हाल्नुहोस्"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"टाइल सारेर <xliff:g id="POSITION">%1$d</xliff:g> मा लैजानुहोस्"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"टाइल यो अवस्था <xliff:g id="POSITION">%1$d</xliff:g> मा हाल्नुहोस्"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"स्थिति <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"द्रुत सेटिङ सम्पादक।"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> को सूचना: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"सेटिङहरूलाई खोल्नुहोस्।"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 49e097e5a047..139b57b7c3bf 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Pictogrammen voor meldingen met lage prioriteit weergeven"</string> <string name="other" msgid="429768510980739978">"Overig"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"tegel verwijderen"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"tegel toevoegen aan einde"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Tegel verplaatsen"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Tegel toevoegen"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Verplaatsen naar <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Toevoegen aan positie <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Positie <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor voor \'Snelle instellingen\'."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g>-melding: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Instellingen openen."</string> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index c3105ff55bc7..3973734f16d2 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -861,7 +861,7 @@ <string name="right_keycode" msgid="2480715509844798438">"ଡାହାଣ କୀ\'କୋଡ୍"</string> <string name="left_icon" msgid="5036278531966897006">"ବାମ ଆଇକନ୍"</string> <string name="right_icon" msgid="1103955040645237425">"ଡାହାଣ ଆଇକନ୍"</string> - <string name="drag_to_add_tiles" msgid="8933270127508303672">"ଟାଇଲ୍ ଯୋଡ଼ିବା ପାଇଁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> + <string name="drag_to_add_tiles" msgid="8933270127508303672">"ଟାଇଲ୍ ଯୋଗ କରିବା ପାଇଁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"ଟାଇଲ୍ ପୁଣି ସଜାଇବାକୁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"ବାହାର କରିବାକୁ ଏଠାକୁ ଡ୍ରାଗ୍ କରନ୍ତୁ"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"ଆପଣଙ୍କର ଅତିକମ୍ରେ <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g>ଟି ଟାଇଲ୍ ଆବଶ୍ୟକ"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"କମ୍-ଅଗ୍ରାଧିକାର ବିଜ୍ଞପ୍ତି ଆଇକନ୍ ଦେଖାନ୍ତୁ"</string> <string name="other" msgid="429768510980739978">"ଅନ୍ୟାନ୍ୟ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ଟାଇଲ୍ କାଢ଼ି ଦିଅନ୍ତୁ"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ଶେଷରେ ଟାଇଲ୍ ଯୋଗ କରନ୍ତୁ"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ଟାଇଲ୍ ମୁଭ୍ କରନ୍ତୁ"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ଟାଇଲ୍ ଯୋଗ କରନ୍ତୁ"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g>କୁ ମୁଭ୍ କରନ୍ତୁ"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> ଅବସ୍ଥିତିରେ ଯୋଗ କରନ୍ତୁ"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"ଅବସ୍ଥିତି <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ଦ୍ରୁତ ସେଟିଙ୍ଗ ଏଡିଟର୍।"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> ବିଜ୍ଞପ୍ତି: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ସେଟିଂସ୍ ଖୋଲନ୍ତୁ।"</string> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index b12dfb3954ee..e727f48a1a3e 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"ਘੱਟ ਤਰਜੀਹ ਵਾਲੇ ਸੂਚਨਾ ਪ੍ਰਤੀਕਾਂ ਨੂੰ ਦਿਖਾਓ"</string> <string name="other" msgid="429768510980739978">"ਹੋਰ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ਟਾਇਲ ਹਟਾਓ"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ਟਾਇਲ ਨੂੰ ਅੰਤ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰੋ"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ਟਾਇਲ ਨੂੰ ਲਿਜਾਓ"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ਟਾਇਲ ਸ਼ਾਮਲ ਕਰੋ"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> \'ਤੇ ਲਿਜਾਓ"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> ਸਥਾਨ \'ਤੇ ਸ਼ਾਮਲ ਕਰੋ"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"ਸਥਾਨ <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ ਸੰਪਾਦਕ।"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> ਸੂਚਨਾ: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ਸੈਟਿੰਗਾਂ ਖੋਲ੍ਹੋ।"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index d195977f460b..f188aaa1ca76 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -889,20 +889,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Pokazuj ikony powiadomień o niskim priorytecie"</string> <string name="other" msgid="429768510980739978">"Inne"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"usunąć kartę"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodać kartę na końcu"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Przenieś kartę"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodaj kartę"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Przenieś do pozycji <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodaj w pozycji <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Pozycja <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Edytor szybkich ustawień."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Powiadomienie z aplikacji <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Otwórz ustawienia."</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 6f96f37bc302..8c8adae62e82 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de baixa prioridade"</string> <string name="other" msgid="429768510980739978">"Outros"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o bloco"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"adicionar o bloco ao final"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover bloco"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Adicionar bloco"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover para <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Adicionar à posição <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posição <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor de configurações rápidas."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notificação do <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Abrir configurações."</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 93999f6b7b49..082e14ec6fc3 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -861,7 +861,7 @@ <string name="right_keycode" msgid="2480715509844798438">"Código de tecla direito"</string> <string name="left_icon" msgid="5036278531966897006">"Ícone esquerdo"</string> <string name="right_icon" msgid="1103955040645237425">"Ícone direito"</string> - <string name="drag_to_add_tiles" msgid="8933270127508303672">"Toque sem soltar e arraste para adicionar mosaicos."</string> + <string name="drag_to_add_tiles" msgid="8933270127508303672">"Tocar sem soltar e arrastar para adicionar mosaicos"</string> <string name="drag_to_rearrange_tiles" msgid="2143204300089638620">"Tocar sem soltar e arrastar para reorganizar os mosaicos"</string> <string name="drag_to_remove_tiles" msgid="4682194717573850385">"Arrastar para aqui para remover"</string> <string name="drag_to_remove_disabled" msgid="933046987838658850">"Necessita de, pelo menos, <xliff:g id="MIN_NUM_TILES">%1$d</xliff:g> cartões"</string> @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de prioridade baixa"</string> <string name="other" msgid="429768510980739978">"Outro"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o cartão"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"adicionar o cartão ao final"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover cartão"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Adicionar cartão"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mova para <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Adicione à posição <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posição <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor de definições rápidas."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notificação do <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Abrir as definições."</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 6f96f37bc302..8c8adae62e82 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Mostrar ícones de notificações de baixa prioridade"</string> <string name="other" msgid="429768510980739978">"Outros"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"remover o bloco"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"adicionar o bloco ao final"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mover bloco"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Adicionar bloco"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mover para <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Adicionar à posição <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posição <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor de configurações rápidas."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notificação do <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Abrir configurações."</string> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 9810cc5540cb..4128c21eaa4e 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -884,20 +884,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Afișați pictogramele de notificare cu prioritate redusă"</string> <string name="other" msgid="429768510980739978">"Altele"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"eliminați cardul"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"adăugați cardul la sfârșit"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Mutați cardul"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Adăugați un card"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Mutați pe poziția <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Adăugați pe poziția <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Poziția <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editorul pentru setări rapide."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notificare <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Deschideți setările."</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 9f43b5ac7f16..66e3ec3ba78a 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -889,20 +889,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Показывать значки уведомлений с низким приоритетом"</string> <string name="other" msgid="429768510980739978">"Другое"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"удалить кнопку быстрого доступа"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"добавить кнопку быстрого доступа в конец"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Переместить кнопку быстрого доступа"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Добавить кнопку быстрого доступа"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Переместить на позицию <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Добавить на позицию <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Позиция <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Редактор быстрых настроек."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Уведомление <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Открыть настройки."</string> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 700f5101475c..98e8d1fd9d63 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"අඩු ප්රමුඛතා දැනුම්දීම් අයිකන පෙන්වන්න"</string> <string name="other" msgid="429768510980739978">"වෙනත්"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ටයිල් ඉවත් කරන්න"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"අගට ටයිල් එක් කරන්න"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ටයිල් ගෙන යන්න"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ටයිල් එක් කරන්න"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> වෙත ගෙන යන්න"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> ස්ථානයට එක් කරන්න"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"ස්ථානය <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ඉක්මන් සැකසුම් සංස්කාරකය."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> දැනුම්දීම: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"සැකසීම් විවෘත කරන්න."</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 62df35aeee02..d9c6279ec42e 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -889,20 +889,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Zobraziť ikony upozornení s nízkou prioritou"</string> <string name="other" msgid="429768510980739978">"Ďalšie"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"odstrániť kartu"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"pridať kartu na koniec"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Presunúť kartu"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Pridať kartu"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Presunúť na <xliff:g id="POSITION">%1$d</xliff:g>. pozíciu"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Pridať na <xliff:g id="POSITION">%1$d</xliff:g>. pozíciu"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g>. pozícia"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor rýchlych nastavení"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Upozornenie <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Otvoriť nastavenia"</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 25bdd656b56c..778938c77374 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -889,20 +889,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Pokaži ikone obvestil z nizko stopnjo prednosti"</string> <string name="other" msgid="429768510980739978">"Drugo"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"odstranitev ploščice"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"dodajanje ploščice na konec"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Premik ploščice"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Dodajanje ploščice"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Premik na položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Dodajanje na položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Položaj <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Urejevalnik hitrih nastavitev."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Obvestilo za <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Odpri nastavitve."</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index e117602afa9a..90f1c5adf7be 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -884,20 +884,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Прикажи иконе обавештења ниског приоритета"</string> <string name="other" msgid="429768510980739978">"Друго"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"уклонили плочицу"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"додали плочицу на крај"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Преместите плочицу"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Додајте плочицу"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Преместите на <xliff:g id="POSITION">%1$d</xliff:g>. позицију"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Додајте на <xliff:g id="POSITION">%1$d</xliff:g>. позицију"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"<xliff:g id="POSITION">%1$d</xliff:g>. позиција"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Уређивач за Брза подешавања."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Обавештења за <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Отвори Подешавања."</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 8559b0b0de2b..8918f519b020 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Visa ikoner för aviseringar med låg prioritet"</string> <string name="other" msgid="429768510980739978">"Annat"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ta bort ruta"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"lägg till ruta i slutet"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Flytta ruta"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Lägg till ruta"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Flytta till <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Lägg till på position <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Position <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Redigerare för snabbinställningar."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g>-avisering: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Öppna inställningarna."</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 76b86eee8289..3949f2df6e40 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Onyesha aikoni za arifa zisizo muhimu"</string> <string name="other" msgid="429768510980739978">"Nyingine"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ondoa kigae"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ongeza kigae mwishoni"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Hamisha kigae"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Ongeza kigae"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Hamishia kwenye <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Ongeza kwenye nafasi ya <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Nafasi ya <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Kihariri cha Mipangilio ya haraka."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Arifa kutoka <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Fungua mipangilio."</string> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 925c958199ed..d7a27b86a99a 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"తక్కువ ప్రాధాన్యత నోటిఫికేషన్ చిహ్నాలను చూపించు"</string> <string name="other" msgid="429768510980739978">"ఇతరం"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"టైల్ను తీసివేయండి"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ముగించడానికి టైల్ను జోడించండి"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"టైల్ను తరలించండి"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"టైల్ను జోడించండి"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g>కు తరలించండి"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> స్థానానికి జోడించండి"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"స్థానం <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"శీఘ్ర సెట్టింగ్ల ఎడిటర్."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> నోటిఫికేషన్: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"సెట్టింగ్లను తెరవండి."</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index c613e9c0d7c0..cb6089fa0344 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"แสดงไอคอนการแจ้งเตือนลำดับความสำคัญต่ำ"</string> <string name="other" msgid="429768510980739978">"อื่นๆ"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"นำชิ้นส่วนออก"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"เพิ่มชิ้นส่วนต่อท้าย"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ย้ายชิ้นส่วน"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"เพิ่มชิ้นส่วน"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"ย้ายไปที่ <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"เพิ่มไปยังตำแหน่ง <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"ตำแหน่ง <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"ตัวแก้ไขการตั้งค่าด่วน"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> การแจ้งเตือน: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"เปิดการตั้งค่า"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 9411957e56f2..7e6aa629ea63 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Ipakita ang mga icon ng notification na may mababang priority"</string> <string name="other" msgid="429768510980739978">"Iba pa"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"alisin ang tile"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"idagdag ang tile sa dulo"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Ilipat ang tile"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Magdagdag ng tile"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Ilipat sa <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Idagdag sa posisyong <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Posisyon <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Editor ng Mga mabilisang setting."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Notification sa <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Buksan ang mga setting."</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 4d46f93e2d25..dac352f79d8b 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Düşük öncelikli bildirim simgelerini göster"</string> <string name="other" msgid="429768510980739978">"Diğer"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"Karoyu kaldırmak için"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"Sona karo eklemek için"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Karoyu taşı"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Karo ekle"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> konumuna taşı"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"<xliff:g id="POSITION">%1$d</xliff:g> konumuna ekle"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Konum: <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Hızlı ayar düzenleyicisi."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> bildirimi: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Ayarları aç."</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 399b53a91de6..eeedac603ab5 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -889,20 +889,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Показувати значки сповіщень із низьким пріоритетом"</string> <string name="other" msgid="429768510980739978">"Інше"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"вилучити значок"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"додати значок у кінець"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Перемістити значок"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Додати значок"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Перемістити на позицію <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Додати на позицію <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Позиція <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Редактор швидких налаштувань."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Сповіщення <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Відкрити налаштування."</string> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 09e500d227a6..4bd192fd63f0 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"کم ترجیحی اطلاع کے آئیکنز دکھائیں"</string> <string name="other" msgid="429768510980739978">"دیگر"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"ٹائل ہٹائیں"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"ختم کرنے کے لیے ٹائل شامل کریں"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"ٹائل منتقل کریں"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"ٹائل شامل کریں"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"<xliff:g id="POSITION">%1$d</xliff:g> میں منتقل کریں"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"پوزیشن <xliff:g id="POSITION">%1$d</xliff:g> میں شامل کریں"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"پوزیشن <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"فوری ترتیبات کا ایڈیٹر۔"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> اطلاع: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"ترتیبات کھولیں۔"</string> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 61b91c768582..7c3728abab78 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Muhim boʻlmagan bildirishnoma ikonkalarini koʻrsatish"</string> <string name="other" msgid="429768510980739978">"Boshqa"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"katakchani olib tashlash"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"oxiriga katakcha kiritish"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Katakchani boshqa joyga olish"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Katakcha kiritish"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Bu joyga olish: <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Bu joyga kiritish: <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Joylashuv: <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Tezkor sozlamalar muharriri"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> bildirishnomasi: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Sozlamalarni ochish."</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index dc2a5b826439..f23f7424a073 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Hiển thị biểu tượng thông báo có mức ưu tiên thấp"</string> <string name="other" msgid="429768510980739978">"Khác"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"xóa ô"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"thêm ô vào cuối"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Di chuyển ô"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Thêm ô"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Di chuyển tới <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Thêm vào vị trí <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Vị trí <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Trình chỉnh sửa cài đặt nhanh."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"Thông báo của <xliff:g id="ID_1">%1$s</xliff:g>: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Mở phần cài đặt."</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 71a7d8e7165d..9b81cb04db1a 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"显示低优先级的通知图标"</string> <string name="other" msgid="429768510980739978">"其他"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除图块"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"将图块添加到末尾"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移动图块"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"添加图块"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"移至 <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"添加到位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"快捷设置编辑器。"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g>通知:<xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"打开设置。"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 1d763d010984..facb47a3bdfc 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"顯示低優先順序通知圖示"</string> <string name="other" msgid="429768510980739978">"其他"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除圖塊"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"將圖塊加到結尾"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移圖塊"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"加圖塊"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"移去 <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"加去位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"快速設定編輯工具。"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> 通知:<xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"開啟設定。"</string> @@ -975,7 +968,7 @@ <string name="auto_saver_enabled_text" msgid="7889491183116752719">"省電模式將會在電量低於 <xliff:g id="PERCENTAGE">%d</xliff:g>%% 時自動開啟。"</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"設定"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"知道了"</string> - <string name="heap_dump_tile_name" msgid="2464189856478823046">"轉儲 SysUI 堆"</string> + <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="2969750601815230385">"「<xliff:g id="APP">%1$s</xliff:g>」正在使用<xliff:g id="TYPES_LIST">%2$s</xliff:g>。"</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"有多個應用程式正在使用<xliff:g id="TYPES_LIST">%s</xliff:g>。"</string> <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">"、 "</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 303ddd925a86..4e4db70ddd67 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"顯示低優先順序通知圖示"</string> <string name="other" msgid="429768510980739978">"其他"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"移除圖塊"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"將圖塊加到結尾處"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"移動圖塊"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"新增圖塊"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"移至 <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"新增到位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"位置 <xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"快速設定編輯器。"</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> 通知:<xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"開啟設定。"</string> @@ -975,7 +968,7 @@ <string name="auto_saver_enabled_text" msgid="7889491183116752719">"省電模式會在電量低於 <xliff:g id="PERCENTAGE">%d</xliff:g>%% 時自動開啟。"</string> <string name="open_saver_setting_action" msgid="2111461909782935190">"設定"</string> <string name="auto_saver_okay_action" msgid="7815925750741935386">"我知道了"</string> - <string name="heap_dump_tile_name" msgid="2464189856478823046">"傾印 SysUI 記憶體快照"</string> + <string name="heap_dump_tile_name" msgid="2464189856478823046">"Dump SysUI Heap"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="2969750601815230385">"「<xliff:g id="APP">%1$s</xliff:g>」正在使用<xliff:g id="TYPES_LIST">%2$s</xliff:g>。"</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"有多個應用程式正在使用<xliff:g id="TYPES_LIST">%s</xliff:g>。"</string> <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">"、 "</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index d8eb7ade9600..65e9a1c6a5e0 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -879,20 +879,13 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Bonisa izithonjana zesaziso zokubaluleka okuncane"</string> <string name="other" msgid="429768510980739978">"Okunye"</string> - <!-- no translation found for accessibility_qs_edit_remove_tile_action (775511891457193480) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_action (5051211910345301833) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_move (2009373939914517817) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_start_add (7560798153975555772) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_move_to_position (5198161544045930556) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_tile_add_to_position (9029163095148274690) --> - <skip /> - <!-- no translation found for accessibility_qs_edit_position (4509277359815711830) --> - <skip /> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"susa ithayela"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"engeza ithayela ekugcineni"</string> + <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Hambisa ithayela"</string> + <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Engeza ithayela"</string> + <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Hambisa ku-<xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_tile_add_to_position" msgid="9029163095148274690">"Engeza kusikhundla se-<xliff:g id="POSITION">%1$d</xliff:g>"</string> + <string name="accessibility_qs_edit_position" msgid="4509277359815711830">"Isikhundla se-<xliff:g id="POSITION">%1$d</xliff:g>"</string> <string name="accessibility_desc_quick_settings_edit" msgid="741658939453595297">"Isihleli sezilungiselelo ezisheshayo."</string> <string name="accessibility_desc_notification_icon" msgid="7331265967584178674">"<xliff:g id="ID_1">%1$s</xliff:g> isaziso: <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="accessibility_quick_settings_settings" msgid="7098489591715844713">"Vula izilungiselelo."</string> diff --git a/packages/SystemUI/res/values/colors_tv.xml b/packages/SystemUI/res/values/colors_tv.xml index cb49918e4e3f..1177bb5757c2 100644 --- a/packages/SystemUI/res/values/colors_tv.xml +++ b/packages/SystemUI/res/values/colors_tv.xml @@ -22,8 +22,6 @@ <color name="recents_tv_dismiss_text_color">#7FEEEEEE</color> <color name="recents_tv_text_shadow_color">#7F000000</color> - <!-- Background color for audio recording indicator (G800) --> - <color name="tv_audio_recording_indicator_background">#FF3C4043</color> <color name="tv_audio_recording_indicator_icon_background">#CC000000</color> <color name="tv_audio_recording_indicator_stroke">#33FFFFFF</color> diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index bde9a6e7c714..38a191c8fb06 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -309,7 +309,7 @@ public class AuthController extends SystemUI implements CommandQueue.Callbacks, final List<FingerprintSensorProperties> fingerprintSensorProperties = mFingerprintManager.getSensorProperties(); for (FingerprintSensorProperties props : fingerprintSensorProperties) { - if (props.sensorType == FingerprintSensorProperties.TYPE_UDFPS) { + if (props.isAnyUdfpsType()) { mUdfpsController = mUdfpsControllerFactory.get(); break; } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt index 2bc908be055c..a993d00df01e 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt @@ -16,7 +16,6 @@ package com.android.systemui.media -import android.content.Context import android.media.MediaRouter2Manager import android.media.session.MediaController import androidx.annotation.AnyThread @@ -25,7 +24,6 @@ import androidx.annotation.WorkerThread import com.android.settingslib.media.LocalMediaManager import com.android.settingslib.media.MediaDevice import com.android.systemui.Dumpable -import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dump.DumpManager @@ -34,11 +32,13 @@ import java.io.PrintWriter import java.util.concurrent.Executor import javax.inject.Inject +private const val PLAYBACK_TYPE_UNKNOWN = 0 + /** * Provides information about the route (ie. device) where playback is occurring. */ class MediaDeviceManager @Inject constructor( - private val context: Context, + private val controllerFactory: MediaControllerFactory, private val localMediaManagerFactory: LocalMediaManagerFactory, private val mr2manager: MediaRouter2Manager, @Main private val fgExecutor: Executor, @@ -72,7 +72,7 @@ class MediaDeviceManager @Inject constructor( if (entry == null || entry?.token != data.token) { entry?.stop() val controller = data.token?.let { - MediaController(context, it) + controllerFactory.create(it) } entry = Entry(key, oldKey, controller, localMediaManagerFactory.create(data.packageName)) @@ -123,11 +123,12 @@ class MediaDeviceManager @Inject constructor( val oldKey: String?, val controller: MediaController?, val localMediaManager: LocalMediaManager - ) : LocalMediaManager.DeviceCallback { + ) : LocalMediaManager.DeviceCallback, MediaController.Callback() { val token get() = controller?.sessionToken private var started = false + private var playbackType = PLAYBACK_TYPE_UNKNOWN private var current: MediaDevice? = null set(value) { if (!started || value != field) { @@ -142,6 +143,8 @@ class MediaDeviceManager @Inject constructor( fun start() = bgExecutor.execute { localMediaManager.registerCallback(this) localMediaManager.startScan() + playbackType = controller?.playbackInfo?.playbackType ?: PLAYBACK_TYPE_UNKNOWN + controller?.registerCallback(this) updateCurrent() started = true } @@ -149,22 +152,37 @@ class MediaDeviceManager @Inject constructor( @AnyThread fun stop() = bgExecutor.execute { started = false + controller?.unregisterCallback(this) localMediaManager.stopScan() localMediaManager.unregisterCallback(this) } fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) { - val route = controller?.let { + val routingSession = controller?.let { mr2manager.getRoutingSessionForMediaController(it) } + val selectedRoutes = routingSession?.let { + mr2manager.getSelectedRoutes(it) + } with(pw) { println(" current device is ${current?.name}") val type = controller?.playbackInfo?.playbackType - println(" PlaybackType=$type (1 for local, 2 for remote)") - println(" route=$route") + println(" PlaybackType=$type (1 for local, 2 for remote) cached=$playbackType") + println(" routingSession=$routingSession") + println(" selectedRoutes=$selectedRoutes") } } + @WorkerThread + override fun onAudioInfoChanged(info: MediaController.PlaybackInfo?) { + val newPlaybackType = info?.playbackType ?: PLAYBACK_TYPE_UNKNOWN + if (newPlaybackType == playbackType) { + return + } + playbackType = newPlaybackType + updateCurrent() + } + override fun onDeviceListUpdate(devices: List<MediaDevice>?) = bgExecutor.execute { updateCurrent() } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt b/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt index 6bd5274fa331..51dbfa733541 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt @@ -126,6 +126,7 @@ class MediaTimeoutListener @Inject constructor( fun destroy() { mediaController?.unregisterCallback(this) + cancellation?.run() } override fun onPlaybackStateChanged(state: PlaybackState?) { @@ -182,4 +183,4 @@ class MediaTimeoutListener @Inject constructor( cancellation = null } } -}
\ No newline at end of file +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tv/micdisclosure/AudioRecordingDisclosureBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tv/micdisclosure/AudioRecordingDisclosureBar.java index a29db4d98329..7aeca64ba9e8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tv/micdisclosure/AudioRecordingDisclosureBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tv/micdisclosure/AudioRecordingDisclosureBar.java @@ -21,7 +21,6 @@ import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.annotation.IntDef; import android.annotation.UiThread; @@ -36,7 +35,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewTreeObserver; import android.view.WindowManager; -import android.widget.TextView; import com.android.systemui.R; import com.android.systemui.statusbar.tv.TvStatusBar; @@ -83,19 +81,14 @@ public class AudioRecordingDisclosureBar implements private static final int STATE_SHOWN = 2; private static final int STATE_DISAPPEARING = 3; - private static final int ANIMATION_DURATION = 600; + private static final int ANIMATION_DURATION_MS = 200; private final Context mContext; private boolean mIsEnabled; private View mIndicatorView; - private View mIconTextsContainer; - private View mIconContainerBg; - private View mIcon; - private View mBgEnd; - private View mTextsContainers; - private TextView mTextView; - private boolean mIsLtr; + private boolean mViewAndWindowAdded; + private ObjectAnimator mAnimator; @State private int mState = STATE_STOPPED; @@ -190,7 +183,7 @@ public class AudioRecordingDisclosureBar implements } if (active) { - showIfNotShown(); + showIfNeeded(); } else { hideIndicatorIfNeeded(); } @@ -198,153 +191,132 @@ public class AudioRecordingDisclosureBar implements @UiThread private void hideIndicatorIfNeeded() { - // If not STATE_APPEARING, will check whether the indicator should be hidden when the - // indicator comes to the STATE_SHOWN. - // If STATE_DISAPPEARING or STATE_SHOWN - nothing else for us to do here. - if (mState != STATE_SHOWN) return; - - // If is in the STATE_SHOWN and there are no active recorders - hide. - if (!hasActiveRecorders()) { - hide(); + // If STOPPED, NOT_SHOWN or DISAPPEARING - nothing else for us to do here. + if (mState != STATE_SHOWN && mState != STATE_APPEARING) return; + + if (hasActiveRecorders()) { + return; + } + + if (mViewAndWindowAdded) { + mState = STATE_DISAPPEARING; + animateDisappearance(); + } else { + // Appearing animation has not started yet, as we were still waiting for the View to be + // laid out. + mState = STATE_NOT_SHOWN; + removeIndicatorView(); } } @UiThread - private void showIfNotShown() { - if (mState != STATE_NOT_SHOWN) return; + private void showIfNeeded() { + // If STOPPED, SHOWN or APPEARING - nothing else for us to do here. + if (mState != STATE_NOT_SHOWN && mState != STATE_DISAPPEARING) return; + if (DEBUG) Log.d(TAG, "Showing indicator"); - mIsLtr = mContext.getResources().getConfiguration().getLayoutDirection() - == View.LAYOUT_DIRECTION_LTR; + final int prevState = mState; + mState = STATE_APPEARING; + + if (prevState == STATE_DISAPPEARING) { + animateAppearance(); + return; + } // Inflate the indicator view mIndicatorView = LayoutInflater.from(mContext).inflate( - R.layout.tv_audio_recording_indicator, - null); - mIconTextsContainer = mIndicatorView.findViewById(R.id.icon_texts_container); - mIconContainerBg = mIconTextsContainer.findViewById(R.id.icon_container_bg); - mIcon = mIconTextsContainer.findViewById(R.id.icon_mic); - mTextsContainers = mIconTextsContainer.findViewById(R.id.texts_container); - mTextView = mTextsContainers.findViewById(R.id.text); - mBgEnd = mIndicatorView.findViewById(R.id.bg_end); - - mTextsContainers.setVisibility(View.GONE); - mIconContainerBg.setVisibility(View.GONE); - mTextView.setVisibility(View.GONE); - mBgEnd.setVisibility(View.GONE); - mTextsContainers = null; - mIconContainerBg = null; - mTextView = null; - mBgEnd = null; - - // Initially change the visibility to INVISIBLE, wait until and receives the size and - // then animate it moving from "off" the screen correctly - mIndicatorView.setVisibility(View.INVISIBLE); + R.layout.tv_audio_recording_indicator, null); + + // 1. Set alpha to 0. + // 2. Wait until the window is shown and the view is laid out. + // 3. Start a "fade in" (alpha) animation. + mIndicatorView.setAlpha(0f); mIndicatorView .getViewTreeObserver() .addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { - if (mState == STATE_STOPPED) { - return; - } + // State could have changed to NOT_SHOWN (if all the recorders are + // already gone) to STOPPED (if the indicator was disabled) + if (mState != STATE_APPEARING) return; + mViewAndWindowAdded = true; // Remove the observer mIndicatorView.getViewTreeObserver().removeOnGlobalLayoutListener( this); - // Now that the width of the indicator has been assigned, we can - // move it in from off the screen. - final int initialOffset = - (mIsLtr ? 1 : -1) * mIndicatorView.getWidth(); - final AnimatorSet set = new AnimatorSet(); - set.setDuration(ANIMATION_DURATION); - set.playTogether( - ObjectAnimator.ofFloat(mIndicatorView, - View.TRANSLATION_X, initialOffset, 0), - ObjectAnimator.ofFloat(mIndicatorView, View.ALPHA, 0f, - 1f)); - set.addListener( - new AnimatorListenerAdapter() { - @Override - public void onAnimationStart(Animator animation, - boolean isReverse) { - if (mState == STATE_STOPPED) return; - - // Indicator is INVISIBLE at the moment, change it. - mIndicatorView.setVisibility(View.VISIBLE); - } - - @Override - public void onAnimationEnd(Animator animation) { - onAppeared(); - } - }); - set.start(); + animateAppearance(); } }); + final boolean isLtr = mContext.getResources().getConfiguration().getLayoutDirection() + == View.LAYOUT_DIRECTION_LTR; final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( WRAP_CONTENT, WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); - layoutParams.gravity = Gravity.TOP | (mIsLtr ? Gravity.RIGHT : Gravity.LEFT); + layoutParams.gravity = Gravity.TOP | (isLtr ? Gravity.RIGHT : Gravity.LEFT); layoutParams.setTitle(LAYOUT_PARAMS_TITLE); layoutParams.packageName = mContext.getPackageName(); final WindowManager windowManager = (WindowManager) mContext.getSystemService( Context.WINDOW_SERVICE); windowManager.addView(mIndicatorView, layoutParams); - - mState = STATE_APPEARING; } - @UiThread - private void hide() { - if (DEBUG) Log.d(TAG, "Hide indicator"); - - final int targetOffset = (mIsLtr ? 1 : -1) * (mIndicatorView.getWidth() - - (int) mIconTextsContainer.getTranslationX()); - final AnimatorSet set = new AnimatorSet(); - set.playTogether( - ObjectAnimator.ofFloat(mIndicatorView, View.TRANSLATION_X, targetOffset), - ObjectAnimator.ofFloat(mIcon, View.ALPHA, 0f)); - set.setDuration(ANIMATION_DURATION); - set.addListener( - new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - onHidden(); - } - }); - set.start(); - mState = STATE_DISAPPEARING; + private void animateAppearance() { + animateAlphaTo(1f); } + private void animateDisappearance() { + animateAlphaTo(0f); + } - @UiThread - private void onAppeared() { - if (mState == STATE_STOPPED) return; + private void animateAlphaTo(final float endValue) { + if (mAnimator == null) { + if (DEBUG) Log.d(TAG, "set up animator"); - mState = STATE_SHOWN; + mAnimator = new ObjectAnimator(); + mAnimator.setTarget(mIndicatorView); + mAnimator.setProperty(View.ALPHA); + mAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation, boolean isReverse) { + if (DEBUG) Log.d(TAG, "onAnimationStart"); + } - hideIndicatorIfNeeded(); - } + @Override + public void onAnimationCancel(Animator animation) { + if (DEBUG) Log.d(TAG, "onAnimationCancel"); + } - @UiThread - private void onHidden() { - if (mState == STATE_STOPPED) return; + @Override + public void onAnimationEnd(Animator animation) { + if (DEBUG) Log.d(TAG, "onAnimationEnd"); + + if (mState == STATE_APPEARING) { + mState = STATE_SHOWN; + } else if (mState == STATE_DISAPPEARING) { + removeIndicatorView(); + mState = STATE_NOT_SHOWN; + } + } + }); + } else if (mAnimator.isRunning()) { + if (DEBUG) Log.d(TAG, "cancel running animation"); + mAnimator.cancel(); + } - removeIndicatorView(); - mState = STATE_NOT_SHOWN; + final float currentValue = mIndicatorView.getAlpha(); + if (DEBUG) Log.d(TAG, "animate alpha to " + endValue + " from " + currentValue); - if (hasActiveRecorders()) { - // Got new recorders, show again. - showIfNotShown(); - } + mAnimator.setDuration((int) (Math.abs(currentValue - endValue) * ANIMATION_DURATION_MS)); + mAnimator.setFloatValues(endValue); + mAnimator.start(); } private boolean hasActiveRecorders() { @@ -363,12 +335,9 @@ public class AudioRecordingDisclosureBar implements windowManager.removeView(mIndicatorView); mIndicatorView = null; - mIconTextsContainer = null; - mIconContainerBg = null; - mIcon = null; - mTextsContainers = null; - mTextView = null; - mBgEnd = null; + mAnimator = null; + + mViewAndWindowAdded = false; } private static List<String> splitByComma(String string) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java index 66656c5d251c..f6b39c2ca38b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java @@ -45,6 +45,7 @@ import android.hardware.biometrics.BiometricConstants; import android.hardware.biometrics.BiometricPrompt; import android.hardware.biometrics.IBiometricSysuiReceiver; import android.hardware.biometrics.PromptInfo; +import android.hardware.biometrics.SensorProperties; import android.hardware.face.FaceManager; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintSensorProperties; @@ -119,8 +120,11 @@ public class AuthControllerTest extends SysuiTestCase { when(mDialog2.isAllowDeviceCredentials()).thenReturn(false); when(mFingerprintManager.isHardwareDetected()).thenReturn(true); - FingerprintSensorProperties prop = new FingerprintSensorProperties( - 1, FingerprintSensorProperties.TYPE_UDFPS, true, 1); + FingerprintSensorProperties prop = new FingerprintSensorProperties(1 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 1 /* maxEnrollmentsPerUser */, + FingerprintSensorProperties.TYPE_UDFPS_OPTICAL, + true /* resetLockoutRequireHardwareAuthToken */); List<FingerprintSensorProperties> props = new ArrayList<>(); props.add(prop); when(mFingerprintManager.getSensorProperties()).thenReturn(props); diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt index fdb432cc097c..ab3b20898b23 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDeviceManagerTest.kt @@ -16,13 +16,12 @@ package com.android.systemui.media -import android.app.Notification import android.graphics.drawable.Drawable -import android.media.MediaMetadata import android.media.MediaRouter2Manager import android.media.RoutingSessionInfo +import android.media.session.MediaController +import android.media.session.MediaController.PlaybackInfo import android.media.session.MediaSession -import android.media.session.PlaybackState import android.testing.AndroidTestingRunner import android.testing.TestableLooper import androidx.test.filters.SmallTest @@ -55,7 +54,6 @@ private const val KEY = "TEST_KEY" private const val KEY_OLD = "TEST_KEY_OLD" private const val PACKAGE = "PKG" private const val SESSION_KEY = "SESSION_KEY" -private const val SESSION_ARTIST = "SESSION_ARTIST" private const val SESSION_TITLE = "SESSION_TITLE" private const val DEVICE_NAME = "DEVICE_NAME" private const val USER_ID = 0 @@ -68,6 +66,7 @@ private fun <T> eq(value: T): T = Mockito.eq(value) ?: value public class MediaDeviceManagerTest : SysuiTestCase() { private lateinit var manager: MediaDeviceManager + @Mock private lateinit var controllerFactory: MediaControllerFactory @Mock private lateinit var lmmFactory: LocalMediaManagerFactory @Mock private lateinit var lmm: LocalMediaManager @Mock private lateinit var mr2: MediaRouter2Manager @@ -78,10 +77,9 @@ public class MediaDeviceManagerTest : SysuiTestCase() { @Mock private lateinit var device: MediaDevice @Mock private lateinit var icon: Drawable @Mock private lateinit var route: RoutingSessionInfo + @Mock private lateinit var controller: MediaController + @Mock private lateinit var playbackInfo: PlaybackInfo private lateinit var session: MediaSession - private lateinit var metadataBuilder: MediaMetadata.Builder - private lateinit var playbackBuilder: PlaybackState.Builder - private lateinit var notifBuilder: Notification.Builder private lateinit var mediaData: MediaData @JvmField @Rule val mockito = MockitoJUnit.rule() @@ -89,8 +87,8 @@ public class MediaDeviceManagerTest : SysuiTestCase() { fun setUp() { fakeFgExecutor = FakeExecutor(FakeSystemClock()) fakeBgExecutor = FakeExecutor(FakeSystemClock()) - manager = MediaDeviceManager(context, lmmFactory, mr2, fakeFgExecutor, fakeBgExecutor, - dumpster) + manager = MediaDeviceManager(controllerFactory, lmmFactory, mr2, fakeFgExecutor, + fakeBgExecutor, dumpster) manager.addListener(listener) // Configure mocks. @@ -101,28 +99,13 @@ public class MediaDeviceManagerTest : SysuiTestCase() { whenever(mr2.getRoutingSessionForMediaController(any())).thenReturn(route) // Create a media sesssion and notification for testing. - metadataBuilder = MediaMetadata.Builder().apply { - putString(MediaMetadata.METADATA_KEY_ARTIST, SESSION_ARTIST) - putString(MediaMetadata.METADATA_KEY_TITLE, SESSION_TITLE) - } - playbackBuilder = PlaybackState.Builder().apply { - setState(PlaybackState.STATE_PAUSED, 6000L, 1f) - setActions(PlaybackState.ACTION_PLAY) - } - session = MediaSession(context, SESSION_KEY).apply { - setMetadata(metadataBuilder.build()) - setPlaybackState(playbackBuilder.build()) - } - session.setActive(true) - notifBuilder = Notification.Builder(context, "NONE").apply { - setContentTitle(SESSION_TITLE) - setContentText(SESSION_ARTIST) - setSmallIcon(android.R.drawable.ic_media_pause) - setStyle(Notification.MediaStyle().setMediaSession(session.getSessionToken())) - } + session = MediaSession(context, SESSION_KEY) + mediaData = MediaData(USER_ID, true, 0, PACKAGE, null, null, SESSION_TITLE, null, emptyList(), emptyList(), PACKAGE, session.sessionToken, clickIntent = null, device = null, active = true, resumeAction = null) + whenever(controllerFactory.create(session.sessionToken)) + .thenReturn(controller) } @After @@ -336,6 +319,41 @@ public class MediaDeviceManagerTest : SysuiTestCase() { assertThat(data.icon).isNull() } + @Test + fun audioInfoChanged() { + whenever(playbackInfo.getPlaybackType()).thenReturn(PlaybackInfo.PLAYBACK_TYPE_LOCAL) + whenever(controller.getPlaybackInfo()).thenReturn(playbackInfo) + // GIVEN a controller with local playback type + manager.onMediaDataLoaded(KEY, null, mediaData) + fakeBgExecutor.runAllReady() + fakeFgExecutor.runAllReady() + reset(mr2) + // WHEN onAudioInfoChanged fires with remote playback type + whenever(playbackInfo.getPlaybackType()).thenReturn(PlaybackInfo.PLAYBACK_TYPE_REMOTE) + val captor = ArgumentCaptor.forClass(MediaController.Callback::class.java) + verify(controller).registerCallback(captor.capture()) + captor.value.onAudioInfoChanged(playbackInfo) + // THEN the route is checked + verify(mr2).getRoutingSessionForMediaController(eq(controller)) + } + + @Test + fun audioInfoHasntChanged() { + whenever(playbackInfo.getPlaybackType()).thenReturn(PlaybackInfo.PLAYBACK_TYPE_REMOTE) + whenever(controller.getPlaybackInfo()).thenReturn(playbackInfo) + // GIVEN a controller with remote playback type + manager.onMediaDataLoaded(KEY, null, mediaData) + fakeBgExecutor.runAllReady() + fakeFgExecutor.runAllReady() + reset(mr2) + // WHEN onAudioInfoChanged fires with remote playback type + val captor = ArgumentCaptor.forClass(MediaController.Callback::class.java) + verify(controller).registerCallback(captor.capture()) + captor.value.onAudioInfoChanged(playbackInfo) + // THEN the route is not checked + verify(mr2, never()).getRoutingSessionForMediaController(eq(controller)) + } + fun captureCallback(): LocalMediaManager.DeviceCallback { val captor = ArgumentCaptor.forClass(LocalMediaManager.DeviceCallback::class.java) verify(lmm).registerCallback(captor.capture()) diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaTimeoutListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaTimeoutListenerTest.kt index f38524369b46..f3979592c894 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaTimeoutListenerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaTimeoutListenerTest.kt @@ -23,8 +23,9 @@ import android.media.session.PlaybackState import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase -import com.android.systemui.util.concurrency.DelayableExecutor +import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.mockito.capture +import com.android.systemui.util.time.FakeSystemClock import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Rule @@ -33,7 +34,6 @@ import org.junit.runner.RunWith import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.any import org.mockito.ArgumentMatchers.anyBoolean -import org.mockito.ArgumentMatchers.anyLong import org.mockito.ArgumentMatchers.anyString import org.mockito.Captor import org.mockito.Mock @@ -63,10 +63,8 @@ class MediaTimeoutListenerTest : SysuiTestCase() { @Mock private lateinit var mediaControllerFactory: MediaControllerFactory @Mock private lateinit var mediaController: MediaController - @Mock private lateinit var executor: DelayableExecutor + private lateinit var executor: FakeExecutor @Mock private lateinit var timeoutCallback: (String, Boolean) -> Unit - @Mock private lateinit var cancellationRunnable: Runnable - @Captor private lateinit var timeoutCaptor: ArgumentCaptor<Runnable> @Captor private lateinit var mediaCallbackCaptor: ArgumentCaptor<MediaController.Callback> @JvmField @Rule val mockito = MockitoJUnit.rule() private lateinit var metadataBuilder: MediaMetadata.Builder @@ -78,7 +76,7 @@ class MediaTimeoutListenerTest : SysuiTestCase() { @Before fun setup() { `when`(mediaControllerFactory.create(any())).thenReturn(mediaController) - `when`(executor.executeDelayed(any(), anyLong())).thenReturn(cancellationRunnable) + executor = FakeExecutor(FakeSystemClock()) mediaTimeoutListener = MediaTimeoutListener(mediaControllerFactory, executor) mediaTimeoutListener.timeoutCallback = timeoutCallback @@ -120,7 +118,7 @@ class MediaTimeoutListenerTest : SysuiTestCase() { fun testOnMediaDataLoaded_registersTimeout_whenPaused() { mediaTimeoutListener.onMediaDataLoaded(KEY, null, mediaData) verify(mediaController).registerCallback(capture(mediaCallbackCaptor)) - verify(executor).executeDelayed(capture(timeoutCaptor), anyLong()) + assertThat(executor.numPending()).isEqualTo(1) verify(timeoutCallback, never()).invoke(anyString(), anyBoolean()) } @@ -137,6 +135,17 @@ class MediaTimeoutListenerTest : SysuiTestCase() { } @Test + fun testOnMediaDataRemoved_clearsTimeout() { + // GIVEN media that is paused + mediaTimeoutListener.onMediaDataLoaded(KEY, null, mediaData) + assertThat(executor.numPending()).isEqualTo(1) + // WHEN the media is removed + mediaTimeoutListener.onMediaDataRemoved(KEY) + // THEN the timeout runnable is cancelled + assertThat(executor.numPending()).isEqualTo(0) + } + + @Test fun testOnMediaDataLoaded_migratesKeys() { // From not playing mediaTimeoutListener.onMediaDataLoaded(KEY, null, mediaData) @@ -151,7 +160,7 @@ class MediaTimeoutListenerTest : SysuiTestCase() { verify(mediaController).registerCallback(anyObject()) // Enqueues callback - verify(executor).execute(anyObject()) + assertThat(executor.numPending()).isEqualTo(1) } @Test @@ -166,8 +175,9 @@ class MediaTimeoutListenerTest : SysuiTestCase() { `when`(mediaController.playbackState).thenReturn(playingState) mediaTimeoutListener.onMediaDataLoaded("NEWKEY", KEY, mediaData) - // Never cancels callback, or schedule another one - verify(cancellationRunnable, never()).run() + // The number of queued timeout tasks remains the same. The timeout task isn't cancelled nor + // is another scheduled + assertThat(executor.numPending()).isEqualTo(1) } @Test @@ -177,7 +187,7 @@ class MediaTimeoutListenerTest : SysuiTestCase() { mediaCallbackCaptor.value.onPlaybackStateChanged(PlaybackState.Builder() .setState(PlaybackState.STATE_PAUSED, 0L, 0f).build()) - verify(executor).executeDelayed(capture(timeoutCaptor), anyLong()) + assertThat(executor.numPending()).isEqualTo(1) } @Test @@ -187,7 +197,7 @@ class MediaTimeoutListenerTest : SysuiTestCase() { mediaCallbackCaptor.value.onPlaybackStateChanged(PlaybackState.Builder() .setState(PlaybackState.STATE_PLAYING, 0L, 0f).build()) - verify(cancellationRunnable).run() + assertThat(executor.numPending()).isEqualTo(0) } @Test @@ -195,10 +205,9 @@ class MediaTimeoutListenerTest : SysuiTestCase() { // Assuming we have a pending timeout testOnPlaybackStateChanged_schedulesTimeout_whenPaused() - clearInvocations(cancellationRunnable) mediaCallbackCaptor.value.onPlaybackStateChanged(PlaybackState.Builder() .setState(PlaybackState.STATE_STOPPED, 0L, 0f).build()) - verify(cancellationRunnable, never()).run() + assertThat(executor.numPending()).isEqualTo(1) } @Test @@ -206,7 +215,10 @@ class MediaTimeoutListenerTest : SysuiTestCase() { // Assuming we're have a pending timeout testOnPlaybackStateChanged_schedulesTimeout_whenPaused() - timeoutCaptor.value.run() + with(executor) { + advanceClockToNext() + runAllReady() + } verify(timeoutCallback).invoke(eq(KEY), eq(true)) } diff --git a/packages/Tethering/tests/integration/Android.bp b/packages/Tethering/tests/integration/Android.bp index ed69b7d63cb4..02bab9ba353e 100644 --- a/packages/Tethering/tests/integration/Android.bp +++ b/packages/Tethering/tests/integration/Android.bp @@ -22,7 +22,6 @@ java_defaults { static_libs: [ "NetworkStackApiStableLib", "androidx.test.rules", - "frameworks-base-testutils", "mockito-target-extended-minus-junit4", "net-tests-utils", "testables", diff --git a/packages/Tethering/tests/unit/jarjar-rules.txt b/packages/Tethering/tests/unit/jarjar-rules.txt index ec2d2b02004e..7ed89632a861 100644 --- a/packages/Tethering/tests/unit/jarjar-rules.txt +++ b/packages/Tethering/tests/unit/jarjar-rules.txt @@ -9,3 +9,8 @@ rule com.android.internal.util.StateMachine* com.android.networkstack.tethering. rule com.android.internal.util.TrafficStatsConstants* com.android.networkstack.tethering.util.TrafficStatsConstants@1 rule android.util.LocalLog* com.android.networkstack.tethering.util.LocalLog@1 + +# TODO: either stop using frameworks-base-testutils or remove the unit test classes it contains. +# TestableLooper from "testables" can be used instead of TestLooper from frameworks-base-testutils. +zap android.os.test.TestLooperTest* +zap com.android.test.filters.SelectTestTests*
\ No newline at end of file diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index bd7d3de9d200..ef75264b4c00 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -11233,10 +11233,10 @@ public class ActivityManagerService extends IActivityManager.Stub } long kernelUsed = memInfo.getKernelUsedSizeKb(); final long ionHeap = Debug.getIonHeapsSizeKb(); - if (ionHeap > 0) { + final long ionPool = Debug.getIonPoolsSizeKb(); + if (ionHeap >= 0 && ionPool >= 0) { final long ionMapped = Debug.getIonMappedSizeKb(); final long ionUnmapped = ionHeap - ionMapped; - final long ionPool = Debug.getIonPoolsSizeKb(); pw.print(" ION: "); pw.print(stringifyKBSize(ionHeap + ionPool)); pw.print(" ("); @@ -12033,10 +12033,10 @@ public class ActivityManagerService extends IActivityManager.Stub memInfoBuilder.append("\n"); long kernelUsed = memInfo.getKernelUsedSizeKb(); final long ionHeap = Debug.getIonHeapsSizeKb(); - if (ionHeap > 0) { + final long ionPool = Debug.getIonPoolsSizeKb(); + if (ionHeap >= 0 && ionPool >= 0) { final long ionMapped = Debug.getIonMappedSizeKb(); final long ionUnmapped = ionHeap - ionMapped; - final long ionPool = Debug.getIonPoolsSizeKb(); memInfoBuilder.append(" ION: "); memInfoBuilder.append(stringifyKBSize(ionHeap + ionPool)); memInfoBuilder.append("\n"); diff --git a/services/core/java/com/android/server/biometrics/SensorConfig.java b/services/core/java/com/android/server/biometrics/SensorConfig.java index 7743f1c91307..a83f67a5e29c 100644 --- a/services/core/java/com/android/server/biometrics/SensorConfig.java +++ b/services/core/java/com/android/server/biometrics/SensorConfig.java @@ -16,13 +16,15 @@ package com.android.server.biometrics; +import android.hardware.biometrics.BiometricManager; + /** * Parsed sensor config. See core/res/res/values/config.xml config_biometric_sensors */ public class SensorConfig { public final int id; final int modality; - final int strength; + @BiometricManager.Authenticators.Types public final int strength; public SensorConfig(String config) { String[] elems = config.split(":"); diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java index 88fd44456ff6..c300169d0b39 100644 --- a/services/core/java/com/android/server/biometrics/Utils.java +++ b/services/core/java/com/android/server/biometrics/Utils.java @@ -48,6 +48,7 @@ import android.hardware.biometrics.BiometricPrompt; import android.hardware.biometrics.BiometricPrompt.AuthenticationResultType; import android.hardware.biometrics.IBiometricService; import android.hardware.biometrics.PromptInfo; +import android.hardware.biometrics.SensorProperties; import android.os.Binder; import android.os.Build; import android.os.RemoteException; @@ -444,4 +445,22 @@ public class Utils { } return false; } + + /** + * Converts from {@link BiometricManager.Authenticators} biometric strength to the internal + * {@link SensorProperties} strength. + */ + public static @SensorProperties.Strength int authenticatorStrengthToPropertyStrength( + @BiometricManager.Authenticators.Types int strength) { + switch (strength) { + case BiometricManager.Authenticators.BIOMETRIC_CONVENIENCE: + return SensorProperties.STRENGTH_CONVENIENCE; + case BiometricManager.Authenticators.BIOMETRIC_WEAK: + return SensorProperties.STRENGTH_WEAK; + case BiometricManager.Authenticators.BIOMETRIC_STRONG: + return SensorProperties.STRENGTH_STRONG; + default: + throw new IllegalArgumentException("Unknown strength: " + strength); + } + } } diff --git a/services/core/java/com/android/server/biometrics/sensors/face/Face10.java b/services/core/java/com/android/server/biometrics/sensors/face/Face10.java index 1613d3bb4e8a..6e6ec747e24e 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/Face10.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/Face10.java @@ -26,6 +26,7 @@ import android.content.Context; import android.content.pm.UserInfo; import android.hardware.biometrics.BiometricConstants; import android.hardware.biometrics.BiometricFaceConstants; +import android.hardware.biometrics.BiometricManager; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.face.V1_0.IBiometricsFace; import android.hardware.biometrics.face.V1_0.IBiometricsFaceClientCallback; @@ -279,6 +280,7 @@ class Face10 implements IHwBinder.DeathRecipient { }; Face10(@NonNull Context context, int sensorId, + @BiometricManager.Authenticators.Types int strength, @NonNull LockoutResetDispatcher lockoutResetDispatcher) { final boolean supportsSelfIllumination = context.getResources() .getBoolean(R.bool.config_faceAuthSupportsSelfIllumination); diff --git a/services/core/java/com/android/server/biometrics/sensors/face/FaceAuthenticator.java b/services/core/java/com/android/server/biometrics/sensors/face/FaceAuthenticator.java index bbee6cde4603..3318bcb8d593 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/FaceAuthenticator.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/FaceAuthenticator.java @@ -34,7 +34,7 @@ public final class FaceAuthenticator extends IBiometricAuthenticator.Stub { public FaceAuthenticator(IFaceService faceService, SensorConfig config) throws RemoteException { mFaceService = faceService; - mFaceService.initializeConfiguration(config.id); + mFaceService.initializeConfiguration(config.id, config.strength); } @Override diff --git a/services/core/java/com/android/server/biometrics/sensors/face/FaceService.java b/services/core/java/com/android/server/biometrics/sensors/face/FaceService.java index c6664f4d96ff..82dc0d04d8a7 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/FaceService.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/FaceService.java @@ -21,6 +21,7 @@ import static android.Manifest.permission.USE_BIOMETRIC_INTERNAL; import android.annotation.NonNull; import android.content.Context; +import android.hardware.biometrics.BiometricManager; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.IBiometricSensorReceiver; import android.hardware.biometrics.IBiometricServiceLockoutResetCallback; @@ -308,9 +309,10 @@ public class FaceService extends SystemService { } @Override // Binder call - public void initializeConfiguration(int sensorId) { + public void initializeConfiguration(int sensorId, + @BiometricManager.Authenticators.Types int strength) { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); - mFace10 = new Face10(getContext(), sensorId, mLockoutResetDispatcher); + mFace10 = new Face10(getContext(), sensorId, strength, mLockoutResetDispatcher); } } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21.java index 7e62329a168a..507b5dd3f224 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21.java @@ -27,6 +27,7 @@ import android.app.UserSwitchObserver; import android.content.Context; import android.content.pm.UserInfo; import android.hardware.biometrics.BiometricConstants; +import android.hardware.biometrics.BiometricManager; import android.hardware.biometrics.BiometricsProtoEnums; import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint; import android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprintClientCallback; @@ -296,6 +297,7 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { Fingerprint21(@NonNull Context context, @NonNull BiometricScheduler scheduler, @NonNull Handler handler, int sensorId, + @BiometricManager.Authenticators.Types int strength, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull HalResultController controller) { mContext = context; @@ -335,25 +337,27 @@ class Fingerprint21 implements IHwBinder.DeathRecipient { } final @FingerprintSensorProperties.SensorType int sensorType = - isUdfps ? FingerprintSensorProperties.TYPE_UDFPS + isUdfps ? FingerprintSensorProperties.TYPE_UDFPS_OPTICAL : FingerprintSensorProperties.TYPE_REAR; // resetLockout is controlled by the framework, so hardwareAuthToken is not required final boolean resetLockoutRequiresHardwareAuthToken = false; - final int maxTemplatesAllowed = mContext.getResources() + final int maxEnrollmentsPerUser = mContext.getResources() .getInteger(R.integer.config_fingerprintMaxTemplatesPerUser); - mSensorProperties = new FingerprintSensorProperties(sensorId, sensorType, - resetLockoutRequiresHardwareAuthToken, maxTemplatesAllowed); + + mSensorProperties = new FingerprintSensorProperties(sensorId, + Utils.authenticatorStrengthToPropertyStrength(strength), maxEnrollmentsPerUser, + sensorType, resetLockoutRequiresHardwareAuthToken); } - static Fingerprint21 newInstance(@NonNull Context context, int sensorId, + static Fingerprint21 newInstance(@NonNull Context context, int sensorId, int strength, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher) { final Handler handler = new Handler(Looper.getMainLooper()); final BiometricScheduler scheduler = new BiometricScheduler(TAG, gestureAvailabilityDispatcher); final HalResultController controller = new HalResultController(context, handler, scheduler); - return new Fingerprint21(context, scheduler, handler, sensorId, lockoutResetDispatcher, - controller); + return new Fingerprint21(context, scheduler, handler, sensorId, strength, + lockoutResetDispatcher, controller); } @Override diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21UdfpsMock.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21UdfpsMock.java index 7cab2b889eaa..044dbe9664ed 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21UdfpsMock.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Fingerprint21UdfpsMock.java @@ -21,6 +21,7 @@ import android.annotation.Nullable; import android.app.trust.TrustManager; import android.content.ContentResolver; import android.content.Context; +import android.hardware.biometrics.BiometricManager; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback; import android.hardware.fingerprint.FingerprintManager.AuthenticationResult; @@ -36,6 +37,7 @@ import android.util.Slog; import android.util.SparseBooleanArray; import com.android.internal.R; +import com.android.server.biometrics.Utils; import com.android.server.biometrics.sensors.AuthenticationConsumer; import com.android.server.biometrics.sensors.BiometricScheduler; import com.android.server.biometrics.sensors.ClientMonitor; @@ -266,6 +268,7 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage } static Fingerprint21UdfpsMock newInstance(@NonNull Context context, int sensorId, + @BiometricManager.Authenticators.Types int strength, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull GestureAvailabilityDispatcher gestureAvailabilityDispatcher) { Slog.d(TAG, "Creating Fingerprint23Mock!"); @@ -275,7 +278,7 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage new TestableBiometricScheduler(TAG, gestureAvailabilityDispatcher); final MockHalResultController controller = new MockHalResultController(context, handler, scheduler); - return new Fingerprint21UdfpsMock(context, scheduler, handler, sensorId, + return new Fingerprint21UdfpsMock(context, scheduler, handler, sensorId, strength, lockoutResetDispatcher, controller); } @@ -401,9 +404,10 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage private Fingerprint21UdfpsMock(@NonNull Context context, @NonNull TestableBiometricScheduler scheduler, @NonNull Handler handler, int sensorId, + @BiometricManager.Authenticators.Types int strength, @NonNull LockoutResetDispatcher lockoutResetDispatcher, @NonNull MockHalResultController controller) { - super(context, scheduler, handler, sensorId, lockoutResetDispatcher, controller); + super(context, scheduler, handler, sensorId, strength, lockoutResetDispatcher, controller); mScheduler = scheduler; mScheduler.init(this); mHandler = handler; @@ -412,8 +416,9 @@ public class Fingerprint21UdfpsMock extends Fingerprint21 implements TrustManage final int maxTemplatesAllowed = mContext.getResources() .getInteger(R.integer.config_fingerprintMaxTemplatesPerUser); mSensorProperties = new FingerprintSensorProperties(sensorId, - FingerprintSensorProperties.TYPE_UDFPS, resetLockoutRequiresHardwareAuthToken, - maxTemplatesAllowed); + Utils.authenticatorStrengthToPropertyStrength(strength), maxTemplatesAllowed, + FingerprintSensorProperties.TYPE_UDFPS_OPTICAL, + resetLockoutRequiresHardwareAuthToken); mMockHalResultController = controller; mUserHasTrust = new SparseBooleanArray(); mTrustManager = context.getSystemService(TrustManager.class); diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintAuthenticator.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintAuthenticator.java index 21a46d58a3b3..5219df4a841d 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintAuthenticator.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintAuthenticator.java @@ -34,7 +34,7 @@ public final class FingerprintAuthenticator extends IBiometricAuthenticator.Stub public FingerprintAuthenticator(IFingerprintService fingerprintService, SensorConfig config) throws RemoteException { mFingerprintService = fingerprintService; - mFingerprintService.initializeConfiguration(config.id); + mFingerprintService.initializeConfiguration(config.id, config.strength); } @Override 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 7c7da118df10..2f0e56447e20 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 @@ -384,7 +384,7 @@ public class FingerprintService extends SystemService { } @Override // Binder call - public void initializeConfiguration(int sensorId) { + public void initializeConfiguration(int sensorId, int strength) { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); if ((Build.IS_USERDEBUG || Build.IS_ENG) @@ -393,9 +393,9 @@ public class FingerprintService extends SystemService { Fingerprint21UdfpsMock.CONFIG_ENABLE_TEST_UDFPS, 0 /* default */, UserHandle.USER_CURRENT) != 0) { mFingerprint21 = Fingerprint21UdfpsMock.newInstance(getContext(), sensorId, - mLockoutResetDispatcher, mGestureAvailabilityDispatcher); + strength, mLockoutResetDispatcher, mGestureAvailabilityDispatcher); } else { - mFingerprint21 = Fingerprint21.newInstance(getContext(), sensorId, + mFingerprint21 = Fingerprint21.newInstance(getContext(), sensorId, strength, mLockoutResetDispatcher, mGestureAvailabilityDispatcher); } } diff --git a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java index 1f0066a43538..01fa9e755bd6 100644 --- a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java +++ b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java @@ -367,6 +367,13 @@ public class KeepaliveTracker { Log.e(TAG, "Cannot stop unowned keepalive " + mSlot + " on " + mNai.network); } } + // Ignore the case when the network disconnects immediately after stop() has been + // called and the keepalive code is waiting for the response from the modem. This + // might happen when the caller listens for a lower-layer network disconnect + // callback and stop the keepalive at that time. But the stop() races with the + // stop() generated in ConnectivityService network disconnection code path. + if (mStartedState == STOPPING && reason == ERROR_INVALID_NETWORK) return; + // Store the reason of stopping, and report it after the keepalive is fully stopped. if (mStopReason != ERROR_STOP_REASON_UNINITIALIZED) { throw new IllegalStateException("Unexpected stop reason: " + mStopReason); @@ -380,9 +387,6 @@ public class KeepaliveTracker { // e.g. invalid parameter. cleanupStoppedKeepalive(mNai, mSlot); break; - case STOPPING: - // Keepalive is already in stopping state, ignore. - return; default: mStartedState = STOPPING; switch (mType) { diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index 6c14b2cbed09..7c98c6c7947b 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -219,10 +219,10 @@ public class InputManagerService extends IInputManager.Stub int deviceId, int sourceMask, int sw); private static native boolean nativeHasKeys(long ptr, int deviceId, int sourceMask, int[] keyCodes, boolean[] keyExists); - private static native void nativeRegisterInputChannel(long ptr, InputChannel inputChannel); - private static native void nativeRegisterInputMonitor(long ptr, InputChannel inputChannel, - int displayId, boolean isGestureMonitor); - private static native void nativeUnregisterInputChannel(long ptr, IBinder connectionToken); + private static native InputChannel nativeCreateInputChannel(long ptr, String name); + private static native InputChannel nativeCreateInputMonitor(long ptr, int displayId, + boolean isGestureMonitor, String name); + private static native void nativeRemoveInputChannel(long ptr, IBinder connectionToken); private static native void nativePilferPointers(long ptr, IBinder token); private static native void nativeSetInputFilterEnabled(long ptr, boolean enable); private static native void nativeSetInTouchMode(long ptr, boolean inTouchMode); @@ -522,10 +522,8 @@ public class InputManagerService extends IInputManager.Stub throw new IllegalArgumentException("displayId must >= 0."); } - InputChannel[] inputChannels = InputChannel.openInputChannelPair(inputChannelName); - nativeRegisterInputMonitor(mPtr, inputChannels[0], displayId, false /*isGestureMonitor*/); - inputChannels[0].dispose(); // don't need to retain the Java object reference - return inputChannels[1]; + return nativeCreateInputMonitor(mPtr, displayId, false /* isGestureMonitor */, + inputChannelName); } /** @@ -552,38 +550,32 @@ public class InputManagerService extends IInputManager.Stub final long ident = Binder.clearCallingIdentity(); try { - InputChannel[] inputChannels = InputChannel.openInputChannelPair(inputChannelName); - InputMonitorHost host = new InputMonitorHost(inputChannels[0]); - nativeRegisterInputMonitor( - mPtr, inputChannels[0], displayId, true /*isGestureMonitor*/); + InputChannel inputChannel = nativeCreateInputMonitor( + mPtr, displayId, true /*isGestureMonitor*/, inputChannelName); + InputMonitorHost host = new InputMonitorHost(inputChannel.getToken()); synchronized (mGestureMonitorPidsLock) { - mGestureMonitorPidsByToken.put(inputChannels[1].getToken(), pid); + mGestureMonitorPidsByToken.put(inputChannel.getToken(), pid); } - return new InputMonitor(inputChannels[1], host); + return new InputMonitor(inputChannel, host); } finally { Binder.restoreCallingIdentity(ident); } } /** - * Registers an input channel so that it can be used as an input event target. The channel is - * registered with a generated token. + * Creates an input channel to be used as an input event target. * - * @param inputChannel The input channel to register. + * @param name The name of this input channel */ - public void registerInputChannel(InputChannel inputChannel) { - if (inputChannel == null) { - throw new IllegalArgumentException("inputChannel must not be null."); - } - - nativeRegisterInputChannel(mPtr, inputChannel); + public InputChannel createInputChannel(String name) { + return nativeCreateInputChannel(mPtr, name); } /** - * Unregisters an input channel. + * Removes an input channel. * @param connectionToken The input channel to unregister. */ - public void unregisterInputChannel(IBinder connectionToken) { + public void removeInputChannel(IBinder connectionToken) { if (connectionToken == null) { throw new IllegalArgumentException("connectionToken must not be null."); } @@ -591,7 +583,7 @@ public class InputManagerService extends IInputManager.Stub mGestureMonitorPidsByToken.remove(connectionToken); } - nativeUnregisterInputChannel(mPtr, connectionToken); + nativeRemoveInputChannel(mPtr, connectionToken); } /** @@ -2442,21 +2434,20 @@ public class InputManagerService extends IInputManager.Stub * Interface for the system to handle request from InputMonitors. */ private final class InputMonitorHost extends IInputMonitorHost.Stub { - private final InputChannel mInputChannel; + private final IBinder mToken; - InputMonitorHost(InputChannel channel) { - mInputChannel = channel; + InputMonitorHost(IBinder token) { + mToken = token; } @Override public void pilferPointers() { - nativePilferPointers(mPtr, mInputChannel.getToken()); + nativePilferPointers(mPtr, mToken); } @Override public void dispose() { - nativeUnregisterInputChannel(mPtr, mInputChannel.getToken()); - mInputChannel.dispose(); + nativeRemoveInputChannel(mPtr, mToken); } } diff --git a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java index b9997e0c2ec8..0a4d17f20aec 100644 --- a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java +++ b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java @@ -259,7 +259,7 @@ final class MediaButtonReceiverHolder { return ""; } return String.join(COMPONENT_NAME_USER_ID_DELIM, - mComponentName.toString(), + mComponentName.flattenToString(), String.valueOf(mUserId), String.valueOf(mComponentType)); } diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index 2a189c0ebb0c..60737bf77c48 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -169,6 +169,7 @@ import java.util.Objects; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Predicate; public class PackageInstallerSession extends IPackageInstallerSession.Stub { private static final String TAG = "PackageInstallerSession"; @@ -689,7 +690,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { stagedSessionErrorMessage != null ? stagedSessionErrorMessage : ""; if (isDataLoaderInstallation()) { - if (isApexInstallation()) { + if (isApexSession()) { throw new IllegalArgumentException( "DataLoader installation of APEX modules is not allowed."); } @@ -1576,7 +1577,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return false; } - if (isApexInstallation()) { + if (isApexSession()) { validateApexInstallLocked(); } else { validateApkInstallLocked(); @@ -1733,7 +1734,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { try { sealLocked(); - if (isApexInstallation()) { + if (isApexSession()) { // APEX installations rely on certain fields to be populated after reboot. // E.g. mPackageName. validateApexInstallLocked(); @@ -1809,7 +1810,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return; } - if (isApexInstallation()) { + if (isApexSession()) { destroyInternal(); dispatchSessionFinished(PackageManager.INSTALL_FAILED_INTERNAL_ERROR, "APEX packages can only be installed using staged sessions.", null); @@ -1986,7 +1987,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { // TODO(b/136257624): Some logic in this if block probably belongs in // makeInstallParams(). - if (!params.isMultiPackage && !isApexInstallation()) { + if (!params.isMultiPackage && !isApexSession()) { Objects.requireNonNull(mPackageName); Objects.requireNonNull(mSigningDetails); Objects.requireNonNull(mResolvedBaseFile); @@ -2215,10 +2216,34 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { /** * Returns true if the session is installing an APEX package. */ - private boolean isApexInstallation() { + boolean isApexSession() { return (params.installFlags & PackageManager.INSTALL_APEX) != 0; } + private boolean sessionContains(Predicate<PackageInstallerSession> filter) { + if (!isMultiPackage()) { + return filter.test(this); + } + final List<PackageInstallerSession> childSessions; + synchronized (mLock) { + childSessions = getChildSessionsLocked(); + } + for (PackageInstallerSession child: childSessions) { + if (filter.test(child)) { + return true; + } + } + return false; + } + + boolean containsApexSession() { + return sessionContains((s) -> s.isApexSession()); + } + + boolean containsApkSession() { + return sessionContains((s) -> !s.isApexSession()); + } + /** * Validate apex install. * <p> diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index f94de227f3e9..b451eaf198f8 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -282,6 +282,7 @@ import android.os.storage.StorageManagerInternal; import android.os.storage.VolumeInfo; import android.os.storage.VolumeRecord; import android.permission.IPermissionManager; +import android.provider.ContactsContract; import android.provider.DeviceConfig; import android.provider.Settings.Global; import android.provider.Settings.Secure; @@ -349,6 +350,7 @@ import com.android.server.ServiceThread; import com.android.server.SystemConfig; import com.android.server.SystemServerInitThreadPool; import com.android.server.Watchdog; +import com.android.server.compat.CompatChange; import com.android.server.compat.PlatformCompat; import com.android.server.net.NetworkPolicyManagerInternal; import com.android.server.pm.Installer.InstallerException; @@ -2126,11 +2128,21 @@ public class PackageManagerService extends IPackageManager.Stub final boolean update = res.removedInfo != null && res.removedInfo.removedPackage != null; final String packageName = res.name; final PackageSetting pkgSetting = succeeded ? getPackageSetting(packageName) : null; - if (succeeded && pkgSetting == null) { + final boolean removedBeforeUpdate = (pkgSetting == null) + || (pkgSetting.isSystem() && !pkgSetting.getPathString().equals(res.pkg.getPath())); + if (succeeded && removedBeforeUpdate) { Slog.e(TAG, packageName + " was removed before handlePackagePostInstall " + "could be executed"); res.returnCode = INSTALL_FAILED_PACKAGE_CHANGED; res.returnMsg = "Package was removed before install could complete."; + + // Remove the update failed package's older resources safely now + InstallArgs args = res.removedInfo != null ? res.removedInfo.args : null; + if (args != null) { + synchronized (mInstallLock) { + args.doPostDeleteLI(true); + } + } notifyInstallObserver(res, installObserver); return; } @@ -2703,39 +2715,43 @@ public class PackageManagerService extends IPackageManager.Stub PackageManagerService m = new PackageManagerService(injector, onlyCore, factoryTest); t.traceEnd(); // "create package manager" - injector.getCompatibility().registerListener(SELinuxMMAC.SELINUX_LATEST_CHANGES, - packageName -> { - synchronized (m.mInstallLock) { - final AndroidPackage pkg; - final PackageSetting ps; - final SharedUserSetting sharedUser; - final String oldSeInfo; - synchronized (m.mLock) { - ps = m.mSettings.getPackageLPr(packageName); - if (ps == null) { - Slog.e(TAG, "Failed to find package setting " + packageName); - return; - } - pkg = ps.pkg; - sharedUser = ps.getSharedUser(); - oldSeInfo = AndroidPackageUtils.getSeInfo(pkg, ps); - } - - if (pkg == null) { - Slog.e(TAG, "Failed to find package " + packageName); - return; - } - final String newSeInfo = SELinuxMMAC.getSeInfo(pkg, sharedUser, - m.mInjector.getCompatibility()); - - if (!newSeInfo.equals(oldSeInfo)) { - Slog.i(TAG, "Updating seInfo for package " + packageName + " from: " - + oldSeInfo + " to: " + newSeInfo); - ps.getPkgState().setOverrideSeInfo(newSeInfo); - m.prepareAppDataAfterInstallLIF(pkg); - } + final CompatChange.ChangeListener selinuxChangeListener = packageName -> { + synchronized (m.mInstallLock) { + final AndroidPackage pkg; + final PackageSetting ps; + final SharedUserSetting sharedUser; + final String oldSeInfo; + synchronized (m.mLock) { + ps = m.mSettings.getPackageLPr(packageName); + if (ps == null) { + Slog.e(TAG, "Failed to find package setting " + packageName); + return; } - }); + pkg = ps.pkg; + sharedUser = ps.getSharedUser(); + oldSeInfo = AndroidPackageUtils.getSeInfo(pkg, ps); + } + + if (pkg == null) { + Slog.e(TAG, "Failed to find package " + packageName); + return; + } + final String newSeInfo = SELinuxMMAC.getSeInfo(pkg, sharedUser, + m.mInjector.getCompatibility()); + + if (!newSeInfo.equals(oldSeInfo)) { + Slog.i(TAG, "Updating seInfo for package " + packageName + " from: " + + oldSeInfo + " to: " + newSeInfo); + ps.getPkgState().setOverrideSeInfo(newSeInfo); + m.prepareAppDataAfterInstallLIF(pkg); + } + } + }; + + injector.getCompatibility().registerListener(SELinuxMMAC.SELINUX_LATEST_CHANGES, + selinuxChangeListener); + injector.getCompatibility().registerListener(SELinuxMMAC.SELINUX_R_CHANGES, + selinuxChangeListener); m.installWhitelistedSystemPackages(); ServiceManager.addService("package", m); @@ -25714,6 +25730,32 @@ public class PackageManagerService extends IPackageManager.Stub } } + @Override + public void grantImplicitAccess(int recipientUid, String visibleAuthority) { + // This API is exposed temporarily to only the contacts provider. (b/158688602) + final int callingUid = Binder.getCallingUid(); + ProviderInfo contactsProvider = resolveContentProviderInternal( + ContactsContract.AUTHORITY, 0, UserHandle.USER_SYSTEM); + if (contactsProvider == null || contactsProvider.applicationInfo == null + || !UserHandle.isSameApp(contactsProvider.applicationInfo.uid, callingUid)) { + throw new SecurityException(callingUid + " is not allow to call grantImplicitAccess"); + } + final int userId = UserHandle.getUserId(recipientUid); + final long token = Binder.clearCallingIdentity(); + final ProviderInfo providerInfo; + try { + providerInfo = resolveContentProvider(visibleAuthority, 0 /*flags*/, userId); + } finally { + Binder.restoreCallingIdentity(token); + } + if (providerInfo == null) { + return; + } + int visibleUid = providerInfo.applicationInfo.uid; + mPmInternal.grantImplicitAccess(userId, null /*Intent*/, UserHandle.getAppId(recipientUid), + visibleUid, false); + } + boolean canHaveOatDir(String packageName) { synchronized (mLock) { AndroidPackage p = mPackages.get(packageName); diff --git a/services/core/java/com/android/server/pm/SELinuxMMAC.java b/services/core/java/com/android/server/pm/SELinuxMMAC.java index fdd9636ae7b2..c5fbfba9b049 100644 --- a/services/core/java/com/android/server/pm/SELinuxMMAC.java +++ b/services/core/java/com/android/server/pm/SELinuxMMAC.java @@ -18,6 +18,7 @@ package com.android.server.pm; import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledAfter; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageParser.SigningDetails; import android.content.pm.Signature; import android.os.Environment; @@ -77,9 +78,21 @@ public final class SELinuxMMAC { private static final String TARGETSDKVERSION_STR = ":targetSdkVersion="; /** - * This change gates apps access to untrusted_app_R-targetSDk SELinux domain. Allows opt-in + * Allows opt-in to the latest targetSdkVersion enforced changes without changing target SDK. + * Turning this change off for an app targeting the latest SDK is a no-op. + * + * <p>Has no effect for apps using shared user id. + * + * TODO(b/143539591): Update description with relevant SELINUX changes this opts in to. + */ + @EnabledAfter(targetSdkVersion = android.os.Build.VERSION_CODES.R) + @ChangeId + static final long SELINUX_LATEST_CHANGES = 143539591L; + + /** + * This change gates apps access to untrusted_app_R-targetSDK SELinux domain. Allows opt-in * to R targetSdkVersion enforced changes without changing target SDK. Turning this change - * off for an app targeting R is a no-op. + * off for an app targeting S is a no-op. * * <p>Has no effect for apps using shared user id. * @@ -87,7 +100,7 @@ public final class SELinuxMMAC { */ @EnabledAfter(targetSdkVersion = android.os.Build.VERSION_CODES.Q) @ChangeId - static final long SELINUX_LATEST_CHANGES = 143539591L; + static final long SELINUX_R_CHANGES = 168782947L; // Only initialize sMacPermissions once. static { @@ -349,9 +362,11 @@ public final class SELinuxMMAC { if ((sharedUserSetting != null) && (sharedUserSetting.packages.size() != 0)) { return sharedUserSetting.seInfoTargetSdkVersion; } - if (compatibility.isChangeEnabledInternal(SELINUX_LATEST_CHANGES, - pkg.toAppInfoWithoutState())) { - return android.os.Build.VERSION_CODES.R; + final ApplicationInfo appInfo = pkg.toAppInfoWithoutState(); + if (compatibility.isChangeEnabledInternal(SELINUX_LATEST_CHANGES, appInfo)) { + return android.os.Build.VERSION_CODES.S; + } else if (compatibility.isChangeEnabledInternal(SELINUX_R_CHANGES, appInfo)) { + return Math.max(android.os.Build.VERSION_CODES.R, pkg.getTargetSdkVersion()); } return pkg.getTargetSdkVersion(); diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java index d4132136c226..35c26d6cd54e 100644 --- a/services/core/java/com/android/server/pm/StagingManager.java +++ b/services/core/java/com/android/server/pm/StagingManager.java @@ -86,7 +86,6 @@ import java.util.List; import java.util.Set; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; -import java.util.function.Predicate; import java.util.function.Supplier; /** @@ -226,7 +225,7 @@ public class StagingManager { final IntArray childSessionIds = new IntArray(); if (session.isMultiPackage()) { for (PackageInstallerSession s : session.getChildSessions()) { - if (isApexSession(s)) { + if (s.isApexSession()) { childSessionIds.add(s.sessionId); } } @@ -329,31 +328,6 @@ public class StagingManager { } } - private static boolean isApexSession(@NonNull PackageInstallerSession session) { - return (session.params.installFlags & PackageManager.INSTALL_APEX) != 0; - } - - private boolean sessionContains(@NonNull PackageInstallerSession session, - Predicate<PackageInstallerSession> filter) { - if (!session.isMultiPackage()) { - return filter.test(session); - } - for (PackageInstallerSession s : session.getChildSessions()) { - if (filter.test(s)) { - return true; - } - } - return false; - } - - private boolean sessionContainsApex(@NonNull PackageInstallerSession session) { - return sessionContains(session, (s) -> isApexSession(s)); - } - - private boolean sessionContainsApk(@NonNull PackageInstallerSession session) { - return sessionContains(session, (s) -> !isApexSession(s)); - } - // Reverts apex sessions and user data (if checkpoint is supported). Also reboots the device. private void abortCheckpoint(int sessionId, String errorMsg) { String failureReason = "Failed to install sessionId: " + sessionId + " Error: " + errorMsg; @@ -400,7 +374,7 @@ public class StagingManager { List<PackageInstallerSession> apexSessions = new ArrayList<>(); if (session.isMultiPackage()) { for (PackageInstallerSession s : session.getChildSessions()) { - if (sessionContainsApex(s)) { + if (s.containsApexSession()) { apexSessions.add(s); } } @@ -521,7 +495,7 @@ public class StagingManager { private void resumeSession(@NonNull PackageInstallerSession session) { Slog.d(TAG, "Resuming session " + session.sessionId); - final boolean hasApex = sessionContainsApex(session); + final boolean hasApex = session.containsApexSession(); ApexSessionInfo apexSessionInfo = null; if (hasApex) { // Check with apexservice whether the apex packages have been activated. @@ -740,7 +714,7 @@ public class StagingManager { @Nullable private PackageInstallerSession extractApksInSession(PackageInstallerSession session) throws PackageManagerException { - if (!session.isMultiPackage() && !isApexSession(session)) { + if (!session.isMultiPackage() && !session.isApexSession()) { return createAndWriteApkSession(session); } else if (session.isMultiPackage()) { // For multi-package staged sessions containing APKs, we identify which child sessions @@ -749,7 +723,7 @@ public class StagingManager { // sessions will be installed atomically. final List<PackageInstallerSession> childSessions = new ArrayList<>(); for (PackageInstallerSession s : session.getChildSessions()) { - if (!isApexSession(s)) { + if (!s.isApexSession()) { childSessions.add(s); } } @@ -798,7 +772,7 @@ public class StagingManager { } final Set<String> apkNames = new ArraySet<>(); for (PackageInstallerSession s : session.getChildSessions()) { - if (!isApexSession(s)) { + if (!s.isApexSession()) { apkNames.add(s.getPackageName()); } } @@ -1020,7 +994,7 @@ public class StagingManager { * @return returns true if it is ensured that there is no active apex session, otherwise false */ private boolean ensureActiveApexSessionIsAborted(PackageInstallerSession session) { - if (!sessionContainsApex(session)) { + if (!session.containsApexSession()) { return true; } final ApexSessionInfo apexSession = mApexManager.getStagedSessionInfo(session.sessionId); @@ -1342,7 +1316,7 @@ public class StagingManager { */ private void handlePreRebootVerification_Apex( @NonNull PackageInstallerSession session, int rollbackId) { - final boolean hasApex = sessionContainsApex(session); + final boolean hasApex = session.containsApexSession(); // APEX checks. For single-package sessions, check if they contain an APEX. For // multi-package sessions, find all the child sessions that contain an APEX. @@ -1372,7 +1346,7 @@ public class StagingManager { * {@link #notifyPreRebootVerification_Apk_Complete} */ private void handlePreRebootVerification_Apk(@NonNull PackageInstallerSession session) { - if (!sessionContainsApk(session)) { + if (!session.containsApkSession()) { notifyPreRebootVerification_Apk_Complete(session); return; } @@ -1421,7 +1395,7 @@ public class StagingManager { Slog.d(TAG, "Marking session " + session.sessionId + " as ready"); session.setStagedSessionReady(); if (session.isStagedSessionReady()) { - final boolean hasApex = sessionContainsApex(session); + final boolean hasApex = session.containsApexSession(); if (hasApex) { try { mApexManager.markStagedSessionReady(session.sessionId); diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 544f1225916e..840b233902f6 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -183,8 +183,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { private static final int GRANT_INSTALL = 2; /** Permission grant: grant the permission as a runtime one. */ private static final int GRANT_RUNTIME = 3; - /** Permission grant: grant as runtime a permission that was granted as an install time one. */ - private static final int GRANT_UPGRADE = 4; private static final long BACKUP_TIMEOUT_MILLIS = SECONDS.toMillis(60); @@ -2687,7 +2685,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { SplitPermissionInfoParcelable sp = permissionList.get(splitPermNum); String splitPermName = sp.getSplitPermission(); if (sp.getNewPermissions().contains(permName) - && origState.hasInstallPermission(splitPermName)) { + && origState.hasPermission(splitPermName)) { upgradedActivityRecognitionPermission = splitPermName; newImplicitPermissions.add(permName); @@ -2733,15 +2731,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { // For all apps normal permissions are install time ones. grant = GRANT_INSTALL; } else if (bp.isRuntime()) { - if (origState.hasInstallPermission(bp.getName()) - || upgradedActivityRecognitionPermission != null) { - // Before Q we represented some runtime permissions as install permissions, - // in Q we cannot do this anymore. Hence upgrade them all. - grant = GRANT_UPGRADE; - } else { - // For modern apps keep runtime permissions unchanged. - grant = GRANT_RUNTIME; - } + // For modern apps keep runtime permissions unchanged. + grant = GRANT_RUNTIME; } else if (bp.isSignature()) { // For all apps signature permissions are install time ones. allowedSig = shouldGrantSignaturePermission(perm, pkg, ps, bp, origState); @@ -2750,19 +2741,16 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } - if (grant != GRANT_DENIED) { - if (!ps.isSystem() && userState.areInstallPermissionsFixed(ps.name) - && !bp.isRuntime()) { - // If this is an existing, non-system package, then - // we can't add any new permissions to it. Runtime - // permissions can be added any time - they ad dynamic. - if (!allowedSig && !origState.hasInstallPermission(perm)) { - // Except... if this is a permission that was added - // to the platform (note: need to only do this when - // updating the platform). - if (!isNewPlatformPermissionForPackage(perm, pkg)) { - grant = GRANT_DENIED; - } + if (grant == GRANT_INSTALL && !allowedSig && !origState.hasPermission(perm)) { + // If this is an existing, non-system package, then + // we can't add any new permissions to it. Runtime + // permissions can be added any time - they are dynamic. + if (!ps.isSystem() && userState.areInstallPermissionsFixed(ps.name)) { + // Except... if this is a permission that was added + // to the platform (note: need to only do this when + // updating the platform). + if (!isNewPlatformPermissionForPackage(perm, pkg)) { + grant = GRANT_DENIED; } } } @@ -2776,22 +2764,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (grant != GRANT_DENIED) { switch (grant) { case GRANT_INSTALL: { - // Revoke this as runtime permission to handle the case of - // a runtime permission being downgraded to an install one. - // Also in permission review mode we keep dangerous permissions - // for legacy apps - final PermissionState origPermissionState = - origState.getPermissionState(perm); - if (origPermissionState != null - && origPermissionState.isRuntime()) { - // Revoke the runtime permission and clear the flags. - origState.revokePermission(bp); - origState.updatePermissionFlags(bp, - PackageManager.MASK_PERMISSION_FLAGS_ALL, 0); - // If we revoked a permission permission, we have to write. - updatedUserIds = ArrayUtils.appendInt( - updatedUserIds, userId); - } // Grant an install permission. if (uidState.grantPermission(bp) != PERMISSION_OPERATION_FAILURE) { changedInstallPermission = true; @@ -2856,7 +2828,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { // Hard restricted permissions cannot be held. } else if (!permissionPolicyInitialized || (!hardRestricted || restrictionExempt)) { - if (origPermState != null && origPermState.isGranted()) { + if ((origPermState != null && origPermState.isGranted()) + || upgradedActivityRecognitionPermission != null) { if (uidState.grantPermission(bp) == PERMISSION_OPERATION_FAILURE) { wasChanged = true; @@ -2914,124 +2887,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { flags); } break; - case GRANT_UPGRADE: { - // Upgrade from Pre-Q to Q permission model. Make all permissions - // runtime - PermissionState origPermState = origState.getPermissionState(perm); - int flags = (origPermState != null) ? origPermState.getFlags() : 0; - - BasePermission bpToRevoke = - upgradedActivityRecognitionPermission == null - ? bp : mSettings.getPermissionLocked( - upgradedActivityRecognitionPermission); - // Remove install permission - if (origState.revokePermission(bpToRevoke) - != PERMISSION_OPERATION_FAILURE) { - origState.updatePermissionFlags(bpToRevoke, - (MASK_PERMISSION_FLAGS_ALL - & ~FLAG_PERMISSION_APPLY_RESTRICTION), 0); - changedInstallPermission = true; - } - - boolean hardRestricted = bp.isHardRestricted(); - boolean softRestricted = bp.isSoftRestricted(); - - // If permission policy is not ready we don't deal with restricted - // permissions as the policy may whitelist some permissions. Once - // the policy is initialized we would re-evaluate permissions. - final boolean permissionPolicyInitialized = - mPermissionPolicyInternal != null - && mPermissionPolicyInternal.isInitialized(userId); - - boolean wasChanged = false; - - boolean restrictionExempt = - (origState.getPermissionFlags(bp.name) - & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0; - boolean restrictionApplied = (origState.getPermissionFlags( - bp.name) & FLAG_PERMISSION_APPLY_RESTRICTION) != 0; - - if (appSupportsRuntimePermissions) { - // If hard restricted we don't allow holding it - if (permissionPolicyInitialized && hardRestricted) { - if (!restrictionExempt) { - if (origPermState != null && origPermState.isGranted() - && uidState.revokePermission( - bp) != PERMISSION_OPERATION_FAILURE) { - wasChanged = true; - } - if (!restrictionApplied) { - flags |= FLAG_PERMISSION_APPLY_RESTRICTION; - wasChanged = true; - } - } - // If soft restricted we allow holding in a restricted form - } else if (permissionPolicyInitialized && softRestricted) { - // Regardless if granted set the restriction flag as it - // may affect app treatment based on this permission. - if (!restrictionExempt && !restrictionApplied) { - flags |= FLAG_PERMISSION_APPLY_RESTRICTION; - wasChanged = true; - } - } - - // Remove review flag as it is not necessary anymore - if ((flags & FLAG_PERMISSION_REVIEW_REQUIRED) != 0) { - flags &= ~FLAG_PERMISSION_REVIEW_REQUIRED; - wasChanged = true; - } - - if ((flags & FLAG_PERMISSION_REVOKED_COMPAT) != 0) { - flags &= ~FLAG_PERMISSION_REVOKED_COMPAT; - wasChanged = true; - // Hard restricted permissions cannot be held. - } else if (!permissionPolicyInitialized || - (!hardRestricted || restrictionExempt)) { - if (uidState.grantPermission(bp) - != PERMISSION_OPERATION_FAILURE) { - wasChanged = true; - } - } - } else { - if (!uidState.hasPermission(bp.name) - && uidState.grantPermission(bp) - != PERMISSION_OPERATION_FAILURE) { - flags |= FLAG_PERMISSION_REVIEW_REQUIRED; - wasChanged = true; - } - - // If legacy app always grant the permission but if restricted - // and not exempt take a note a restriction should be applied. - if (permissionPolicyInitialized - && (hardRestricted || softRestricted) - && !restrictionExempt && !restrictionApplied) { - flags |= FLAG_PERMISSION_APPLY_RESTRICTION; - wasChanged = true; - } - } - - // If unrestricted or restriction exempt, don't apply restriction. - if (permissionPolicyInitialized) { - if (!(hardRestricted || softRestricted) || restrictionExempt) { - if (restrictionApplied) { - flags &= ~FLAG_PERMISSION_APPLY_RESTRICTION; - // Dropping restriction on a legacy app implies a review - if (!appSupportsRuntimePermissions) { - flags |= FLAG_PERMISSION_REVIEW_REQUIRED; - } - wasChanged = true; - } - } - } - - if (wasChanged) { - updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); - } - - uidState.updatePermissionFlags(bp, - MASK_PERMISSION_FLAGS_ALL, flags); - } break; - default: { if (packageOfInterest == null || packageOfInterest.equals(pkg.getPackageName())) { @@ -3140,11 +2995,11 @@ public class PermissionManagerService extends IPermissionManager.Stub { for (String permission : ps.getPermissions()) { if (!pkg.getImplicitPermissions().contains(permission)) { - if (!ps.hasInstallPermission(permission)) { + BasePermission bp = mSettings.getPermissionLocked(permission); + if (bp.isRuntime()) { int flags = ps.getPermissionFlags(permission); if ((flags & FLAG_PERMISSION_REVOKE_WHEN_REQUESTED) != 0) { - BasePermission bp = mSettings.getPermissionLocked(permission); int flagsToRemove = FLAG_PERMISSION_REVOKE_WHEN_REQUESTED; @@ -3290,8 +3145,8 @@ public class PermissionManagerService extends IPermissionManager.Stub { ArraySet<String> sourcePerms = newToSplitPerms.get(newPerm); if (sourcePerms != null) { - if (!ps.hasInstallPermission(newPerm)) { - BasePermission bp = mSettings.getPermissionLocked(newPerm); + BasePermission bp = mSettings.getPermissionLocked(newPerm); + if (bp.isRuntime()) { if (!newPerm.equals(Manifest.permission.ACTIVITY_RECOGNITION)) { ps.updatePermissionFlags(bp, @@ -3300,27 +3155,31 @@ public class PermissionManagerService extends IPermissionManager.Stub { } updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId); - boolean inheritsFromInstallPerm = false; - for (int sourcePermNum = 0; sourcePermNum < sourcePerms.size(); - sourcePermNum++) { - if (ps.hasInstallPermission(sourcePerms.valueAt(sourcePermNum))) { - inheritsFromInstallPerm = true; - break; + if (!origPs.hasRequestedPermission(sourcePerms)) { + boolean inheritsFromInstallPerm = false; + for (int sourcePermNum = 0; sourcePermNum < sourcePerms.size(); + sourcePermNum++) { + final String sourcePerm = sourcePerms.valueAt(sourcePermNum); + BasePermission sourceBp = mSettings.getPermissionLocked(sourcePerm); + if (!sourceBp.isRuntime()) { + inheritsFromInstallPerm = true; + break; + } } - } - if (!origPs.hasRequestedPermission(sourcePerms) - && !inheritsFromInstallPerm) { - // Both permissions are new so nothing to inherit. - if (DEBUG_PERMISSIONS) { - Slog.i(TAG, newPerm + " does not inherit from " + sourcePerms - + " for " + pkgName + " as split permission is also new"); + if (!inheritsFromInstallPerm) { + // Both permissions are new so nothing to inherit. + if (DEBUG_PERMISSIONS) { + Slog.i(TAG, newPerm + " does not inherit from " + sourcePerms + + " for " + pkgName + " as split permission is also new"); + } + continue; } - } else { - // Inherit from new install or existing runtime permissions - inheritPermissionStateToNewImplicitPermissionLocked(sourcePerms, - newPerm, ps, pkg); } + + // Inherit from new install or existing runtime permissions + inheritPermissionStateToNewImplicitPermissionLocked(sourcePerms, newPerm, ps, + pkg); } } } @@ -3606,7 +3465,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (!allowed && bp.isDevelopment()) { // For development permissions, a development permission // is granted only if it was already granted. - allowed = origPermissions.hasInstallPermission(perm); + allowed = origPermissions.hasPermission(perm); } if (!allowed && bp.isSetup() && ArrayUtils.contains(mPackageManagerInt.getKnownPackageNames( @@ -4778,19 +4637,18 @@ public class PermissionManagerService extends IPermissionManager.Stub { uidState.reset(); uidState.setMissing(appIdState.isMissing(userId)); readStateFromPermissionStates(uidState, - appIdState.getInstallPermissionStates(), false); + appIdState.getInstallPermissionStates()); readStateFromPermissionStates(uidState, - appIdState.getRuntimePermissionStates(userId), true); + appIdState.getRuntimePermissionStates(userId)); } } }); } private void readStateFromPermissionStates(@NonNull UidPermissionState uidState, - @NonNull Collection<AppIdPermissionState.PermissionState> permissionStates, - boolean isRuntime) { + @NonNull Collection<AppIdPermissionState.PermissionState> permissionStates) { for (final AppIdPermissionState.PermissionState permissionState : permissionStates) { - uidState.putPermissionState(permissionState.getPermission(), isRuntime, + uidState.putPermissionState(permissionState.getPermission(), permissionState.isGranted(), permissionState.getFlags()); } } diff --git a/services/core/java/com/android/server/pm/permission/PermissionState.java b/services/core/java/com/android/server/pm/permission/PermissionState.java index 2ed9a50353d4..38264c83a15c 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionState.java +++ b/services/core/java/com/android/server/pm/permission/PermissionState.java @@ -41,13 +41,12 @@ public final class PermissionState { @GuardedBy("mLock") private int mFlags; - public PermissionState(@NonNull BasePermission permission, boolean isRuntime) { + public PermissionState(@NonNull BasePermission permission) { mPermission = permission; - mRuntime = isRuntime; } public PermissionState(@NonNull PermissionState other) { - this(other.mPermission, other.mRuntime); + this(other.mPermission); mGranted = other.mGranted; mFlags = other.mFlags; @@ -70,7 +69,7 @@ public final class PermissionState { public boolean isRuntime() { synchronized (mLock) { - return mRuntime; + return mPermission.isRuntime(); } } diff --git a/services/core/java/com/android/server/pm/permission/UidPermissionState.java b/services/core/java/com/android/server/pm/permission/UidPermissionState.java index 4c047ffd30e8..b45176b720b5 100644 --- a/services/core/java/com/android/server/pm/permission/UidPermissionState.java +++ b/services/core/java/com/android/server/pm/permission/UidPermissionState.java @@ -207,23 +207,6 @@ public final class UidPermissionState { } /** - * Gets whether the state has a given install permission. - * - * @param name The permission name. - * @return Whether the state has the install permission. - */ - public boolean hasInstallPermission(@NonNull String name) { - synchronized (mLock) { - if (mPermissions == null) { - return false; - } - PermissionState permissionState = mPermissions.get(name); - return permissionState != null && permissionState.isGranted() - && !permissionState.isRuntime(); - } - } - - /** * Returns whether the state has any known request for the given permission name, * whether or not it has been granted. * @@ -459,11 +442,11 @@ public final class UidPermissionState { /** * Put a permission state. */ - public void putPermissionState(@NonNull BasePermission permission, boolean isRuntime, - boolean isGranted, int flags) { + public void putPermissionState(@NonNull BasePermission permission, boolean isGranted, + int flags) { synchronized (mLock) { ensureNoPermissionState(permission.name); - PermissionState permissionState = ensurePermissionState(permission, isRuntime); + PermissionState permissionState = ensurePermissionState(permission); if (isGranted) { permissionState.grant(); } @@ -540,12 +523,6 @@ public final class UidPermissionState { @NonNull private PermissionState ensurePermissionState(@NonNull BasePermission permission) { - return ensurePermissionState(permission, permission.isRuntime()); - } - - @NonNull - private PermissionState ensurePermissionState(@NonNull BasePermission permission, - boolean isRuntime) { final String permissionName = permission.getName(); synchronized (mLock) { if (mPermissions == null) { @@ -553,7 +530,7 @@ public final class UidPermissionState { } PermissionState permissionState = mPermissions.get(permissionName); if (permissionState == null) { - permissionState = new PermissionState(permission, isRuntime); + permissionState = new PermissionState(permission); mPermissions.put(permissionName, permissionState); } return permissionState; diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index 740b592fda4c..67924307f009 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -4770,14 +4770,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A supportsEnterPipOnTaskSwitch = false; break; case RESUMED: - // Do nothing if currently in the process of resuming the activity. Otherwise, - // starting to pause it since it is not visible. - if (!mSetToSleep) { + // If the app is capable of entering PIP, we should try pausing it now + // so it can PIP correctly. + if (deferHidingClient) { + getRootTask().startPausingLocked( + mStackSupervisor.mUserLeaving /* userLeaving */, + false /* uiSleeping */, null /* resuming */, "makeInvisible"); break; } - getRootTask().startPausingLocked(mStackSupervisor.mUserLeaving, - false /* uiSleeping */, null /* resuming */, "makeInvisible"); - // fall through case INITIALIZING: case PAUSING: case PAUSED: diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index a9f06813faf5..fa4373ff2f3a 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -1497,9 +1497,10 @@ class ActivityStarter { // anyone interested in this piece of information. final Task homeStack = targetTask.getDisplayArea().getRootHomeTask(); final boolean homeTaskVisible = homeStack != null && homeStack.shouldBeVisible(null); + final ActivityRecord top = targetTask.getTopNonFinishingActivity(); + final boolean visible = top != null && top.isVisible(); mService.getTaskChangeNotificationController().notifyActivityRestartAttempt( - targetTask.getTaskInfo(), homeTaskVisible, clearedTask, - targetTask.getTopNonFinishingActivity().isVisible()); + targetTask.getTaskInfo(), homeTaskVisible, clearedTask, visible); } } diff --git a/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java b/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java index 01c007e381b1..dd92f507a33d 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java +++ b/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java @@ -52,10 +52,7 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl public void binderDied() { synchronized (mGlobalLock) { mOrganizersByFeatureIds.remove(mFeature); - mService.mRootWindowContainer.forAllDisplayAreas((da) -> { - if (da.mOrganizer != mOrganizer) return; - da.setOrganizer(null); - }); + removeOrganizer(mOrganizer); } } } @@ -112,11 +109,7 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl organizer.asBinder(), uid); mOrganizersByFeatureIds.entrySet().removeIf( entry -> entry.getValue().asBinder() == organizer.asBinder()); - - mService.mRootWindowContainer.forAllDisplayAreas((da) -> { - if (da.mOrganizer != organizer) return; - da.setOrganizer(null); - }); + removeOrganizer(organizer); } } finally { Binder.restoreCallingIdentity(origId); @@ -151,4 +144,13 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl // Oh well... } } + + private void removeOrganizer(IDisplayAreaOrganizer organizer) { + IBinder organizerBinder = organizer.asBinder(); + mService.mRootWindowContainer.forAllDisplayAreas((da) -> { + if (da.mOrganizer != null && da.mOrganizer.asBinder().equals(organizerBinder)) { + da.setOrganizer(null); + } + }); + } } diff --git a/services/core/java/com/android/server/wm/DragState.java b/services/core/java/com/android/server/wm/DragState.java index 6e32d0eddaaf..b80ed6be2256 100644 --- a/services/core/java/com/android/server/wm/DragState.java +++ b/services/core/java/com/android/server/wm/DragState.java @@ -258,16 +258,13 @@ class DragState { } class InputInterceptor { - InputChannel mServerChannel, mClientChannel; + InputChannel mClientChannel; DragInputEventReceiver mInputEventReceiver; InputApplicationHandle mDragApplicationHandle; InputWindowHandle mDragWindowHandle; InputInterceptor(Display display) { - InputChannel[] channels = InputChannel.openInputChannelPair("drag"); - mServerChannel = channels[0]; - mClientChannel = channels[1]; - mService.mInputManager.registerInputChannel(mServerChannel); + mClientChannel = mService.mInputManager.createInputChannel("drag"); mInputEventReceiver = new DragInputEventReceiver(mClientChannel, mService.mH.getLooper(), mDragDropController); @@ -278,7 +275,7 @@ class DragState { mDragWindowHandle = new InputWindowHandle(mDragApplicationHandle, display.getDisplayId()); mDragWindowHandle.name = "drag"; - mDragWindowHandle.token = mServerChannel.getToken(); + mDragWindowHandle.token = mClientChannel.getToken(); mDragWindowHandle.layoutParamsFlags = 0; mDragWindowHandle.layoutParamsType = WindowManager.LayoutParams.TYPE_DRAG; mDragWindowHandle.dispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; @@ -308,13 +305,11 @@ class DragState { } void tearDown() { - mService.mInputManager.unregisterInputChannel(mServerChannel.getToken()); + mService.mInputManager.removeInputChannel(mClientChannel.getToken()); mInputEventReceiver.dispose(); mInputEventReceiver = null; mClientChannel.dispose(); - mServerChannel.dispose(); mClientChannel = null; - mServerChannel = null; mDragWindowHandle = null; mDragApplicationHandle = null; @@ -326,7 +321,7 @@ class DragState { } InputChannel getInputChannel() { - return mInputInterceptor == null ? null : mInputInterceptor.mServerChannel; + return mInputInterceptor == null ? null : mInputInterceptor.mClientChannel; } InputWindowHandle getInputWindowHandle() { diff --git a/services/core/java/com/android/server/wm/EmbeddedWindowController.java b/services/core/java/com/android/server/wm/EmbeddedWindowController.java index 2a5bf16e09d0..3b89a24184f0 100644 --- a/services/core/java/com/android/server/wm/EmbeddedWindowController.java +++ b/services/core/java/com/android/server/wm/EmbeddedWindowController.java @@ -184,23 +184,13 @@ class EmbeddedWindowController { InputChannel openInputChannel() { final String name = getName(); - - final InputChannel[] inputChannels = InputChannel.openInputChannelPair(name); - mInputChannel = inputChannels[0]; - final InputChannel clientChannel = inputChannels[1]; - mWmService.mInputManager.registerInputChannel(mInputChannel); - - if (mInputChannel.getToken() != clientChannel.getToken()) { - throw new IllegalStateException("Client and Server tokens are expected to" - + "be the same"); - } - - return clientChannel; + mInputChannel = mWmService.mInputManager.createInputChannel(name); + return mInputChannel; } void onRemoved() { if (mInputChannel != null) { - mWmService.mInputManager.unregisterInputChannel(mInputChannel.getToken()); + mWmService.mInputManager.removeInputChannel(mInputChannel.getToken()); mInputChannel.dispose(); mInputChannel = null; } diff --git a/services/core/java/com/android/server/wm/InputConsumerImpl.java b/services/core/java/com/android/server/wm/InputConsumerImpl.java index 1d1a2663823c..edb5e853af4f 100644 --- a/services/core/java/com/android/server/wm/InputConsumerImpl.java +++ b/services/core/java/com/android/server/wm/InputConsumerImpl.java @@ -35,7 +35,7 @@ import java.io.PrintWriter; class InputConsumerImpl implements IBinder.DeathRecipient { final WindowManagerService mService; - final InputChannel mServerChannel, mClientChannel; + final InputChannel mClientChannel; final InputApplicationHandle mApplicationHandle; final InputWindowHandle mWindowHandle; @@ -58,16 +58,10 @@ class InputConsumerImpl implements IBinder.DeathRecipient { mClientPid = clientPid; mClientUser = clientUser; - InputChannel[] channels = InputChannel.openInputChannelPair(name); - mServerChannel = channels[0]; + mClientChannel = mService.mInputManager.createInputChannel(name); if (inputChannel != null) { - channels[1].transferTo(inputChannel); - channels[1].dispose(); - mClientChannel = inputChannel; - } else { - mClientChannel = channels[1]; + mClientChannel.copyTo(inputChannel); } - mService.mInputManager.registerInputChannel(mServerChannel); mApplicationHandle = new InputApplicationHandle(new Binder()); mApplicationHandle.name = name; @@ -75,7 +69,7 @@ class InputConsumerImpl implements IBinder.DeathRecipient { mWindowHandle = new InputWindowHandle(mApplicationHandle, displayId); mWindowHandle.name = name; - mWindowHandle.token = mServerChannel.getToken(); + mWindowHandle.token = mClientChannel.getToken(); mWindowHandle.layoutParamsType = WindowManager.LayoutParams.TYPE_INPUT_CONSUMER; mWindowHandle.layoutParamsFlags = 0; mWindowHandle.dispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; @@ -156,9 +150,8 @@ class InputConsumerImpl implements IBinder.DeathRecipient { } void disposeChannelsLw(SurfaceControl.Transaction t) { - mService.mInputManager.unregisterInputChannel(mServerChannel.getToken()); + mService.mInputManager.removeInputChannel(mClientChannel.getToken()); mClientChannel.dispose(); - mServerChannel.dispose(); t.remove(mInputSurface); unlinkFromDeathRecipient(); } diff --git a/services/core/java/com/android/server/wm/Letterbox.java b/services/core/java/com/android/server/wm/Letterbox.java index 4fe678dc1974..44ce4de529b0 100644 --- a/services/core/java/com/android/server/wm/Letterbox.java +++ b/services/core/java/com/android/server/wm/Letterbox.java @@ -191,7 +191,6 @@ public class Letterbox { } private static class InputInterceptor { - final InputChannel mServerChannel; final InputChannel mClientChannel; final InputWindowHandle mWindowHandle; final InputEventReceiver mInputEventReceiver; @@ -201,13 +200,10 @@ public class Letterbox { InputInterceptor(String namePrefix, WindowState win) { mWmService = win.mWmService; final String name = namePrefix + (win.mActivityRecord != null ? win.mActivityRecord : win); - final InputChannel[] channels = InputChannel.openInputChannelPair(name); - mServerChannel = channels[0]; - mClientChannel = channels[1]; + mClientChannel = mWmService.mInputManager.createInputChannel(name); mInputEventReceiver = new SimpleInputReceiver(mClientChannel); - mWmService.mInputManager.registerInputChannel(mServerChannel); - mToken = mServerChannel.getToken(); + mToken = mClientChannel.getToken(); mWindowHandle = new InputWindowHandle(null /* inputApplicationHandle */, win.getDisplayId()); @@ -239,9 +235,8 @@ public class Letterbox { } void dispose() { - mWmService.mInputManager.unregisterInputChannel(mServerChannel.getToken()); + mWmService.mInputManager.removeInputChannel(mToken); mInputEventReceiver.dispose(); - mServerChannel.dispose(); mClientChannel.dispose(); } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 2a0488d6e230..4a1151bc13fd 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -6039,8 +6039,9 @@ class Task extends WindowContainer<WindowContainer> { // If the most recent activity was noHistory but was only stopped rather // than stopped+finished because the device went to sleep, we need to make // sure to finish it as we're making a new activity topmost. - if (shouldSleepActivities() && mLastNoHistoryActivity != null && - !mLastNoHistoryActivity.finishing) { + if (shouldSleepActivities() && mLastNoHistoryActivity != null + && !mLastNoHistoryActivity.finishing + && mLastNoHistoryActivity != next) { if (DEBUG_STATES) Slog.d(TAG_STATES, "no-history finish of " + mLastNoHistoryActivity + " on new resume"); mLastNoHistoryActivity.finishIfPossible("resume-no-history", false /* oomAdj */); diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index c11624c92117..5239b1f87bea 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -151,6 +151,12 @@ final class TaskDisplayArea extends DisplayArea<Task> { */ private boolean mRemoved; + /** + * Whether the task display area should ignore fixed-orientation request. If {@code true}, it + * can never specify orientation, but show the fixed-orientation apps in the letterbox; + * otherwise, it rotates based on the fixed-orientation request when it has the focus. + */ + private boolean mIgnoreOrientationRequest; /** * The id of a leaf task that most recently being moved to front. @@ -641,11 +647,30 @@ final class TaskDisplayArea extends DisplayArea<Task> { } } + /** + * Sets whether the task display area should ignore fixed-orientation request from apps. + * @return Whether the display orientation changed + */ + boolean setIgnoreOrientationRequest(boolean ignoreOrientationRequest) { + if (mIgnoreOrientationRequest == ignoreOrientationRequest) { + return false; + } + + mIgnoreOrientationRequest = ignoreOrientationRequest; + if (isLastFocused()) { + // Update orientation if this TDA is the last focused, otherwise it shouldn't affect + // the display. + return mDisplayContent.updateOrientation(); + } + + return false; + } + @Override int getOrientation(int candidate) { - // Only allow to specify orientation if this TDA has the focus. - // TODO(b/155431879) Add option to never allow a TDA to specify orientation. - if (!isLastFocused()) { + // Only allow to specify orientation if this TDA is not set to ignore orientation request, + // and it has the focus. + if (mIgnoreOrientationRequest || !isLastFocused()) { return SCREEN_ORIENTATION_UNSET; } diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java index abe632941b97..a6f0f464c8b3 100644 --- a/services/core/java/com/android/server/wm/TaskPositioner.java +++ b/services/core/java/com/android/server/wm/TaskPositioner.java @@ -96,7 +96,6 @@ class TaskPositioner implements IBinder.DeathRecipient { boolean mDragEnded; IBinder mClientCallback; - InputChannel mServerChannel; InputChannel mClientChannel; InputApplicationHandle mDragApplicationHandle; InputWindowHandle mDragWindowHandle; @@ -220,10 +219,7 @@ class TaskPositioner implements IBinder.DeathRecipient { } mDisplayContent = displayContent; - final InputChannel[] channels = InputChannel.openInputChannelPair(TAG); - mServerChannel = channels[0]; - mClientChannel = channels[1]; - mService.mInputManager.registerInputChannel(mServerChannel); + mClientChannel = mService.mInputManager.createInputChannel(TAG); mInputEventReceiver = new WindowPositionerEventReceiver( mClientChannel, mService.mAnimationHandler.getLooper(), @@ -237,7 +233,7 @@ class TaskPositioner implements IBinder.DeathRecipient { mDragWindowHandle = new InputWindowHandle(mDragApplicationHandle, displayContent.getDisplayId()); mDragWindowHandle.name = TAG; - mDragWindowHandle.token = mServerChannel.getToken(); + mDragWindowHandle.token = mClientChannel.getToken(); mDragWindowHandle.layoutParamsFlags = 0; mDragWindowHandle.layoutParamsType = WindowManager.LayoutParams.TYPE_DRAG; mDragWindowHandle.dispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS; @@ -299,14 +295,12 @@ class TaskPositioner implements IBinder.DeathRecipient { } mService.mTaskPositioningController.hideInputSurface(mDisplayContent.getDisplayId()); - mService.mInputManager.unregisterInputChannel(mServerChannel.getToken()); + mService.mInputManager.removeInputChannel(mClientChannel.getToken()); mInputEventReceiver.dispose(); mInputEventReceiver = null; mClientChannel.dispose(); - mServerChannel.dispose(); mClientChannel = null; - mServerChannel = null; mDragWindowHandle = null; mDragApplicationHandle = null; diff --git a/services/core/java/com/android/server/wm/TaskPositioningController.java b/services/core/java/com/android/server/wm/TaskPositioningController.java index b9a449f558f0..9d35c25fc546 100644 --- a/services/core/java/com/android/server/wm/TaskPositioningController.java +++ b/services/core/java/com/android/server/wm/TaskPositioningController.java @@ -188,7 +188,7 @@ class TaskPositioningController { transferFocusFromWin = displayContent.mCurrentFocus; } if (!mInputManager.transferTouchFocus( - transferFocusFromWin.mInputChannel, mTaskPositioner.mServerChannel)) { + transferFocusFromWin.mInputChannel, mTaskPositioner.mClientChannel)) { Slog.e(TAG_WM, "startPositioningLocked: Unable to transfer touch focus"); cleanUpTaskPositioner(); return false; diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index a680213c52a7..d9c574ccc64c 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -7997,8 +7997,7 @@ public class WindowManagerService extends IWindowManager.Stub updateInputChannel(clientChannel.getToken(), callingUid, callingPid, displayId, surface, name, applicationHandle, flags, privateFlags, type, null /* region */); - clientChannel.transferTo(outInputChannel); - clientChannel.dispose(); + clientChannel.copyTo(outInputChannel); } private void updateInputChannel(IBinder channelToken, int callingUid, int callingPid, diff --git a/services/core/java/com/android/server/wm/WindowOrganizerController.java b/services/core/java/com/android/server/wm/WindowOrganizerController.java index c7cad2f76486..999181dc486c 100644 --- a/services/core/java/com/android/server/wm/WindowOrganizerController.java +++ b/services/core/java/com/android/server/wm/WindowOrganizerController.java @@ -306,6 +306,19 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub return effects; } + private int applyTaskDisplayAreaChanges(TaskDisplayArea taskDisplayArea, + WindowContainerTransaction.Change c) { + int effects = applyDisplayAreaChanges(taskDisplayArea, c); + if ((c.getChangeMask() + & WindowContainerTransaction.Change.CHANGE_IGNORE_ORIENTATION_REQUEST) != 0) { + if (taskDisplayArea.setIgnoreOrientationRequest(c.getIgnoreOrientationRequest())) { + effects |= TRANSACT_EFFECTS_LIFECYCLE; + } + } + + return effects; + } + private int applyDisplayAreaChanges(WindowContainer container, WindowContainerTransaction.Change c) { final int[] effects = new int[1]; @@ -388,7 +401,9 @@ class WindowOrganizerController extends IWindowOrganizerController.Stub int effects = applyChanges(wc, c); - if (wc instanceof DisplayArea) { + if (wc instanceof TaskDisplayArea) { + effects |= applyTaskDisplayAreaChanges((TaskDisplayArea) wc, c); + } else if (wc instanceof DisplayArea) { effects |= applyDisplayAreaChanges(wc, c); } else if (wc instanceof Task) { effects |= applyTaskChanges(wc.asTask(), c); diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index e4a079d84a2a..1f7457c088c5 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -556,7 +556,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // Input channel and input window handle used by the input dispatcher. final InputWindowHandle mInputWindowHandle; InputChannel mInputChannel; - private InputChannel mClientChannel; // Used to improve performance of toString() private String mStringNameCache; @@ -2478,20 +2477,15 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP throw new IllegalStateException("Window already has an input channel."); } String name = getName(); - InputChannel[] inputChannels = InputChannel.openInputChannelPair(name); - mInputChannel = inputChannels[0]; - mClientChannel = inputChannels[1]; - mWmService.mInputManager.registerInputChannel(mInputChannel); + mInputChannel = mWmService.mInputManager.createInputChannel(name); mInputWindowHandle.token = mInputChannel.getToken(); if (outInputChannel != null) { - mClientChannel.transferTo(outInputChannel); - mClientChannel.dispose(); - mClientChannel = null; + mInputChannel.copyTo(outInputChannel); } else { // If the window died visible, we setup a fake input channel, so that taps // can still detected by input monitor channel, and we can relaunch the app. // Create fake event receiver that simply reports all events as handled. - mDeadWindowEventReceiver = new DeadWindowEventReceiver(mClientChannel); + mDeadWindowEventReceiver = new DeadWindowEventReceiver(mInputChannel); } mWmService.mInputToWindowMap.put(mInputWindowHandle.token, this); } @@ -2504,15 +2498,11 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP // unregister server channel first otherwise it complains about broken channel if (mInputChannel != null) { - mWmService.mInputManager.unregisterInputChannel(mInputChannel.getToken()); + mWmService.mInputManager.removeInputChannel(mInputChannel.getToken()); mInputChannel.dispose(); mInputChannel = null; } - if (mClientChannel != null) { - mClientChannel.dispose(); - mClientChannel = null; - } mWmService.mKeyInterceptionInfoForToken.remove(mInputWindowHandle.token); mWmService.mInputToWindowMap.remove(mInputWindowHandle.token); mInputWindowHandle.token = null; diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp index 46136ca0647d..17a05f3c7d1a 100644 --- a/services/core/jni/com_android_server_input_InputManagerService.cpp +++ b/services/core/jni/com_android_server_input_InputManagerService.cpp @@ -206,10 +206,12 @@ public: void setDisplayViewports(JNIEnv* env, jobjectArray viewportObjArray); - status_t registerInputChannel(JNIEnv* env, const std::shared_ptr<InputChannel>& inputChannel); - status_t registerInputMonitor(JNIEnv* env, const std::shared_ptr<InputChannel>& inputChannel, - int32_t displayId, bool isGestureMonitor); - status_t unregisterInputChannel(JNIEnv* env, const sp<IBinder>& connectionToken); + base::Result<std::unique_ptr<InputChannel>> createInputChannel(JNIEnv* env, + const std::string& name); + base::Result<std::unique_ptr<InputChannel>> createInputMonitor(JNIEnv* env, int32_t displayId, + bool isGestureMonitor, + const std::string& name); + status_t removeInputChannel(JNIEnv* env, const sp<IBinder>& connectionToken); status_t pilferPointers(const sp<IBinder>& token); void displayRemoved(JNIEnv* env, int32_t displayId); @@ -432,24 +434,22 @@ void NativeInputManager::setDisplayViewports(JNIEnv* env, jobjectArray viewportO InputReaderConfiguration::CHANGE_DISPLAY_INFO); } -status_t NativeInputManager::registerInputChannel( - JNIEnv* /* env */, const std::shared_ptr<InputChannel>& inputChannel) { +base::Result<std::unique_ptr<InputChannel>> NativeInputManager::createInputChannel( + JNIEnv* /* env */, const std::string& name) { ATRACE_CALL(); - return mInputManager->getDispatcher()->registerInputChannel(inputChannel); + return mInputManager->getDispatcher()->createInputChannel(name); } -status_t NativeInputManager::registerInputMonitor(JNIEnv* /* env */, - const std::shared_ptr<InputChannel>& inputChannel, - int32_t displayId, bool isGestureMonitor) { +base::Result<std::unique_ptr<InputChannel>> NativeInputManager::createInputMonitor( + JNIEnv* /* env */, int32_t displayId, bool isGestureMonitor, const std::string& name) { ATRACE_CALL(); - return mInputManager->getDispatcher()->registerInputMonitor( - inputChannel, displayId, isGestureMonitor); + return mInputManager->getDispatcher()->createInputMonitor(displayId, isGestureMonitor, name); } -status_t NativeInputManager::unregisterInputChannel(JNIEnv* /* env */, - const sp<IBinder>& connectionToken) { +status_t NativeInputManager::removeInputChannel(JNIEnv* /* env */, + const sp<IBinder>& connectionToken) { ATRACE_CALL(); - return mInputManager->getDispatcher()->unregisterInputChannel(connectionToken); + return mInputManager->getDispatcher()->removeInputChannel(connectionToken); } status_t NativeInputManager::pilferPointers(const sp<IBinder>& token) { @@ -1352,80 +1352,83 @@ static jboolean nativeHasKeys(JNIEnv* env, jclass /* clazz */, return result; } -static void throwInputChannelNotInitialized(JNIEnv* env) { - jniThrowException(env, "java/lang/IllegalStateException", - "inputChannel is not initialized"); -} - static void handleInputChannelDisposed(JNIEnv* env, jobject /* inputChannelObj */, const std::shared_ptr<InputChannel>& inputChannel, void* data) { NativeInputManager* im = static_cast<NativeInputManager*>(data); - ALOGW("Input channel object '%s' was disposed without first being unregistered with " - "the input manager!", inputChannel->getName().c_str()); - im->unregisterInputChannel(env, inputChannel->getConnectionToken()); + ALOGW("Input channel object '%s' was disposed without first being removed with " + "the input manager!", + inputChannel->getName().c_str()); + im->removeInputChannel(env, inputChannel->getConnectionToken()); } -static void nativeRegisterInputChannel(JNIEnv* env, jclass /* clazz */, - jlong ptr, jobject inputChannelObj) { +static jobject nativeCreateInputChannel(JNIEnv* env, jclass /* clazz */, jlong ptr, + jstring nameObj) { NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr); - std::shared_ptr<InputChannel> inputChannel = - android_view_InputChannel_getInputChannel(env, inputChannelObj); - if (inputChannel == nullptr) { - throwInputChannelNotInitialized(env); - return; - } + ScopedUtfChars nameChars(env, nameObj); + std::string name = nameChars.c_str(); - status_t status = im->registerInputChannel(env, inputChannel); + base::Result<std::unique_ptr<InputChannel>> inputChannel = im->createInputChannel(env, name); - if (status) { - std::string message; - message += StringPrintf("Failed to register input channel. status=%d", status); + if (!inputChannel) { + std::string message = inputChannel.error().message(); + message += StringPrintf(" Status=%d", inputChannel.error().code()); jniThrowRuntimeException(env, message.c_str()); - return; + return nullptr; + } + + jobject inputChannelObj = + android_view_InputChannel_createJavaObject(env, std::move(*inputChannel)); + if (!inputChannelObj) { + return nullptr; } android_view_InputChannel_setDisposeCallback(env, inputChannelObj, handleInputChannelDisposed, im); + return inputChannelObj; } -static void nativeRegisterInputMonitor(JNIEnv* env, jclass /* clazz */, - jlong ptr, jobject inputChannelObj, jint displayId, jboolean isGestureMonitor) { +static jobject nativeCreateInputMonitor(JNIEnv* env, jclass /* clazz */, jlong ptr, jint displayId, + jboolean isGestureMonitor, jstring nameObj) { NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr); - std::shared_ptr<InputChannel> inputChannel = - android_view_InputChannel_getInputChannel(env, inputChannelObj); - if (inputChannel == nullptr) { - throwInputChannelNotInitialized(env); - return; - } - if (displayId == ADISPLAY_ID_NONE) { std::string message = "InputChannel used as a monitor must be associated with a display"; jniThrowRuntimeException(env, message.c_str()); - return; + return nullptr; } - status_t status = im->registerInputMonitor(env, inputChannel, displayId, isGestureMonitor); + ScopedUtfChars nameChars(env, nameObj); + std::string name = nameChars.c_str(); + + base::Result<std::unique_ptr<InputChannel>> inputChannel = + im->createInputMonitor(env, displayId, isGestureMonitor, name); - if (status) { - std::string message = StringPrintf("Failed to register input channel. status=%d", status); + if (!inputChannel) { + std::string message = inputChannel.error().message(); + message += StringPrintf(" Status=%d", inputChannel.error().code()); jniThrowRuntimeException(env, message.c_str()); - return; + return nullptr; + } + + jobject inputChannelObj = + android_view_InputChannel_createJavaObject(env, std::move(*inputChannel)); + if (!inputChannelObj) { + return nullptr; } + return inputChannelObj; } -static void nativeUnregisterInputChannel(JNIEnv* env, jclass /* clazz */, jlong ptr, - jobject tokenObj) { +static void nativeRemoveInputChannel(JNIEnv* env, jclass /* clazz */, jlong ptr, jobject tokenObj) { NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr); sp<IBinder> token = ibinderForJavaObject(env, tokenObj); - status_t status = im->unregisterInputChannel(env, token); - if (status && status != BAD_VALUE) { // ignore already unregistered channel + status_t status = im->removeInputChannel(env, token); + if (status && status != BAD_VALUE) { // ignore already removed channel std::string message; - message += StringPrintf("Failed to unregister input channel. status=%d", status); + message += StringPrintf("Failed to remove input channel. status=%d", status); jniThrowRuntimeException(env, message.c_str()); } } @@ -1780,12 +1783,11 @@ static const JNINativeMethod gInputManagerMethods[] = { {"nativeGetKeyCodeState", "(JIII)I", (void*)nativeGetKeyCodeState}, {"nativeGetSwitchState", "(JIII)I", (void*)nativeGetSwitchState}, {"nativeHasKeys", "(JII[I[Z)Z", (void*)nativeHasKeys}, - {"nativeRegisterInputChannel", "(JLandroid/view/InputChannel;)V", - (void*)nativeRegisterInputChannel}, - {"nativeRegisterInputMonitor", "(JLandroid/view/InputChannel;IZ)V", - (void*)nativeRegisterInputMonitor}, - {"nativeUnregisterInputChannel", "(JLandroid/os/IBinder;)V", - (void*)nativeUnregisterInputChannel}, + {"nativeCreateInputChannel", "(JLjava/lang/String;)Landroid/view/InputChannel;", + (void*)nativeCreateInputChannel}, + {"nativeCreateInputMonitor", "(JIZLjava/lang/String;)Landroid/view/InputChannel;", + (void*)nativeCreateInputMonitor}, + {"nativeRemoveInputChannel", "(JLandroid/os/IBinder;)V", (void*)nativeRemoveInputChannel}, {"nativePilferPointers", "(JLandroid/os/IBinder;)V", (void*)nativePilferPointers}, {"nativeSetInputFilterEnabled", "(JZ)V", (void*)nativeSetInputFilterEnabled}, {"nativeSetInTouchMode", "(JZ)V", (void*)nativeSetInTouchMode}, diff --git a/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java b/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java index cc1fdab3d22a..e011c797777e 100644 --- a/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java @@ -123,8 +123,7 @@ public class AuthServiceTest { final String[] config = { "0:2:15", // ID0:Fingerprint:Strong - "1:4:255", // ID1:Iris:Weak - "2:8:4095", // ID2:Face:Convenience + "1:8:4095", // ID2:Face:Convenience }; when(mInjector.getConfiguration(any())).thenReturn(config); @@ -133,12 +132,14 @@ public class AuthServiceTest { mAuthService.onStart(); final int fingerprintId = 0; - final int irisId = 1; - final int faceId = 2; + final int faceId = 1; - verify(mFingerprintService).initializeConfiguration(eq(fingerprintId)); - verify(mIrisService).initializeConfiguration(eq(irisId)); - verify(mFaceService).initializeConfiguration(eq(faceId)); + final int fingerprintStrength = 15; + final int faceStrength = 4095; + + verify(mFingerprintService).initializeConfiguration(eq(fingerprintId), + eq(fingerprintStrength)); + verify(mFaceService).initializeConfiguration(eq(faceId), eq(faceStrength)); } diff --git a/services/tests/servicestests/src/com/android/server/display/color/GlobalSaturationTintControllerTest.java b/services/tests/servicestests/src/com/android/server/display/color/GlobalSaturationTintControllerTest.java index 7b88a0e012de..4f0cb324f17f 100644 --- a/services/tests/servicestests/src/com/android/server/display/color/GlobalSaturationTintControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/display/color/GlobalSaturationTintControllerTest.java @@ -32,9 +32,11 @@ public class GlobalSaturationTintControllerTest { public void setAndGetMatrix() { final GlobalSaturationTintController tintController = new GlobalSaturationTintController(); tintController.setMatrix(50); - assertThat(tintController.getMatrix()).hasValuesWithin(0.00001f) - .of(new float[]{0.6155f, 0.1155f, 0.1155f, 0.0f, 0.3575f, 0.85749996f, 0.3575f, - 0.0f, 0.036f, 0.036f, 0.536f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}); + assertThat(tintController.getMatrix()).usingTolerance(0.00001f) + .containsExactly( + 0.6155f, 0.1155f, 0.1155f, 0.0f, 0.3575f, 0.85749996f, 0.3575f, + 0.0f, 0.036f, 0.036f, 0.536f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f) + .inOrder(); } @Test @@ -43,6 +45,7 @@ public class GlobalSaturationTintControllerTest { tintController.setMatrix(100); final float[] matrix = new float[16]; Matrix.setIdentityM(matrix, 0); - assertThat(tintController.getMatrix()).hasValuesWithin(0.00001f).of(matrix); + assertThat(tintController.getMatrix()).usingTolerance(0.00001f) + .containsExactly(matrix).inOrder(); } } diff --git a/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java b/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java index a550b27a62a2..f1930d7268d7 100644 --- a/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/SELinuxMMACTest.java @@ -44,7 +44,8 @@ import org.mockito.junit.MockitoJUnitRunner; public class SELinuxMMACTest { private static final String PACKAGE_NAME = "my.package"; - private static final int OPT_IN_VERSION = Build.VERSION_CODES.R; + private static final int LATEST_OPT_IN_VERSION = Build.VERSION_CODES.S; + private static final int R_OPT_IN_VERSION = Build.VERSION_CODES.R; @Mock PlatformCompat mMockCompatibility; @@ -56,7 +57,17 @@ public class SELinuxMMACTest { argThat(argument -> argument.packageName.equals(pkg.getPackageName())))) .thenReturn(true); assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility), - is("default:targetSdkVersion=" + OPT_IN_VERSION)); + is("default:targetSdkVersion=" + LATEST_OPT_IN_VERSION)); + } + + @Test + public void getSeInfoOptInToR() { + AndroidPackage pkg = makePackage(Build.VERSION_CODES.P); + when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_R_CHANGES), + argThat(argument -> argument.packageName.equals(pkg.getPackageName())))) + .thenReturn(true); + assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility), + is("default:targetSdkVersion=" + R_OPT_IN_VERSION)); } @Test @@ -70,13 +81,33 @@ public class SELinuxMMACTest { } @Test - public void getSeInfoNoOptInButAlreadyR() { - AndroidPackage pkg = makePackage(OPT_IN_VERSION); + public void getSeInfoNoOptInButAlreadyLatest() { + AndroidPackage pkg = makePackage(LATEST_OPT_IN_VERSION); when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_LATEST_CHANGES), argThat(argument -> argument.packageName.equals(pkg.getPackageName())))) .thenReturn(false); assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility), - is("default:targetSdkVersion=" + OPT_IN_VERSION)); + is("default:targetSdkVersion=" + LATEST_OPT_IN_VERSION)); + } + + @Test + public void getSeInfoNoOptInButAlreadyR() { + AndroidPackage pkg = makePackage(R_OPT_IN_VERSION); + when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_R_CHANGES), + argThat(argument -> argument.packageName.equals(pkg.getPackageName())))) + .thenReturn(false); + assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility), + is("default:targetSdkVersion=" + R_OPT_IN_VERSION)); + } + + @Test + public void getSeInfoOptInRButLater() { + AndroidPackage pkg = makePackage(R_OPT_IN_VERSION + 1); + when(mMockCompatibility.isChangeEnabledInternal(eq(SELinuxMMAC.SELINUX_R_CHANGES), + argThat(argument -> argument.packageName.equals(pkg.getPackageName())))) + .thenReturn(true); + assertThat(SELinuxMMAC.getSeInfo(pkg, null, mMockCompatibility), + is("default:targetSdkVersion=" + (R_OPT_IN_VERSION + 1))); } private AndroidPackage makePackage(int targetSdkVersion) { diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java index f4b50dc6b553..54b2b3b4a009 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaOrganizerTest.java @@ -18,6 +18,8 @@ package com.android.server.wm; import static android.window.DisplayAreaOrganizer.FEATURE_VENDOR_FIRST; +import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -39,6 +41,10 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +/** + * Build/Install/Run: + * atest WmTests:DisplayAreaOrganizerTest + */ @SmallTest @Presubmit @RunWith(WindowTestRunner.class) @@ -61,14 +67,22 @@ public class DisplayAreaOrganizerTest extends WindowTestsBase { } private IDisplayAreaOrganizer registerMockOrganizer(int feature) { - final IDisplayAreaOrganizer organizer = mock(IDisplayAreaOrganizer.class); - when(organizer.asBinder()).thenReturn(new Binder()); + return registerMockOrganizer(feature, new Binder()); + } + private IDisplayAreaOrganizer registerMockOrganizer(int feature, Binder binder) { + final IDisplayAreaOrganizer organizer = createMockOrganizer(binder); mWm.mAtmService.mWindowOrganizerController.mDisplayAreaOrganizerController .registerOrganizer(organizer, feature); return organizer; } + private IDisplayAreaOrganizer createMockOrganizer(Binder binder) { + final IDisplayAreaOrganizer organizer = mock(IDisplayAreaOrganizer.class); + when(organizer.asBinder()).thenReturn(binder); + return organizer; + } + private void unregisterMockOrganizer(IDisplayAreaOrganizer organizer) { mWm.mAtmService.mWindowOrganizerController.mDisplayAreaOrganizerController .unregisterOrganizer(organizer); @@ -99,4 +113,16 @@ public class DisplayAreaOrganizerTest extends WindowTestsBase { // Ensure it was still only called once if the bounds didn't change verify(organizer).onDisplayAreaInfoChanged(any()); } + + @Test + public void testUnregisterOrganizer() { + final Binder binder = new Binder(); + registerMockOrganizer(FEATURE_VENDOR_FIRST, binder); + + assertThat(mTestDisplayArea.mOrganizer).isNotNull(); + + unregisterMockOrganizer(createMockOrganizer(binder)); + + assertThat(mTestDisplayArea.mOrganizer).isNull(); + } } diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java index 4d88a4f7db16..6f5389ddacce 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java +++ b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java @@ -236,6 +236,7 @@ public class SystemServicesTestRule implements TestRule { inputChannels[0].dispose(); mInputChannel = inputChannels[1]; doReturn(mInputChannel).when(mImService).monitorInput(anyString(), anyInt()); + doReturn(mInputChannel).when(mImService).createInputChannel(anyString()); // StatusBarManagerInternal final StatusBarManagerInternal sbmi = mock(StatusBarManagerInternal.class); diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java index e71f7ec54b0e..8b025e34401a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskDisplayAreaTests.java @@ -29,6 +29,8 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMAR import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; import static android.window.DisplayAreaOrganizer.FEATURE_VENDOR_FIRST; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; @@ -277,6 +279,24 @@ public class TaskDisplayAreaTests extends WindowTestsBase { assertThat(secondTaskDisplayArea.isLastFocused()).isTrue(); } + @Test + public void testIgnoreOrientationRequest() { + final TaskDisplayArea taskDisplayArea = mDisplayContent.getDefaultTaskDisplayArea(); + final Task stack = taskDisplayArea.createStack( + WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); + final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true) + .setStack(stack).build(); + + mDisplayContent.setFocusedApp(activity); + activity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE); + + assertThat(taskDisplayArea.getOrientation()).isEqualTo(SCREEN_ORIENTATION_LANDSCAPE); + + taskDisplayArea.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + + assertThat(taskDisplayArea.getOrientation()).isEqualTo(SCREEN_ORIENTATION_UNSET); + } + private void assertGetOrCreateStack(int windowingMode, int activityType, Task candidateTask, boolean reuseCandidate) { final TaskDisplayArea taskDisplayArea = candidateTask.getDisplayArea(); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java index 11eaf8c5cea5..0152fc607f73 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java @@ -26,6 +26,9 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET; +import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED; import static android.content.res.Configuration.SCREEN_HEIGHT_DP_UNDEFINED; import static android.content.res.Configuration.SCREEN_WIDTH_DP_UNDEFINED; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; @@ -42,6 +45,8 @@ import static com.android.dx.mockito.inline.extended.ExtendedMockito.when; import static com.android.server.wm.DisplayArea.Type.ABOVE_TASKS; import static com.android.server.wm.WindowContainer.POSITION_TOP; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; @@ -361,6 +366,45 @@ public class WindowOrganizerTests extends WindowTestsBase { } @Test + public void testSetIgnoreOrientationRequest() { + removeGlobalMinSizeRestriction(); + final TaskDisplayArea taskDisplayArea = mDisplayContent.getDefaultTaskDisplayArea(); + final Task stack = taskDisplayArea.createStack( + WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD, false /* onTop */); + final ActivityRecord activity = new ActivityBuilder(mAtm).setCreateTask(true) + .setStack(stack).build(); + taskDisplayArea.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + mDisplayContent.setFocusedApp(activity); + activity.setRequestedOrientation(SCREEN_ORIENTATION_LANDSCAPE); + + // TDA returns UNSET when ignoreOrientationRequest == true + // DC is UNSPECIFIED because it is using the previous (default) when TDA returns UNSET. + assertThat(taskDisplayArea.getOrientation()).isEqualTo(SCREEN_ORIENTATION_UNSET); + assertThat(mDisplayContent.getLastOrientation()).isEqualTo(SCREEN_ORIENTATION_UNSPECIFIED); + + WindowContainerTransaction t = new WindowContainerTransaction(); + t.setIgnoreOrientationRequest( + taskDisplayArea.mRemoteToken.toWindowContainerToken(), + false /* ignoreOrientationRequest */); + mWm.mAtmService.mWindowOrganizerController.applyTransaction(t); + + // TDA returns app request orientation when ignoreOrientationRequest == false + // DC uses the same as TDA returns when it is not UNSET. + assertThat(mDisplayContent.getLastOrientation()).isEqualTo(SCREEN_ORIENTATION_LANDSCAPE); + assertThat(taskDisplayArea.getOrientation()).isEqualTo(SCREEN_ORIENTATION_LANDSCAPE); + + t.setIgnoreOrientationRequest( + taskDisplayArea.mRemoteToken.toWindowContainerToken(), + true /* ignoreOrientationRequest */); + mWm.mAtmService.mWindowOrganizerController.applyTransaction(t); + + // TDA returns UNSET when ignoreOrientationRequest == true + // DC is LANDSCAPE because it is using the previous when TDA returns UNSET. + assertThat(taskDisplayArea.getOrientation()).isEqualTo(SCREEN_ORIENTATION_UNSET); + assertThat(mDisplayContent.getLastOrientation()).isEqualTo(SCREEN_ORIENTATION_LANDSCAPE); + } + + @Test public void testOverrideConfigSize() { removeGlobalMinSizeRestriction(); final Task stack = new TaskBuilder(mSupervisor) diff --git a/tests/ManagedProfileLifecycleStressTest/src/com/android/test/stress/ManagedProfileLifecycleStressTest.java b/tests/ManagedProfileLifecycleStressTest/src/com/android/test/stress/ManagedProfileLifecycleStressTest.java index 026677e09bed..99dde859028a 100644 --- a/tests/ManagedProfileLifecycleStressTest/src/com/android/test/stress/ManagedProfileLifecycleStressTest.java +++ b/tests/ManagedProfileLifecycleStressTest/src/com/android/test/stress/ManagedProfileLifecycleStressTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import com.android.tradefed.device.CollectingOutputReceiver; import com.android.tradefed.log.LogUtil.CLog; import com.android.tradefed.testtype.DeviceJUnit4ClassRunner; import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test; @@ -62,13 +63,62 @@ public class ManagedProfileLifecycleStressTest extends BaseHostJUnit4Test { CLog.w("Iteration N" + iteration); final int userId = createManagedProfile(); startUser(userId); - installPackageAsUser(DUMMY_DPC_APK, true /* grantPermissions */, userId, "-t"); + installPackageAsUser( + DUMMY_DPC_APK, /* grantPermissions= */true, userId, /* options= */"-t"); setProfileOwner(DUMMY_DPC_COMPONENT, userId); removeUser(userId); } CLog.w("Completed " + iteration + " iterations."); } + /** + * Create, start, and kill managed profiles in a loop with waitForBroadcastIdle after each user + * operation. + */ + @Test + public void testCreateStartDeleteStable() throws Exception { + // Disable package verifier for ADB installs. + getDevice().executeShellCommand("settings put global verifier_verify_adb_installs 0"); + int iteration = 0; + final long deadline = System.nanoTime() + TimeUnit.MINUTES.toNanos(TIME_LIMIT_MINUTES); + while (System.nanoTime() < deadline) { + iteration++; + CLog.w("Iteration N" + iteration); + final int userId = createManagedProfile(); + waitForBroadcastIdle(); + + startUser(userId); + waitForBroadcastIdle(); + + installPackageAsUser( + DUMMY_DPC_APK, /* grantPermissions= */true, userId, /* options= */"-t"); + + setProfileOwner(DUMMY_DPC_COMPONENT, userId); + + removeUser(userId); + waitForBroadcastIdle(); + } + CLog.w("Completed " + iteration + " iterations."); + } + + private void waitForBroadcastIdle() throws Exception { + final CollectingOutputReceiver receiver = new CollectingOutputReceiver(); + // We allow 8min for the command to complete and 4min for the command to start to + // output something. + getDevice().executeShellCommand( + "am wait-for-broadcast-idle", + receiver, + /* maxTimeoutForCommand= */8, + /* maxTimeoutToOutputShellResponse= */4, + TimeUnit.MINUTES, + /* retryAttempts= */0); + final String output = receiver.getOutput(); + if (!output.contains("All broadcast queues are idle!")) { + CLog.e("Output from 'am wait-for-broadcast-idle': %s", output); + fail("'am wait-for-broadcase-idle' did not complete."); + } + } + private int createManagedProfile() throws Exception { final String output = getDevice().executeShellCommand( "pm create-user --profileOf 0 --managed TestProfile"); diff --git a/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java b/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java index 9f0b41fa0cdf..c895420157d7 100644 --- a/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java +++ b/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java @@ -67,6 +67,9 @@ public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork { private NetworkAgent mNetworkAgent; private int mStartKeepaliveError = SocketKeepalive.ERROR_UNSUPPORTED; private int mStopKeepaliveError = SocketKeepalive.NO_KEEPALIVE; + // Controls how test network agent is going to wait before responding to keepalive + // start/stop. Useful when simulate KeepaliveTracker is waiting for response from modem. + private long mKeepaliveResponseDelay = 0L; private Integer mExpectedKeepaliveSlot = null; public NetworkAgentWrapper(int transport, LinkProperties linkProperties, Context context) @@ -134,12 +137,17 @@ public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork { if (mWrapper.mExpectedKeepaliveSlot != null) { assertEquals((int) mWrapper.mExpectedKeepaliveSlot, slot); } - onSocketKeepaliveEvent(slot, mWrapper.mStartKeepaliveError); + mWrapper.mHandlerThread.getThreadHandler().postDelayed( + () -> onSocketKeepaliveEvent(slot, mWrapper.mStartKeepaliveError), + mWrapper.mKeepaliveResponseDelay); } @Override public void stopSocketKeepalive(Message msg) { - onSocketKeepaliveEvent(msg.arg1, mWrapper.mStopKeepaliveError); + final int slot = msg.arg1; + mWrapper.mHandlerThread.getThreadHandler().postDelayed( + () -> onSocketKeepaliveEvent(slot, mWrapper.mStopKeepaliveError), + mWrapper.mKeepaliveResponseDelay); } @Override @@ -248,6 +256,10 @@ public class NetworkAgentWrapper implements TestableNetworkCallback.HasNetwork { mStopKeepaliveError = reason; } + public void setKeepaliveResponseDelay(long delay) { + mKeepaliveResponseDelay = delay; + } + public void setExpectedKeepaliveSlot(Integer slot) { mExpectedKeepaliveSlot = slot; } diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index 1f23bf38c2f2..7dfac9c8c357 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -4292,6 +4292,32 @@ public class ConnectivityServiceTest { myNet = connectKeepaliveNetwork(lp); mWiFiNetworkAgent.setStartKeepaliveEvent(SocketKeepalive.SUCCESS); + // Check that a stop followed by network disconnects does not result in crash. + try (SocketKeepalive ka = mCm.createSocketKeepalive( + myNet, testSocket, myIPv4, dstIPv4, executor, callback)) { + ka.start(validKaInterval); + callback.expectStarted(); + // Delay the response of keepalive events in networkAgent long enough to make sure + // the follow-up network disconnection will be processed first. + mWiFiNetworkAgent.setKeepaliveResponseDelay(3 * TIMEOUT_MS); + ka.stop(); + + // Make sure the stop has been processed. Wait for executor idle is needed to prevent + // flaky since the actual stop call to the service is delegated to executor thread. + waitForIdleSerialExecutor(executor, TIMEOUT_MS); + waitForIdle(); + + mWiFiNetworkAgent.disconnect(); + mWiFiNetworkAgent.expectDisconnected(); + callback.expectStopped(); + callback.assertNoCallback(); + } + + // Reconnect. + waitForIdle(); + myNet = connectKeepaliveNetwork(lp); + mWiFiNetworkAgent.setStartKeepaliveEvent(SocketKeepalive.SUCCESS); + // Check that keepalive slots start from 1 and increment. The first one gets slot 1. mWiFiNetworkAgent.setExpectedKeepaliveSlot(1); int srcPort2 = 0; diff --git a/wifi/api/system-current.txt b/wifi/api/system-current.txt index aab4a2df7633..fd45ebec80ef 100644 --- a/wifi/api/system-current.txt +++ b/wifi/api/system-current.txt @@ -508,7 +508,7 @@ package android.net.wifi { field public static final int EASY_CONNECT_NETWORK_ROLE_AP = 1; // 0x1 field public static final int EASY_CONNECT_NETWORK_ROLE_STA = 0; // 0x0 field public static final String EXTRA_CHANGE_REASON = "changeReason"; - field public static final String EXTRA_LINK_PROPERTIES = "android.net.wifi.extra.LINK_PROPERTIES"; + field @Deprecated public static final String EXTRA_LINK_PROPERTIES = "android.net.wifi.extra.LINK_PROPERTIES"; field public static final String EXTRA_MULTIPLE_NETWORKS_CHANGED = "multipleChanges"; field public static final String EXTRA_OSU_NETWORK = "android.net.wifi.extra.OSU_NETWORK"; field public static final String EXTRA_PREVIOUS_WIFI_AP_STATE = "previous_wifi_state"; diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index c76f4a63a777..2219bfcd6aab 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -1053,9 +1053,6 @@ public class WifiManager { /** * Broadcast intent action indicating that the link configuration changed on wifi. - * <br />Included Extras: - * <br />{@link #EXTRA_LINK_PROPERTIES}: {@link android.net.LinkProperties} object associated - * with the Wi-Fi network. * <br /> No permissions are required to listen to this broadcast. * @hide */ @@ -1071,8 +1068,12 @@ public class WifiManager { * Included in the {@link #ACTION_LINK_CONFIGURATION_CHANGED} broadcast. * * Retrieve with {@link android.content.Intent#getParcelableExtra(String)}. + * + * @deprecated this extra is no longer populated. + * * @hide */ + @Deprecated @SystemApi public static final String EXTRA_LINK_PROPERTIES = "android.net.wifi.extra.LINK_PROPERTIES"; |