diff options
409 files changed, 6332 insertions, 3080 deletions
diff --git a/Android.bp b/Android.bp index 71ea3f22ee2e..d75239afab45 100644 --- a/Android.bp +++ b/Android.bp @@ -225,6 +225,7 @@ java_library { "apex_aidl_interface-java", "framework-protos", "updatable-driver-protos", + "ota_metadata_proto_java", "android.hidl.base-V1.0-java", "android.hardware.cas-V1.0-java", "android.hardware.cas-V1.1-java", diff --git a/apex/appsearch/framework/Android.bp b/apex/appsearch/framework/Android.bp index 5bf0b84b570d..f92f44bc853f 100644 --- a/apex/appsearch/framework/Android.bp +++ b/apex/appsearch/framework/Android.bp @@ -24,11 +24,29 @@ package { filegroup { name: "framework-appsearch-sources", srcs: [ + ":framework-appsearch-internal-sources", + ":framework-appsearch-external-sources", + ], + visibility: ["//frameworks/base"], +} + +filegroup { + name: "framework-appsearch-internal-sources", + srcs: [ "java/**/*.java", "java/**/*.aidl", ], + exclude_srcs: [":framework-appsearch-external-sources"], path: "java", - visibility: ["//frameworks/base"], +} + +filegroup { + name: "framework-appsearch-external-sources", + srcs: [ + "java/external/**/*.java", + "java/external/**/*.aidl", + ], + path: "java/external", } java_sdk_library { diff --git a/apex/jobscheduler/framework/java/android/app/AlarmManager.java b/apex/jobscheduler/framework/java/android/app/AlarmManager.java index 01f31e43989e..b096537821ca 100644 --- a/apex/jobscheduler/framework/java/android/app/AlarmManager.java +++ b/apex/jobscheduler/framework/java/android/app/AlarmManager.java @@ -22,6 +22,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SdkConstant; +import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; @@ -138,6 +139,36 @@ public class AlarmManager { public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED"; + /** + * Broadcast Action: An app is granted the + * {@link android.Manifest.permission#SCHEDULE_EXACT_ALARM} permission. + * + * <p>When the user revokes the {@link android.Manifest.permission#SCHEDULE_EXACT_ALARM} + * permission, all alarms scheduled with + * {@link #setExact}, {@link #setExactAndAllowWhileIdle} and + * {@link #setAlarmClock(AlarmClockInfo, PendingIntent)} will be deleted. + * + * <p>When the user grants the {@link android.Manifest.permission#SCHEDULE_EXACT_ALARM}, + * this broadcast will be sent. Applications can reschedule all the necessary alarms when + * receiving it. + * + * <p><em>Note:</em> + * Applications are still required to check {@link #canScheduleExactAlarms()} + * before using the above APIs after receiving this broadcast, + * because it's possible that the permission is already revoked again by the time + * applications receive this broadcast. + * + * <p>This broadcast will be sent to both runtime receivers and manifest receivers. + * + * <p>This broadcast is sent as a foreground broadcast. + * See {@link android.content.Intent#FLAG_RECEIVER_FOREGROUND}. + * + * <p>When an application receives this broadcast, it's allowed to start a foreground service. + */ + @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED = + "android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED"; + /** @hide */ @UnsupportedAppUsage public static final long WINDOW_EXACT = 0; diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java index b62ece6759c6..9dd1296d681c 100644 --- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java +++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java @@ -251,6 +251,12 @@ public class PowerExemptionManager { * @hide */ public static final int REASON_LOCALE_CHANGED = 206; + /** + * Broadcast + * {@link android.app.AlarmManager#ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED} + * @hide + */ + public static final int REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED = 207; /* Reason code range 300-399 are reserved for other internal reasons */ /** * Device idle system allow list, including EXCEPT-IDLE @@ -386,6 +392,7 @@ public class PowerExemptionManager { REASON_TIMEZONE_CHANGED, REASON_TIME_CHANGED, REASON_LOCALE_CHANGED, + REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED, REASON_SYSTEM_ALLOW_LISTED, REASON_ALARM_MANAGER_ALARM_CLOCK, REASON_ALARM_MANAGER_WHILE_IDLE, @@ -664,6 +671,8 @@ public class PowerExemptionManager { return "TIME_CHANGED"; case REASON_LOCALE_CHANGED: return "LOCALE_CHANGED"; + case REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED: + return "REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED"; case REASON_SYSTEM_ALLOW_LISTED: return "SYSTEM_ALLOW_LISTED"; case REASON_ALARM_MANAGER_ALARM_CLOCK: diff --git a/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java b/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java index b0b9abccd229..3c89016ec605 100644 --- a/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java +++ b/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java @@ -25,19 +25,29 @@ public interface AppStateTracker { String TAG = "AppStateTracker"; /** - * Register a {@link ServiceStateListener} to listen for forced-app-standby changes that should - * affect services. + * Register a {@link ForcedAppStandbyListener} to listen for forced-app-standby changes that + * should affect services etc. */ - void addServiceStateListener(@NonNull ServiceStateListener listener); + void addForcedAppStandbyListener(@NonNull ForcedAppStandbyListener listener); /** - * A listener to listen to forced-app-standby changes that should affect services. + * @return {code true} if the given UID/package has been in forced app standby mode. */ - interface ServiceStateListener { + boolean isAppInForcedAppStandby(int uid, @NonNull String packageName); + + /** + * A listener to listen to forced-app-standby changes that should affect services etc. + */ + interface ForcedAppStandbyListener { + /** + * Called when an app goes in/out of forced app standby. + */ + void updateForceAppStandbyForUidPackage(int uid, String packageName, boolean standby); + /** - * Called when an app goes into forced app standby and its foreground - * services need to be removed from that state. + * Called when all apps' forced-app-standby states need to be re-evaluated, due to + * enable/disable certain feature flags. */ - void stopForegroundServicesForUidPackage(int uid, String packageName); + void updateForcedAppStandbyForAllApps(); } } diff --git a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java index c332a598c30b..1deb3656dabe 100644 --- a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java +++ b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java @@ -60,8 +60,10 @@ import com.android.server.usage.AppStandbyInternal.AppIdleStateChangeListener; import java.io.PrintWriter; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Set; /** * Class to keep track of the information related to "force app standby", which includes: @@ -160,16 +162,46 @@ public class AppStateTrackerImpl implements AppStateTracker { @GuardedBy("mLock") boolean mForcedAppStandbyEnabled; + /** + * A lock-free set of (uid, packageName) pairs in forced app standby mode. + * + * <p> + * It's bascially shadowing the {@link #mRunAnyRestrictedPackages} together with + * the {@link #mForcedAppStandbyEnabled} and the {@link #mForceAllAppsStandby} - mutations on + * them would result in copy-on-write. + * + * Note: when {@link #mForcedAppStandbyEnabled} is {@code false}, it'll be set to an empty set. + * when {@link #mForceAllAppsStandby} is {@code true}, it'll be set to null; + * </p> + */ + volatile Set<Pair<Integer, String>> mForcedAppStandbyUidPackages = Collections.emptySet(); + @Override - public void addServiceStateListener(@NonNull ServiceStateListener listener) { + public void addForcedAppStandbyListener(@NonNull ForcedAppStandbyListener listener) { addListener(new Listener() { @Override - public void stopForegroundServicesForUidPackage(int uid, String packageName) { - listener.stopForegroundServicesForUidPackage(uid, packageName); + public void updateForceAppStandbyForUidPackage(int uid, String packageName, + boolean standby) { + listener.updateForceAppStandbyForUidPackage(uid, packageName, standby); + } + + @Override + public void updateForcedAppStandbyForAllApps() { + listener.updateForcedAppStandbyForAllApps(); } }); } + @Override + public boolean isAppInForcedAppStandby(int uid, @NonNull String packageName) { + final Set<Pair<Integer, String>> fasUidPkgs = mForcedAppStandbyUidPackages; + if (fasUidPkgs == null) { + // Meaning the mForceAllAppsStandby is true. + return true; + } + return fasUidPkgs.contains(Pair.create(uid, packageName)); + } + interface Stats { int UID_FG_STATE_CHANGED = 0; int UID_ACTIVE_STATE_CHANGED = 1; @@ -233,6 +265,7 @@ public class AppStateTrackerImpl implements AppStateTracker { return; } mForcedAppStandbyEnabled = enabled; + updateForcedAppStandbyUidPackagesLocked(); if (DEBUG) { Slog.d(TAG, "Forced app standby feature flag changed: " + mForcedAppStandbyEnabled); @@ -277,7 +310,11 @@ public class AppStateTrackerImpl implements AppStateTracker { if (!sender.isRunAnyInBackgroundAppOpsAllowed(uid, packageName)) { Slog.v(TAG, "Package " + packageName + "/" + uid + " toggled into fg service restriction"); - stopForegroundServicesForUidPackage(uid, packageName); + updateForceAppStandbyForUidPackage(uid, packageName, true); + } else { + Slog.v(TAG, "Package " + packageName + "/" + uid + + " toggled out of fg service restriction"); + updateForceAppStandbyForUidPackage(uid, packageName, false); } } @@ -342,6 +379,7 @@ public class AppStateTrackerImpl implements AppStateTracker { private void onForceAllAppsStandbyChanged(AppStateTrackerImpl sender) { updateAllJobs(); updateAllAlarms(); + updateForcedAppStandbyForAllApps(); } /** @@ -366,10 +404,17 @@ public class AppStateTrackerImpl implements AppStateTracker { } /** - * Called when an app goes into forced app standby and its foreground - * services need to be removed from that state. + * Called when an app goes in/out of forced app standby. */ - public void stopForegroundServicesForUidPackage(int uid, String packageName) { + public void updateForceAppStandbyForUidPackage(int uid, String packageName, + boolean standby) { + } + + /** + * Called when all apps' forced-app-standby states need to be re-evaluated due to changes of + * feature flags such as {@link #mForcedAppStandbyEnabled} or {@link #mForceAllAppsStandby}. + */ + public void updateForcedAppStandbyForAllApps() { } /** @@ -438,9 +483,12 @@ public class AppStateTrackerImpl implements AppStateTracker { final int uid = intent.getIntExtra(Intent.EXTRA_UID, -1); // No need to notify for state change as all the alarms and jobs should be // removed too. - mExemptedBucketPackages.remove(userId, pkgName); - mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName)); - mActiveUids.delete(uid); + synchronized (mLock) { + mExemptedBucketPackages.remove(userId, pkgName); + mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName)); + updateForcedAppStandbyUidPackagesLocked(); + mActiveUids.delete(uid); + } } break; } @@ -580,6 +628,29 @@ public class AppStateTrackerImpl implements AppStateTracker { } } } + updateForcedAppStandbyUidPackagesLocked(); + } + + /** + * Update the {@link #mForcedAppStandbyUidPackages} upon mutations on + * {@link #mRunAnyRestrictedPackages}, {@link #mForcedAppStandbyEnabled} or + * {@link #mForceAllAppsStandby}. + */ + @GuardedBy("mLock") + private void updateForcedAppStandbyUidPackagesLocked() { + if (!mForcedAppStandbyEnabled) { + mForcedAppStandbyUidPackages = Collections.emptySet(); + return; + } + if (mForceAllAppsStandby) { + mForcedAppStandbyUidPackages = null; + return; + } + Set<Pair<Integer, String>> fasUidPkgs = new ArraySet<>(); + for (int i = 0, size = mRunAnyRestrictedPackages.size(); i < size; i++) { + fasUidPkgs.add(mRunAnyRestrictedPackages.valueAt(i)); + } + mForcedAppStandbyUidPackages = Collections.unmodifiableSet(fasUidPkgs); } private void updateForceAllAppStandbyState() { @@ -601,6 +672,7 @@ public class AppStateTrackerImpl implements AppStateTracker { return; } mForceAllAppsStandby = enable; + updateForcedAppStandbyUidPackagesLocked(); mHandler.notifyForceAllAppsStandbyChanged(); } @@ -645,6 +717,7 @@ public class AppStateTrackerImpl implements AppStateTracker { } else { mRunAnyRestrictedPackages.removeAt(index); } + updateForcedAppStandbyUidPackagesLocked(); return true; } @@ -896,6 +969,7 @@ public class AppStateTrackerImpl implements AppStateTracker { if (unblockAlarms) { l.unblockAllUnrestrictedAlarms(); } + l.updateForcedAppStandbyForAllApps(); } mStatLogger.logDurationStat( Stats.FORCE_APP_STANDBY_FEATURE_FLAG_CHANGED, start); @@ -966,6 +1040,7 @@ public class AppStateTrackerImpl implements AppStateTracker { mRunAnyRestrictedPackages.removeAt(i); } } + updateForcedAppStandbyUidPackagesLocked(); cleanUpArrayForUser(mActiveUids, removedUserId); mExemptedBucketPackages.remove(removedUserId); } diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java index b3396c5c827c..0eb260986472 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java @@ -30,6 +30,7 @@ import static android.app.AlarmManager.INTERVAL_HOUR; import static android.app.AlarmManager.RTC; import static android.app.AlarmManager.RTC_WAKEUP; import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; +import static android.os.PowerExemptionManager.REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED; import static android.os.PowerExemptionManager.TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED; import static android.os.PowerWhitelistManager.REASON_ALARM_MANAGER_WHILE_IDLE; import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED; @@ -1704,6 +1705,11 @@ public class AlarmManagerService extends SystemService { if (!hasScheduleExactAlarmInternal(packageName, uid)) { mHandler.obtainMessage(AlarmHandler.REMOVE_EXACT_ALARMS, uid, 0, packageName).sendToTarget(); + } else { + // TODO(b/187206399) Make sure this won't be sent, if the app + // already had the appop previously. + sendScheduleExactAlarmPermissionStateChangedBroadcast( + packageName, UserHandle.getUserId(uid)); } } }); @@ -4816,6 +4822,30 @@ public class AlarmManagerService extends SystemService { } } + /** + * Send {@link AlarmManager#ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED} to + * the app that is just granted the permission. + */ + private void sendScheduleExactAlarmPermissionStateChangedBroadcast( + String packageName, int userId) { + final Intent i = new Intent( + AlarmManager.ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED); + i.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING + | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT + | Intent.FLAG_RECEIVER_FOREGROUND); + i.setPackage(packageName); + + // We need to allow the app to start a foreground service. + // This broadcast is very rare, so we do not cache the BroadcastOptions. + final BroadcastOptions opts = BroadcastOptions.makeBasic(); + opts.setTemporaryAppAllowlist( + mActivityManagerInternal.getBootTimeTempAllowListDuration(), + TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED, ""); + getContext().sendBroadcastAsUser(i, UserHandle.of(userId), /*permission*/ null, + opts.toBundle()); + } + private void decrementAlarmCount(int uid, int decrement) { int oldCount = 0; final int uidIndex = mAlarmsPerUid.indexOfKey(uid); diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java index 9cd3a8fa6624..f7415962cc7e 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java @@ -554,7 +554,7 @@ public final class JobStore { out.attribute(null, "net-capabilities", Long.toString( BitUtils.packBits(network.getCapabilities()))); out.attribute(null, "net-unwanted-capabilities", Long.toString( - BitUtils.packBits(network.getUnwantedCapabilities()))); + BitUtils.packBits(network.getForbiddenCapabilities()))); out.attribute(null, "net-transport-types", Long.toString( BitUtils.packBits(network.getTransportTypes()))); @@ -977,22 +977,22 @@ public final class JobStore { String val; final String netCapabilities = parser.getAttributeValue(null, "net-capabilities"); - final String netUnwantedCapabilities = parser.getAttributeValue( + final String netforbiddenCapabilities = parser.getAttributeValue( null, "net-unwanted-capabilities"); final String netTransportTypes = parser.getAttributeValue(null, "net-transport-types"); if (netCapabilities != null && netTransportTypes != null) { final NetworkRequest.Builder builder = new NetworkRequest.Builder() .clearCapabilities(); - final long unwantedCapabilities = netUnwantedCapabilities != null - ? Long.parseLong(netUnwantedCapabilities) - : BitUtils.packBits(builder.build().getUnwantedCapabilities()); + final long forbiddenCapabilities = netforbiddenCapabilities != null + ? Long.parseLong(netforbiddenCapabilities) + : BitUtils.packBits(builder.build().getForbiddenCapabilities()); // We're okay throwing NFE here; caught by caller for (int capability : BitUtils.unpackBits(Long.parseLong(netCapabilities))) { builder.addCapability(capability); } - for (int unwantedCapability : BitUtils.unpackBits( - Long.parseLong(netUnwantedCapabilities))) { - builder.addUnwantedCapability(unwantedCapability); + for (int forbiddenCapability : BitUtils.unpackBits( + Long.parseLong(netforbiddenCapabilities))) { + builder.addForbiddenCapability(forbiddenCapability); } for (int transport : BitUtils.unpackBits(Long.parseLong(netTransportTypes))) { builder.addTransportType(transport); diff --git a/cmds/am/src/com/android/commands/am/Instrument.java b/cmds/am/src/com/android/commands/am/Instrument.java index 2be8264856f8..1e72ddf8ecfc 100644 --- a/cmds/am/src/com/android/commands/am/Instrument.java +++ b/cmds/am/src/com/android/commands/am/Instrument.java @@ -555,7 +555,7 @@ public class Instrument { // Start the process final Process process = new ProcessBuilder() - .command("logcat", "-d", "-v threadtime,uid", "-T", timestamp) + .command("logcat", "-d", "-v", "threadtime,uid", "-T", timestamp) .start(); // Nothing to write. Don't let the command accidentally block. diff --git a/core/api/current.txt b/core/api/current.txt index de92fd1af6ff..91318163309b 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -4404,6 +4404,7 @@ package android.app { method public void setWindow(int, long, long, android.app.PendingIntent); method public void setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler); field public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED"; + field public static final String ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED = "android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED"; field public static final int ELAPSED_REALTIME = 3; // 0x3 field public static final int ELAPSED_REALTIME_WAKEUP = 2; // 0x2 field public static final long INTERVAL_DAY = 86400000L; // 0x5265c00L @@ -24710,32 +24711,37 @@ package android.media.metrics { method @IntRange(from=java.lang.Integer.MIN_VALUE, to=java.lang.Integer.MAX_VALUE) public int getSubErrorCode(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.media.metrics.PlaybackErrorEvent> CREATOR; - field public static final int ERROR_AUDIOTRACK_INIT = 17; // 0x11 - field public static final int ERROR_AUDIOTRACK_OTHER = 19; // 0x13 - field public static final int ERROR_AUDIOTRACK_WRITE = 18; // 0x12 - field public static final int ERROR_DECODER_DECODE = 14; // 0xe - field public static final int ERROR_DECODER_INIT = 13; // 0xd - field public static final int ERROR_DECODER_OOM = 15; // 0xf - field public static final int ERROR_DECODER_OTHER = 16; // 0x10 + field public static final int ERROR_AUDIO_TRACK_INIT_FAILED = 17; // 0x11 + field public static final int ERROR_AUDIO_TRACK_OTHER = 19; // 0x13 + field public static final int ERROR_AUDIO_TRACK_WRITE_FAILED = 18; // 0x12 + field public static final int ERROR_DECODER_INIT_FAILED = 13; // 0xd + field public static final int ERROR_DECODING_FAILED = 14; // 0xe + field public static final int ERROR_DECODING_FORMAT_EXCEEDS_CAPABILITIES = 15; // 0xf + field public static final int ERROR_DECODING_FORMAT_UNSUPPORTED = 35; // 0x23 + field public static final int ERROR_DECODING_OTHER = 16; // 0x10 field public static final int ERROR_DRM_CONTENT_ERROR = 28; // 0x1c - field public static final int ERROR_DRM_DISALLOWED = 26; // 0x1a - field public static final int ERROR_DRM_LICENSE_ERROR = 25; // 0x19 + field public static final int ERROR_DRM_DEVICE_REVOKED = 29; // 0x1d + field public static final int ERROR_DRM_DISALLOWED_OPERATION = 26; // 0x1a + field public static final int ERROR_DRM_LICENSE_ACQUISITION_FAILED = 25; // 0x19 field public static final int ERROR_DRM_OTHER = 30; // 0x1e field public static final int ERROR_DRM_PROVISIONING_FAILED = 24; // 0x18 - field public static final int ERROR_DRM_REVOKED = 29; // 0x1d + field public static final int ERROR_DRM_SCHEME_UNSUPPORTED = 23; // 0x17 field public static final int ERROR_DRM_SYSTEM_ERROR = 27; // 0x1b - field public static final int ERROR_DRM_UNAVAILABLE = 23; // 0x17 - field public static final int ERROR_MEDIA_MANIFEST = 10; // 0xa - field public static final int ERROR_MEDIA_OTHER = 12; // 0xc - field public static final int ERROR_MEDIA_PARSER = 11; // 0xb - field public static final int ERROR_NETWORK_BAD_STATUS = 5; // 0x5 - field public static final int ERROR_NETWORK_CLOSED = 8; // 0x8 - field public static final int ERROR_NETWORK_CONNECT = 4; // 0x4 - field public static final int ERROR_NETWORK_DNS = 6; // 0x6 - field public static final int ERROR_NETWORK_OFFLINE = 3; // 0x3 - field public static final int ERROR_NETWORK_OTHER = 9; // 0x9 - field public static final int ERROR_NETWORK_TIMEOUT = 7; // 0x7 + field public static final int ERROR_IO_BAD_HTTP_STATUS = 5; // 0x5 + field public static final int ERROR_IO_CONNECTION_CLOSED = 8; // 0x8 + field public static final int ERROR_IO_CONNECTION_TIMEOUT = 7; // 0x7 + field public static final int ERROR_IO_DNS_FAILED = 6; // 0x6 + field public static final int ERROR_IO_FILE_NOT_FOUND = 31; // 0x1f + field public static final int ERROR_IO_NETWORK_CONNECTION_FAILED = 4; // 0x4 + field public static final int ERROR_IO_NETWORK_UNAVAILABLE = 3; // 0x3 + field public static final int ERROR_IO_NO_PERMISSION = 32; // 0x20 + field public static final int ERROR_IO_OTHER = 9; // 0x9 field public static final int ERROR_OTHER = 1; // 0x1 + field public static final int ERROR_PARSING_CONTAINER_MALFORMED = 11; // 0xb + field public static final int ERROR_PARSING_CONTAINER_UNSUPPORTED = 34; // 0x22 + field public static final int ERROR_PARSING_MANIFEST_MALFORMED = 10; // 0xa + field public static final int ERROR_PARSING_MANIFEST_UNSUPPORTED = 33; // 0x21 + field public static final int ERROR_PARSING_OTHER = 12; // 0xc field public static final int ERROR_PLAYER_BEHIND_LIVE_WINDOW = 21; // 0x15 field public static final int ERROR_PLAYER_OTHER = 22; // 0x16 field public static final int ERROR_PLAYER_REMOTE = 20; // 0x14 diff --git a/core/api/system-current.txt b/core/api/system-current.txt index e80615a0801a..96a23b2a25ec 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -1528,6 +1528,9 @@ package android.app.search { method public boolean shouldHide(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.app.search.SearchTarget> CREATOR; + field public static final String LAYOUT_TYPE_ICON = "icon"; + field public static final String LAYOUT_TYPE_ICON_ROW = "icon_row"; + field public static final String LAYOUT_TYPE_SHORT_ICON_ROW = "short_icon_row"; field public static final int RESULT_TYPE_APPLICATION = 1; // 0x1 field public static final int RESULT_TYPE_SHORTCUT = 2; // 0x2 field public static final int RESULT_TYPE_SLICE = 4; // 0x4 @@ -1541,7 +1544,7 @@ package android.app.search { method @NonNull public android.app.search.SearchTarget.Builder setExtras(@NonNull android.os.Bundle); method @NonNull public android.app.search.SearchTarget.Builder setPackageName(@NonNull String); method @NonNull public android.app.search.SearchTarget.Builder setParentId(@NonNull String); - method @NonNull public android.app.search.SearchTarget.Builder setScore(float); + method @NonNull public android.app.search.SearchTarget.Builder setScore(@FloatRange(from=0.0f, to=1.0f) float); method @NonNull public android.app.search.SearchTarget.Builder setSearchAction(@Nullable android.app.search.SearchAction); method @NonNull public android.app.search.SearchTarget.Builder setShortcutInfo(@NonNull android.content.pm.ShortcutInfo); method @NonNull public android.app.search.SearchTarget.Builder setShouldHide(boolean); diff --git a/core/java/android/app/ApplicationExitInfo.java b/core/java/android/app/ApplicationExitInfo.java index 8574678a5a02..4f94c9b5045b 100644 --- a/core/java/android/app/ApplicationExitInfo.java +++ b/core/java/android/app/ApplicationExitInfo.java @@ -325,6 +325,15 @@ public final class ApplicationExitInfo implements Parcelable { */ public static final int SUBREASON_ISOLATED_NOT_NEEDED = 17; + /** + * The process was killed because it's in forced-app-standby state, and it's cached and + * its uid state is idle; this would be set only when the reason is {@link #REASON_OTHER}. + * + * For internal use only. + * @hide + */ + public static final int SUBREASON_CACHED_IDLE_FORCED_APP_STANDBY = 18; + // If there is any OEM code which involves additional app kill reasons, it should // be categorized in {@link #REASON_OTHER}, with subreason code starting from 1000. @@ -435,6 +444,13 @@ public final class ApplicationExitInfo implements Parcelable { */ private IParcelFileDescriptorRetriever mNativeTombstoneRetriever; + /** + * Whether or not we've logged this into the statsd. + * + * for system internal use only, will not retain across processes. + */ + private boolean mLoggedInStatsd; + /** @hide */ @IntDef(prefix = { "REASON_" }, value = { REASON_UNKNOWN, @@ -881,6 +897,24 @@ public final class ApplicationExitInfo implements Parcelable { mNativeTombstoneRetriever = retriever; } + /** + * @see #mLoggedInStatsd + * + * @hide + */ + public boolean isLoggedInStatsd() { + return mLoggedInStatsd; + } + + /** + * @see #mLoggedInStatsd + * + * @hide + */ + public void setLoggedInStatsd(boolean loggedInStatsd) { + mLoggedInStatsd = loggedInStatsd; + } + @Override public int describeContents() { return 0; diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 9210d6f9aed8..2dcdd07c9946 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -5070,7 +5070,7 @@ public class Notification implements Parcelable if (profileBadge != null) { contentView.setImageViewBitmap(R.id.profile_badge, profileBadge); contentView.setViewVisibility(R.id.profile_badge, View.VISIBLE); - if (isColorized(p)) { + if (isBackgroundColorized(p)) { contentView.setDrawableTint(R.id.profile_badge, false, getPrimaryTextColor(p), PorterDuff.Mode.SRC_ATOP); } @@ -5257,7 +5257,7 @@ public class Notification implements Parcelable private void updateBackgroundColor(RemoteViews contentView, StandardTemplateParams p) { - if (isColorized(p)) { + if (isBackgroundColorized(p)) { contentView.setInt(R.id.status_bar_latest_event_content, "setBackgroundColor", getBackgroundColor(p)); } else { @@ -5541,8 +5541,14 @@ public class Notification implements Parcelable return true; } - private boolean isColorized(StandardTemplateParams p) { - return p.allowColorization && mN.isColorized(); + /** + * Determines if the notification should be colorized *for the purposes of applying colors*. + * If this is the minimized view of a colorized notification, or if the app did not provide + * a color to colorize with, this will return false so that internal coloring logic can + * still render the notification normally. + */ + private boolean isBackgroundColorized(StandardTemplateParams p) { + return p.allowColorization && mN.color != COLOR_DEFAULT && mN.isColorized(); } private boolean isCallActionColorCustomizable() { @@ -5550,7 +5556,8 @@ public class Notification implements Parcelable // that is only used for disallowing colorization of headers for the minimized state, // and neither of those conditions applies when showing actions. // Not requiring StandardTemplateParams as an argument simplifies the creation process. - return mN.isColorized() && mContext.getResources().getBoolean( + return mN.color != COLOR_DEFAULT && mN.isColorized() + && mContext.getResources().getBoolean( R.bool.config_callNotificationActionColorsRequireColorized); } @@ -5594,7 +5601,8 @@ public class Notification implements Parcelable private void bindSnoozeAction(RemoteViews big, StandardTemplateParams p) { boolean hideSnoozeButton = mN.isForegroundService() || mN.fullScreenIntent != null - || isColorized(p) || p.mViewType == StandardTemplateParams.VIEW_TYPE_HEADS_UP; + || isBackgroundColorized(p) + || p.mViewType == StandardTemplateParams.VIEW_TYPE_HEADS_UP; big.setBoolean(R.id.snooze_button, "setEnabled", !hideSnoozeButton); if (hideSnoozeButton) { // Only hide; NotificationContentView will show it when it adds the click listener @@ -6110,7 +6118,7 @@ public class Notification implements Parcelable background = outResultColor[0].getDefaultColor(); textColor = ContrastColorUtil.resolvePrimaryColor(mContext, background, mInNightMode); - } else if (mTintActionButtons && !mInNightMode && !isColorized(p)) { + } else if (mTintActionButtons && !mInNightMode && !isBackgroundColorized(p)) { textColor = getAccentColor(p); } else { textColor = getPrimaryTextColor(p); @@ -6276,14 +6284,15 @@ public class Notification implements Parcelable * Gets the standard action button color */ private @ColorInt int getStandardActionColor(Notification.StandardTemplateParams p) { - return mTintActionButtons || isColorized(p) ? getAccentColor(p) : getNeutralColor(p); + return mTintActionButtons || isBackgroundColorized(p) + ? getAccentColor(p) : getNeutralColor(p); } /** * Gets a neutral color that can be used for icons or similar that should not stand out. */ private @ColorInt int getHeaderIconColor(StandardTemplateParams p) { - return isColorized(p) ? getSecondaryTextColor(p) : getNeutralColor(p); + return isBackgroundColorized(p) ? getSecondaryTextColor(p) : getNeutralColor(p); } /** @@ -6300,7 +6309,7 @@ public class Notification implements Parcelable * {@link #getSmallIconColor(StandardTemplateParams)}. */ private @ColorInt int getAccentColor(StandardTemplateParams p) { - if (isColorized(p)) { + if (isBackgroundColorized(p)) { return getPrimaryTextColor(p); } int color = obtainThemeColor(R.attr.colorAccent, COLOR_INVALID); @@ -6315,7 +6324,7 @@ public class Notification implements Parcelable * color when colorized, or when not using theme color tints. */ private @ColorInt int getProtectionColor(StandardTemplateParams p) { - if (!isColorized(p)) { + if (!isBackgroundColorized(p)) { int color = obtainThemeColor(R.attr.colorBackgroundFloating, COLOR_INVALID); if (color != COLOR_INVALID) { return color; @@ -6329,7 +6338,7 @@ public class Notification implements Parcelable * Gets the theme's error color, or the primary text color for colorized notifications. */ private @ColorInt int getErrorColor(StandardTemplateParams p) { - if (!isColorized(p)) { + if (!isBackgroundColorized(p)) { int color = obtainThemeColor(R.attr.colorError, COLOR_INVALID); if (color != COLOR_INVALID) { return color; @@ -6350,7 +6359,7 @@ public class Notification implements Parcelable * Gets the contrast-adjusted version of the color provided by the app. */ private @ColorInt int getContrastColor(StandardTemplateParams p) { - if (isColorized(p)) { + if (isBackgroundColorized(p)) { return getPrimaryTextColor(p); } int rawColor = getRawColor(p); @@ -6493,7 +6502,6 @@ public class Notification implements Parcelable + " notification: " + mN.mShortcutId + " vs bubble: " + mN.mBubbleMetadata.getShortcutId()); } - validateColorizedHasColor(); // first, add any extras from the calling code if (mUserExtras != null) { @@ -6547,21 +6555,6 @@ public class Notification implements Parcelable return mN; } - // This code is executed on behalf of other apps' notifications, sometimes even by 3p apps, - // a use case that is not supported by the Compat Framework library. - @SuppressWarnings("AndroidFrameworkCompatChange") - private void validateColorizedHasColor() { - if (mN.color == COLOR_DEFAULT && mN.extras.getBoolean(EXTRA_COLORIZED)) { - if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.S) { - throw new IllegalArgumentException( - "Colorized notifications must set a color (other than COLOR_DEFAULT)."); - } else { - Log.w(TAG, "Colorized notifications must set a color (other than " - + "COLOR_DEFAULT). This is required for apps targeting S."); - } - } - } - /** * Returns the color for the given Theme.DeviceDefault.DayNight attribute, or * defValue if that could not be completed @@ -6694,7 +6687,7 @@ public class Notification implements Parcelable * which must be resolved by the caller before being used. */ private @ColorInt int getUnresolvedBackgroundColor(StandardTemplateParams p) { - return isColorized(p) ? getRawColor(p) : COLOR_DEFAULT; + return isBackgroundColorized(p) ? getRawColor(p) : COLOR_DEFAULT; } /** @@ -6880,12 +6873,14 @@ public class Notification implements Parcelable } /** - * @return true if this notification is colorized. + * @return true if this notification is colorized *for the purposes of ranking*. If the + * {@link #color} is {@link #COLOR_DEFAULT} this will be true, even though the actual + * appearance of the notification may not be "colorized". * * @hide */ public boolean isColorized() { - return color != COLOR_DEFAULT && extras.getBoolean(EXTRA_COLORIZED) + return extras.getBoolean(EXTRA_COLORIZED) && (hasColorizedPermission() || isForegroundService()); } diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java index 6553b61ebbc2..1837fb860b73 100644 --- a/core/java/android/app/NotificationChannel.java +++ b/core/java/android/app/NotificationChannel.java @@ -260,6 +260,8 @@ public final class NotificationChannel implements Parcelable { private boolean mDemoted = false; private boolean mImportantConvo = false; private long mDeletedTime = DEFAULT_DELETION_TIME_MS; + // If the sound for this channel is missing, e.g. after restore. + private boolean mIsSoundMissing; /** * Creates a notification channel. @@ -715,6 +717,13 @@ public final class NotificationChannel implements Parcelable { } /** + * @hide + */ + public boolean isSoundMissing() { + return mIsSoundMissing; + } + + /** * Returns the audio attributes for sound played by notifications posted to this channel. */ public AudioAttributes getAudioAttributes() { @@ -998,8 +1007,9 @@ public final class NotificationChannel implements Parcelable { // according to the docs because canonicalize method has to handle canonical uris as well. Uri canonicalizedUri = contentResolver.canonicalize(uri); if (canonicalizedUri == null) { - // We got a null because the uri in the backup does not exist here, so we return default - return Settings.System.DEFAULT_NOTIFICATION_URI; + // We got a null because the uri in the backup does not exist here. + mIsSoundMissing = true; + return null; } return contentResolver.uncanonicalize(canonicalizedUri); } diff --git a/core/java/android/app/Presentation.java b/core/java/android/app/Presentation.java index ad903642c908..e90bf86f175d 100644 --- a/core/java/android/app/Presentation.java +++ b/core/java/android/app/Presentation.java @@ -37,7 +37,8 @@ import android.view.Window; import android.view.WindowManager; import android.view.WindowManager.LayoutParams.WindowType; -import com.android.internal.util.Preconditions; +import java.util.Objects; + /** * Base class for presentations. * <p> @@ -153,7 +154,7 @@ public class Presentation extends Dialog { private final Display mDisplay; private final DisplayManager mDisplayManager; - private final Handler mHandler = new Handler(Preconditions.checkNotNull(Looper.myLooper(), + private final Handler mHandler = new Handler(Objects.requireNonNull(Looper.myLooper(), "Presentation must be constructed on a looper thread.")); /** diff --git a/core/java/android/app/search/SearchContext.java b/core/java/android/app/search/SearchContext.java index 3e345fa93d7b..8f584cc712c5 100644 --- a/core/java/android/app/search/SearchContext.java +++ b/core/java/android/app/search/SearchContext.java @@ -62,7 +62,7 @@ public final class SearchContext implements Parcelable { * @param resultTypes {@link SearchTarget.SearchResultType}s combined using bit OR operation * @param timeoutMillis timeout before client renders its own fallback result */ - public SearchContext(int resultTypes, int timeoutMillis) { + public SearchContext(@SearchTarget.SearchResultType int resultTypes, int timeoutMillis) { this(resultTypes, timeoutMillis, new Bundle()); } diff --git a/core/java/android/app/search/SearchTarget.java b/core/java/android/app/search/SearchTarget.java index 56c5ddf9ace7..6d638d47f525 100644 --- a/core/java/android/app/search/SearchTarget.java +++ b/core/java/android/app/search/SearchTarget.java @@ -15,9 +15,11 @@ */ package android.app.search; +import android.annotation.FloatRange; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.StringDef; import android.annotation.SystemApi; import android.app.slice.SliceManager; import android.appwidget.AppWidgetProviderInfo; @@ -66,6 +68,24 @@ public final class SearchTarget implements Parcelable { public static final int RESULT_TYPE_SHORTCUT = 1 << 1; public static final int RESULT_TYPE_SLICE = 1 << 2; public static final int RESULT_TYPE_WIDGETS = 1 << 3; + + // ------ + // | icon | + // ------ + // text + public static final String LAYOUT_TYPE_ICON = "icon"; + + // ------ ------ ------ + // | | title |(opt)| |(opt)| + // | icon | subtitle (optional) | icon| | icon| + // ------ ------ ------ + public static final String LAYOUT_TYPE_ICON_ROW = "icon_row"; + + // ------ + // | icon | title / subtitle (optional) + // ------ + public static final String LAYOUT_TYPE_SHORT_ICON_ROW = "short_icon_row"; + /** * @hide */ @@ -80,6 +100,17 @@ public final class SearchTarget implements Parcelable { private final int mResultType; /** + * @hide + */ + @StringDef(prefix = {"LAYOUT_TYPE_"}, value = { + LAYOUT_TYPE_ICON, + LAYOUT_TYPE_ICON_ROW, + LAYOUT_TYPE_SHORT_ICON_ROW, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SearchLayoutType {} + + /** * Constant to express how the group of {@link SearchTarget} should be rendered on * the client side. (e.g., "icon", "icon_row", "short_icon_row") */ @@ -178,7 +209,7 @@ public final class SearchTarget implements Parcelable { * Retrieves the layout type. */ @NonNull - public String getLayoutType() { + public @SearchLayoutType String getLayoutType() { return mLayoutType; } @@ -337,7 +368,7 @@ public final class SearchTarget implements Parcelable { private Bundle mExtras; public Builder(@SearchResultType int resultType, - @NonNull String layoutType, + @SearchLayoutType @NonNull String layoutType, @NonNull String id) { mId = id; mLayoutType = Objects.requireNonNull(layoutType); @@ -433,13 +464,13 @@ public final class SearchTarget implements Parcelable { * Sets the score of the object. */ @NonNull - public Builder setScore(float score) { + public Builder setScore(@FloatRange(from = 0.0f, to = 1.0f) float score) { mScore = score; return this; } /** - * Sets whether the result should be hidden by default inside client. + * Sets whether the result should be hidden (e.g. not visible) by default inside client. */ @NonNull public Builder setShouldHide(boolean shouldHide) { diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 0ca6d74c6759..40326631402f 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -1770,13 +1770,13 @@ public final class BluetoothDevice implements Parcelable { * * <p>This API is asynchronous and {@link #ACTION_UUID} intent is sent, * with the UUIDs supported by the remote end. If there is an error - * in getting the SDP records or if the process takes a long time, - * {@link #ACTION_UUID} intent is sent with the UUIDs that is currently - * present in the cache. Clients should use the {@link #getUuids} to get UUIDs + * in getting the SDP records or if the process takes a long time, or the device is bonding and + * we have its UUIDs cached, {@link #ACTION_UUID} intent is sent with the UUIDs that is + * currently present in the cache. Clients should use the {@link #getUuids} to get UUIDs * if service discovery is not to be performed. * * @return False if the check fails, True if the process of initiating an ACL connection - * to the remote device was started. + * to the remote device was started or cached UUIDs will be broadcast. */ @RequiresLegacyBluetoothPermission @RequiresBluetoothConnectPermission diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index cc1aeeb92685..b52955d035b5 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -926,6 +926,23 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing } /** + * @hide + */ + @RequiresPermission(USE_BIOMETRIC_INTERNAL) + public void onUiReady(int sensorId) { + if (mService == null) { + Slog.w(TAG, "onUiReady: no fingerprint service"); + return; + } + + try { + mService.onUiReady(sensorId); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** * Determine if there is at least one fingerprint enrolled. * * @return true if at least one fingerprint is enrolled, false otherwise @@ -1450,7 +1467,6 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing @Override // binder call public void onUdfpsPointerUp(int sensorId) { mHandler.obtainMessage(MSG_UDFPS_POINTER_UP, sensorId, 0).sendToTarget(); - } }; diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl index 833747f19a0c..936f3d6b2788 100644 --- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl +++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl @@ -160,6 +160,9 @@ interface IFingerprintService { // Notifies about a finger leaving the sensor area. void onPointerUp(int sensorId); + // Notifies about the fingerprint UI being ready (e.g. HBM illumination is enabled). + void onUiReady(int sensorId); + // Sets the controller for managing the UDFPS overlay. void setUdfpsOverlayController(in IUdfpsOverlayController controller); diff --git a/core/java/android/net/vcn/VcnNetworkPolicyResult.java b/core/java/android/net/vcn/VcnNetworkPolicyResult.java index 5e938200639c..14e70cfeb18a 100644 --- a/core/java/android/net/vcn/VcnNetworkPolicyResult.java +++ b/core/java/android/net/vcn/VcnNetworkPolicyResult.java @@ -87,6 +87,16 @@ public final class VcnNetworkPolicyResult implements Parcelable { && mNetworkCapabilities.equals(that.mNetworkCapabilities); } + @Override + public String toString() { + return "VcnNetworkPolicyResult { " + + "mIsTeardownRequested = " + + mIsTearDownRequested + + ", mNetworkCapabilities" + + mNetworkCapabilities + + " }"; + } + /** {@inheritDoc} */ @Override public int describeContents() { diff --git a/core/java/android/net/vcn/VcnUnderlyingNetworkPolicy.java b/core/java/android/net/vcn/VcnUnderlyingNetworkPolicy.java index b47d5642419e..b0d4f3be248f 100644 --- a/core/java/android/net/vcn/VcnUnderlyingNetworkPolicy.java +++ b/core/java/android/net/vcn/VcnUnderlyingNetworkPolicy.java @@ -85,6 +85,11 @@ public final class VcnUnderlyingNetworkPolicy implements Parcelable { return mVcnNetworkPolicyResult.equals(that.mVcnNetworkPolicyResult); } + @Override + public String toString() { + return mVcnNetworkPolicyResult.toString(); + } + /** {@inheritDoc} */ @Override public int describeContents() { diff --git a/core/java/android/os/AggregateBatteryConsumer.java b/core/java/android/os/AggregateBatteryConsumer.java index 449e3aeb6be6..ee86265e81ad 100644 --- a/core/java/android/os/AggregateBatteryConsumer.java +++ b/core/java/android/os/AggregateBatteryConsumer.java @@ -18,6 +18,8 @@ package android.os; import android.annotation.NonNull; +import java.io.PrintWriter; + /** * Contains power consumption data across the entire device. * @@ -38,6 +40,11 @@ public final class AggregateBatteryConsumer extends BatteryConsumer implements P } @Override + public void dump(PrintWriter pw, boolean skipEmptyComponents) { + mPowerComponents.dump(pw, skipEmptyComponents); + } + + @Override public void writeToParcel(@NonNull Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeDouble(mConsumedPowerMah); diff --git a/core/java/android/os/BatteryConsumer.java b/core/java/android/os/BatteryConsumer.java index 6b628b0140e6..edb30b0f26ca 100644 --- a/core/java/android/os/BatteryConsumer.java +++ b/core/java/android/os/BatteryConsumer.java @@ -19,6 +19,7 @@ package android.os; import android.annotation.IntDef; import android.annotation.NonNull; +import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -27,7 +28,7 @@ import java.lang.annotation.RetentionPolicy; * * @hide */ -public class BatteryConsumer { +public abstract class BatteryConsumer { /** * Power usage component, describing the particular part of the system @@ -85,12 +86,37 @@ public class BatteryConsumer { public static final int FIRST_CUSTOM_POWER_COMPONENT_ID = 1000; public static final int LAST_CUSTOM_POWER_COMPONENT_ID = 9999; + private static final String[] sPowerComponentNames = new String[POWER_COMPONENT_COUNT]; + + static { + // Assign individually to avoid future mismatch + sPowerComponentNames[POWER_COMPONENT_SCREEN] = "screen"; + sPowerComponentNames[POWER_COMPONENT_CPU] = "cpu"; + sPowerComponentNames[POWER_COMPONENT_BLUETOOTH] = "bluetooth"; + sPowerComponentNames[POWER_COMPONENT_CAMERA] = "camera"; + sPowerComponentNames[POWER_COMPONENT_AUDIO] = "audio"; + sPowerComponentNames[POWER_COMPONENT_VIDEO] = "video"; + sPowerComponentNames[POWER_COMPONENT_FLASHLIGHT] = "flashlight"; + sPowerComponentNames[POWER_COMPONENT_SYSTEM_SERVICES] = "system_services"; + sPowerComponentNames[POWER_COMPONENT_MOBILE_RADIO] = "mobile_radio"; + sPowerComponentNames[POWER_COMPONENT_SENSORS] = "sensors"; + sPowerComponentNames[POWER_COMPONENT_GNSS] = "gnss"; + sPowerComponentNames[POWER_COMPONENT_WIFI] = "wifi"; + sPowerComponentNames[POWER_COMPONENT_WAKELOCK] = "wakelock"; + sPowerComponentNames[POWER_COMPONENT_MEMORY] = "memory"; + sPowerComponentNames[POWER_COMPONENT_PHONE] = "phone"; + sPowerComponentNames[POWER_COMPONENT_AMBIENT_DISPLAY] = "ambient_display"; + sPowerComponentNames[POWER_COMPONENT_IDLE] = "idle"; + sPowerComponentNames[POWER_COMPONENT_REATTRIBUTED_TO_OTHER_CONSUMERS] = "reattributed"; + } + /** * Identifiers of models used for power estimation. * * @hide */ @IntDef(prefix = {"POWER_MODEL_"}, value = { + POWER_MODEL_UNDEFINED, POWER_MODEL_POWER_PROFILE, POWER_MODEL_MEASURED_ENERGY, }) @@ -99,15 +125,20 @@ public class BatteryConsumer { } /** + * Unspecified power model. + */ + public static final int POWER_MODEL_UNDEFINED = 0; + + /** * Power model that is based on average consumption rates that hardware components * consume in various states. */ - public static final int POWER_MODEL_POWER_PROFILE = 0; + public static final int POWER_MODEL_POWER_PROFILE = 1; /** * Power model that is based on energy consumption measured by on-device power monitors. */ - public static final int POWER_MODEL_MEASURED_ENERGY = 1; + public static final int POWER_MODEL_MEASURED_ENERGY = 2; protected final PowerComponents mPowerComponents; @@ -197,6 +228,41 @@ public class BatteryConsumer { mPowerComponents.writeToParcel(dest, flags); } + /** + * Returns the name of the specified component. Intended for logging and debugging. + */ + public static String powerComponentIdToString(@BatteryConsumer.PowerComponent int componentId) { + return sPowerComponentNames[componentId]; + } + + /** + * Returns the name of the specified power model. Intended for logging and debugging. + */ + public static String powerModelToString(@BatteryConsumer.PowerModel int powerModel) { + switch (powerModel) { + case BatteryConsumer.POWER_MODEL_MEASURED_ENERGY: + return "measured energy"; + case BatteryConsumer.POWER_MODEL_POWER_PROFILE: + return "power profile"; + default: + return ""; + } + } + + /** + * Prints the stats in a human-readable format. + */ + public void dump(PrintWriter pw) { + dump(pw, true); + } + + /** + * Prints the stats in a human-readable format. + * + * @param skipEmptyComponents if true, omit any power components with a zero amount. + */ + public abstract void dump(PrintWriter pw, boolean skipEmptyComponents); + protected abstract static class BaseBuilder<T extends BaseBuilder<?>> { final PowerComponents.Builder mPowerComponentsBuilder; diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index eec6810fa8bc..c97d1f8bcf02 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -51,6 +51,7 @@ import android.view.Display; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.BatterySipper; import com.android.internal.os.BatteryStatsHelper; +import com.android.internal.os.BatteryUsageStatsProvider; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -5299,154 +5300,19 @@ public abstract class BatteryStats implements Parcelable { pw.println(getDischargeAmountScreenDozeSinceCharge()); pw.println(); + final BatteryUsageStatsProvider provider = new BatteryUsageStatsProvider(context, this); + final BatteryUsageStats stats = provider.getBatteryUsageStats( + new BatteryUsageStatsQuery.Builder() + .setMaxStatsAgeMs(0) + .includePowerModels() + .build()); + stats.dump(pw, prefix); + final BatteryStatsHelper helper = new BatteryStatsHelper(context, false, wifiOnly); helper.create(this); helper.refreshStats(which, UserHandle.USER_ALL); - List<BatterySipper> sippers = helper.getUsageList(); - if (sippers != null && sippers.size() > 0) { - pw.print(prefix); pw.println(" Estimated power use (mAh):"); - pw.print(prefix); pw.print(" Capacity: "); - printmAh(pw, helper.getPowerProfile().getBatteryCapacity()); - pw.print(", Computed drain: "); printmAh(pw, helper.getComputedPower()); - pw.print(", actual drain: "); printmAh(pw, helper.getMinDrainedPower()); - if (helper.getMinDrainedPower() != helper.getMaxDrainedPower()) { - pw.print("-"); printmAh(pw, helper.getMaxDrainedPower()); - } - pw.println(); - for (int i=0; i<sippers.size(); i++) { - final BatterySipper bs = sippers.get(i); - pw.print(prefix); - switch (bs.drainType) { - case AMBIENT_DISPLAY: - pw.print(" Ambient display: "); - break; - case IDLE: - pw.print(" Idle: "); - break; - case CELL: - pw.print(" Cell standby: "); - break; - case PHONE: - pw.print(" Phone calls: "); - break; - case WIFI: - pw.print(" Wifi: "); - break; - case BLUETOOTH: - pw.print(" Bluetooth: "); - break; - case SCREEN: - pw.print(" Screen: "); - break; - case FLASHLIGHT: - pw.print(" Flashlight: "); - break; - case APP: - pw.print(" Uid "); - UserHandle.formatUid(pw, bs.uidObj.getUid()); - pw.print(": "); - break; - case USER: - pw.print(" User "); pw.print(bs.userId); - pw.print(": "); - break; - case UNACCOUNTED: - pw.print(" Unaccounted: "); - break; - case OVERCOUNTED: - pw.print(" Over-counted: "); - break; - case CAMERA: - pw.print(" Camera: "); - break; - default: - pw.print(" ???: "); - break; - } - printmAh(pw, bs.totalPowerMah); - - if (bs.usagePowerMah != bs.totalPowerMah) { - // If the usage (generic power) isn't the whole amount, we list out - // what components are involved in the calculation. - - pw.print(" ("); - if (bs.usagePowerMah != 0) { - pw.print(" usage="); - printmAh(pw, bs.usagePowerMah); - } - if (bs.cpuPowerMah != 0) { - pw.print(" cpu="); - printmAh(pw, bs.cpuPowerMah); - } - if (bs.wakeLockPowerMah != 0) { - pw.print(" wake="); - printmAh(pw, bs.wakeLockPowerMah); - } - if (bs.mobileRadioPowerMah != 0) { - pw.print(" radio="); - printmAh(pw, bs.mobileRadioPowerMah); - } - if (bs.wifiPowerMah != 0) { - pw.print(" wifi="); - printmAh(pw, bs.wifiPowerMah); - } - if (bs.bluetoothPowerMah != 0) { - pw.print(" bt="); - printmAh(pw, bs.bluetoothPowerMah); - } - if (bs.gpsPowerMah != 0) { - pw.print(" gps="); - printmAh(pw, bs.gpsPowerMah); - } - if (bs.sensorPowerMah != 0) { - pw.print(" sensor="); - printmAh(pw, bs.sensorPowerMah); - } - if (bs.cameraPowerMah != 0) { - pw.print(" camera="); - printmAh(pw, bs.cameraPowerMah); - } - if (bs.flashlightPowerMah != 0) { - pw.print(" flash="); - printmAh(pw, bs.flashlightPowerMah); - } - if (bs.customMeasuredPowerMah != null) { - for (int idx = 0; idx < bs.customMeasuredPowerMah.length; idx++) { - final double customPowerMah = bs.customMeasuredPowerMah[idx]; - if (customPowerMah != 0) { - pw.print(" custom[" + idx + "]="); - printmAh(pw, customPowerMah); - } - } - } - pw.print(" )"); - } - - // If there is additional smearing information, include it. - if (bs.totalSmearedPowerMah != bs.totalPowerMah) { - pw.print(" Including smearing: "); - printmAh(pw, bs.totalSmearedPowerMah); - pw.print(" ("); - if (bs.screenPowerMah != 0) { - pw.print(" screen="); - printmAh(pw, bs.screenPowerMah); - } - if (bs.proportionalSmearMah != 0) { - pw.print(" proportional="); - printmAh(pw, bs.proportionalSmearMah); - } - pw.print(" )"); - } - if (bs.shouldHide) { - pw.print(" Excluded from smearing"); - } - - pw.println(); - } - pw.println(); - } - sippers = helper.getMobilemsppList(); + final List<BatterySipper> sippers = helper.getMobilemsppList(); if (sippers != null && sippers.size() > 0) { pw.print(prefix); pw.println(" Per-app mobile ms per packet:"); long totalTime = 0; diff --git a/core/java/android/os/BatteryUsageStats.java b/core/java/android/os/BatteryUsageStats.java index 6bc861f87e48..32256677c7f1 100644 --- a/core/java/android/os/BatteryUsageStats.java +++ b/core/java/android/os/BatteryUsageStats.java @@ -23,10 +23,13 @@ import android.util.SparseArray; import com.android.internal.os.BatteryStatsHistory; import com.android.internal.os.BatteryStatsHistoryIterator; +import com.android.internal.os.PowerCalculator; +import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; +import java.util.Comparator; import java.util.List; /** @@ -73,6 +76,7 @@ public final class BatteryUsageStats implements Parcelable { private final int mDischargePercentage; private final long mStatsStartTimestampMs; + private final double mBatteryCapacityMah; private final double mDischargedPowerLowerBound; private final double mDischargedPowerUpperBound; private final long mBatteryTimeRemainingMs; @@ -86,6 +90,7 @@ public final class BatteryUsageStats implements Parcelable { private BatteryUsageStats(@NonNull Builder builder) { mStatsStartTimestampMs = builder.mStatsStartTimestampMs; + mBatteryCapacityMah = builder.mBatteryCapacityMah; mDischargePercentage = builder.mDischargePercentage; mDischargedPowerLowerBound = builder.mDischargedPowerLowerBoundMah; mDischargedPowerUpperBound = builder.mDischargedPowerUpperBoundMah; @@ -145,6 +150,13 @@ public final class BatteryUsageStats implements Parcelable { } /** + * Returns battery capacity in milli-amp-hours. + */ + public double getBatteryCapacity() { + return mBatteryCapacityMah; + } + + /** * Portion of battery charge drained since BatteryStats reset (e.g. due to being fully * charged), as percentage of the full charge in the range [0:100] */ @@ -217,6 +229,7 @@ public final class BatteryUsageStats implements Parcelable { private BatteryUsageStats(@NonNull Parcel source) { mStatsStartTimestampMs = source.readLong(); + mBatteryCapacityMah = source.readDouble(); mDischargePercentage = source.readInt(); mDischargedPowerLowerBound = source.readDouble(); mDischargedPowerUpperBound = source.readDouble(); @@ -274,6 +287,7 @@ public final class BatteryUsageStats implements Parcelable { @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeLong(mStatsStartTimestampMs); + dest.writeDouble(mBatteryCapacityMah); dest.writeInt(mDischargePercentage); dest.writeDouble(mDischargedPowerLowerBound); dest.writeDouble(mDischargedPowerUpperBound); @@ -322,6 +336,104 @@ public final class BatteryUsageStats implements Parcelable { }; /** + * Prints the stats in a human-readable format. + */ + public void dump(PrintWriter pw, String prefix) { + pw.print(prefix); + pw.println(" Estimated power use (mAh):"); + pw.print(prefix); + pw.print(" Capacity: "); + PowerCalculator.printPowerMah(pw, getBatteryCapacity()); + pw.print(", Computed drain: "); + PowerCalculator.printPowerMah(pw, getConsumedPower()); + final Range<Double> dischargedPowerRange = getDischargedPowerRange(); + pw.print(", actual drain: "); + PowerCalculator.printPowerMah(pw, dischargedPowerRange.getLower()); + if (!dischargedPowerRange.getLower().equals(dischargedPowerRange.getUpper())) { + pw.print("-"); + PowerCalculator.printPowerMah(pw, dischargedPowerRange.getUpper()); + } + pw.println(); + + pw.println(" Global"); + final BatteryConsumer deviceConsumer = getAggregateBatteryConsumer( + AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE); + final BatteryConsumer appsConsumer = getAggregateBatteryConsumer( + AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS); + + for (int componentId = 0; componentId < BatteryConsumer.POWER_COMPONENT_COUNT; + componentId++) { + final double devicePowerMah = deviceConsumer.getConsumedPower(componentId); + final double appsPowerMah = appsConsumer.getConsumedPower(componentId); + if (devicePowerMah == 0 && appsPowerMah == 0) { + continue; + } + + final String componentName = BatteryConsumer.powerComponentIdToString(componentId); + printPowerComponent(pw, prefix, componentName, devicePowerMah, appsPowerMah, + deviceConsumer.getPowerModel(componentId), + deviceConsumer.getUsageDurationMillis(componentId)); + } + + for (int componentId = BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID; + componentId < BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + + mCustomPowerComponentNames.length; + componentId++) { + final double devicePowerMah = + deviceConsumer.getConsumedPowerForCustomComponent(componentId); + final double appsPowerMah = + appsConsumer.getConsumedPowerForCustomComponent(componentId); + if (devicePowerMah == 0 && appsPowerMah == 0) { + continue; + } + + printPowerComponent(pw, prefix, deviceConsumer.getCustomPowerComponentName(componentId), + devicePowerMah, appsPowerMah, + BatteryConsumer.POWER_MODEL_UNDEFINED, + deviceConsumer.getUsageDurationForCustomComponentMillis(componentId)); + } + + dumpSortedBatteryConsumers(pw, prefix, getUidBatteryConsumers()); + dumpSortedBatteryConsumers(pw, prefix, getUserBatteryConsumers()); + } + + private void printPowerComponent(PrintWriter pw, String prefix, String componentName, + double devicePowerMah, double appsPowerMah, int powerModel, long durationMs) { + StringBuilder sb = new StringBuilder(); + sb.append(prefix).append(" ").append(componentName).append(": ") + .append(PowerCalculator.formatCharge(devicePowerMah)); + if (powerModel != BatteryConsumer.POWER_MODEL_UNDEFINED + && powerModel != BatteryConsumer.POWER_MODEL_POWER_PROFILE) { + sb.append(" ["); + sb.append(BatteryConsumer.powerModelToString(powerModel)); + sb.append("]"); + } + sb.append(" apps: ").append(PowerCalculator.formatCharge(appsPowerMah)); + if (durationMs != 0) { + sb.append(" duration: "); + BatteryStats.formatTimeMs(sb, durationMs); + } + + pw.println(sb.toString()); + } + + private void dumpSortedBatteryConsumers(PrintWriter pw, String prefix, + List<? extends BatteryConsumer> batteryConsumers) { + batteryConsumers.sort( + Comparator.<BatteryConsumer>comparingDouble(BatteryConsumer::getConsumedPower) + .reversed()); + for (BatteryConsumer consumer : batteryConsumers) { + if (consumer.getConsumedPower() == 0) { + continue; + } + pw.print(prefix); + pw.print(" "); + consumer.dump(pw); + pw.println(); + } + } + + /** * Builder for BatteryUsageStats. */ public static final class Builder { @@ -329,6 +441,7 @@ public final class BatteryUsageStats implements Parcelable { private final String[] mCustomPowerComponentNames; private final boolean mIncludePowerModels; private long mStatsStartTimestampMs; + private double mBatteryCapacityMah; private int mDischargePercentage; private double mDischargedPowerLowerBoundMah; private double mDischargedPowerUpperBoundMah; @@ -365,6 +478,14 @@ public final class BatteryUsageStats implements Parcelable { } /** + * Sets the battery capacity in milli-amp-hours. + */ + public Builder setBatteryCapacity(double batteryCapacityMah) { + mBatteryCapacityMah = batteryCapacityMah; + return this; + } + + /** * Sets the timestamp of the latest battery stats reset, in milliseconds. */ public Builder setStatsStartTimestamp(long statsStartTimestampMs) { diff --git a/core/java/android/os/IRecoverySystem.aidl b/core/java/android/os/IRecoverySystem.aidl index 9368b68a91c6..88bdb7f6f00b 100644 --- a/core/java/android/os/IRecoverySystem.aidl +++ b/core/java/android/os/IRecoverySystem.aidl @@ -23,6 +23,7 @@ import android.os.IRecoverySystemProgressListener; /** @hide */ interface IRecoverySystem { + boolean allocateSpaceForUpdate(in String packageFilePath); boolean uncrypt(in String packageFile, IRecoverySystemProgressListener listener); boolean setupBcb(in String command); boolean clearBcb(); diff --git a/core/java/android/os/PowerComponents.java b/core/java/android/os/PowerComponents.java index 47a2edccc640..964f1b681866 100644 --- a/core/java/android/os/PowerComponents.java +++ b/core/java/android/os/PowerComponents.java @@ -17,6 +17,10 @@ package android.os; import android.annotation.NonNull; +import com.android.internal.os.PowerCalculator; + +import java.io.PrintWriter; + /** * Contains details of battery attribution data broken down to individual power drain types * such as CPU, RAM, GPU etc. @@ -202,6 +206,37 @@ class PowerComponents { return max; } + public void dump(PrintWriter pw, boolean skipEmptyComponents) { + String separator = ""; + for (int componentId = 0; componentId < BatteryConsumer.POWER_COMPONENT_COUNT; + componentId++) { + final double componentPower = getConsumedPower(componentId); + if (skipEmptyComponents && componentPower == 0) { + continue; + } + pw.print(separator); separator = " "; + pw.print(BatteryConsumer.powerComponentIdToString(componentId)); + pw.print("="); + PowerCalculator.printPowerMah(pw, componentPower); + } + + final int customComponentCount = getCustomPowerComponentCount(); + for (int customComponentId = BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID; + customComponentId < BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + + customComponentCount; + customComponentId++) { + final double customComponentPower = + getConsumedPowerForCustomComponent(customComponentId); + if (skipEmptyComponents && customComponentPower == 0) { + continue; + } + pw.print(separator); separator = " "; + pw.print(getCustomPowerComponentName(customComponentId)); + pw.print("="); + PowerCalculator.printPowerMah(pw, customComponentPower); + } + } + /** * Builder for PowerComponents. */ diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java index 051447f9219b..944b71700450 100644 --- a/core/java/android/os/RecoverySystem.java +++ b/core/java/android/os/RecoverySystem.java @@ -672,6 +672,14 @@ public class RecoverySystem { if (!rs.setupBcb(command)) { throw new IOException("Setup BCB failed"); } + try { + if (!rs.allocateSpaceForUpdate(packageFile)) { + throw new IOException("Failed to allocate space for update " + + packageFile.getAbsolutePath()); + } + } catch (RemoteException e) { + e.rethrowAsRuntimeException(); + } // Having set up the BCB (bootloader control block), go ahead and reboot PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); @@ -1392,6 +1400,13 @@ public class RecoverySystem { } /** + * Talks to RecoverySystemService via Binder to allocate space + */ + private boolean allocateSpaceForUpdate(File packageFile) throws RemoteException { + return mService.allocateSpaceForUpdate(packageFile.getAbsolutePath()); + } + + /** * Talks to RecoverySystemService via Binder to clear up the BCB. */ private boolean clearBcb() { diff --git a/core/java/android/os/UidBatteryConsumer.java b/core/java/android/os/UidBatteryConsumer.java index b1fb570b4395..16a6c767da38 100644 --- a/core/java/android/os/UidBatteryConsumer.java +++ b/core/java/android/os/UidBatteryConsumer.java @@ -20,6 +20,9 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import com.android.internal.os.PowerCalculator; + +import java.io.PrintWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -112,6 +115,18 @@ public final class UidBatteryConsumer extends BatteryConsumer implements Parcela dest.writeLong(mTimeInBackgroundMs); } + @Override + public void dump(PrintWriter pw, boolean skipEmptyComponents) { + final double consumedPower = getConsumedPower(); + pw.print("UID "); + UserHandle.formatUid(pw, getUid()); + pw.print(": "); + PowerCalculator.printPowerMah(pw, consumedPower); + pw.print(" ( "); + mPowerComponents.dump(pw, skipEmptyComponents /* skipTotalPowerComponent */); + pw.print(" ) "); + } + @NonNull public static final Creator<UidBatteryConsumer> CREATOR = new Creator<UidBatteryConsumer>() { public UidBatteryConsumer createFromParcel(@NonNull Parcel source) { diff --git a/core/java/android/os/UserBatteryConsumer.java b/core/java/android/os/UserBatteryConsumer.java index d0d0d38a75d2..429d2c53a836 100644 --- a/core/java/android/os/UserBatteryConsumer.java +++ b/core/java/android/os/UserBatteryConsumer.java @@ -18,6 +18,9 @@ package android.os; import android.annotation.NonNull; +import com.android.internal.os.PowerCalculator; + +import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; @@ -52,6 +55,18 @@ public class UserBatteryConsumer extends BatteryConsumer implements Parcelable { dest.writeInt(mUserId); } + @Override + public void dump(PrintWriter pw, boolean skipEmptyComponents) { + final double consumedPower = getConsumedPower(); + pw.print("User "); + pw.print(mUserId); + pw.print(": "); + PowerCalculator.printPowerMah(pw, consumedPower); + pw.print(" ( "); + mPowerComponents.dump(pw, skipEmptyComponents /* skipTotalPowerComponent */); + pw.print(" ) "); + } + public static final Creator<UserBatteryConsumer> CREATOR = new Creator<UserBatteryConsumer>() { @Override diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index c51c50685402..3bdc54696df9 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -8545,9 +8545,10 @@ public final class Settings { "one_handed_tutorial_show_count"; /** - * Indicates whether ui translation is enabled. + * Toggle to enable/disable for the apps to use the Ui translation for Views. The value + * indicates whether the Ui translation is enabled by the user. * <p> - * Type: int (0 for false, 1 for true) + * Type: {@code int} ({@code 0} for disabled, {@code 1} for enabled) * * @hide */ diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java index 6c775852fcee..71f90fd28e3f 100644 --- a/core/java/android/service/notification/NotificationListenerService.java +++ b/core/java/android/service/notification/NotificationListenerService.java @@ -83,11 +83,11 @@ import java.util.Objects; * </intent-filter> * <meta-data * android:name="android.service.notification.default_filter_types" - * android:value="1,2"> + * android:value="conversations,alerting"> * </meta-data> * <meta-data * android:name="android.service.notification.disabled_filter_types" - * android:value="2"> + * android:value="ongoing,silent"> * </meta-data> * </service></pre> * diff --git a/core/java/android/window/PictureInPictureSurfaceTransaction.java b/core/java/android/window/PictureInPictureSurfaceTransaction.java index 96a8ac8c0587..dbf7eb34e273 100644 --- a/core/java/android/window/PictureInPictureSurfaceTransaction.java +++ b/core/java/android/window/PictureInPictureSurfaceTransaction.java @@ -24,6 +24,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.view.SurfaceControl; +import java.util.Arrays; import java.util.Objects; /** @@ -37,10 +38,11 @@ public final class PictureInPictureSurfaceTransaction implements Parcelable { public final float mPositionX; public final float mPositionY; - public final float mScaleX; - public final float mScaleY; + public final float[] mFloat9; + // Though this can be determined by mFloat9, it's easier to set the value directly public final float mRotation; + public final float mCornerRadius; private final Rect mWindowCrop = new Rect(); @@ -48,21 +50,19 @@ public final class PictureInPictureSurfaceTransaction implements Parcelable { public PictureInPictureSurfaceTransaction(Parcel in) { mPositionX = in.readFloat(); mPositionY = in.readFloat(); - mScaleX = in.readFloat(); - mScaleY = in.readFloat(); + mFloat9 = new float[9]; + in.readFloatArray(mFloat9); mRotation = in.readFloat(); mCornerRadius = in.readFloat(); mWindowCrop.set(Objects.requireNonNull(in.readTypedObject(Rect.CREATOR))); } public PictureInPictureSurfaceTransaction(float positionX, float positionY, - float scaleX, float scaleY, - float rotation, float cornerRadius, + float[] float9, float rotation, float cornerRadius, @Nullable Rect windowCrop) { mPositionX = positionX; mPositionY = positionY; - mScaleX = scaleX; - mScaleY = scaleY; + mFloat9 = Arrays.copyOf(float9, 9); mRotation = rotation; mCornerRadius = cornerRadius; if (windowCrop != null) { @@ -72,13 +72,14 @@ public final class PictureInPictureSurfaceTransaction implements Parcelable { public PictureInPictureSurfaceTransaction(PictureInPictureSurfaceTransaction other) { this(other.mPositionX, other.mPositionY, - other.mScaleX, other.mScaleY, - other.mRotation, other.mCornerRadius, - other.mWindowCrop); + other.mFloat9, other.mRotation, other.mCornerRadius, other.mWindowCrop); } - public Rect getWindowCrop() { - return new Rect(mWindowCrop); + /** @return {@link Matrix} from {@link #mFloat9} */ + public Matrix getMatrix() { + final Matrix matrix = new Matrix(); + matrix.setValues(mFloat9); + return matrix; } @Override @@ -88,8 +89,7 @@ public final class PictureInPictureSurfaceTransaction implements Parcelable { PictureInPictureSurfaceTransaction that = (PictureInPictureSurfaceTransaction) o; return Objects.equals(mPositionX, that.mPositionX) && Objects.equals(mPositionY, that.mPositionY) - && Objects.equals(mScaleX, that.mScaleX) - && Objects.equals(mScaleY, that.mScaleY) + && Arrays.equals(mFloat9, that.mFloat9) && Objects.equals(mRotation, that.mRotation) && Objects.equals(mCornerRadius, that.mCornerRadius) && Objects.equals(mWindowCrop, that.mWindowCrop); @@ -97,7 +97,7 @@ public final class PictureInPictureSurfaceTransaction implements Parcelable { @Override public int hashCode() { - return Objects.hash(mPositionX, mPositionY, mScaleX, mScaleY, + return Objects.hash(mPositionX, mPositionY, Arrays.hashCode(mFloat9), mRotation, mCornerRadius, mWindowCrop); } @@ -110,8 +110,7 @@ public final class PictureInPictureSurfaceTransaction implements Parcelable { public void writeToParcel(Parcel out, int flags) { out.writeFloat(mPositionX); out.writeFloat(mPositionY); - out.writeFloat(mScaleX); - out.writeFloat(mScaleY); + out.writeFloatArray(mFloat9); out.writeFloat(mRotation); out.writeFloat(mCornerRadius); out.writeTypedObject(mWindowCrop, 0 /* flags */); @@ -119,11 +118,11 @@ public final class PictureInPictureSurfaceTransaction implements Parcelable { @Override public String toString() { + final Matrix matrix = getMatrix(); return "PictureInPictureSurfaceTransaction(" + " posX=" + mPositionX + " posY=" + mPositionY - + " scaleX=" + mScaleX - + " scaleY=" + mScaleY + + " matrix=" + matrix.toShortString() + " rotation=" + mRotation + " cornerRadius=" + mCornerRadius + " crop=" + mWindowCrop @@ -134,15 +133,11 @@ public final class PictureInPictureSurfaceTransaction implements Parcelable { public static void apply(@NonNull PictureInPictureSurfaceTransaction surfaceTransaction, @NonNull SurfaceControl surfaceControl, @NonNull SurfaceControl.Transaction tx) { - final Matrix matrix = new Matrix(); - matrix.setScale(surfaceTransaction.mScaleX, surfaceTransaction.mScaleY); - if (surfaceTransaction.mRotation != 0) { - matrix.postRotate(surfaceTransaction.mRotation); - } + final Matrix matrix = surfaceTransaction.getMatrix(); tx.setMatrix(surfaceControl, matrix, new float[9]) .setPosition(surfaceControl, surfaceTransaction.mPositionX, surfaceTransaction.mPositionY) - .setWindowCrop(surfaceControl, surfaceTransaction.getWindowCrop()) + .setWindowCrop(surfaceControl, surfaceTransaction.mWindowCrop) .setCornerRadius(surfaceControl, surfaceTransaction.mCornerRadius); } diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java index 83def0cc1fd6..49a3e29b9d88 100644 --- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java +++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java @@ -32,6 +32,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.database.ContentObserver; import android.media.AudioAttributes; import android.media.Ringtone; @@ -597,7 +598,11 @@ public class AccessibilityShortcutController { } public AlertDialog.Builder getAlertDialogBuilder(Context context) { - return new AlertDialog.Builder(context); + final boolean inNightMode = (context.getResources().getConfiguration().uiMode + & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES; + final int themeId = inNightMode ? R.style.Theme_DeviceDefault_Dialog_Alert : + R.style.Theme_DeviceDefault_Light_Dialog_Alert; + return new AlertDialog.Builder(context, themeId); } public Toast makeToastFromText(Context context, CharSequence charSequence, int duration) { diff --git a/core/java/com/android/internal/jank/FrameTracker.java b/core/java/com/android/internal/jank/FrameTracker.java index 4d3f7745decf..4d5b90a9ccbf 100644 --- a/core/java/com/android/internal/jank/FrameTracker.java +++ b/core/java/com/android/internal/jank/FrameTracker.java @@ -167,6 +167,7 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener if (mBeginVsyncId != INVALID_ID) { mSurfaceControlWrapper.addJankStatsListener( FrameTracker.this, mSurfaceControl); + postTraceStartMarker(); } } } @@ -208,15 +209,9 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener public synchronized void begin() { mBeginVsyncId = mChoreographer.getVsyncId() + 1; mSession.setTimeStamp(System.nanoTime()); - mChoreographer.mChoreographer.postCallback(Choreographer.CALLBACK_INPUT, () -> { - synchronized (FrameTracker.this) { - if (mCancelled || mEndVsyncId != INVALID_ID) { - return; - } - mTracingStarted = true; - Trace.beginAsyncSection(mSession.getName(), (int) mBeginVsyncId); - } - }, null); + if (mSurfaceControl != null) { + postTraceStartMarker(); + } mRendererWrapper.addObserver(mObserver); if (DEBUG) { Log.d(TAG, "begin: " + mSession.getName() + ", begin=" + mBeginVsyncId); @@ -229,6 +224,18 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener } } + private void postTraceStartMarker() { + mChoreographer.mChoreographer.postCallback(Choreographer.CALLBACK_INPUT, () -> { + synchronized (FrameTracker.this) { + if (mCancelled || mEndVsyncId != INVALID_ID) { + return; + } + mTracingStarted = true; + Trace.beginAsyncSection(mSession.getName(), (int) mBeginVsyncId); + } + }, null); + } + /** * End the trace session of the CUJ. */ diff --git a/core/java/com/android/internal/os/BatteryChargeCalculator.java b/core/java/com/android/internal/os/BatteryChargeCalculator.java index 16f92efb922c..0690d1f3fae6 100644 --- a/core/java/com/android/internal/os/BatteryChargeCalculator.java +++ b/core/java/com/android/internal/os/BatteryChargeCalculator.java @@ -42,6 +42,8 @@ public class BatteryChargeCalculator extends PowerCalculator { batteryCapacityMah = batteryStats.getEstimatedBatteryCapacity(); } } + builder.setBatteryCapacity(batteryCapacityMah); + final double dischargedPowerLowerBoundMah = batteryStats.getLowDischargeAmountSinceCharge() * batteryCapacityMah / 100.0; final double dischargedPowerUpperBoundMah = diff --git a/core/java/com/android/internal/os/PowerCalculator.java b/core/java/com/android/internal/os/PowerCalculator.java index d139b4f0aa9a..4979ecbae8cb 100644 --- a/core/java/com/android/internal/os/PowerCalculator.java +++ b/core/java/com/android/internal/os/PowerCalculator.java @@ -24,6 +24,7 @@ import android.os.UidBatteryConsumer; import android.os.UserHandle; import android.util.SparseArray; +import java.io.PrintWriter; import java.util.List; import java.util.Locale; @@ -157,6 +158,12 @@ public abstract class PowerCalculator { } } + /** + * Prints formatted amount of power in milli-amp-hours. + */ + public static void printPowerMah(PrintWriter pw, double powerMah) { + pw.print(formatCharge(powerMah)); + } /** * Converts charge in mAh to string. diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl index f19a12340873..5ba192814b31 100644 --- a/core/java/com/android/internal/statusbar/IStatusBar.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl @@ -271,4 +271,9 @@ oneway interface IStatusBar * @param enable {@code true} if enable, otherwise set to {@code false}. */ void setNavigationBarLumaSamplingEnabled(int displayId, boolean enable); + + /** + * Triggers a GC in the system and status bar. + */ + void runGcForTest(); } diff --git a/core/java/com/android/internal/util/GcUtils.java b/core/java/com/android/internal/util/GcUtils.java new file mode 100644 index 000000000000..e37ba3c7e2ff --- /dev/null +++ b/core/java/com/android/internal/util/GcUtils.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.util; + +import android.util.Slog; + +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +/** + * A helper class to handle gc'ing a process, mainly used for testing. + * + * @hide + */ +public final class GcUtils { + private static final String TAG = GcUtils.class.getSimpleName(); + + /** + * Runs a GC and attempts to wait for finalization. + */ + public static void runGcAndFinalizersSync() { + Runtime.getRuntime().gc(); + Runtime.getRuntime().runFinalization(); + + final CountDownLatch fence = new CountDownLatch(1); + createFinalizationObserver(fence); + try { + do { + Runtime.getRuntime().gc(); + Runtime.getRuntime().runFinalization(); + } while (!fence.await(100, TimeUnit.MILLISECONDS)); + } catch (InterruptedException ex) { + throw new RuntimeException(ex); + } + Slog.v(TAG, "Running gc and finalizers"); + } + + /** + * Create the observer in the scope of a method to minimize the chance that + * it remains live in a DEX/machine register at the point of the fence guard. + * This must be kept to avoid R8 inlining it. + */ + private static void createFinalizationObserver(CountDownLatch fence) { + new Object() { + @Override + protected void finalize() throws Throwable { + try { + fence.countDown(); + } finally { + super.finalize(); + } + } + }; + } + + // Uninstantiable + private GcUtils() {} +} diff --git a/core/java/com/android/internal/util/Preconditions.java b/core/java/com/android/internal/util/Preconditions.java index 88e4e355000a..d2d822083a95 100644 --- a/core/java/com/android/internal/util/Preconditions.java +++ b/core/java/com/android/internal/util/Preconditions.java @@ -158,7 +158,7 @@ public class Preconditions { * be converted to a string using {@link String#valueOf(Object)} * @return the non-null reference that was validated * @throws NullPointerException if {@code reference} is null - * @deprecated - use {@link java.util.Objects.requireNonNull} instead. + * @deprecated - use {@link java.util.Objects#requireNonNull} instead. */ @Deprecated @UnsupportedAppUsage diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index 5eb1e0094725..56814c7eb774 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -2382,10 +2382,19 @@ android_media_AudioSystem_setSurroundFormatEnabled(JNIEnv *env, jobject thiz, return (jint)nativeToJavaStatus(status); } -static jint android_media_AudioSystem_get_FCC_8(JNIEnv *env, jobject thiz) { +static jint android_media_AudioSystem_getMaxChannelCount(JNIEnv *env, jobject thiz) { return FCC_8; } +static jint android_media_AudioSystem_getMaxSampleRate(JNIEnv *env, jobject thiz) { + // see frameworks/av/services/audiopolicy/common/include/policy.h + return 192000; // SAMPLE_RATE_HZ_MAX (for API) +} + +static jint android_media_AudioSystem_getMinSampleRate(JNIEnv *env, jobject thiz) { + return 4000; // SAMPLE_RATE_HZ_MIN (for API) +} + static jint android_media_AudioSystem_setAssistantUid(JNIEnv *env, jobject thiz, jint uid) { @@ -2810,14 +2819,18 @@ static const JNINativeMethod gEventHandlerMethods[] = { (void *)android_media_AudioSystem_eventHandlerFinalize}, }; -static const JNINativeMethod gGetFCC8Methods[] = { - {"native_get_FCC_8", "()I", (void *)android_media_AudioSystem_get_FCC_8}, +static const JNINativeMethod gFrameworkCapabilities[] = { + {"native_getMaxChannelCount", "()I", (void *)android_media_AudioSystem_getMaxChannelCount}, + {"native_getMaxSampleRate", "()I", (void *)android_media_AudioSystem_getMaxSampleRate}, + {"native_getMinSampleRate", "()I", (void *)android_media_AudioSystem_getMinSampleRate}, }; int register_android_media_AudioSystem(JNIEnv *env) { // This needs to be done before hooking up methods AudioTrackRoutingProxy (below) - RegisterMethodsOrDie(env, kClassPathName, gGetFCC8Methods, NELEM(gGetFCC8Methods)); + // as the calls are performed in the static initializer of AudioSystem. + RegisterMethodsOrDie(env, kClassPathName, gFrameworkCapabilities, + NELEM(gFrameworkCapabilities)); jclass arrayListClass = FindClassOrDie(env, "java/util/ArrayList"); gArrayListClass = MakeGlobalRefOrDie(env, arrayListClass); diff --git a/core/proto/android/app/appexit_enums.proto b/core/proto/android/app/appexit_enums.proto deleted file mode 100644 index 491e1dc203b5..000000000000 --- a/core/proto/android/app/appexit_enums.proto +++ /dev/null @@ -1,240 +0,0 @@ -/* - * 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. - */ - -syntax = "proto2"; -option java_multiple_files = true; - -package android.app; - -/** - * The reason code that why app process is killed. - */ -enum AppExitReasonCode { - /** - * Application process died due to unknown reason. - */ - REASON_UNKNOWN = 0; - - /** - * Application process exit normally by itself, for example, - * via {@link android.os.Process#exit}; {@link #status} will specify the exit code. - * - * <p>Applications should normally not do this, as the system has a better knowledge - * in terms of process management.</p> - */ - REASON_EXIT_SELF = 1; - - /** - * Application process died due to the result of an OS signal; for example, - * {@link android.os.Process#SIGNAL_KILL}; {@link #status} will specify the signum. - */ - REASON_SIGNALED = 2; - - /** - * Application process was killed by the system low memory killer, meaning the system was - * under memory pressure at the time of kill. - */ - REASON_LOW_MEMORY = 3; - - /** - * Application process died because of an unhandled exception in Java code. - */ - REASON_CRASH = 4; - - /** - * Application process died because it's crashed due to a native code crash. - */ - REASON_CRASH_NATIVE = 5; - - /** - * Application process was killed due to being unresponsive (ANR). - */ - REASON_ANR = 6; - - /** - * Application process was killed because it took too long to attach to the system - * during the start. - */ - REASON_INITIALIZATION_FAILURE = 7; - - /** - * Application process was killed because of initialization failure, - * for example, it took too long to attach to the system during the start, - * or there was an error during initialization. - */ - REASON_PERMISSION_CHANGE = 8; - - /** - * Application process was killed by the activity manager due to excessive resource usage. - */ - REASON_EXCESSIVE_RESOURCE_USAGE = 9; - - /** - * Application process was killed because of the user request, for example, - * user clicked the "Force stop" button of the application in the Settings, - * or swiped away the application from Recents. - */ - REASON_USER_REQUESTED = 10; - - /** - * Application process was killed, because the user they are running as on devices - * with mutlple users, was stopped. - */ - REASON_USER_STOPPED = 11; - - /** - * Application process was killed because its dependency was going away, for example, - * a stable content provider connection's client will be killed if the provider is killed. - */ - REASON_DEPENDENCY_DIED = 12; - - /** - * Application process was killed by the system for various other reasons, - * for example, the application package got disabled by the user; - * {@link #description} will specify the cause given by the system. - */ - REASON_OTHER = 13; -} - -/** - * The supplemental reason code that why app process is killed - */ -enum AppExitSubReasonCode { - /** - * Application process kills subReason is unknown. - */ - SUBREASON_UNKNOWN = 0; - - /** - * Application process was killed because user quit it on the "wait for debugger" dialog. - */ - SUBREASON_WAIT_FOR_DEBUGGER = 1; - - /** - * Application process was killed by the activity manager because there were too many cached - * processes. - */ - SUBREASON_TOO_MANY_CACHED = 2; - - /** - * Application process was killed by the activity manager because there were too many empty - * processes. - */ - SUBREASON_TOO_MANY_EMPTY = 3; - - /** - * Application process was killed by the activity manager because there were too many cached - * processes and this process had been in empty state for a long time. - */ - SUBREASON_TRIM_EMPTY = 4; - - /** - * Application process was killed by the activity manager because system was on - * memory pressure and this process took large amount of cached memory. - */ - SUBREASON_LARGE_CACHED = 5; - - /** - * Application process was killed by the activity manager because the system was on - * low memory pressure for a significant amount of time since last idle. - */ - SUBREASON_MEMORY_PRESSURE = 6; - - /** - * Application process was killed by the activity manager due to excessive CPU usage. - */ - SUBREASON_EXCESSIVE_CPU = 7; - - /** - * System update has done (so the system update process should be killed). - */ - SUBREASON_SYSTEM_UPDATE_DONE = 8; - - /** - * Kill all foreground services, for now it only occurs when enabling the quiet - * mode for the managed profile. - */ - SUBREASON_KILL_ALL_FG = 9; - - /** - * All background processes except certain ones were killed, for now it only occurs - * when the density of the default display is changed. - */ - SUBREASON_KILL_ALL_BG_EXCEPT = 10; - - /** - * The process associated with the UID was explicitly killed, for example, - * it could be because of permission changes. - */ - SUBREASON_KILL_UID = 11; - - /** - * The process was explicitly killed with its PID, typically because of - * the low memory for surfaces. - */ - SUBREASON_KILL_PID = 12; - - /** - * The start of the process was invalid. - */ - SUBREASON_INVALID_START = 13; - - /** - * The process was killed because it's in an invalid state, typically - * it's triggered from SHELL. - */ - SUBREASON_INVALID_STATE = 14; - - /** - * The process was killed when it's imperceptible to user, because it was - * in a bad state. - */ - SUBREASON_IMPERCEPTIBLE = 15; - - /** - * The process was killed because it's being moved out from LRU list. - */ - SUBREASON_REMOVE_LRU = 16; - - /** - * The process was killed because it's isolated and was in a cached state. - */ - SUBREASON_ISOLATED_NOT_NEEDED = 17; -} - -/** - * The relative importance level that the system places on a process. - * Keep sync with the definitions in - * {@link android.app.ActivityManager.RunningAppProcessInfo} - */ -enum Importance { - option allow_alias = true; - - IMPORTANCE_FOREGROUND = 100; - IMPORTANCE_FOREGROUND_SERVICE = 125; - IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; - IMPORTANCE_VISIBLE = 200; - IMPORTANCE_PERCEPTIBLE_PRE_26 = 130; - IMPORTANCE_PERCEPTIBLE = 230; - IMPORTANCE_CANT_SAVE_STATE_PRE_26 = 170; - IMPORTANCE_SERVICE = 300; - IMPORTANCE_TOP_SLEEPING = 325; - IMPORTANCE_CANT_SAVE_STATE = 350; - IMPORTANCE_CACHED = 400; - IMPORTANCE_BACKGROUND = 400; - IMPORTANCE_EMPTY = 500; - IMPORTANCE_GONE = 1000; -} diff --git a/core/proto/android/app/appexitinfo.proto b/core/proto/android/app/appexitinfo.proto index cc3d367ab837..3abc462671a2 100644 --- a/core/proto/android/app/appexitinfo.proto +++ b/core/proto/android/app/appexitinfo.proto @@ -20,7 +20,7 @@ option java_multiple_files = true; package android.app; import "frameworks/base/core/proto/android/privacy.proto"; -import "frameworks/base/core/proto/android/app/appexit_enums.proto"; +import "frameworks/proto_logging/stats/enums/app/enums.proto"; /** * An android.app.ApplicationExitInfo object. diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 4e7dd913b260..ffb8d1daac90 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -696,6 +696,8 @@ <protected-broadcast android:name="android.scheduling.action.REBOOT_READY" /> <protected-broadcast android:name="android.app.action.DEVICE_POLICY_CONSTANTS_CHANGED" /> + <protected-broadcast android:name="android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED" /> + <!-- ====================================================================== --> <!-- RUNTIME PERMISSIONS --> <!-- ====================================================================== --> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 42e520352f43..73adeaa02691 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Teks na knipbord gekopieër."</string> <string name="copied" msgid="4675902854553014676">"Gekopieer"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het uit <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> geplak"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het uit knipbord geplak"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> van jou knipbord af geplak"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het teks geplak wat jy gekopieer het"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het \'n prent geplak wat jy gekopieer het"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het inhoud geplak wat jy gekopieer het"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Berei tans <xliff:g id="APPNAME">%1$s</xliff:g> voor."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Begin programme."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Voltooi herlaai."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Skakel skerm af?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Jy het die aan/af-skakelaar gedruk terwyl jy jou vingerafdruk gestel het.\n\nDit skakel gewoonlik jou skerm af."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Skakel af"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Kanselleer"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> loop"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tik om na die speletjie terug te keer"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Kies speletjie"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gebruik kortpad"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Kleuromkering"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Kleurkorreksie"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra donker"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Het volumesleutels ingehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aangeskakel."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Het volumesleutels ingehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> is afgeskakel"</string> @@ -1864,8 +1870,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Opgedateer deur jou administrateur"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Uitgevee deur jou administrateur"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Batterybespaarder skakel Donkertema aan en beperk of skakel agtergrondaktiwiteit, sommige visuele effekte en sekere kenmerke af.\n\n"<annotation id="url">"Kom meer te wete"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Batterybespaarder skakel Donkertema aan en beperk of skakel agtergrondaktiwiteit, sommige visuele effekte en sekere kenmerke af."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Batterybespaarder skakel Donkertema aan en beperk of skakel agtergrondaktiwiteit, sommige visuele effekte, sekere kenmerke en sommige netwerkverbindings af.\n\n"<annotation id="url">"Kom meer te wete"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Batterybespaarder skakel Donkertema aan en beperk of skakel agtergrondaktiwiteit, sommige visuele effekte, sekere kenmerke en sommige netwerkverbindings af"</string> <string name="data_saver_description" msgid="4995164271550590517">"Databespaarder verhoed sommige programme om data in die agtergrond te stuur of te aanvaar om datagebruik te help verminder. \'n Program wat jy tans gebruik kan by data ingaan, maar sal dit dalk minder gereeld doen. Dit kan byvoorbeeld beteken dat prente nie wys voordat jy op hulle tik nie."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Skakel Databespaarder aan?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Skakel aan"</string> @@ -1968,8 +1974,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is nie nou onmiddellik beskikbaar nie. Dit word bestuur deur <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Kom meer te wete"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Hervat program"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Skakel werkprofiel aan?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Jou werkprogramme, kennisgewings, data en ander werkprofielkenmerke sal aangeskakel word"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Skakel werkprogramme aan?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Kry toegang tot jou werkprogramme en -kennisgewings"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Skakel aan"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Program is nie beskikbaar nie"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is nie op die oomblik beskikbaar nie."</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index a091b5d0e8d2..f8ff93456566 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"ፅሁፍ ወደ ቅንጥብ ሰሌዳ ተገልብጧል።"</string> <string name="copied" msgid="4675902854553014676">"ተቀድቷል"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ከ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ተለጥፏል"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ከቅንጣብ ሰሌዳ ተለጥፏል"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ከእርስዎ ቅንጥብ ሰሌዳ ተለጥፏል"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ጽሑፍ ለጥፏል"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ምስል ለጥፏል"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ይዘት ለጥፏል"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>ን ማዘጋጀት።"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"መተግበሪያዎችን በማስጀመር ላይ፡፡"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"አጨራረስ ማስነሻ፡፡"</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"ማያ ገጽ ይጥፋ?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"የጣት አሻራዎን ሲያዋቅሩ የኃይል አዝራሩን ተጫንተውታል። \n\n ይህ አብዛኛው ጊዜ ማያ ገጽዎን ያጠፈዋል።"</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"አጥፋ"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"ይቅር"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> አሂድ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ወደ ጨዋታ ለመመለስ መታ ያድርጉ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ጨዋታ ይምረጡ"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"አቋራጭ ይጠቀሙ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ተቃራኒ ቀለም"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"የቀለም ማስተካከያ"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"የአንድ እጅ ሁነታ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ተጨማሪ ደብዛዛ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> በርቷል።"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ጠፍተዋል።"</string> @@ -1864,8 +1869,10 @@ <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="750683025714899363">"የባትሪ ኃይል ቆጣቢ ጠቆር ያለ ገጽታን ያበራል እና የጀርባ እንቅስቃሴን፣ አንዳንድ ምስላዊ ተጽዕኖዎችን እና የተወሰኑ ባህሪያትን ይገድባል ወይም ያጠፋል።\n\n"<annotation id="url">"የበለጠ ለመረዳት"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"የባትሪ ኃይል ቆጣቢ ጠቆር ያለ ገጽታን ያበራል እና የጀርባ እንቅስቃሴን፣ አንዳንድ ምስላዊ ተጽዕኖዎችን እና የተወሰኑ ባህሪያትን ይገድባል ወይም ያጠፋል።"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"የውሂብ አጠቃቀም እንዲቀንስ ለማገዝ ውሂብ ቆጣቢ አንዳንድ መተግበሪያዎች ከበስተጀርባ ሆነው ውሂብ እንዳይልኩ ወይም እንዳይቀበሉ ይከለክላቸዋል። በአሁኑ ጊዜ እየተጠቀሙበት ያለ መተግበሪያ ውሂብ ሊደርስ ይችላል፣ ነገር ግን ባነሰ ተደጋጋሚነት ሊሆን ይችላል። ይሄ ማለት ለምሳሌ ምስሎችን መታ እስኪያደርጓቸው ድረስ ላይታዩ ይችላሉ ማለት ነው።"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ውሂብ ቆጣቢ ይጥፋ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"አብራ"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> አሁን ላይ አይገኝም። በ<xliff:g id="APP_NAME_1">%2$s</xliff:g> የሚተዳደር ነው።"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"የበለጠ ለመረዳት"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"መተግበሪያን ላፍታ እንዳይቆም አድርግ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"የስራ መገለጫ ይብራ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"የእርስዎ የስራ መተግበሪያዎች፣ ማሳወቂያዎች፣ ውሂብ እና ሌሎች የስራ መገለጫ ባህሪያት ይበራሉ"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"አብራ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"መተግበሪያ አይገኝም"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> አሁን አይገኝም።"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 68b0aba0e66c..c2be67cfcc02 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -1034,7 +1034,8 @@ <string name="text_copied" msgid="2531420577879738860">"تم نسخ النص إلى الحافظة."</string> <string name="copied" msgid="4675902854553014676">"تم النسخ."</string> <string name="pasted_from_app" msgid="5627698450808256545">"تم لصق محتوى في <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> من <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"تم لصق محتوى في <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> من الحافظة."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> النص الذي نسخته."</string> <string name="pasted_image" msgid="4729097394781491022">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> الصورة التي نسختها."</string> <string name="pasted_content" msgid="646276353060777131">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> المحتوى الذي نسخته."</string> @@ -1339,6 +1340,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"جارٍ تحضير <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"بدء التطبيقات."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"جارٍ إعادة التشغيل."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> يعمل"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"انقر للعودة إلى اللعبة"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"اختيار اللعبة"</string> @@ -1797,6 +1806,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استخدام الاختصار"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"قلب الألوان"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"تصحيح الألوان"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"زيادة تعتيم الشاشة"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم تفعيل <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم إيقاف <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1956,8 +1967,10 @@ <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="750683025714899363">"يؤدي استخدام خيار \"توفير شحن البطارية\" إلى تفعيل \"المظهر الداكن\" وتقييد أو إيقاف الأنشطة في الخلفية وبعض التأثيرات المرئية وميزات معيّنة.\n\n"<annotation id="url">"مزيد من المعلومات"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"يؤدي استخدام خيار \"توفير شحن البطارية\" إلى تفعيل \"المظهر الداكن\" وتقييد أو إيقاف الأنشطة في الخلفية وبعض التأثيرات المرئية وميزات معيّنة."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"للمساعدة في خفض استخدام البيانات، تمنع ميزة \"توفير البيانات\" بعض التطبيقات من إرسال البيانات وتلقّيها في الخلفية. يمكن للتطبيقات المتاحة لديك الآن استخدام البيانات، ولكن لا يمكنها الإكثار من ذلك. وهذا يعني أن الصور مثلاً لا تظهر حتى تنقر عليها."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"هل تريد تفعيل توفير البيانات؟"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"تفعيل"</string> @@ -2096,8 +2109,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"التطبيق <xliff:g id="APP_NAME_0">%1$s</xliff:g> غير متاح الآن، وهو مُدار بواسطة <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"مزيد من المعلومات"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"استئناف تشغيل التطبيق"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"هل تريد تفعيل الملف الشخصي للعمل؟"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"سيتم تفعيل تطبيقات العمل التي تستخدمها والإشعارات والبيانات وغيرها من ميزات الملف الشخصي للعمل"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"تفعيل"</string> <string name="app_blocked_title" msgid="7353262160455028160">"التطبيق غير متاح"</string> <string name="app_blocked_message" msgid="542972921087873023">"تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> غير متاح الآن."</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index ff07d9b7ad7b..8101c28647ed 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ক্লিপব\'র্ডলৈ বাৰ্তা প্ৰতিলিপি কৰা হ’ল।"</string> <string name="copied" msgid="4675902854553014676">"প্ৰতিলিপি কৰা হ’ল"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>ৰ পৰা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> পে’ষ্ট কৰা হৈছে"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ক্লিপব’ৰ্ডৰ পৰা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> পে’ষ্ট কৰা হৈছে"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা সমল পে’ষ্ট কৰিছে"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা এটা প্ৰতিচ্ছবি পে’ষ্ট কৰিছে"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা সমল পে’ষ্ট কৰিছে"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>সাজু কৰি থকা হৈছে।"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"আৰম্ভ হৈ থকা এপসমূহ।"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"বুট কাৰ্য সমাপ্ত কৰিছে।"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> চলি আছে"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"গেইমলৈ উভতি যাওক"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"গেইম বাছনি কৰক"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শ্বৰ্টকাট ব্যৱহাৰ কৰক"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ৰং বিপৰীতকৰণ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ৰং শুধৰণি"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"এখন হাতেৰে ব্যৱহাৰ কৰাৰ ম’ড"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"এক্সট্ৰা ডিম"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কীসমূহ ধৰি ৰাখক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অন কৰা হ\'ল।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধৰি ৰাখিছিল। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অফ কৰা হ\'ল।"</string> @@ -1864,8 +1874,10 @@ <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="750683025714899363">"বেটাৰী সঞ্চয়কাৰীয়ে গাঢ় ৰঙৰ থীম অন কৰে আৰু নেপথ্যৰ কাৰ্যকলাপ, কিছুমান ভিজুৱেল ইফেক্ট আৰু নিৰ্দিষ্ট কিছুমান সুবিধা সীমিত অথবা অফ কৰে।\n\n"<annotation id="url">"অধিক জানক"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"বেটাৰী সঞ্চয়কাৰীয়ে গাঢ় ৰঙৰ থীম অন কৰে আৰু নেপথ্যৰ কাৰ্যকলাপ, কিছুমান ভিজুৱেল ইফেক্ট আৰু নিৰ্দিষ্ট কিছুমান সুবিধা সীমিত অথবা অফ কৰে।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ডেটা ব্য়ৱহাৰৰ হ্ৰাস কৰিবলৈ ডেটা সঞ্চয়কাৰীয়ে কিছুমান এপক নেপথ্য়ত ডেটা প্ৰেৰণ বা সংগ্ৰহ কৰাত বাধা প্ৰদান কৰে। আপুনি বৰ্তমান ব্য়ৱহাৰ কৰি থকা এটা এপে ডেটা এক্সেছ কৰিব পাৰে, কিন্তু সঘনাই এক্সেছ কৰিব নোৱাৰিব পাৰে। ইয়াৰ অৰ্থ উদাহৰণস্বৰূপে এয়া হ\'ব পাৰে যে, আপুনি নিটিপা পর্যন্ত প্ৰতিচ্ছবিসমূহ দেখুওৱা নহ’ব।"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ডেটা সঞ্চয়কাৰী অন কৰিবনে?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"অন কৰক"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"এই মুহূৰ্তত <xliff:g id="APP_NAME_0">%1$s</xliff:g> উপলব্ধ নহয়। ইয়াক <xliff:g id="APP_NAME_1">%2$s</xliff:g>এ পৰিচালনা কৰে।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"অধিক জানক"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"এপ্ আনপজ কৰক"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"কৰ্মস্থানৰ প্ৰ\'ফাইল অন কৰিবনে?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"আপোনাৰ কৰ্মস্থানৰ এপসমূহ, জাননীসমূহ, ডেটা আৰু কৰ্মস্থানৰ প্ৰ\'ফাইলৰ অইন সুবিধাসমূহ অন কৰা হ\'ব"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"অন কৰক"</string> <string name="app_blocked_title" msgid="7353262160455028160">"এপ্টো উপলব্ধ নহয়"</string> <string name="app_blocked_message" msgid="542972921087873023">"এই মুহূৰ্তত <xliff:g id="APP_NAME">%1$s</xliff:g> উপলব্ধ নহয়।"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index ce42ecb77dbe..e8abac1f039c 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Mətn panoya kopyalandı."</string> <string name="copied" msgid="4675902854553014676">"Kopyalandı"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> tətbiqindən əlavə edilib"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> mübadilə buferindən əlavə edilib"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız mətni əlavə etdi"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız şəkli əlavə etdi"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız kontenti əlavə etdi"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> proqramının hazırlanması."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Tətbiqlər başladılır."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Yükləmə başa çatır."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> çalışır"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Oyuna qayıtmaq üçün klikləyin"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Oyun seçin"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Qısayol İstifadə edin"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Rəng İnversiyası"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Rəng korreksiyası"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Əlavə qaraltma"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Səs səviyyəsi düymələrinə basıb saxlayın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktiv edildi."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Səs səviyyəsi düymələrinə basılaraq saxlanıb. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> deaktiv edilib."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Admin tərəfindən yeniləndi"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Admin tərəfindən silindi"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Enerjiyə Qənaət Qaranlıq temanı aktiv edir, arxa fondakı fəaliyyətlər, bəzi vizual effektlər və müəyyən funksiyaları məhdudlaşdırır və ya deaktiv edir.\n\n"<annotation id="url">"Ətraflı məlumat"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Enerjiyə Qənaət Qaranlıq temanı aktiv edir, arxa fondakı fəaliyyətlər, bəzi vizual effektlər və müəyyən funksiyaları məhdudlaşdırır və ya deaktiv edir."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Mobil interneti qənaətlə işlətmək məqsədilə Data Qanaəti bəzi tətbiqlərin fonda data göndərməsinin və qəbulunun qarşısını alır. Hazırda işlətdiyiniz tətbiq nisbətən az müntəzəmliklə data istifadə edə bilər. Örnək olaraq bu, o deməkdir ki, şəkil fayllarına toxunmadıqca onlar açılmayacaq."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Trafikə qənaət edilsin?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivləşdirin"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> hazırda əlçatan deyil. Bunu <xliff:g id="APP_NAME_1">%2$s</xliff:g> idarə edir."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Ətraflı məlumat"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Tətbiqi davam etdirin"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"İş profili aktiv edilsin?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"İş tətbiqləri, bildirişləri, data və digər iş profili funksiyaları aktiv ediləcək"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivləşdirin"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Tətbiq əlçatan deyil"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> hazırda əlçatan deyil."</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 3d47fcfda631..26814512f6cd 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -1025,7 +1025,7 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst je kopiran u privremenu memoriju."</string> <string name="copied" msgid="4675902854553014676">"Kopirano je"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepila podatke iz aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> nalepila podatke iz privremene memorije"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Sadržaj aplikacije <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepljen u privr. memoriju"</string> <string name="pasted_text" msgid="4298871641549173733">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepila tekst koji ste kopirali"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepila sliku koju ste kopirali"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepila sadržaj koji ste kopirali"</string> @@ -1279,6 +1279,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Priprema se <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Pokretanje aplikacija."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Završavanje pokretanja."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Želite da isključite ekran?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Pritisli ste dugme za uključivanje tokom podešavanja otiska prsta.\n\nTako se najčešće isključuje ekran."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Isključi"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Otkaži"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> je pokrenuta"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dodirnite da biste se vratili u igru"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Odaberite igru"</string> @@ -1731,6 +1735,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcija boja"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjeno"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string> @@ -1887,8 +1892,10 @@ <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="750683025714899363">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizuelne efekte i određene funkcije.\n\n"<annotation id="url">"Saznajte više"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizuelne efekte i određene funkcije."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <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> <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string> @@ -2000,8 +2007,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno nije dostupna. <xliff:g id="APP_NAME_1">%2$s</xliff:g> upravlja dostupnošću."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Opozovi pauziranje aplikacije"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Da uključimo poslovni profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Uključiće se poslovne aplikacije, obaveštenja, podaci i druge funkcije poslovnog profila"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno nije dostupna."</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 13c222e15bc1..9f7fc35e3699 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Тэкст скапіраваны ў буфер абмену."</string> <string name="copied" msgid="4675902854553014676">"Скапіравана"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Праграма \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\" была ўстаўлена з праграмы \"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>\""</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Праграма \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\" была ўстаўлена з буфера абмену"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Скапіраваны вамі тэкст устаўлены праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string> <string name="pasted_image" msgid="4729097394781491022">"Скапіраваны вамі відарыс устаўлены праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string> <string name="pasted_content" msgid="646276353060777131">"Скапіраванае вамі змесціва ўстаўлена праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Падрыхтоўка <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Запуск прыкладанняў."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Завяршэнне загрузкі."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Прыкладанне \"<xliff:g id="APP">%1$s</xliff:g>\" запушчанае"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Націсніце, каб вярнуцца да гульні"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Выберыце гульню"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Выкарыстоўваць камбінацыю хуткага доступу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія колераў"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Карэкцыя колераў"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дадатковае памяншэнне яркасці"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Клавішы гучнасці ўтрымліваліся націснутымі. Уключана служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Клавішы гучнасці ўтрымліваліся націснутымі. Служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" выключана."</string> @@ -1910,8 +1921,10 @@ <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="750683025714899363">"У рэжыме эканоміі зараду ўключаецца цёмная тэма і выключаюцца ці абмяжоўваюцца дзеянні ў фонавым рэжыме, некаторыя візуальныя эфекты і пэўныя функцыі.\n\n"<annotation id="url">"Даведацца больш"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"У рэжыме эканоміі зараду ўключаецца цёмная тэма і выключаюцца ці абмяжоўваюцца дзеянні ў фонавым рэжыме, некаторыя візуальныя эфекты і пэўныя функцыі."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"У рэжыме \"Эканомія трафіка\" фонавая перадача для некаторых праграмам адключана. Праграма, якую вы зараз выкарыстоўваеце, можа атрымліваць доступ да даных, але радзей, чым звычайна. Напрыклад, відарысы могуць не загружацца, пакуль вы не націсніце на іх."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Уключыць Эканомію трафіка?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Уключыць"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Праграма \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" цяпер недаступная. Яна кіруецца праграмай \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\"."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Даведацца больш"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Скасаваць прыпыненне для праграмы"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Уключыць працоўны профіль?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Будуць уключаны вашы працоўныя праграмы, апавяшчэнні, даныя і іншыя функцыі працоўнага профілю"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Уключыць"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Праграма недаступная"</string> <string name="app_blocked_message" msgid="542972921087873023">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" цяпер недаступная."</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 9101727e9111..619dcb7e191a 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текстът е копиран в буферната памет."</string> <string name="copied" msgid="4675902854553014676">"Копирано"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави данни от <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави данни от буферната памет"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копиран от вас текст"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копирано от вас изображение"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копирано от вас съдържание"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> се подготвя."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Приложенията се стартират."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Зареждането завършва."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> се изпълнява"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Докоснете, за да се върнете към играта"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Избиране на игра"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Използване на пряк път"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инвертиране на цветовете"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Коригиране на цветовете"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим за работа с една ръка"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Допълнително затъмняване"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е включена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е изключена."</string> @@ -1864,8 +1874,10 @@ <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="750683025714899363">"Режимът за запазване на батерията включва тъмната тема и ограничава или изключва активността на заден план, някои визуални ефекти и определени функции.\n\n"<annotation id="url">"Научете повече"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Режимът за запазване на батерията включва тъмната тема и ограничава или изключва активността на заден план, някои визуални ефекти и определени функции."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"С цел намаляване на преноса на данни функцията за икономия на данни не позволява на някои приложения да изпращат или получават данни на заден план. Понастоящем използвано от вас приложение може да използва данни, но по-рядко. Това например може да означава, че изображенията не се показват, докато не ги докоснете."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Включване на „Икономия на данни“?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Включване"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"В момента няма достъп до <xliff:g id="APP_NAME_0">%1$s</xliff:g>. Това се управлява от <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Научете повече"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Отмяна на паузата за приложението"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Вкл. на служ. потр. профил?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Служебните ви приложения, известия и данни, както и другите функции на служебния потребителски профил ще бъдат включени"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Включване"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Приложението не е достъпно"</string> <string name="app_blocked_message" msgid="542972921087873023">"В момента няма достъп до <xliff:g id="APP_NAME">%1$s</xliff:g>."</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index a065f19e0b44..9dedb888f47a 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"ক্লিপবোর্ডে পাঠ্য অনুলিপি করা হয়েছে৷"</string> <string name="copied" msgid="4675902854553014676">"কপি করা হয়েছে"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> থেকে কপি করা ডেটা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-এ পেস্ট করা হয়েছে"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ক্লিপবোর্ডের ডেটা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-এ পেস্ট করা হয়েছে"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"আপনার ক্লিপবোর্ড থেকে <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> পেস্ট করা হয়েছে"</string> <string name="pasted_text" msgid="4298871641549173733">"আপনার কপি করা টেক্সট <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string> <string name="pasted_image" msgid="4729097394781491022">"আপনার কপি করা ছবি <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string> <string name="pasted_content" msgid="646276353060777131">"আপনার কপি করা কন্টেন্ট <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> প্রস্তুত করা হচ্ছে৷"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"অ্যাপ্লিকেশানগুলি শুরু করা হচ্ছে৷"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"চালু করা সম্পূর্ণ হচ্ছে৷"</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"স্ক্রিন বন্ধ করবেন?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"আপনার আঙ্গুলের ছাপ সেট আপ করার সময়, পাওয়ার বোতাম প্রেস করেছিলেন।\n\nএর ফলে সাধারণত আপনার স্ক্রিন বন্ধ হয়ে যায়।"</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"বন্ধ করুন"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"বাতিল করুন"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> চলছে"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"গেমে ফিরে আসতে ট্যাপ করুন"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"গেম বেছে নিন"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শর্টকাট ব্যবহার করুন"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"রঙ উল্টানো"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"রঙ সংশোধন"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"অতিরিক্ত কম আলো"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> চালু করা হয়েছে।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> বন্ধ করা হয়েছে।"</string> @@ -1864,8 +1870,10 @@ <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="750683025714899363">"ব্যাটারি সেভার ডার্ক থিম চালু করে এবং ব্যাকগ্রাউন্ড অ্যাক্টিভিটি, কিছু ভিজ্যুয়াল এফেক্ট ও নির্দিষ্ট ফিচারের ব্যবহার সীমিত করে বা বন্ধ করে দেয়।\n\n"<annotation id="url">"আরও জানুন"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ব্যাটারি সেভার ডার্ক থিম চালু করে এবং ব্যাকগ্রাউন্ড অ্যাক্টিভিটি, কিছু ভিজ্যুয়াল এফেক্ট ও নির্দিষ্ট ফিচারের ব্যবহার সীমিত করে বা বন্ধ করে দেয়।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ডেটার ব্যবহার কমাতে সহায়তা করার জন্য, ডেটা সেভার ব্যাকগ্রাউন্ডে কিছু অ্যাপ্লিকেশনকে ডেটা পাঠাতে বা গ্রহণ করতে বাধা দেয়৷ আপনি বর্তমানে এমন একটি অ্যাপ্লিকেশন ব্যবহার করছেন যেটি ডেটা অ্যাক্সেস করতে পারে, তবে সেটি কমই করে৷ এর ফলে যা হতে পারে, উদাহরণস্বরূপ, আপনি ছবির উপর ট্যাপ না করা পর্যন্ত সেগুলি দেখানো হবে না৷"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ডেটা সেভার চালু করবেন?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"চালু করুন"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> এখন উপলভ্য নয়। এই অ্যাপটিকে <xliff:g id="APP_NAME_1">%2$s</xliff:g> অ্যাপ ম্যানেজ করে।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"আরও জানুন"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"অ্যাপ আবার চালু করুন"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"অফিস প্রোফাইল চালু করবেন?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"আপনার অফিস অ্যাপ, বিজ্ঞপ্তি, ডেটা এবং অফিস প্রোফাইলের অন্যান্য বৈশিষ্ট্য চালু করা হবে"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"চালু করুন"</string> <string name="app_blocked_title" msgid="7353262160455028160">"অ্যাপ পাওয়া যাচ্ছে না"</string> <string name="app_blocked_message" msgid="542972921087873023">"এই মুহূর্তে <xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপ পাওয়া যাচ্ছে না।"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index ac455c4653a7..c918d8c5028b 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -1025,7 +1025,7 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međumemoriju."</string> <string name="copied" msgid="4675902854553014676">"Kopirano"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepljena iz aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepljena iz međumemorije"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila sadržaj iz međumemorije"</string> <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopirani tekst"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopiranu sliku"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopirani sadržaj"</string> @@ -1279,6 +1279,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Pripremanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Pokretanje aplikacija."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Pokretanje pri kraju."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Isključiti ekran?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Prilikom postavljanja otiska prsta, pritisnuli ste dugme za uključivanje.\n\nTime se obično isključuje ekran."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Isključi"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Otkaži"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Pokrenuta je aplikacija <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dodirnite za povratak u igru"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Odaberite igru"</string> @@ -1731,6 +1735,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Ispravka boja"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjeno"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string> @@ -1887,8 +1892,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je vaš administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je vaš administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Uredu"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i neke funkcije.\n\n"<annotation id="url">"Saznajte više"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i neke funkcije."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Radi smanjenja prijenosa podataka, Ušteda podataka sprečava da neke aplikacije šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može pristupiti podacima, ali će to činiti rjeđe. Naprimjer, to može značiti da se slike ne prikazuju dok ih ne dodirnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Uključiti Uštedu podataka?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string> @@ -2000,8 +2007,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno nije dostupna. Ovim upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Ponovo aktiviraj aplikaciju"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Uključiti radni profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Uključit će se poslovne aplikacije, obavještenja, podaci i druge funkcije radnog profila"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno nije dostupna."</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index c37d77f78182..402402fda832 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copiat al Porta-retalls."</string> <string name="copied" msgid="4675902854553014676">"S\'ha copiat"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat dades de: <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat dades del porta-retalls"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat contingut del porta-retalls"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat text que has copiat"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat una imatge que has copiat"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat contingut que has copiat"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"S\'està preparant <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"S\'estan iniciant les aplicacions."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"S\'està finalitzant l\'actualització."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Vols apagar la pantalla?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Mentre configuraves la teva empremta digital has premut el botó d\'engegada.\n\nAixò normalment apaga la pantalla."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Desactiva"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel·la"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> s\'està executant"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toca per tornar al joc"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Tria el joc"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilitza la drecera"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversió de colors"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correcció de color"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuació extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S\'han mantingut premudes les tecles de volum. S\'ha activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S\'han mantingut premudes les tecles de volum. S\'ha desactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1870,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualitzat per l\'administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Suprimit per l\'administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"D\'acord"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Estalvi de bateria activa el tema fosc i limita o desactiva l\'activitat en segon pla, alguns efectes visuals i determinades funcions.\n\n"<annotation id="url">"Més informació"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Estalvi de bateria activa el tema fosc i limita o desactiva l\'activitat en segon pla, alguns efectes visuals i determinades funcions."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Per reduir l\'ús de dades, la funció Economitzador de dades evita que determinades aplicacions enviïn o rebin dades en segon pla. L\'aplicació que estiguis fent servir podrà accedir a les dades, però menys sovint. Això vol dir, per exemple, que les imatges no es mostraran fins que no les toquis."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activar l\'Economitzador de dades?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activa"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no està disponible en aquests moments. Aquesta opció es gestiona a <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Més informació"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Reactiva l\'aplicació"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activar el perfil de treball?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"S\'activaran les teves aplicacions de treball, les notificacions, les dades i altres funcions del perfil de treball"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activa"</string> <string name="app_blocked_title" msgid="7353262160455028160">"L\'aplicació no està disponible"</string> <string name="app_blocked_message" msgid="542972921087873023">"Ara mateix, <xliff:g id="APP_NAME">%1$s</xliff:g> no està disponible."</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index bfcc0206cbb1..17ddb0edb39c 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1028,7 +1028,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text byl zkopírován do schránky."</string> <string name="copied" msgid="4675902854553014676">"Zkopírováno"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila data z aplikace <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila data ze schránky"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila obsah ze schránky"</string> <string name="pasted_text" msgid="4298871641549173733">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný text"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný obrázek"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný obsah"</string> @@ -1299,6 +1299,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Příprava aplikace <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Spouštění aplikací."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Dokončování inicializace."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Vypnout obrazovku?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Při nastavování otisku prstu jste stiskli vypínač.\n\nTen obvykle vypne obrazovku."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Vypnout"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Zrušit"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Běží aplikace <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Klepnutím se vrátíte do hry"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Vyberte hru"</string> @@ -1753,6 +1757,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použít zkratku"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Převrácení barev"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Oprava barev"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jedné ruky"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Velmi tmavé"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> byla vypnuta."</string> @@ -1910,8 +1915,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Aktualizováno administrátorem"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Smazáno administrátorem"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Spořič baterie zapíná tmavý motiv a omezuje či vypíná aktivitu na pozadí, některé vizuální efekty a některé funkce.\n\n"<annotation id="url">"Další informace"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Spořič baterie zapíná tmavý motiv a omezuje či vypíná aktivitu na pozadí, některé vizuální efekty a některé funkce."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Z důvodu snížení využití dat brání spořič dat některým aplikacím v odesílání nebo příjmu dat na pozadí. Aplikace, kterou právě používáte, data přenášet může, ale může tak činit méně často. V důsledku toho se například obrázky nemusejí zobrazit, dokud na ně neklepnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Chcete zapnout Spořič dat?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Zapnout"</string> @@ -2032,8 +2039,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikace <xliff:g id="APP_NAME_0">%1$s</xliff:g> momentálně není dostupná. Tato předvolba se spravuje v aplikaci <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Další informace"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Zrušit pozastavení aplikace"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Zapnout pracovní profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Vaše pracovní aplikace, oznámení, data a ostatní funkce pracovního účtu budou zapnuty"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Zapnout"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikace není k dispozici"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> v tuto chvíli není k dispozici."</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 7e25a6345c34..d4aced530bdc 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Teksten er kopieret til udklipsholderen."</string> <string name="copied" msgid="4675902854553014676">"Kopieret"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold fra <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold fra udklipsholderen"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold fra din udklipsholder"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte tekst, som du har kopieret"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte et billede, som du har kopieret"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold, som du har kopieret"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Åbner dine apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Gennemfører start."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Vil du slukke skærmen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Ved konfigurationen af dit fingeraftryk trykkede du på afbryderknappen.\n\nDet medfører normalt, at din skærm slukkes."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Sluk"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Annuller"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> er i gang"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tryk for at vende tilbage til spillet"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Vælg et spil"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Brug genvej"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ombytning af farver"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Farvekorrigering"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dæmpet belysning"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er aktiveret."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er deaktiveret."</string> @@ -1864,8 +1870,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Opdateret af din administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Slettet af din administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Batterisparefunktion aktiverer Mørkt tema og begrænser eller deaktiverer aktivitet i baggrunden, nogle visuelle effekter og visse funktioner.\n\n"<annotation id="url">"Få flere oplysninger"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Batterisparefunktion aktiverer Mørkt tema og begrænser eller deaktiverer aktivitet i baggrunden, nogle visuelle effekter og visse funktioner."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Batterisparefunktionen aktiverer Mørkt tema og begrænser eller deaktiverer aktivitet i baggrunden og visse visuelle effekter, funktioner og netværksforbindelser.\n\n"<annotation id="url">"Få flere oplysninger"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Batterisparefunktionen aktiverer Mørkt tema og begrænser eller deaktiverer aktivitet i baggrunden og visse visuelle effekter, funktioner og netværksforbindelser."</string> <string name="data_saver_description" msgid="4995164271550590517">"Datasparefunktionen forhindrer nogle apps i at sende eller modtage data i baggrunden for at reducere dataforbruget. En app, der er i brug, kan få adgang til data, men gør det måske ikke så ofte. Dette kan f.eks. betyde, at billeder ikke vises, før du trykker på dem."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vil du aktivere Datasparefunktion?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivér"</string> @@ -1968,8 +1974,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ikke tilgængelig lige nu. Dette administreres af <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Få flere oplysninger"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Afslut pause for app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vil du aktivere din arbejdsprofil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Dine arbejdsapps, notifikationer, data og andre funktioner på din arbejdsprofil aktiveres"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Vil du aktivere arbejdsapps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Få adgang til dine arbejdsapps og notifikationer"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Slå til"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Appen er ikke tilgængelig"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ikke tilgængelig lige nu."</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index d277a80fe440..bd01896a5cb3 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -228,7 +228,7 @@ <string name="reboot_to_update_prepare" msgid="6978842143587422365">"Aktualisierung wird vorbereitet…"</string> <string name="reboot_to_update_package" msgid="4644104795527534811">"Updatepaket wird verarbeitet…"</string> <string name="reboot_to_update_reboot" msgid="4474726009984452312">"Neustart…"</string> - <string name="reboot_to_reset_title" msgid="2226229680017882787">"Auf Werkszustand zurücksetzen"</string> + <string name="reboot_to_reset_title" msgid="2226229680017882787">"Auf Werkseinstellungen zurücksetzen"</string> <string name="reboot_to_reset_message" msgid="3347690497972074356">"Neustart…"</string> <string name="shutdown_progress" msgid="5017145516412657345">"Wird heruntergefahren..."</string> <string name="shutdown_confirm" product="tablet" msgid="2872769463279602432">"Dein Tablet wird heruntergefahren."</string> @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Text in Zwischenablage kopiert."</string> <string name="copied" msgid="4675902854553014676">"Kopiert"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat etwas von <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> eingefügt"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat etwas aus der Zwischenablage eingefügt"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat einen von dir kopierten Text eingefügt"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat ein von dir kopiertes Bild eingefügt"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat den von dir kopierten Inhalt eingefügt"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> wird vorbereitet"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Apps werden gestartet..."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Start wird abgeschlossen..."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> läuft"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tippe, um zum Spiel zurückzukehren"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Spiel wählen"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Verknüpfung verwenden"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Farbumkehr"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Farbkorrektur"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Einhandmodus"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradunkel"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist aktiviert."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist deaktiviert."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Von deinem Administrator aktualisiert"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Von deinem Administrator gelöscht"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und bestimmte Funktionen ein oder deaktiviert sie.\n\n"<annotation id="url">"Weitere Informationen"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und bestimmte Funktionen ein oder deaktiviert sie."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Der Datensparmodus verhindert zum einen, dass manche Apps im Hintergrund Daten senden oder empfangen, sodass weniger Daten verbraucht werden. Zum anderen werden die Datenzugriffe der gerade aktiven App eingeschränkt, was z. B. dazu führen kann, dass Bilder erst angetippt werden müssen, bevor sie sichtbar werden."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Datensparmodus aktivieren?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivieren"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ist momentan nicht verfügbar. Dies wird über die App \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\" verwaltet."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Weitere Informationen"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"App-Pausierung aufheben"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Arbeitsprofil aktivieren?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Deine geschäftlichen Apps, Benachrichtigungen, Daten und andere Funktionen des Arbeitsprofils werden aktiviert"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivieren"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App ist nicht verfügbar"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ist derzeit nicht verfügbar."</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 39c8dbc16196..1f1166458eb9 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Το κείμενο αντιγράφηκε στο πρόχειρο."</string> <string name="copied" msgid="4675902854553014676">"Αντιγράφηκε"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> έκανε επικόλληση από την εφαρμογή <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> έκανε επικόλληση από το πρόχειρο"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε δεδομένα από το πρόχειρο"</string> <string name="pasted_text" msgid="4298871641549173733">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε το κείμενο που αντιγράψατε"</string> <string name="pasted_image" msgid="4729097394781491022">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε την εικόνα που αντιγράψατε"</string> <string name="pasted_content" msgid="646276353060777131">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε περιεχόμενο που αντιγράψατε"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Προετοιμασία <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Έναρξη εφαρμογών."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Ολοκλήρωση εκκίνησης."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Απενεργοποίηση οθόνης;"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Κατά τη ρύθμιση του δακτυλικού σας αποτυπώματος, πατήσατε το κουμπί λειτουργίας.\n\nΑυτό απενεργοποιεί συνήθως την οθόνη."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Απενεργοποίηση"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Ακύρωση"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Η εφαρμογή <xliff:g id="APP">%1$s</xliff:g> εκτελείται"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Πατήστε για να επιστρέψετε στο παιχνίδι"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Επιλέξτε παιχνίδι"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Χρήση συντόμευσης"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Αντιστροφή χρωμάτων"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Διόρθωση χρωμάτων"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Λειτουργία ενός χεριού"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Επιπλέον μείωση φωτεινότητας"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ενεργοποιήθηκε."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>: απενεργοποιημένο"</string> @@ -1864,8 +1869,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ενημερώθηκε από τον διαχειριστή σας"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Διαγράφηκε από τον διαχειριστή σας"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Η Εξοικονόμηση μπαταρίας ενεργοποιεί το Σκούρο θέμα και περιορίζει ή απενεργοποιεί τη δραστηριότητα στο παρασκήνιο, ορισμένα οπτικά εφέ και συγκεκριμένες λειτουργίες.\n\n"<annotation id="url">"Μάθετε περισσότερα"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Η Εξοικονόμηση μπαταρίας ενεργοποιεί το Σκούρο θέμα και περιορίζει ή απενεργοποιεί τη δραστηριότητα στο παρασκήνιο, ορισμένα οπτικά εφέ και συγκεκριμένες λειτουργίες."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Προκειμένου να μειωθεί η χρήση δεδομένων, η Εξοικονόμηση δεδομένων αποτρέπει την αποστολή ή λήψη δεδομένων από ορισμένες εφαρμογές στο παρασκήνιο. Μια εφαρμογή που χρησιμοποιείτε αυτήν τη στιγμή μπορεί να χρησιμοποιήσει δεδομένα αλλά με μικρότερη συχνότητα. Για παράδειγμα, οι εικόνες μπορεί να μην εμφανίζονται μέχρι να τις πατήσετε."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Ενεργ.Εξοικονόμησης δεδομένων;"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ενεργοποίηση"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Η εφαρμογή <xliff:g id="APP_NAME_0">%1$s</xliff:g> δεν είναι διαθέσιμη αυτήν τη στιγμή. Η διαχείριση πραγματοποιείται από την εφαρμογή <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Μάθετε περισσότερα"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Κατάργηση παύσης εφαρμογής"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ενεργοποίηση προφίλ εργασίας;"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Οι εφαρμογές, οι ειδοποιήσεις και τα δεδομένα εργασίας σας, καθώς και άλλες λειτουργίες του προφίλ εργασίας, θα ενεργοποιηθούν"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ενεργοποίηση"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Η εφαρμογή δεν είναι διαθέσιμη"</string> <string name="app_blocked_message" msgid="542972921087873023">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν είναι διαθέσιμη αυτήν τη στιγμή."</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index f8627fcff5ca..2246e95e2832 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features.\n\n"<annotation id="url">"Learn more"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections.\n\n"<annotation id="url">"Learn more"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you\'re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index d569b46db64c..33c6d71883a2 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features.\n\n"<annotation id="url">"Learn more"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections.\n\n"<annotation id="url">"Learn more"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you\'re currently using can access data, but may do so less frequently. This may mean, for example, that images don\'t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 6024d983cb73..a08ad1d8a1cc 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features.\n\n"<annotation id="url">"Learn more"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections.\n\n"<annotation id="url">"Learn more"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app that you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index fd4d6f89fbae..44eba8940526 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Color correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features.\n\n"<annotation id="url">"Learn more"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections.\n\n"<annotation id="url">"Learn more"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app that you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index 43c951e22e5b..c9f62e1f7efa 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the Power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Color Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Color Correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-Handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, and certain features.\n\n"<annotation id="url">"Learn more"</annotation>""</string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features, and some network connections.\n\n"<annotation id="url">"Learn more"</annotation>""</string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features, and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available right now. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data, and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index f57eb3b0e9b6..624a6781d4eb 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado en el portapapeles."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegó contenido de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegó contenido del portapapeles"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegó información del portapapeles"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió a texto del portapapeles"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió a una imagen del portapapeles"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió al contenido del portapapeles"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando aplicaciones"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finalizando el inicio"</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"¿Quieres apagar la pantalla?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Al configurar tu huella dactilar, presionaste el botón de encendido.\n\nPor lo general, esta acción apaga la pantalla."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Apagar"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancelar"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> en ejecución"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Presiona para volver al juego"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Elige un juego"</string> @@ -1354,8 +1358,8 @@ <string name="no_permissions" msgid="5729199278862516390">"No se requieren permisos"</string> <string name="perm_costs_money" msgid="749054595022779685">"esto puede costarte dinero"</string> <string name="dlg_ok" msgid="5103447663504839312">"Aceptar"</string> - <string name="usb_charging_notification_title" msgid="1674124518282666955">"Cargando dispositivo mediante USB"</string> - <string name="usb_supplying_notification_title" msgid="5378546632408101811">"Cargando el dispositivo conectado mediante USB"</string> + <string name="usb_charging_notification_title" msgid="1674124518282666955">"Cargando dispositivo por USB"</string> + <string name="usb_supplying_notification_title" msgid="5378546632408101811">"Cargando por USB el dispositivo conectado"</string> <string name="usb_mtp_notification_title" msgid="1065989144124499810">"Se activó la transferencia de archivos mediante USB"</string> <string name="usb_ptp_notification_title" msgid="5043437571863443281">"Se activó el modo PTP mediante USB"</string> <string name="usb_tether_notification_title" msgid="8828527870612663771">"Se activó la conexión mediante dispositivo móvil por USB"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar acceso directo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de color"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo de una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Como mantuviste presionadas las teclas de volumen, se activó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Se presionaron las teclas de volumen. Se desactivó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Tu administrador actualizó este paquete"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Tu administrador borró este paquete"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"El Ahorro de batería activa el Tema oscuro y desactiva o restringe la actividad en segundo plano, algunos efectos visuales y otras funciones determinadas.\n\n"<annotation id="url">"Más información"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"El Ahorro de batería activa el Tema oscuro y desactiva o restringe la actividad en segundo plano, algunos efectos visuales y otras funciones determinadas."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"El Ahorro de batería activa el Tema oscuro y desactiva o restringe la actividad en segundo plano, algunos efectos visuales, algunas conexiones de red y otras funciones determinadas.\n\n"<annotation id="url">"Más información"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"El Ahorro de batería activa el Tema oscuro y desactiva o restringe la actividad en segundo plano, algunos efectos visuales, algunas conexiones de red y otras funciones determinadas."</string> <string name="data_saver_description" msgid="4995164271550590517">"Para reducir el uso de datos, el modo Ahorro de datos evita que algunas apps envíen y reciban datos en segundo plano. La app que estés usando podrá acceder a los datos, pero con menor frecuencia. De esta forma, por ejemplo, las imágenes no se mostrarán hasta que las presiones."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"¿Deseas activar Ahorro de datos?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no está disponible en este momento. Esta opción se administra en <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Más información"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Reanudar app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"¿Activar el perfil de trabajo?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Se activarán las apps de trabajo, los datos, las notificaciones y otras funciones del perfil de trabajo"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"¿Activar apps de trabajo?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Obtén acceso a tus apps de trabajo y notificaciones"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"La app no está disponible"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> no está disponible en este momento."</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 6a891470b02a..00a752267d23 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -248,7 +248,7 @@ <string name="global_action_power_options" msgid="1185286119330160073">"Encender o apagar"</string> <string name="global_action_restart" msgid="4678451019561687074">"Reiniciar"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergencia"</string> - <string name="global_action_bug_report" msgid="5127867163044170003">"Informe de error"</string> + <string name="global_action_bug_report" msgid="5127867163044170003">"Informe de errores"</string> <string name="global_action_logout" msgid="6093581310002476511">"Finalizar sesión"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"Captura de pantalla"</string> <string name="bugreport_title" msgid="8549990811777373050">"Informar de un error"</string> @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado al portapapeles."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido del portapapeles"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Se ha pegado <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> desde el portapapeles"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado texto que has copiado"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado una imagen que has copiado"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido que has copiado"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando aplicaciones"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finalizando inicio..."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"¿Apagar pantalla?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Has pulsado el botón de encendido mientras configurabas tu huella digital.\n\nAl hacer esto, se suele apagar la pantalla."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Desactivar"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancelar"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> en ejecución"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toca para volver al juego"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Elegir juego"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar acceso directo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de color"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Al mantener pulsadas las teclas de volumen, se ha activado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Se han mantenido pulsadas las teclas de volumen. Se ha desactivado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1869,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizado por el administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado por el administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y ciertas funciones.\n\n"<annotation id="url">"Más información"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y ciertas funciones."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Ahorro de datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que puede reducir el uso de datos. Una aplicación que estés usando de forma activa puede acceder a los datos, aunque con menos frecuencia. Esto significa que es posible que, por ejemplo, algunas imágenes no se muestren hasta que las toques."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"¿Activar Ahorro de datos?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no está disponible en este momento. Esta opción se administra en <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Más información"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anular pausa de aplicación"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"¿Activar perfil de trabajo?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Tus aplicaciones, notificaciones, datos y otras funciones del perfil de trabajo se activarán"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"La aplicación no está disponible"</string> <string name="app_blocked_message" msgid="542972921087873023">"En estos momentos, <xliff:g id="APP_NAME">%1$s</xliff:g> no está disponible."</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index be46874eb5ed..dc56e12bd6ea 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Lõikelauale kopeeritud tekst."</string> <string name="copied" msgid="4675902854553014676">"Kopeeritud"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis rakendusest <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis lõikelaualt"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud teksti"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud pildi"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud sisu"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Rakenduse <xliff:g id="APPNAME">%1$s</xliff:g> ettevalmistamine."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Rakenduste käivitamine."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Käivitamise lõpuleviimine."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> töötab"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Puudutage mängu naasmiseks"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Valige mäng"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kasuta otseteed"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Värvide ümberpööramine"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Värvide korrigeerimine"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Eriti tume"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati sisse."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati välja."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administraator on seda värskendanud"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administraator on selle kustutanud"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Akusäästja lülitab sisse tumeda teema ja lülitab välja taustategevused, mõned visuaalsed efektid ja teatud funktsioonid või piirab neid.\n\n"<annotation id="url">"Lisateave"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Akusäästja lülitab sisse tumeda teema ja lülitab välja taustategevused, mõned visuaalsed efektid ja teatud funktsioonid või piirab neid."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Andmekasutuse vähendamiseks keelab andmemahu säästja mõne rakenduse puhul andmete taustal saatmise ja vastuvõtmise. Rakendus, mida praegu kasutate, pääseb andmesidele juurde, kuid võib seda teha väiksema sagedusega. Seetõttu võidakse näiteks pildid kuvada alles siis, kui neid puudutate."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Lülitada andmemahu säästja sisse?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Lülita sisse"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> pole praegu saadaval. Seda haldab rakendus <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Lisateave"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Jätka rakendust"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Kas lülitada tööprofiil sisse?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Teie töörakendused, märguanded, andmed ja muud tööprofiili funktsioonid lülitatakse sisse"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Lülita sisse"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Rakendus ei ole saadaval"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei ole praegu saadaval."</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index d1c71c5dcd18..428832db4241 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -346,7 +346,7 @@ <string name="permlab_statusBarService" msgid="2523421018081437981">"bihurtu egoera-barra"</string> <string name="permdesc_statusBarService" msgid="6652917399085712557">"Egoera-barra izatea baimentzen die aplikazioei."</string> <string name="permlab_expandStatusBar" msgid="1184232794782141698">"zabaldu/tolestu egoera-barra"</string> - <string name="permdesc_expandStatusBar" msgid="7180756900448498536">"Egoera-barra zabaltzeko edo tolesteko aukera ematen die aplikazioei."</string> + <string name="permdesc_expandStatusBar" msgid="7180756900448498536">"Egoera-barra zabaltzeko edo tolesteko baimena ematen die aplikazioei."</string> <string name="permlab_fullScreenIntent" msgid="4310888199502509104">"blokeatutako gailu batean jakinarazpenak pantaila osoko jarduera gisa bistaratzea"</string> <string name="permdesc_fullScreenIntent" msgid="1100721419406643997">"Blokeatutako gailu batean jakinarazpenak pantaila osoko jarduera gisa bistaratzeko baimena ematen die aplikazioei"</string> <string name="permlab_install_shortcut" msgid="7451554307502256221">"instalatu lasterbideak"</string> @@ -444,13 +444,13 @@ <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"atzitu kokapena atzeko planoan"</string> <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikazioak kokapena atzi dezake, baita aplikazioa erabiltzen ari ez zarenean ere."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"aldatu audio-ezarpenak"</string> - <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Audio-ezarpen orokorrak aldatzeko baimena ematen dio; besteak beste, bolumena eta irteerarako zer bozgorailu erabiltzen den."</string> + <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Audio-ezarpen orokorrak aldatzeko baimena ematen die aplikazioei; besteak beste, bolumena eta irteerarako zer bozgorailu erabiltzen den."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"grabatu audioa"</string> <string name="permdesc_recordAudio" msgid="5857246765327514062">"Aplikazioak abian den bitartean erabil dezake mikrofonoa audioa grabatzeko."</string> <string name="permlab_recordBackgroundAudio" msgid="5891032812308878254">"Audioa grabatu atzeko planoan."</string> <string name="permdesc_recordBackgroundAudio" msgid="1992623135737407516">"Aplikazioak edonoiz erabil dezake mikrofonoa audioa grabatzeko."</string> <string name="permlab_sim_communication" msgid="176788115994050692">"bidali aginduak SIM txartelera"</string> - <string name="permdesc_sim_communication" msgid="4179799296415957960">"SIM txartelera aginduak bidaltzeko aukera ematen die aplikazioei. Oso arriskutsua da."</string> + <string name="permdesc_sim_communication" msgid="4179799296415957960">"SIM txartelera aginduak bidaltzeko baimena ematen die aplikazioei. Oso arriskutsua da."</string> <string name="permlab_activityRecognition" msgid="1782303296053990884">"hauteman jarduera fisikoa"</string> <string name="permdesc_activityRecognition" msgid="8667484762991357519">"Aplikazioak jarduera fisikoa hauteman dezake."</string> <string name="permlab_camera" msgid="6320282492904119413">"atera argazkiak eta grabatu bideoak"</string> @@ -462,7 +462,7 @@ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"eman jakinarazpenak jasotzeko baimena aplikazioari edo zerbitzuari kamerak ireki edo ixten direnean."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Kamera ireki edo itxi dela (eta zer aplikaziorekin) dioten jakinarazpenak jaso ditzake aplikazio honek."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrolatu dardara"</string> - <string name="permdesc_vibrate" msgid="8733343234582083721">"Bibragailua kontrolatzeko aukera ematen die aplikazioei."</string> + <string name="permdesc_vibrate" msgid="8733343234582083721">"Bibragailua kontrolatzeko baimena ematen die aplikazioei."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dardara-egoera atzitzeko baimena ematen die aplikazioei."</string> <string name="permlab_callPhone" msgid="1798582257194643320">"deitu zuzenean telefono-zenbakietara"</string> <string name="permdesc_callPhone" msgid="5439809516131609109">"Telefono-zenbakietara zuk esku hartu gabe deitzeko baimena ematen die aplikazioei. Horrela, ustekabeko gastuak edo deiak eragin daitezke. Asmo txarreko aplikazioek erabil dezakete zuk berretsi gabeko deiak eginda gastuak eragiteko."</string> @@ -489,9 +489,9 @@ <string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Android TV gailua inaktibo ezartzea eragozteko baimena ematen die aplikazioei."</string> <string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Telefonoa inaktibo ezartzea galaraztea baimentzen die aplikazioei."</string> <string name="permlab_transmitIr" msgid="8077196086358004010">"transmititu infragorriak"</string> - <string name="permdesc_transmitIr" product="tablet" msgid="5884738958581810253">"Tabletaren infragorri-igorlea erabiltzeko aukera ematen die aplikazioei."</string> + <string name="permdesc_transmitIr" product="tablet" msgid="5884738958581810253">"Tabletaren infragorri-igorlea erabiltzeko baimena ematen die aplikazioei."</string> <string name="permdesc_transmitIr" product="tv" msgid="3278506969529173281">"Android TV gailuaren infragorri-igorlea erabiltzeko baimena ematen die aplikazioei."</string> - <string name="permdesc_transmitIr" product="default" msgid="8484193849295581808">"Telefonoaren infragorri-igorlea erabiltzeko aukera ematen die aplikazioei."</string> + <string name="permdesc_transmitIr" product="default" msgid="8484193849295581808">"Telefonoaren infragorri-igorlea erabiltzeko baimena ematen die aplikazioei."</string> <string name="permlab_setWallpaper" msgid="6959514622698794511">"ezarri horma-papera"</string> <string name="permdesc_setWallpaper" msgid="2973996714129021397">"Sistemaren horma-papera aldatzeko baimena ematen die aplikazioei."</string> <string name="permlab_setWallpaperHints" msgid="1153485176642032714">"doitu horma-paperaren tamaina"</string> @@ -543,13 +543,13 @@ <string name="permlab_uwb_ranging" msgid="8141915781475770665">"banda ultrazabala darabilten inguruko gailuen arteko distantzia erlatiboa zehaztu"</string> <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Banda ultrazabala darabilten inguruko gailuen arteko distantzia erlatiboa zehazteko baimena ematen dio aplikazioari"</string> <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"NFC bidezko ordainketa-zerbitzu lehenetsiari buruzko informazioa"</string> - <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Aplikazioari baimena ematen dio NFC bidezko ordainketa-zerbitzu lehenetsiari buruzko informazioa jasotzeko, hala nola erregistratutako laguntzaileak eta ibilbidearen helmuga."</string> + <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"NFC bidezko ordainketa-zerbitzu lehenetsiari buruzko informazioa jasotzeko baimena ematen die aplikazioei, hala nola erregistratutako laguntzaileak eta ibilbidearen helmuga."</string> <string name="permlab_nfc" msgid="1904455246837674977">"kontrolatu Near Field Communication komunikazioa"</string> <string name="permdesc_nfc" msgid="8352737680695296741">"Near Field Communication (NFC) etiketekin, txartelekin eta irakurgailuekin komunikatzea baimentzen die aplikazioei."</string> <string name="permlab_disableKeyguard" msgid="3605253559020928505">"desgaitu pantailaren blokeoa"</string> <string name="permdesc_disableKeyguard" msgid="3223710003098573038">"Teklen blokeoa eta erlazionatutako pasahitz-segurtasuna desgaitzeko baimena ematen die aplikazioei. Adibidez, telefonoak teklen blokeoa desgaitzen du telefono-deiak jasotzen dituenean, eta berriro gaitzen du deiak amaitzean."</string> <string name="permlab_requestPasswordComplexity" msgid="1808977190557794109">"eskatu pantailaren blokeoa konplexua izatea"</string> - <string name="permdesc_requestPasswordComplexity" msgid="1130556896836258567">"Pantailaren blokeoaren konplexutasun-maila (handia, ertaina, txikia edo bat ere ez) jakiteko aukera ematen dio aplikazioari. Informazio horrekin, pantailaren blokeoaren luzera-barruti edo mota posiblea ondoriozta liteke. Halaber, pantailaren blokeoa maila jakin batera igotzeko iradoki diezaieke aplikazioak erabiltzaileei, baina horri ez ikusi egin eta aplikazioa erabiltzen jarraitzeko aukera dute erabiltzaileek. Kontuan izan pantailaren blokeoa ez dela gordetzen testu arrunt gisa; beraz, aplikazioak ez du jakingo pasahitz zehatza zein den."</string> + <string name="permdesc_requestPasswordComplexity" msgid="1130556896836258567">"Pantailaren blokeoaren konplexutasun-maila (handia, ertaina, txikia edo bat ere ez) jakiteko baimena ematen die aplikazioei. Informazio horrekin, pantailaren blokeoaren luzera-barruti edo mota posiblea ondoriozta liteke. Halaber, pantailaren blokeoa maila jakin batera igotzeko iradoki diezaiekete aplikazioek erabiltzaileei, baina horri ez ikusi egin eta aplikazioak erabiltzen jarraitzeko aukera dute erabiltzaileek. Kontuan izan pantailaren blokeoa ez dela gordetzen testu arrunt gisa; beraz, aplikazioek ez dute jakingo pasahitz zehatza zein den."</string> <string name="permlab_useBiometric" msgid="6314741124749633786">"erabili hardware biometrikoa"</string> <string name="permdesc_useBiometric" msgid="7502858732677143410">"Autentifikatzeko hardware biometrikoa erabiltzeko baimena ematen die aplikazioei."</string> <string name="permlab_manageFingerprint" msgid="7432667156322821178">"kudeatu hatz-marken hardwarea"</string> @@ -680,7 +680,7 @@ <string name="permlab_connection_manager" msgid="3179365584691166915">"kudeatu telekomunikabideekiko konexioak"</string> <string name="permdesc_connection_manager" msgid="1426093604238937733">"Telekomunikabideekiko konexioak kudeatzea baimentzen die aplikazioei."</string> <string name="permlab_bind_incall_service" msgid="5990625112603493016">"erabili pantaila deiak abian direnean"</string> - <string name="permdesc_bind_incall_service" msgid="4124917526967765162">"Erabiltzaileak deiaren pantaila noiz eta nola ikusten duen kontrolatzeko aukera ematen die aplikazioei."</string> + <string name="permdesc_bind_incall_service" msgid="4124917526967765162">"Erabiltzaileak deiaren pantaila noiz eta nola ikusten duen kontrolatzeko baimena ematen die aplikazioei."</string> <string name="permlab_bind_connection_service" msgid="5409268245525024736">"jardun interakzioan telefono-zerbitzuekin"</string> <string name="permdesc_bind_connection_service" msgid="6261796725253264518">"Deiak egiteko eta jasotzeko telefonia-zerbitzuekin interakzioan aritzea baimentzen die aplikazioei."</string> <string name="permlab_control_incall_experience" msgid="6436863486094352987">"eskaini erabiltzaileentzako aukerak deiak abian direnean"</string> @@ -692,7 +692,7 @@ <string name="permlab_modifyNetworkAccounting" msgid="7448790834938749041">"aldatu sare-erabileraren kalkuluak"</string> <string name="permdesc_modifyNetworkAccounting" msgid="5076042642247205390">"Aplikazioen sare-erabilera kalkulatzeko modua aldatzeko baimena ematen die aplikazioei. Aplikazio normalek ez lukete beharko."</string> <string name="permlab_accessNotifications" msgid="7130360248191984741">"atzitu jakinarazpenak"</string> - <string name="permdesc_accessNotifications" msgid="761730149268789668">"Jakinarazpenak berreskuratu, aztertu eta garbitzeko aukera ematen die aplikazioei, beste aplikazioek argitaratutako jakinarazpenak barne."</string> + <string name="permdesc_accessNotifications" msgid="761730149268789668">"Jakinarazpenak berreskuratu, aztertu eta garbitzeko baimena ematen die aplikazioei, beste aplikazioek argitaratutako jakinarazpenak barne."</string> <string name="permlab_bindNotificationListenerService" msgid="5848096702733262458">"lotu jakinarazpen-hautemaile bati"</string> <string name="permdesc_bindNotificationListenerService" msgid="4970553694467137126">"Jakinarazpen-hautemaile baten goi-mailako interfazera lotzeko aukera ematen dio titularrari. Aplikazio normalek ez dute baimen hau behar."</string> <string name="permlab_bindConditionProviderService" msgid="5245421224814878483">"lotu baldintza-hornitzaileen zerbitzuei"</string> @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Testua arbelean kopiatu da."</string> <string name="copied" msgid="4675902854553014676">"Kopiatu da"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> aplikaziotik itsatsi da <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Arbeletik itsatsi da <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak arbeletik itsatsi du"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun testua itsatsi du"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun irudia itsatsi du"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun edukia itsatsi du"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> prestatzen."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Aplikazioak abiarazten."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Bertsio-berritzea amaitzen."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Pantaila itzali nahi duzu?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Hatz-marka konfiguratzean, etengailua sakatu duzu.\n\nNormalean, horren ondorioz pantaila itzali egiten da."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Desaktibatu"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Utzi"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> abian da"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Sakatu jokora itzultzeko"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Aukeratu joko bat"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Erabili lasterbidea"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Koloreen alderantzikatzea"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Koloreen zuzenketa"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Esku bakarreko modua"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Are ilunago"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktibatu egin da."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desaktibatu egin da."</string> @@ -1864,8 +1869,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administratzaileak eguneratu du"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administratzaileak ezabatu du"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Ados"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Bateria-aurrezleak gai iluna aktibatzen du, eta murriztu edo desaktibatu egiten ditu atzeko planoko jarduerak, zenbait efektu bisual eta eginbide jakin batzuk.\n\n"<annotation id="url">"Lortu informazio gehiago"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Bateria-aurrezleak gai iluna aktibatzen du, eta murriztu edo desaktibatu egiten ditu atzeko planoko jarduerak, zenbait efektu bisual eta eginbide jakin batzuk."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Datuen erabilera murrizteko, atzeko planoan datuak bidaltzea eta jasotzea galarazten die datu-aurrezleak aplikazio batzuei. Une honetan erabiltzen ari zaren aplikazio batek datuak atzitu ahal izango ditu, baina baliteke maiztasun txikiagoarekin atzitzea. Horrela, adibidez, baliteke irudiak ez erakustea haiek sakatu arte."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Datu-aurrezlea aktibatu nahi duzu?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktibatu"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ez dago erabilgarri une honetan. Haren erabilgarritasuna <xliff:g id="APP_NAME_1">%2$s</xliff:g> aplikazioak kudeatzen du."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Lortu informazio gehiago"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Kendu pausaldia"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Laneko profila aktibatu?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Laneko aplikazioak, jakinarazpenak, datuak eta laneko profileko bestelako eginbideak aktibatuko dira"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktibatu"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikazioa ez dago erabilgarri"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ez dago erabilgarri une honetan."</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index e8002593f828..b66ad5ad0aec 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"متن در بریدهدان کپی شد."</string> <string name="copied" msgid="4675902854553014676">"کپی شد"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> جایگذاری کرد"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از بریدهدان جایگذاری کرد"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از بریدهدان جایگذاری کرد"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نوشتاری را که کپی کردید جایگذاری کرد"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> تصویری را که کپی کردید جایگذاری کرد"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> محتوایی را که کپی کردید جایگذاری کرد"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"آمادهسازی <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"درحال آغاز کردن برنامهها."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"درحال اتمام راهاندازی."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"صفحهنمایش خاموش شود؟"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"هنگام راهاندازی اثر انگشتتان، دکمه روشن/ خاموش را فشار دادید.\n\nاین کار معمولاً صفحهنمایش را خاموش میکند."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"خاموش شود"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"لغو شود"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> در حال اجرا"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"برای برگشت به بازی، ضربه بزنید"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"انتخاب بازی"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استفاده از میانبر"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"وارونگی رنگ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"تصحیح رنگ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"بسیار کمنور"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> روشن شد."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> خاموش شد."</string> @@ -1864,8 +1870,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"توسط سرپرست سیستم بهروزرسانی شد"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"توسط سرپرست سیستم حذف شد"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"تأیید"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"«بهینهسازی باتری» «طرح زمینه تیره» را روشن میکند و فعالیت پسزمینه، برخی از جلوههای بصری، و ویژگیهایی خاص را محدود یا خاموش میکند.\n\n"<annotation id="url">"بیشتر بدانید"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"«بهینهسازی باتری» «طرح زمینه تیره» را روشن میکند و فعالیت پسزمینه، برخی از جلوههای بصری، و ویژگیهایی خاص را محدود یا خاموش میکند."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"«بهینهسازی باتری» «طرح زمینه تیره» را روشن میکند و فعالیت پسزمینه، برخی از جلوههای بصری، ویژگیهایی خاص، و برخی از اتصالهای شبکه را محدود یا خاموش میکند.\n\n"<annotation id="url">"بیشتر بدانید"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"«بهینهسازی باتری» «طرح زمینه تیره» را روشن میکند و فعالیت پسزمینه، برخی از جلوههای بصری، ویژگیهایی خاص، و برخی از اتصالهای شبکه را محدود یا خاموش میکند."</string> <string name="data_saver_description" msgid="4995164271550590517">"برای کمک به کاهش مصرف داده، «صرفهجویی داده» از ارسال و دریافت داده در پسزمینه در بعضی برنامهها جلوگیری میکند. برنامهای که درحالحاضر استفاده میکنید میتواند به دادهها دسترسی داشته باشد اما دفعات دسترسی آن محدود است. این میتواند به این معنی باشد که، برای مثال، تصاویر تازمانیکه روی آنها ضربه نزنید نشان داده نمیشوند."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"«صرفهجویی داده» روشن شود؟"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"روشن کردن"</string> @@ -1968,8 +1974,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> درحالحاضر در دسترس نیست. <xliff:g id="APP_NAME_1">%2$s</xliff:g> آن را مدیریت میکند."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"بیشتر بدانید"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"لغو توقف موقت برنامه"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"نمایه کاری روشن شود؟"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"برنامهها، اعلانها، دادهها، و سایر ویژگیهای نمایه کاری شما روشن خواهد شد"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"برنامههای کاری روشن شود؟"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"دسترسی به اعلانها و برنامههای کاری"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"روشن کردن"</string> <string name="app_blocked_title" msgid="7353262160455028160">"برنامه در دسترس نیست"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> درحالحاضر در دسترس نیست."</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index b82c0fdc5120..270d594a4646 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teksti kopioitu leikepöydälle."</string> <string name="copied" msgid="4675902854553014676">"Kopioitu"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> liitetty täältä: <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> liitetty leikepöydältä"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi tekstin"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi kuvan"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi sisällön"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Valmistellaan: <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Käynnistetään sovelluksia."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Viimeistellään päivitystä."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> käynnissä"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Palaa peliin napauttamalla"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Valitse peli"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Käytä pikanäppäintä"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Käänteiset värit"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Värinkorjaus"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Erittäin himmeä"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin päälle."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin pois päältä."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Järjestelmänvalvoja päivitti tämän."</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Järjestelmänvalvoja poisti tämän."</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Virransäästö laittaa tumman teeman päälle ja laittaa pois päältä tai rajoittaa taustatoimintoja, joitakin visuaalisia tehosteita ja tiettyjä muita ominaisuuksia.\n\n"<annotation id="url">"Lue lisää"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Virransäästö laittaa tumman teeman päälle ja laittaa pois päältä tai rajoittaa taustatoimintoja, joitakin visuaalisia tehosteita ja tiettyjä muita ominaisuuksia."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Data Saver estää joitakin sovelluksia lähettämästä tai vastaanottamasta tietoja taustalla, jotta datan käyttöä voidaan vähentää. Käytössäsi oleva sovellus voi yhä käyttää dataa, mutta se saattaa tehdä niin tavallista harvemmin. Tämä voi tarkoittaa esimerkiksi sitä, että kuva ladataan vasta, kun kosketat sitä."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Otetaanko Data Saver käyttöön?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ota käyttöön"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ei ole juuri nyt saatavilla. Tästä vastaa <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Lue lisää"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Peru keskeytys"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Otetaanko työprofiili käyttöön?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Työsovellukset, ‑ilmoitukset, ‑tiedot ja muut työprofiiliominaisuudet otetaan käyttöön"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ota käyttöön"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Sovellus ei ole käytettävissä"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei ole nyt käytettävissä."</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 595775073cc0..d717f5bfc3d4 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Le texte a été copié dans le presse-papiers."</string> <string name="copied" msgid="4675902854553014676">"Copié"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé à partir de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé à partir du presse-papiers"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé du texte que vous avez copié"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé une image que vous avez copiée"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé le contenu que vous avez copié"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Lancement des applications…"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finalisation de la mise à jour."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> en cours d\'exécution"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Touchez pour revenir au jeu"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choisissez un jeu"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correction des couleurs"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Réduction supplémentaire de la luminosité"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume maintenues enfoncées. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume maintenues enfoncées. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Mise à jour par votre administrateur"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Supprimé par votre administrateur"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"La fonctionnalité Économiseur de pile active le thème sombre et limite ou désactive l\'activité en arrière-plan, certains effets visuels et d\'autres fonctionnalités.\n\n"<annotation id="url">"En savoir plus"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"La fonctionnalité Économiseur de pile active le thème sombre et limite ou désactive l\'activité en arrière-plan, certains effets visuels et d\'autres fonctionnalités."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Pour aider à diminuer l\'utilisation des données, la fonctionnalité Économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Une application que vous utilisez actuellement peut accéder à des données, mais peut le faire moins souvent. Cela peut signifier, par exemple, que les images ne s\'affichent pas jusqu\'à ce que vous les touchiez."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"L\'application <xliff:g id="APP_NAME_0">%1$s</xliff:g> n\'est pas accessible pour le moment. Ceci est géré par <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"En savoir plus"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Réactiver l\'application"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activer le profil professionnel?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Vos applications professionnelles, vos notifications, vos données et les autres fonctionnalités de profil professionnel seront activées"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activer"</string> <string name="app_blocked_title" msgid="7353262160455028160">"L\'application n\'est pas accessible"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas accessible pour le moment."</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 62267ac69d97..28990b47d0c0 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Le texte a été copié dans le presse-papier."</string> <string name="copied" msgid="4675902854553014676">"Copie effectuée"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé depuis <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé depuis le presse-papiers"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a copié des données depuis le presse-papiers"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé du texte que vous avez copié"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé une image que vous avez copiée"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé le contenu que vous avez copié"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Lancement des applications…"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finalisation de la mise à jour."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Éteindre l\'écran ?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Vous avez appuyé sur le bouton Marche/Arrêt pendant la configuration de votre empreinte digitale.\n\nCela éteint généralement l\'écran."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Éteindre"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Annuler"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> en cours d\'exécution"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Appuyez pour revenir au jeu"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choisir un jeu"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correction des couleurs"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode une main"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Encore moins lumineux"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string> @@ -1864,8 +1869,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Mis à jour par votre administrateur"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Supprimé par votre administrateur"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan et certains effets visuels et fonctionnalités.\n\n"<annotation id="url">"En savoir plus"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan et certains effets visuels et fonctionnalités."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation des données, l\'Économiseur de données empêche certaines applis d\'envoyer ou de recevoir des données en arrière-plan. Les applis que vous utiliserez pourront toujours accéder aux données, mais le feront moins fréquemment. Par exemple, les images pourront ne pas s\'afficher tant que vous n\'aurez pas appuyé pas dessus."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"L\'application <xliff:g id="APP_NAME_0">%1$s</xliff:g> n\'est pas disponible pour le moment. Cette suspension est gérée par l\'application <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"En savoir plus"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Débloquer l\'application"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activer le profil pro. ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Vos applications professionnelles, notifications, données et d\'autres fonctionnalités de votre profil professionnel seront activées"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activer"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Application non disponible"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas disponible pour le moment."</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index 1a15ea267aa6..e2bd3cb31d64 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"O texto copiouse no portapapeis."</string> <string name="copied" msgid="4675902854553014676">"Copiuse"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido procedente de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido procedente do portapapeis"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido do portapapeis"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou texto que copiaches"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou unha imaxe que copiaches"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido que copiaches"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando aplicacións."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Está finalizando o arranque"</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Queres apagar a pantalla?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Premiches o botón de acendido mentres configurabas a impresión dixital.\n\nAo realizar esta acción, normalmente apágase a pantalla."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Apagar"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancelar"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> está en execución"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toca para volver ao xogo"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Escolle un xogo"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atallo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de cor"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de cor"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo dunha soa man"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume premidas. Activouse o servizo <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Desactivouse <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1869,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizado polo teu administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado polo teu administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Coa función Aforro de batería actívase o tema escuro e restrínxense ou desactívanse a actividade en segundo plano, algúns efectos visuais e determinadas funcións.\n\n"<annotation id="url">"Máis información"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Coa función Aforro de batería actívase o tema escuro e restrínxense ou desactívanse a actividade en segundo plano, algúns efectos visuais e determinadas funcións."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Para contribuír a reducir o uso de datos, o aforro de datos impide que algunhas aplicacións envíen ou reciban datos en segundo plano. Cando esteas utilizando unha aplicación, esta poderá acceder aos datos, pero é posible que o faga con menos frecuencia. Por exemplo, poida que as imaxes non se mostren ata que as toques."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Queres activar o aforro de datos?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"A aplicación <xliff:g id="APP_NAME_0">%1$s</xliff:g> non está dispoñible neste momento. A dispoñibilidade está xestionada por <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Máis información"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Volver activar aplicación"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activar o perfil de traballo?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Activaranse as túas aplicacións de traballo, as notificacións, os datos e outras funcións do perfil de traballo"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"A aplicación non está dispoñible"</string> <string name="app_blocked_message" msgid="542972921087873023">"A aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> non está dispoñible neste momento."</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index b7ecc0eb4676..4f32f29941fe 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ક્લિપબોર્ડ પર ટેક્સ્ટ કૉપિ કરી."</string> <string name="copied" msgid="4675902854553014676">"કૉપિ કરેલ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>માંથી કૉપિ કરાયેલો ડેટા <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>માં પેસ્ટ કરવામાં આવ્યો"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ક્લિપબોર્ડ ડેટાને <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>માં પેસ્ટ કર્યો"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલી ટેક્સ્ટ પેસ્ટ કરાઈ"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલી છબી પેસ્ટ કરાઈ"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલું કન્ટેન્ટ પેસ્ટ કરાયું"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> તૈયાર કરી રહ્યું છે."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ઍપ્લિકેશનો શરૂ કરી રહ્યાં છે."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"બૂટ સમાપ્ત કરી રહ્યાં છે."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ચાલુ છે"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ગેમ પર પાછા આવવા માટે ટૅપ કરો"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ગેમ પસંદ કરો"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"શૉર્ટકટનો ઉપયોગ કરો"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"વિપરીત રંગમાં બદલવું"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"રંગ સુધારણા"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"એક્સ્ટ્રા ડિમ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ચાલુ કરી."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> બંધ કરી."</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"બૅટરી સેવર ઘેરી થીમની સુવિધા ચાલુ કરે છે અને બૅકગ્રાઉન્ડમાં થતી પ્રવૃત્તિ, કેટલીક વિઝ્યુઅલ ઇફેક્ટ અને કેટલીક સુવિધાઓને મર્યાદિત કે બંધ કરે છે.\n\n"<annotation id="url">"વધુ જાણો"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"બૅટરી સેવર ઘેરી થીમની સુવિધા ચાલુ કરે છે અને બૅકગ્રાઉન્ડમાં થતી પ્રવૃત્તિ, કેટલીક વિઝ્યુઅલ ઇફેક્ટ અને કેટલીક સુવિધાઓને મર્યાદિત કે બંધ કરે છે."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ડેટા વપરાશને ઘટાડવામાં સહાય માટે, ડેટા સેવર કેટલીક ઍપને બૅકગ્રાઉન્ડમાં ડેટા મોકલવા અથવા પ્રાપ્ત કરવાથી અટકાવે છે. તમે હાલમાં ઉપયોગ કરી રહ્યાં છો તે ઍપ ડેટાને ઍક્સેસ કરી શકે છે, પરંતુ તે આ ક્યારેક જ કરી શકે છે. આનો અર્થ એ હોઈ શકે છે, ઉદાહરણ તરીકે, છબીઓ ત્યાં સુધી પ્રદર્શિત થશે નહીં જ્યાં સુધી તમે તેને ટૅપ નહીં કરો."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ડેટા સેવર ચાલુ કરીએ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ચાલુ કરો"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> હમણાં ઉપલબ્ધ નથી. આને <xliff:g id="APP_NAME_1">%2$s</xliff:g> દ્વારા મેનેજ કરવામાં આવે છે."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"વધુ જાણો"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ઍપ ફરી શરૂ કરો"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ઑફિસની પ્રોફાઇલ ચાલુ કરીએ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"તમારી ઑફિસ માટેની ઍપ, નોટિફિકેશન, ડેટા અને અન્ય ઑફિસની પ્રોફાઇલ સુવિધાઓ ચાલુ કરવામાં આવશે"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ચાલુ કરો"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ઍપ ઉપલબ્ધ નથી"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> હાલમાં ઉપલબ્ધ નથી."</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 25280763d684..b4594e1bcdb3 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"लेख को क्लिपबोर्ड पर कॉपी किया गया."</string> <string name="copied" msgid="4675902854553014676">"कॉपी किया गया"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> से कॉपी किए गए डेटा को <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> में चिपकाया गया है"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"क्लिपबोर्ड के डेटा को <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> में चिपकाया गया है"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने क्लिपबोर्ड में मौजूद डेटा कॉपी करके चिपकाया"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपका कॉपी किया हुआ टेक्स्ट चिपका दिया है"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपकी कॉपी की हुई इमेज चिपका दी है"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपका कॉपी किया हुआ कॉन्टेंट चिपका दिया है"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> तैयार हो रहा है."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ऐप्स प्रारंभ होने वाले हैं"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"बूट खत्म हो रहा है."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"स्क्रीन बंद करें?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"अपना फ़िंगरप्रिंट सेट अप करते समय, आपने पावर बटन दबाया.\n\nआम तौर पर, इससे स्क्रीन बंद हो जाती है."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"बंद करें"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"अभी नहीं"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> चल रही है"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"गेम पर वापस जाने के लिए टैप करें"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"गेम चुनें"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट का उपयोग करें"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रंग बदलने की सुविधा"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रंग में सुधार करने की सुविधा"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"वन-हैंडेड मोड"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को चालू कर दिया गया."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को बंद कर दिया गया."</string> @@ -1864,8 +1869,10 @@ <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="750683025714899363">"बैटरी सेवर, गहरे रंग वाली थीम को चालू कर देता है. साथ ही, यह बैकग्राउंड में चल रही गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और कुछ खास सुविधाएं इस्तेमाल करने से रोकता है या इन्हें बंद कर देता है.\n\n"<annotation id="url">"ज़्यादा जानें"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"बैटरी सेवर, गहरे रंग वाली थीम को चालू कर देता है. साथ ही, यह बैकग्राउंड में चल रही गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और कुछ खास सुविधाओं के इस्तेमाल को रोकता है या इन्हें बंद कर देता है."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"डेटा खर्च को कम करने के लिए, डेटा बचाने की सेटिंग कुछ ऐप्लिकेशन को बैकग्राउंड में डेटा भेजने या डेटा पाने से रोकती है. फ़िलहाल, आप जिस ऐप्लिकेशन का इस्तेमाल कर रहे हैं वह डेटा ऐक्सेस कर सकता है, लेकिन ऐसा कभी-कभी ही हो पाएगा. उदाहरण के लिए, इमेज तब तक दिखाई नहीं देंगी जब तक कि आप उन पर टैप नहीं करते."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"डेटा बचाने की सेटिंग चालू करें?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"चालू करें"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"फ़िलहाल <xliff:g id="APP_NAME_0">%1$s</xliff:g> उपलब्ध नहीं है. इसे <xliff:g id="APP_NAME_1">%2$s</xliff:g> के ज़रिए प्रबंधित किया जाता है."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ज़्यादा जानें"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ऐप्लिकेशन पर लगी रोक हटाएं"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"वर्क प्रोफ़ाइल चालू करें?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"आपके काम से जुड़े ऐप्लिकेशन, सूचनाएं, डेटा और वर्क प्रोफ़ाइल से जुड़ी दूसरी सुविधाएं चालू हो जाएंगी"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"चालू करें"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ऐप्लिकेशन उपलब्ध नहीं है"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> इस समय उपलब्ध नहीं है."</string> @@ -2288,5 +2297,5 @@ <string name="view_and_control_notification_title" msgid="4300765399209912240">"ऐक्सेस से जुड़ी सेटिंग देखें"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> आपकी स्क्रीन को देख सकता है और कंट्रोल कर सकता है. ऐक्सेस की समीक्षा करने के लिए टैप करें."</string> <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"<xliff:g id="MESSAGE">%1$s</xliff:g> का अनुवाद किया गया."</string> - <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"मैसेज का <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> से <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> अनुवाद में किया गया."</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"मैसेज का <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> से <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> में अनुवाद किया गया."</string> </resources> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index c223cc17178a..8759f7ad098b 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1025,7 +1025,7 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međuspremnik."</string> <string name="copied" msgid="4675902854553014676">"Kopirano"</string> <string name="pasted_from_app" msgid="5627698450808256545">"U aplikaciji <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepljen je sadržaj aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"U aplikaciji <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepljen je sadržaj međuspremnika"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Zalijepljen je sadržaj aplikacije <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je tekst koji ste kopirali"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je sliku koju ste kopirali"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je ono što ste kopirali"</string> @@ -1279,6 +1279,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Pripremanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Pokretanje aplikacija."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Završetak inicijalizacije."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Isključiti zaslon?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Prilikom postavljanja otiska prsta pritisnuli ste tipku za uključivanje/isključivanje.\n\nTom se radnjom obično isključuje zaslon."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Isključi"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Odustani"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Izvodi se <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dodirnite za povratak na igru"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Odabir igre"</string> @@ -1731,6 +1735,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Upotrijebi prečac"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcija boja"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Još tamnije"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za glasnoću. Uključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za glasnoću. Isključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1887,8 +1892,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"U redu"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Štednja baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizualne efekte i određene značajke.\n\n"<annotation id="url">"Saznajte više"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Štednja baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizualne efekte i određene značajke."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjio podatkovni promet, značajka Štednja podatkovnog prometa onemogućuje nekim aplikacijama slanje ili primanje podataka u pozadini. Aplikacija koju trenutačno upotrebljavate može pristupiti podacima, no možda će to činiti rjeđe. To može značiti da se, na primjer, slike neće prikazivati dok ih ne dodirnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Uključiti Štednju podatkovnog prometa?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string> @@ -2000,8 +2007,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutačno nije dostupna. Ovime upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Prekini pauzu aplikacije"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Želite li uključiti poslovni profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Uključit će se vaše poslovne aplikacije, obavijesti, podaci i druge značajke poslovnog profila"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutačno nije dostupna."</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 61eed9585cb9..dd4afa53c2c5 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"A szöveg bemásolva a vágólapra."</string> <string name="copied" msgid="4675902854553014676">"Átmásolva"</string> <string name="pasted_from_app" msgid="5627698450808256545">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> tartalmat másolt vágólapra a(z) <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> appból"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a vágólapon lévő tartalmat"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztett a vágólapról"</string> <string name="pasted_text" msgid="4298871641549173733">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt szöveget"</string> <string name="pasted_image" msgid="4729097394781491022">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt képet"</string> <string name="pasted_content" msgid="646276353060777131">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt tartalmat"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"A(z) <xliff:g id="APPNAME">%1$s</xliff:g> előkészítése."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Kezdő alkalmazások."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Rendszerindítás befejezése."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Kikapcsolja a képernyőt?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Ujjlenyomata beállítása közben megnyomta a bekapcsológombot.\n\nEz általában kikapcsolja a képernyőt."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Kikapcsolás"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Mégse"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> fut"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Koppintson ide a játékhoz való visszatéréshez"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Játék kiválasztása"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Billentyűparancs használata"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Színek invertálása"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Színkorrekció"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extrasötét"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> bekapcsolva."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kikapcsolva."</string> @@ -1864,8 +1870,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"A rendszergazda által frissítve"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"A rendszergazda által törölve"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Az Akkumulátorkímélő mód bekapcsolja a Sötét témát, valamint korlátozza vagy kikapcsolja a háttérbeli tevékenységeket, egyes vizuális effekteket és bizonyos funkciókat.\n\n"<annotation id="url">"További információ"</annotation>"."</string> - <string name="battery_saver_description" msgid="5693741424234005958">"Az Akkumulátorkímélő mód bekapcsolja a Sötét témát, valamint korlátozza vagy kikapcsolja a háttérbeli tevékenységeket, egyes vizuális effekteket és bizonyos funkciókat."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Az adatforgalom csökkentése érdekében az Adatforgalom-csökkentő megakadályozza, hogy egyes alkalmazások adatokat küldjenek vagy fogadjanak a háttérben. Az Ön által jelenleg használt alkalmazások hozzáférhetnek az adatokhoz, de csak ritkábban. Ez például azt jelentheti, hogy a képek csak rákoppintás után jelennek meg."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Bekapcsolja az Adatforgalom-csökkentőt?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Bekapcsolás"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"A(z) <xliff:g id="APP_NAME_0">%1$s</xliff:g> alkalmazás jelenleg nem áll rendelkezésre. Ezt a(z) <xliff:g id="APP_NAME_1">%2$s</xliff:g> kezeli."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"További információ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Alkalmazás szüneteltetésének feloldása"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Bekapcsolja a munkaprofilt?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"A munkahelyi alkalmazások, értesítések, adatok és a munkaprofilhoz tartozó egyéb funkciók be lesznek kapcsolva"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Bekapcsolás"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Az alkalmazás nem hozzáférhető"</string> <string name="app_blocked_message" msgid="542972921087873023">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> jelenleg nem hozzáférhető."</string> @@ -2288,5 +2298,5 @@ <string name="view_and_control_notification_title" msgid="4300765399209912240">"Ellenőrizze a hozzáférési beállításokat"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"A(z) <xliff:g id="SERVICE_NAME">%s</xliff:g> megtekintheti és irányíthatja képernyőjét. Koppintson az áttekintéshez."</string> <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"A következő lefordítása sikeresen megtörtént: <xliff:g id="MESSAGE">%1$s</xliff:g>."</string> - <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"Az üzenet <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> nyelvről <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> nyelvűre való lefordítása sikeresen megtörtént."</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"Sikerült lefordítani az üzenetet <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> nyelvről <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> nyelvre."</string> </resources> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index d345ece5837c..988010bcb1eb 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -321,7 +321,7 @@ <string name="permgroupdesc_camera" msgid="7585150538459320326">"լուսանկարել և տեսագրել"</string> <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Մոտակա սարքեր"</string> <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"հայտնաբերել մոտակա սարքերը և միանալ դրանց"</string> - <string name="permgrouplab_calllog" msgid="7926834372073550288">"Զանգերի մատյան"</string> + <string name="permgrouplab_calllog" msgid="7926834372073550288">"Կանչերի ցուցակ"</string> <string name="permgroupdesc_calllog" msgid="2026996642917801803">"հեռախոսազանգերի մատյանի դիտում և գրանցում"</string> <string name="permgrouplab_phone" msgid="570318944091926620">"Հեռախոս"</string> <string name="permgroupdesc_phone" msgid="270048070781478204">"կատարել զանգեր և կառավարել զանգերը"</string> @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Տեքստը պատճենված է սեղմատախտակին:"</string> <string name="copied" msgid="4675902854553014676">"Պատճենվեց"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տվյալներ տեղադրեց <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> հավելվածից"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տվյալներ տեղադրեց սեղմատախտակից"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած տեքստը"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած պատկերը"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած բովանդակությունը"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> հավելվածը պատրաստվում է:"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Հավելվածները մեկնարկում են:"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Բեռնումն ավարտվում է:"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g>-ն աշխատում է"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Հպեք՝ խաղին վերադառնալու համար"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Ընտրեք խաղ"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Օգտագործել դյուրանցումը"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Գունաշրջում"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Գունաշտկում"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Հավելյալ խամրեցում"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը միացավ։"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունն անջատվեց։"</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"«Մարտկոցի տնտեսում» գործառույթը միացնում է մուգ թեման և անջատում կամ սահմանափակում է աշխատանքը ֆոնային ռեժիմում, որոշ վիզուալ էֆեկտներ և այլ գործառույթներ։\n\n"<annotation id="url">"Իմանալ ավելին"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"«Մարտկոցի տնտեսում» գործառույթը միացնում է մուգ թեման և անջատում կամ սահմանափակում է աշխատանքը ֆոնային ռեժիմում, որոշ վիզուալ էֆեկտներ և այլ գործառույթներ։"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Թրաֆիկի տնտեսման ռեժիմում որոշ հավելվածների համար տվյալների ֆոնային փոխանցումն անջատված է։ Հավելվածը, որն օգտագործում եք, կարող է տվյալներ փոխանցել և ստանալ, սակայն ոչ այնքան հաճախ: Օրինակ՝ պատկերները կցուցադրվեն միայն դրանց վրա սեղմելուց հետո։"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Միացնե՞լ թրաֆիկի տնտեսումը"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Միացնել"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> հավելվածը հասանելի չէ։ Դրա աշխատանքը սահմանափակում է <xliff:g id="APP_NAME_1">%2$s</xliff:g> հավելվածը։"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Մանրամասն"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Չեղարկել դադարեցումը"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Միացնե՞լ աշխատանքային պրոֆիլը"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Ձեր աշխատանքային հավելվածները, ծանուցումները, տվյալները և աշխատանքային պրոֆիլի մյուս գործառույթները կմիացվեն։"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Միացնել"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Հավելվածը հասանելի չէ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածն այս պահին հասանելի չէ։"</string> @@ -2287,6 +2302,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Հավելվածի բրենդային պատկեր"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Ստուգեք մուտքի կարգավորումները"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ծառայությունը կարող է դիտել և կառավարել ձեր էկրանի բովանդակությունը։ Հպեք՝ մանրամասներն իմանալու համար։"</string> - <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"«<xliff:g id="MESSAGE">%1$s</xliff:g>» հաղորդագրությունը թարգմանվել է"</string> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"«<xliff:g id="MESSAGE">%1$s</xliff:g>» հաղորդագրությունը թարգմանված է։"</string> <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"Հաղորդագրությունը <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g>ից թարգմանվել է <xliff:g id="TO_LANGUAGE">%2$s</xliff:g>։"</string> </resources> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 34747646ab3e..990f94dcc807 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teks disalin ke papan klip."</string> <string name="copied" msgid="4675902854553014676">"Disalin"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditempelkan dari <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditempelkan dari papan klip"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan teks yang Anda salin"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan gambar yang Anda salin"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan konten yang Anda salin"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Menyiapkan <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Memulai aplikasi."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Menyelesaikan boot."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> sedang berjalan"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Ketuk untuk kembali ke game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Pilih game"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversi Warna"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Koreksi Warna"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode satu tangan"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra redup"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> diaktifkan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dinonaktifkan."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Diupdate oleh admin Anda"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dihapus oleh admin Anda"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Oke"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Penghemat Baterai mengaktifkan Tema gelap dan membatasi atau menonaktifkan aktivitas latar belakang, beberapa efek visual, dan fitur tertentu.\n\n"<annotation id="url">"Pelajari lebih lanjut"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Penghemat Baterai mengaktifkan Tema gelap dan membatasi atau menonaktifkan aktivitas latar belakang, beberapa efek visual, dan fitur tertentu."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Untuk membantu mengurangi penggunaan data, Penghemat Data mencegah beberapa aplikasi mengirim atau menerima data di latar belakang. Aplikasi yang sedang digunakan dapat mengakses data, tetapi frekuensinya agak lebih jarang. Misalnya saja, gambar hanya akan ditampilkan setelah diketuk."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Aktifkan Penghemat Data?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktifkan"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> saat ini tidak tersedia. Aplikasi ini dikelola oleh <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Pelajari lebih lanjut"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Batalkan jeda aplikasi"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Aktifkan profil kerja?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikasi kerja, notifikasi, data, dan fitur profil kerja lainnya akan diaktifkan"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktifkan"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikasi tidak tersedia"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak tersedia saat ini."</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index ba9264877c76..ba889b675dd8 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Texti afritaður á klippiborð."</string> <string name="copied" msgid="4675902854553014676">"Afritað"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límt úr <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límt af klippiborði."</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi af klippiborðinu"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi texta sem þú afritaðir"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi mynd sem þú afritaðir"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi efni sem þú afritaðir"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Undirbýr <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Ræsir forrit."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Lýkur ræsingu."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Slökkva á skjá?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Þú ýttir á aflrofann þegar þú varst að skrá fingrafarið þitt.\n\nYfirleitt slekkur það á skjánum."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Slökkva"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Hætta við"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> er í gangi"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Ýttu til að fara aftur í leik"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Velja leik"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Nota flýtileið"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Umsnúningur lita"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Litaleiðrétting"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mjög dökkt"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Hljóðstyrkstökkum haldið inni. Kveikt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Hljóðstyrkstökkum haldið inni. Slökkt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1870,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Kerfisstjóri uppfærði"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Kerfisstjóri eyddi"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Í lagi"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Rafhlöðusparnaður kveikir á dökku þema og dregur úr eða slekkur á bakgrunnsvirkni, sumum myndáhrifum og tilteknum eiginleikum.\n\n"<annotation id="url">"Nánar"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Rafhlöðusparnaður kveikir á dökku þema og dregur úr eða slekkur á bakgrunnsvirkni, sumum myndáhrifum og tilteknum eiginleikum."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Gagnasparnaður getur hjálpað til við að draga úr gagnanotkun með því að hindra forrit í að senda eða sækja gögn í bakgrunni. Forrit sem er í notkun getur náð í gögn, en gerir það kannski sjaldnar. Niðurstaðan getur verið að myndir eru ekki birtar fyrr en þú ýtir á þær, svo dæmi sé tekið."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Kveikja á gagnasparnaði?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Kveikja"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ekki í boði eins og er. Þessu er stjórnað með <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Nánari upplýsingar"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Halda áfram að nota"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Kveikja á vinnusniði?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Kveikt verður á vinnuforritum, tilkynningum, gögnum og öðrum eiginleikum vinnusniðsins"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Kveikja"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Forrit er ekki tiltækt"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ekki tiltækt núna."</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 87069eed8103..411c4e145215 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Testo copiato negli appunti."</string> <string name="copied" msgid="4675902854553014676">"Copia eseguita"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Dati dell\'app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> incollati dall\'app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Dati dell\'app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> incollati dagli appunti"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"L\'app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato dati dagli appunti"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato il testo che hai copiato"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato un\'immagine che hai copiato"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato i contenuti che hai copiato"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> in preparazione."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Avvio app."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Conclusione dell\'avvio."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Vuoi disattivare lo schermo?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Durante la configurazione della tua impronta hai premuto il tasto di accensione.\n\nGeneralmente questa azione comporta la disattivazione dello schermo."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Disattiva"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Annulla"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> in esecuzione"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tocca per tornare al gioco"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Scegli gioco"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usa scorciatoia"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversione dei colori"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correzione del colore"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Attenuazione extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> attivato."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> disattivato."</string> @@ -1864,8 +1870,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Aggiornato dall\'amministratore"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminato dall\'amministratore"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"La funzionalità Risparmio energetico attiva il tema scuro e limita o disattiva le attività in background, alcuni effetti visivi e funzionalità.\n\n"<annotation id="url">"Scopri di più"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"La funzionalità Risparmio energetico attiva il tema scuro e limita o disattiva le attività in background, alcuni effetti visivi e funzionalità."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Per contribuire a ridurre l\'utilizzo dei dati, la funzione Risparmio dati impedisce ad alcune app di inviare o ricevere dati in background. Un\'app in uso può accedere ai dati, ma potrebbe farlo con meno frequenza. Esempio: le immagini non vengono visualizzate finché non le tocchi."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Attivare Risparmio dati?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Attiva"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> non è al momento disponibile. Viene gestita tramite <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Scopri di più"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Riattiva app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Attivare il profilo di lavoro?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Le tue app di lavoro, le notifiche, i dati e altri elementi del profilo di lavoro saranno attivati."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Attiva"</string> <string name="app_blocked_title" msgid="7353262160455028160">"L\'app non è disponibile"</string> <string name="app_blocked_message" msgid="542972921087873023">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> non è al momento disponibile."</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index dd96815dc551..9f705fb854fb 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"הטקסט הועתק ללוח."</string> <string name="copied" msgid="4675902854553014676">"ההעתקה בוצעה"</string> <string name="pasted_from_app" msgid="5627698450808256545">"האפליקציה <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> הודבקה מ-<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"האפליקציה <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> הודבקה מהלוח"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"טקסט שהעתקת הודבק על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_image" msgid="4729097394781491022">"תמונה שהעתקת הודבקה על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_content" msgid="646276353060777131">"התוכן שהעתקת הודבק על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"המערכת מכינה את <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"מתבצעת הפעלה של אפליקציות."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"תהליך האתחול בשלבי סיום."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"האפליקציה <xliff:g id="APP">%1$s</xliff:g> פועלת"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"יש להקיש כדי לחזור למשחק"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"בחירת משחק"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"שימוש בקיצור הדרך"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"היפוך צבעים"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"תיקון צבעים"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"מעומעם במיוחד"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הופעל."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הושבת."</string> @@ -1910,8 +1921,10 @@ <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="750683025714899363">"התכונה \'חיסכון בסוללה\' מפעילה עיצוב כהה ומגבילה או מכבה את הפעילות ברקע, חלק מהאפקטים החזותיים ותכונות מסוימות.\n\n"<annotation id="url">"מידע נוסף"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"התכונה \'חיסכון בסוללה\' מפעילה עיצוב כהה ומגבילה או מכבה את הפעילות ברקע, חלק מהאפקטים החזותיים ותכונות מסוימות."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"כדי לסייע בהפחתת השימוש בנתונים, חוסך הנתונים (Data Saver) מונע מאפליקציות מסוימות לשלוח או לקבל נתונים ברקע. אפליקציות שבהן נעשה שימוש כרגע יכולות לגשת לנתונים, אבל בתדירות נמוכה יותר. המשמעות היא, למשל, שתמונות יוצגו רק לאחר שמקישים עליהן."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"להפעיל את חוסך הנתונים?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"הפעלה"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"האפליקציה <xliff:g id="APP_NAME_0">%1$s</xliff:g> לא זמינה כרגע. אפשר לנהל זאת באפליקציה <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"מידע נוסף"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ביטול ההשהיה של האפליקציה"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"להפעיל את פרופיל העבודה?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"אפליקציות העבודה, התראות, נתונים ותכונות נוספות של פרופיל העבודה יופעלו"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"הפעלה"</string> <string name="app_blocked_title" msgid="7353262160455028160">"האפליקציה לא זמינה"</string> <string name="app_blocked_message" msgid="542972921087873023">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> לא זמינה בשלב זה."</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index f5a04dbf8ddc..7238cde459a3 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"テキストをクリップボードにコピーしました。"</string> <string name="copied" msgid="4675902854553014676">"コピーしました"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> から <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> に貼り付けました"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"クリップボードから <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> に貼り付けました"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> にクリップボードから貼り付けました"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内のテキストを貼り付けました"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内の画像を貼り付けました"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内のコンテンツを貼り付けました"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>をペア設定しています。"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"アプリを起動しています。"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ブートを終了しています。"</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"画面を OFF にしますか?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"指紋の設定中に電源ボタンが押されました。\n\n通常、この操作により画面が OFF になります。"</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"OFF にする"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"キャンセル"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g>を実行中"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"タップするとゲームに戻ります"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ゲームの選択"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ショートカットを使用"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色反転"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色補正"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"さらに輝度を下げる"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が ON になりました。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が OFF になりました。"</string> @@ -1864,8 +1870,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"管理者により更新されています"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"管理者により削除されています"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"バッテリー セーバーを有効にすると、ダークテーマが ON になり、バックグラウンド アクティビティ、一部の視覚効果、特定の機能が制限されるか OFF になります。\n\n"<annotation id="url">"詳細"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"バッテリー セーバーを有効にすると、ダークテーマが ON になり、バックグラウンド アクティビティ、一部の視覚効果、特定の機能が制限されるか OFF になります。"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"データセーバーは、一部のアプリによるバックグラウンドでのデータ送受信を停止することでデータ使用量を抑制します。使用中のアプリからデータを送受信することはできますが、その頻度は低くなる場合があります。この影響として、たとえば画像はタップしないと表示されないようになります。"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"データセーバーを ON にしますか?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ON にする"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"現在、<xliff:g id="APP_NAME_0">%1$s</xliff:g> は使用できません。このアプリの使用は [<xliff:g id="APP_NAME_1">%2$s</xliff:g>] で管理されています。"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"詳細"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"アプリの一時停止を解除"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"仕事用プロファイルを ON にしますか?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"仕事用のアプリ、通知、データなど、仕事用プロファイルの機能が ON になります"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ON にする"</string> <string name="app_blocked_title" msgid="7353262160455028160">"アプリの利用不可"</string> <string name="app_blocked_message" msgid="542972921087873023">"現在 <xliff:g id="APP_NAME">%1$s</xliff:g> はご利用になれません。"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 13b06f695a88..a2b337d2b6fb 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ტექსტი დაკოპირებულია გაცვლის ბუფერში."</string> <string name="copied" msgid="4675902854553014676">"დაკოპირდა"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-დან <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>-ში ჩასმული"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მა ჩასვა გაცვლის ბუფერიდან"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული ტექსტი"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული სურათი"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული კონტენტი"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"ემზადება <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"აპების ჩართვა"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ჩატვირთვის დასასრული."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> გაშვებულია"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"შეეხეთ თამაშში დასაბრუნებლად"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"აირჩიეთ თამაში"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"მალსახმობის გამოყენება"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ფერთა ინვერსია"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ფერთა კორექცია"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ცალი ხელის რეჟიმი"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"დამატებითი დაბინდვა"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ჩართულია."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> გამორთულია."</string> @@ -1864,8 +1874,10 @@ <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="750683025714899363">"ბატარეის დამზოგი ჩართავს მუქ თემას და შეზღუდავს ან გამორთავს ფონურ აქტივობას, ზოგიერთ ვიზუალურ ეფექტსა და გარკვეულ ფუნქციებს.\n\n"<annotation id="url">"შეიტყვეთ მეტი"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ბატარეის დამზოგი ჩართავს მუქ თემას და შეზღუდავს ან გამორთავს ფონურ აქტივობას, ზოგიერთ ვიზუალურ ეფექტსა და გარკვეულ ფუნქციებს."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"მობილური ინტერნეტის მოხმარების შემცირების მიზნით, მონაცემთა დამზოგველი ზოგიერთ აპს ფონურ რეჟიმში მონაცემთა გაგზავნასა და მიღებას შეუზღუდავს. თქვენ მიერ ამჟამად გამოყენებული აპი მაინც შეძლებს მობილურ ინტერნეტზე წვდომას, თუმცა ამას ნაკლები სიხშირით განახორციელებს. ეს ნიშნავს, რომ, მაგალითად, სურათები არ გამოჩნდება მანამ, სანამ მათ საგანგებოდ არ შეეხებით."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ჩაირთოს მონაცემთა დამზოგველი?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ჩართვა"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ამჟამად მიუწვდომელია. ის იმართება <xliff:g id="APP_NAME_1">%2$s</xliff:g>-ის მიერ."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"შეიტყვეთ მეტი"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"აპის დაპაუზების გაუქმება"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ჩაირთოს სამსახურის პროფილი?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"თქვენი სამსახურის აპები, შეტყობინებები, მონაცემები და სამსახურის პროფილის ყველა სხვა ფუნქცია ჩაირთვება"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ჩართვა"</string> <string name="app_blocked_title" msgid="7353262160455028160">"აპი მიუწვდომელია"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ამჟამად მიუწვდომელია."</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index c8fb7e3bf610..e7485454ee5c 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Мәтін ақпарат алмастыру қорына сақталды."</string> <string name="copied" msgid="4675902854553014676">"Көшірілді"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> қолданбасынан <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> қолданбасына қойылды."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Буферден <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> қолданбасына қойылды."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген мәтінді қойды."</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген суретті қойды."</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген мазмұнды қойды."</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> дайындалуда."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Қолданбалар іске қосылуда."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Қосуды аяқтауда."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> қосылған"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Ойынды жалғастыру үшін түртіңіз"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Ойынды таңдаңыз"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Төте жолды пайдалану"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Түс инверсиясы"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Түсті түзету"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Экранды қарайту"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Пайдаланушы дыбыс деңгейі пернелерін басып ұстап тұрды. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> қосулы."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дыбыс деңгейі пернелерін басып тұрған соң, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өшірілді."</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"Батареяны үнемдеу режимі қараңғы тақырыпты іске қосады және фондық әрекеттерге, кейбір визуалдық әсерлер мен белгілі бір функцияларға шектеу қояды немесе оларды өшіреді.\n\n"<annotation id="url">"Толығырақ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Батареяны үнемдеу режимі қараңғы тақырыпты іске қосады және фондық әрекеттерге, кейбір визуалдық әсерлер мен белгілі бір функцияларға шектеу қояды немесе оларды өшіреді."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Дерек шығынын азайту үшін Трафикті үнемдеу режимінде кейбір қолданбаларға деректі фондық режимде жіберуге және алуға тыйым салынады. Ашық тұрған қолданба деректі шектеулі шамада пайдаланады (мысалы, кескіндер оларды түрткенге дейін көрсетілмейді)."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Трафикті үнемдеу режимі қосылсын ба?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Қосу"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> дәл қазір қолжетімді емес. Ол <xliff:g id="APP_NAME_1">%2$s</xliff:g> арқылы басқарылады."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Толығырақ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Қолданбаны қайта қосу"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Жұмыс профилі қосылсын ба?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Жұмыс қолданбалары, хабарландырулар, деректер және жұмыс профилінің басқа да мүмкіндіктері қосылады."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Қосу"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Қолданба қолжетімді емес"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> қазір қолжетімді емес."</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index e00bed0f0164..31f2b50c8975 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"បានចម្លងអត្ថបទទៅក្ដារតម្បៀតខ្ទាស់។"</string> <string name="copied" msgid="4675902854553014676">"បានចម្លង"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលពី <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលពីឃ្លីបបត"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលពីឃ្លីបបតរបស់អ្នក"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលអត្ថបទដែលអ្នកបានចម្លង"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលរូបភាពដែលអ្នកបានចម្លង"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលខ្លឹមសារដែលអ្នកបានចម្លង"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"កំពុងរៀបចំ <xliff:g id="APPNAME">%1$s</xliff:g>។"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ចាប់ផ្ដើមកម្មវិធី។"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"បញ្ចប់ការចាប់ផ្ដើម។"</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"បិទអេក្រង់ឬ?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"នៅពេលរៀបចំស្នាមម្រាមដៃរបស់អ្នក អ្នកបានចុចប៊ូតុងថាមពល។\n\nជាធម្មតា ការធ្វើបែបនេះបិទអេក្រង់របស់អ្នក។"</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"បិទ"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"បោះបង់"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> កំពុងដំណើរការ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ចុចដើម្បីត្រឡប់ទៅហ្គេមវិញ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ជ្រើសរើសហ្គេម"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ប្រើប្រាស់ផ្លូវកាត់"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"បញ្ច្រាសពណ៌"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ការកែពណ៌"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ពន្លឺតិចខ្លាំង"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបិទ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string> @@ -1864,8 +1870,10 @@ <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="750683025714899363">"មុខងារសន្សំថ្មបើករចនាប័ទ្មងងឹត និងដាក់កំហិត ឬបិទសកម្មភាពផ្ទៃខាងក្រោយ ឥទ្ធិពលរូបភាពមួយចំនួន និងមុខងារជាក់លាក់។\n\n"<annotation id="url">"ស្វែងយល់បន្ថែម"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"មុខងារសន្សំថ្មបើករចនាប័ទ្មងងឹត និងដាក់កំហិត ឬបិទសកម្មភាពផ្ទៃខាងក្រោយ ឥទ្ធិពលរូបភាពមួយចំនួន និងមុខងារជាក់លាក់។"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ដើម្បីជួយកាត់បន្ថយការប្រើប្រាស់ទិន្នន័យ កម្មវិធីសន្សំសំចៃទិន្នន័យរារាំងកម្មវិធីមួយចំនួនមិនឲ្យបញ្ជូន ឬទទួលទិន្នន័យនៅផ្ទៃខាងក្រោយទេ។ កម្មវិធីដែលអ្នកកំពុងប្រើនាពេលបច្ចុប្បន្នអាចចូលប្រើប្រាស់ទិន្នន័យបាន ប៉ុន្តែអាចនឹងមិនញឹកញាប់ដូចមុនទេ។ ឧទាហរណ៍ រូបភាពមិនបង្ហាញទេ លុះត្រាតែអ្នកប៉ះរូបភាពទាំងនោះ។"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"បើកកម្មវិធីសន្សំសំចៃទិន្នន័យ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"បើក"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> មិនអាចប្រើបានទេនៅពេលនេះ។ វាស្ថិតក្រោមការគ្រប់គ្រងរបស់ <xliff:g id="APP_NAME_1">%2$s</xliff:g> ។"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ស្វែងយល់បន្ថែម"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ឈប់ផ្អាកកម្មវិធី"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"បើកកម្រងព័ត៌មានការងារ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"កម្មវិធីការងារ ការជូនដំណឹង ទិន្នន័យ និងមុខងារកម្រងព័ត៌មានការងារផ្សេងទៀតរបស់អ្នកនឹងត្រូវបានបើក"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"បើក"</string> <string name="app_blocked_title" msgid="7353262160455028160">"មិនអាចប្រើកម្មវិធីនេះបានទេ"</string> <string name="app_blocked_message" msgid="542972921087873023">"មិនអាចប្រើ <xliff:g id="APP_NAME">%1$s</xliff:g> នៅពេលនេះបានទេ។"</string> @@ -2287,8 +2297,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"រូបភាពផ្សព្វផ្សាយម៉ាកកម្មវិធី"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"ពិនិត្យមើលការកំណត់សិទ្ធិចូលប្រើ"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> អាចមើល និងគ្រប់គ្រងអេក្រង់របស់អ្នកបាន។ សូមចុច ដើម្បីពិនិត្យមើល។"</string> - <!-- no translation found for ui_translation_accessibility_translated_text (3197547218178944544) --> - <skip /> - <!-- no translation found for ui_translation_accessibility_translation_finished (3057830947610088465) --> - <skip /> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"បានបកប្រែ <xliff:g id="MESSAGE">%1$s</xliff:g>។"</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"បានបកប្រែសារពីភាសា<xliff:g id="FROM_LANGUAGE">%1$s</xliff:g>ទៅភាសា<xliff:g id="TO_LANGUAGE">%2$s</xliff:g>។"</string> </resources> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 7ac785bd60f7..f3d0d58c7bd8 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ಪಠ್ಯವನ್ನು ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ನಕಲಿಸಲಾಗಿದೆ."</string> <string name="copied" msgid="4675902854553014676">"ನಕಲಿಸಲಾಗಿದೆ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ಅನ್ನು <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ಅನ್ನು ಕ್ಲಿಪ್ಬೋರ್ಡ್ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"ನೀವು ನಕಲಿಸಿರುವ ಪಠ್ಯವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> <string name="pasted_image" msgid="4729097394781491022">"ನೀವು ನಕಲಿಸಿರುವ ಚಿತ್ರವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> <string name="pasted_content" msgid="646276353060777131">"ನೀವು ನಕಲಿಸಿರುವ ವಿಷಯವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ಬೂಟ್ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿದೆ."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ರನ್ ಆಗುತ್ತಿದೆ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ಆಟಕ್ಕೆ ಹಿಂತಿರುಗಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ಆಟವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ಬಣ್ಣ ವಿಲೋಮ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ಬಣ್ಣ ತಿದ್ದುಪಡಿ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ಇನ್ನಷ್ಟು ಮಬ್ಬು"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳಿ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಲಾಗಿದೆ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string> @@ -1864,8 +1875,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ಅಪ್ಡೇಟ್ ಮಾಡಲ್ಪಟ್ಟಿದೆ"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅಳಿಸಿದ್ದಾರೆ"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ಸರಿ"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ, ಕೆಲವು ವಿಷುವಲ್ ಎಫೆಕ್ಟ್ಗಳು, ಮತ್ತು ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ ಅಥವಾ ಆಫ್ ಮಾಡುತ್ತದೆ.\n\n"<annotation id="url">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ, ಕೆಲವು ವಿಷುವಲ್ ಎಫೆಕ್ಟ್ಗಳು, ಮತ್ತು ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ ಅಥವಾ ಆಫ್ ಮಾಡುತ್ತದೆ."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ, ಕೆಲವು ವಿಷುವಲ್ ಎಫೆಕ್ಟ್ಗಳು, ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಇತರ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ ಅಥವಾ ಆಫ್ ಮಾಡುತ್ತದೆ.\n\n"<annotation id="url">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ, ಕೆಲವು ವಿಷುವಲ್ ಎಫೆಕ್ಟ್ಗಳು, ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳು ಮತ್ತು ಇತರ ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ ಅಥವಾ ಆಫ್ ಮಾಡುತ್ತದೆ."</string> <string name="data_saver_description" msgid="4995164271550590517">"ಡೇಟಾ ಬಳಕೆ ಕಡಿಮೆ ಮಾಡುವ ನಿಟ್ಟಿನಲ್ಲಿ, ಡೇಟಾ ಸೇವರ್ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಡೇಟಾ ಕಳುಹಿಸುವುದನ್ನು ಅಥವಾ ಸ್ವೀಕರಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ. ನೀವು ಪ್ರಸ್ತುತ ಬಳಸುತ್ತಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು ಆದರೆ ಪದೇ ಪದೇ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಇದರರ್ಥ, ಉದಾಹರಣೆಗೆ, ನೀವು ಅವುಗಳನ್ನು ಟ್ಯಾಪ್ ಮಾಡುವವರೆಗೆ ಆ ಚಿತ್ರಗಳು ಕಾಣಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ಡೇಟಾ ಸೇವರ್ ಆನ್ ಮಾಡಬೇಕೇ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ಆನ್ ಮಾಡಿ"</string> @@ -1968,8 +1979,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ಅಪ್ಲಿಕೇಶನ್ ಸದ್ಯಕ್ಕೆ ಲಭ್ಯವಿಲ್ಲ. ಇದನ್ನು <xliff:g id="APP_NAME_1">%2$s</xliff:g> ನಲ್ಲಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ಆ್ಯಪ್ ವಿರಾಮ ನಿಲ್ಲಿಸಿ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಆನ್ ಮಾಡುವುದೇ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ನಿಮ್ಮ ಕೆಲಸದ ಅಪ್ಲಿಕೇಶನ್ಗಳು, ಅಧಿಸೂಚನೆಗಳು, ಡೇಟಾ ಮತ್ತು ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ನ ಇತರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಆನ್ ಮಾಡಲಾಗುತ್ತದೆ"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"ಕೆಲಸ ಆ್ಯಪ್ಗಳನ್ನು ಆನ್ ಮಾಡಬೇಕೆ?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"ನಿಮ್ಮ ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆಯಿರಿ"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"ಆನ್ ಮಾಡಿ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ಆ್ಯಪ್ ಲಭ್ಯವಿಲ್ಲ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಇದೀಗ ಲಭ್ಯವಿಲ್ಲ."</string> @@ -2287,8 +2298,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"ಅಪ್ಲಿಕೇಶನ್ ಬ್ರ್ಯಾಂಡಿಂಗ್ ಚಿತ್ರ"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"ಪ್ರವೇಶ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ವೀಕ್ಷಿಸಬಹುದು ಮತ್ತು ನಿಯಂತ್ರಿಸಬಹುದು. ಪರಿಶೀಲಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string> - <!-- no translation found for ui_translation_accessibility_translated_text (3197547218178944544) --> - <skip /> - <!-- no translation found for ui_translation_accessibility_translation_finished (3057830947610088465) --> - <skip /> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"<xliff:g id="MESSAGE">%1$s</xliff:g> ಅನ್ನು ಅನುವಾದಿಸಲಾಗಿದೆ."</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"<xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> ಭಾಷೆಯಿಂದ <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> ಭಾಷೆಗೆ ಸಂದೇಶವನ್ನು ಅನುವಾದಿಸಲಾಗಿದೆ."</string> </resources> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index b33ef6b24324..c74eae72d925 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"텍스트가 클립보드에 복사되었습니다."</string> <string name="copied" msgid="4675902854553014676">"복사 완료"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 앱이 <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> 앱에서 복사하여 붙여넣음"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 앱이 클립보드에서 복사하여 붙여넣음"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 텍스트를 붙여넣음"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 이미지를 붙여넣음"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 콘텐츠를 붙여넣음"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> 준비 중..."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"앱을 시작하는 중입니다."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"부팅 완료"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> 실행 중"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"게임으로 돌아가려면 탭하세요."</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"게임 선택"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"단축키 사용"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"색상 반전"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"색상 보정"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"더 어둡게"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 설정되었습니다."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 중지되었습니다."</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"절전 모드는 어두운 테마를 사용 설정하고 백그라운드 활동, 일부 시각 효과, 특정 기능을 제한하거나 사용 중지합니다.\n\n"<annotation id="url">"자세히 알아보기"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"절전 모드는 어두운 테마를 사용 설정하고 백그라운드 활동, 일부 시각 효과, 특정 기능을 제한하거나 사용 중지합니다."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"데이터 사용량을 줄이기 위해 데이터 절약 모드는 일부 앱이 백그라운드에서 데이터를 전송하거나 수신하지 못하도록 합니다. 현재 사용 중인 앱에서 데이터에 액세스할 수 있지만 빈도가 줄어듭니다. 예를 들면, 이미지를 탭하기 전에는 이미지가 표시되지 않습니다."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"데이터 절약 모드를 사용 설정하시겠습니까?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"사용 설정"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>은(는) 현재 사용할 수 없습니다. <xliff:g id="APP_NAME_1">%2$s</xliff:g>에서 관리하는 앱입니다."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"자세히 알아보기"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"앱 일시중지 해제"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"직장 프로필을 사용 설정하시겠어요?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"직장 앱, 알림, 데이터 및 기타 직장 프로필 기능이 사용 설정됩니다."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"사용 설정"</string> <string name="app_blocked_title" msgid="7353262160455028160">"앱을 사용할 수 없습니다"</string> <string name="app_blocked_message" msgid="542972921087873023">"현재 <xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 사용할 수 없습니다."</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 60daccf43acf..a60bdd582f17 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текст алмашуу буферине көчүрүлдү."</string> <string name="copied" msgid="4675902854553014676">"Көчүрүлдү"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> колдонмосунан чапталды"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> алмашуу буферинен чапталды"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн текст чапталды"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн сүрөт чапталды"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн мазмун чапталды"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> даярдалууда."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Колдонмолорду иштетип баштоо"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Жүктөлүүдө"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> иштеп жатат"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Оюнга кайтуу үчүн таптаңыз"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Оюн тандоо"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Кыска жолду колдонуу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Түстү инверсиялоо"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Түсүн тууралоо"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Кошумча караңгылатуу"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> күйгүзүлдү."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өчүрүлдү."</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"Батареяны үнөмдөгүч режиминде Караңгы тема күйгүзүлүп, фондогу аракеттер, айрым визуалдык эффекттер жана белгилүү бир функциялар чектелип же өчүрүлөт.\n\n"<annotation id="url">"Кеңири маалымат"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Батареяны үнөмдөгүч режиминде Караңгы тема күйгүзүлүп, фондогу аракеттер, айрым визуалдык эффекттер жана белгилүү бир функциялар чектелип же өчүрүлөт."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Трафикти үнөмдөө режиминде айрым колдонмолор маалыматтарды фондо өткөрө алышпайт. Учурда сиз пайдаланып жаткан колдонмо маалыматтарды жөнөтүп/ала алат, бирок адаттагыдан азыраак өткөргөндүктөн, анын айрым функциялары талаптагыдай иштебей коюшу мүмкүн. Мисалы, сүрөттөр басылмайынча жүктөлбөйт."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Трафикти үнөмдөө режимин иштетесизби?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Күйгүзүү"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> колдонмосу учурда жеткиликсиз. Анын жеткиликтүүлүгү <xliff:g id="APP_NAME_1">%2$s</xliff:g> тарабынан башкарылат."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Кеңири маалымат"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Колдонмону иштетүү"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Жумуш профили күйгүзүлсүнбү?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Жумуш колдонмолоруңуз, билдирмелериңиз, дайын-даректериңиз жана жумуш профилинин башка функциялары күйгүзүлөт."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Күйгүзүү"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Колдонмо учурда жеткиликсиз"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> учурда жеткиликсиз"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index e53048c044f6..667057f3fb80 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"ສຳເນົາຂໍ້ຄວາມໃສ່ຄລິບບອດແລ້ວ."</string> <string name="copied" msgid="4675902854553014676">"ສຳເນົາແລ້ວ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"ວາງ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ຈາກ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ແລ້ວ"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ວາງ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ຈາກຄລິບບອດແລ້ວ"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງຈາກຄລິບບອດຂອງທ່ານແລ້ວ"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງຂໍ້ຄວາມທີ່ທ່ານສຳເນົາແລ້ວ"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງຮູບທີ່ທ່ານສຳເນົາແລ້ວ"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງເນື້ອຫາທີ່ທ່ານສຳເນົາແລ້ວ"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"ກຳລັງກຽມ <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ກຳລັງເປີດແອັບຯ."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ກຳລັງສຳເລັດການເປີດລະບົບ."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"ປິດໜ້າຈໍໄວ້ບໍ?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"ໃນລະຫວ່າງການຕັ້ງຄ່າລາຍນິ້ວມືຂອງທ່ານ, ທ່ານກົດປຸ່ມເປີດປິດ.\n\nໂດຍປົກກະຕິນີ້ຈະເປັນການປິດໜ້າຈໍຂອງທ່ານ."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"ປິດໄວ້"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"ຍົກເລີກ"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ກຳລັງເຮັດວຽກ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ໃຊ້ປຸ່ມລັດ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ການປີ້ນສີ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ການແກ້ໄຂຄ່າສີ"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ໂໝດມືດຽວ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ຫຼຸດແສງເປັນພິເສດ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ເປີດໃຊ້ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ແລ້ວ."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ປິດ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ໄວ້ແລ້ວ."</string> @@ -1864,8 +1869,10 @@ <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="750683025714899363">"ຕົວປະຢັດແບັດເຕີຣີຈະເປີດໃຊ້ຮູບແບບສີສັນມືດ ແລະ ຈຳກັດ ຫຼື ປິດການເຄື່ອນໄຫວໃນພື້ນຫຼັງ, ເອັບເຟັກທາງພາບຈຳນວນໜຶ່ງ ແລະ ຄຸນສົມບັດບາງຢ່າງ.\n\n"<annotation id="url">"ສຶກສາເພີ່ມເຕີມ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ຕົວປະຢັດແບັດເຕີຣີຈະເປີດໃຊ້ຮູບແບບສີສັນມືດ ແລະ ຈຳກັດ ຫຼື ປິດການເຄື່ອນໄຫວໃນພື້ນຫຼັງ, ເອັບເຟັກທາງພາບຈຳນວນໜຶ່ງ ແລະ ຄຸນສົມບັດບາງຢ່າງ."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ເພື່ອຊ່ວຍຫຼຸດຜ່ອນການນຳໃຊ້ຂໍ້ມູນ, ຕົວປະຢັດອິນເຕີເນັດຈະປ້ອງກັນບໍ່ໃຫ້ບາງແອັບສົ່ງ ຫຼື ຮັບຂໍ້ມູນໃນພື້ນຫຼັງ. ແອັບໃດໜຶ່ງທີ່ທ່ານກຳລັງໃຊ້ຢູ່ຈະສາມາດເຂົ້າເຖິງຂໍ້ມູນໄດ້ ແຕ່ອາດເຂົ້າເຖິງໄດ້ຖີ່ໜ້ອຍລົງ. ນີ້ອາດໝາຍຄວາມວ່າ ຮູບພາບຕ່າງໆອາດບໍ່ສະແດງຈົນກວ່າທ່ານຈະແຕະໃສ່ກ່ອນ."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ເປີດຕົວປະຢັດອິນເຕີເນັດບໍ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ເປີດໃຊ້"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ບໍ່ສາມາດໃຊ້ໄດ້ໃນຕອນນີ້. ມັນຖືກຈັດການໂດຍ <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ສຶກສາເພີ່ມເຕີມ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ຍົກເລີກການຢຸດແອັບຊົ່ວຄາວ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ເປີດໃຊ້ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກບໍ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ແອັບວຽກຂອງທ່ານ, ການແຈ້ງເຕືອນ, ຂໍ້ມູນ ແລະ ຄຸນສົມບັດໂປຣໄຟລ໌ວຽກຈະຖືກເປີດໃຊ້"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ເປີດ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ແອັບບໍ່ສາມາດໃຊ້ໄດ້"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ສາມາດໃຊ້ໄດ້ໃນຕອນນີ້."</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index c3919c102e0a..75facc1c1e26 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1028,7 +1028,7 @@ <string name="text_copied" msgid="2531420577879738860">"Tekstas nukopijuotas į iškarpinę."</string> <string name="copied" msgid="4675902854553014676">"Nukopijuota"</string> <string name="pasted_from_app" msgid="5627698450808256545">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijuota iš „<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>“"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijuota iš iškarpinės"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijuota iš iškarpinės"</string> <string name="pasted_text" msgid="4298871641549173733">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą tekstą"</string> <string name="pasted_image" msgid="4729097394781491022">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą vaizdą"</string> <string name="pasted_content" msgid="646276353060777131">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą turinį"</string> @@ -1299,6 +1299,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Ruošiama „<xliff:g id="APPNAME">%1$s</xliff:g>“."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Paleidžiamos programos."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Užbaigiamas paleidimas."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Išjungti ekraną?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Nustatydami kontrolinį kodą paspaudėte maitinimo mygtuką.\n\nĮprastai juo išjungiamas ekranas."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Išjungti"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Atšaukti"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Vykdoma „<xliff:g id="APP">%1$s</xliff:g>“"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Palieskite, kad grįžtumėte į žaidimą"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Pasirinkite žaidimą"</string> @@ -1753,6 +1757,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Naudoti spartųjį klavišą"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Spalvų inversija"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Spalvų taisymas"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Itin blanku"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ įjungta."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ išjungta."</string> @@ -1910,8 +1916,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atnaujino administratorius"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Ištrynė administratorius"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Gerai"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Akumuliatoriaus tausojimo priemonė įjungia tamsiąją temą ir apriboja arba išjungia veiklą fone, kai kuriuos vaizdinius efektus bei tam tikras funkcijas.\n\n"<annotation id="url">"Sužinokite daugiau"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Akumuliatoriaus tausojimo priemonė įjungia tamsiąją temą ir apriboja arba išjungia veiklą fone, kai kuriuos vaizdinius efektus bei tam tikras funkcijas."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Kad padėtų sumažinti duomenų naudojimą, Duomenų taupymo priemonė neleidžia kai kurioms programoms siųsti ar gauti duomenų fone. Šiuo metu naudojama programa gali pasiekti duomenis, bet tai bus daroma rečiau. Tai gali reikšti, kad, pvz., vaizdai nebus pateikiami, jei jų nepaliesite."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Įj. Duomenų taupymo priemonę?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Įjungti"</string> @@ -2032,8 +2040,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Programa „<xliff:g id="APP_NAME_0">%1$s</xliff:g>“ šiuo metu nepasiekiama. Tai tvarkoma naudojant programą „<xliff:g id="APP_NAME_1">%2$s</xliff:g>“."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Sužinoti daugiau"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Atšaukti programos pristabdymą"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Įjungti darbo profilį?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Darbo programos, pranešimai, duomenys ir kitos darbo profilio funkcijos bus išjungtos"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Įjungti"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Programa nepasiekiama."</string> <string name="app_blocked_message" msgid="542972921087873023">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ šiuo metu nepasiekiama."</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 6bc4356eb5c7..dbbf427400c0 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1025,7 +1025,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teksts ir kopēts uz starpliktuvi."</string> <string name="copied" msgid="4675902854553014676">"Nokopēts"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Lietotnē <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> tika ielīmēti dati no lietotnes <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Lietotnē <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> tika ielīmēti dati no starpliktuves."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto tekstu"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto attēlu"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto saturu"</string> @@ -1279,6 +1280,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Notiek lietotnes <xliff:g id="APPNAME">%1$s</xliff:g> sagatavošana."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Notiek lietotņu palaišana."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Tiek pabeigta sāknēšana."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> darbojas"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Pieskarieties, lai atgrieztos spēlē"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Spēles izvēlēšanās"</string> @@ -1731,6 +1740,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Izmantot saīsni"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Krāsu inversija"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Krāsu korekcija"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Papildu aptumšošana"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika ieslēgts."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika izslēgts."</string> @@ -1887,8 +1898,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atjaunināja administrators"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dzēsa administrators"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Labi"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Akumulatora enerģijas taupīšanas režīmā tiek ieslēgts tumšais motīvs, kā arī tiek ierobežotas vai izslēgtas darbības fonā, daži vizuālie efekti un funkcijas.\n\n"<annotation id="url">"Uzzināt vairāk"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Akumulatora enerģijas taupīšanas režīmā tiek ieslēgts tumšais motīvs, kā arī tiek ierobežotas vai izslēgtas darbības fonā, daži vizuālie efekti un funkcijas."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Lai samazinātu datu lietojumu, datu lietojuma samazinātājs neļauj dažām lietotnēm fonā nosūtīt vai saņemt datus. Lietotne, kuru pašlaik izmantojat, var piekļūt datiem, bet, iespējams, piekļūs tiem retāk (piemēram, attēli tiks parādīti tikai tad, kad tiem pieskarsieties)."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vai ieslēgt datu lietojuma samazinātāju?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ieslēgt"</string> @@ -2000,8 +2013,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> pašlaik nav pieejama. Šo darbību pārvalda <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Uzzināt vairāk"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Atsākt lietotnes darbību"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vai ieslēgt darba profilu?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Tiks ieslēgtas jūsu darba lietotnes, paziņojumi, dati un citas darba profila funkcijas."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ieslēgt"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Lietotne nav pieejama"</string> <string name="app_blocked_message" msgid="542972921087873023">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> pašlaik nav pieejama."</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index 648ca8cd3c43..876f5225dad6 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Текстот е копиран на таблата со исечоци."</string> <string name="copied" msgid="4675902854553014676">"Копирано"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> залепи од <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> залепи од привремената меморија"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> залепи од вашата привремена меморија"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> го залепи текстот што го копиравте"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ја залепи сликата што ја копиравте"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ги залепи содржините што ги копиравте"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Се подготвува <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Се стартуваат апликациите."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Подигањето завршува."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Да се исклучи екранот?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Додека го поставувавте вашиот отпечаток, го притиснавте копчето за вклучување.\n\nОва обично го исклучува екранот."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Исклучи"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Откажи"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> работи"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Допрете за да се вратите во играта"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Избор на игра"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи кратенка"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија на бои"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекција на бои"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнително затемнување"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е вклучена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е исклучена."</string> @@ -1864,8 +1870,10 @@ <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="750683025714899363">"„Штедачот на батерија“ ја вклучува темната тема и ги ограничува или исклучува активноста во заднина, некои визуелни ефекти и одредени функции.\n\n"<annotation id="url">"Дознајте повеќе"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"„Штедачот на батерија“ ја вклучува темната тема и ги ограничува или исклучува активноста во заднина, некои визуелни ефекти и одредени функции."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"За да се намали користењето интернет, „Штедачот на интернет“ спречува дел од апликациите да испраќаат или да примаат податоци во заднина. Одредена апликација што ја користите ќе може да користи интернет, но можеби тоа ќе го прави поретко. Ова значи, на пример, дека сликите нема да се прикажуваат додека не ги допрете."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Да се вклучи „Штедач на интернет“?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Вклучи"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Апликацијата <xliff:g id="APP_NAME_0">%1$s</xliff:g> не е достапна во моментов. Со ова управува <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Дознај повеќе"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Прекини ја паузата"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Да се вклучи работниот профил?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Вашите работни апликации, известувања, податоци и други функции на работниот профил ќе бидат вклучени"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Вклучи"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Апликацијата не е достапна"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> не е достапна во моментов."</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 8d4217d62663..5448be5a495e 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ടെക്സ്റ്റ് ക്ലിപ്ബോർഡിലേക്ക് പകർത്തി."</string> <string name="copied" msgid="4675902854553014676">"പകർത്തി"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> എന്നതിൽ നിന്ന് <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ഒട്ടിച്ചു"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ക്ലിപ്ബോർഡിൽ നിന്ന് <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ഒട്ടിച്ചു"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ടെക്സ്റ്റ് ഒട്ടിച്ചു"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ഒരു ചിത്രം ഒട്ടിച്ചു"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ഉള്ളടക്കം ഒട്ടിച്ചു"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> തയ്യാറാക്കുന്നു."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"അപ്ലിക്കേഷനുകൾ ആരംഭിക്കുന്നു."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ബൂട്ട് ചെയ്യൽ പൂർത്തിയാകുന്നു."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> പ്രവർത്തിക്കുന്നു"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ഗെയിമിലേക്ക് മടങ്ങാൻ ടാപ്പ് ചെയ്യുക"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ഗെയിം തിരഞ്ഞെടുക്കുക"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"കുറുക്കുവഴി ഉപയോഗിക്കുക"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"വർണ്ണ വിപര്യയം"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"നിറം ക്രമീകരിക്കൽ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"കൂടുതൽ ഡിം ചെയ്യൽ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"വോളിയം കീകൾ പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓണാക്കി."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"വോളിയം കീകൾ അമർത്തിപ്പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓഫാക്കി."</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"ബാറ്ററി ലാഭിക്കൽ ഡാർക്ക് തീം ഓണാക്കുന്നു, കൂടാതെ പശ്ചാത്തല ആക്റ്റിവിറ്റി, ചില വിഷ്വൽ ഇഫക്റ്റുകൾ, ചില ഫീച്ചറുകൾ എന്നിവ പരിമിതപ്പെടുത്തുകയോ ഓഫാക്കുകയോ ചെയ്യുന്നു.\n\n"<annotation id="url">"കൂടുതലറിയുക"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ബാറ്ററി ലാഭിക്കൽ ഡാർക്ക് തീം ഓണാക്കുന്നു, കൂടാതെ പശ്ചാത്തല ആക്റ്റിവിറ്റി, ചില വിഷ്വൽ ഇഫക്റ്റുകൾ, ചില ഫീച്ചറുകൾ എന്നിവ പരിമിതപ്പെടുത്തുകയോ ഓഫാക്കുകയോ ചെയ്യുന്നു."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ഡാറ്റാ ഉപയോഗം കുറയ്ക്കാൻ സഹായിക്കുന്നതിനായി പശ്ചാത്തലത്തിൽ ഡാറ്റ അയയ്ക്കുകയോ സ്വീകരിക്കുകയോ ചെയ്യുന്നതിൽ നിന്ന് ചില ആപ്പുകളെ ഡാറ്റാ സേവർ തടയുന്നു. നിങ്ങൾ നിലവിൽ ഉപയോഗിക്കുന്ന ഒരു ആപ്പിന് ഡാറ്റ ആക്സസ് ചെയ്യാനാകും, എന്നാൽ വല്ലപ്പോഴും മാത്രമെ സംഭവിക്കുന്നുള്ളു. ഇതിനർത്ഥം, ഉദാഹരണമായി നിങ്ങൾ ടാപ്പ് ചെയ്യുന്നത് വരെ ചിത്രങ്ങൾ പ്രദർശിപ്പിക്കുകയില്ല എന്നാണ്."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ഡാറ്റ സേവർ ഓണാക്കണോ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ഓണാക്കുക"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ഇപ്പോൾ ലഭ്യമല്ല. <xliff:g id="APP_NAME_1">%2$s</xliff:g> ആണ് ഇത് മാനേജ് ചെയ്യുന്നത്."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"കൂടുതലറിയുക"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ആപ്പ് പുനഃരാംഭിക്കുക"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ഔദ്യോഗിക പ്രൊഫൈൽ ഓണാക്കണോ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾ, അറിയിപ്പുകൾ, ഡാറ്റ, മറ്റ് ഔദ്യോഗിക പ്രൊഫൈൽ ഫീച്ചറുകൾ എന്നിവ ഓണാക്കും"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ഓണാക്കുക"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ആപ്പ് ലഭ്യമല്ല"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ഇപ്പോൾ ലഭ്യമല്ല."</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 27c52d2322cb..ab083841dcc9 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -42,10 +42,10 @@ <string name="serviceErased" msgid="997354043770513494">"Амжилттай арилгалаа."</string> <string name="passwordIncorrect" msgid="917087532676155877">"Буруу нууц үг"</string> <string name="mmiComplete" msgid="6341884570892520140">"MMI дууссан."</string> - <string name="badPin" msgid="888372071306274355">"Таны бичсэн хуучин PIN буруу байна."</string> + <string name="badPin" msgid="888372071306274355">"Таны бичсэн хуучин ПИН буруу байна."</string> <string name="badPuk" msgid="4232069163733147376">"Таны бичсэн PUК буруу байна."</string> - <string name="mismatchPin" msgid="2929611853228707473">"Таны оруулсан PIN таарахгүй байна."</string> - <string name="invalidPin" msgid="7542498253319440408">"4-8 тооноос бүтэх PIN-г бичнэ үү."</string> + <string name="mismatchPin" msgid="2929611853228707473">"Таны оруулсан ПИН таарахгүй байна."</string> + <string name="invalidPin" msgid="7542498253319440408">"4-8 тооноос бүтэх ПИН-г бичнэ үү."</string> <string name="invalidPuk" msgid="8831151490931907083">"8-с цөөнгүй тооноос бүтэх PUK-г бичнэ үү."</string> <string name="needPuk" msgid="7321876090152422918">"SIM картны PUK-түгжигдсэн. Тайлах бол PUK кодыг бичнэ үү."</string> <string name="needPuk2" msgid="7032612093451537186">"SIM картыг блокоос гаргах бол PUK2-г бичнэ үү."</string> @@ -64,7 +64,7 @@ <string name="CwMmi" msgid="3164609577675404761">"дуудлага хүлээлгэх"</string> <string name="BaMmi" msgid="7205614070543372167">"Дуудлага хориглох"</string> <string name="PwdMmi" msgid="3360991257288638281">"Нууц үг солих"</string> - <string name="PinMmi" msgid="7133542099618330959">"PIN солих"</string> + <string name="PinMmi" msgid="7133542099618330959">"ПИН солих"</string> <string name="CnipMmi" msgid="4897531155968151160">"Дуудсан дугаар харуулах"</string> <string name="CnirMmi" msgid="885292039284503036">"Дуудлага хийгчийн дугаар хязгаарлагдсан"</string> <string name="ThreeWCMmi" msgid="2436550866139999411">"Гурван чиглэлт дуудлага"</string> @@ -866,14 +866,14 @@ <string name="sipAddressTypeWork" msgid="7873967986701216770">"Ажлын"</string> <string name="sipAddressTypeOther" msgid="6317012577345187275">"Бусад"</string> <string name="quick_contacts_not_available" msgid="1262709196045052223">"Энэ харилцагчийг харах аппликейшн олдсонгүй."</string> - <string name="keyguard_password_enter_pin_code" msgid="6401406801060956153">"PIN кодыг бичнэ үү"</string> - <string name="keyguard_password_enter_puk_code" msgid="3112256684547584093">"PUK-г бичээд шинэ PIN код оруулна уу"</string> + <string name="keyguard_password_enter_pin_code" msgid="6401406801060956153">"ПИН кодыг бичнэ үү"</string> + <string name="keyguard_password_enter_puk_code" msgid="3112256684547584093">"PUK-г бичээд шинэ ПИН код оруулна уу"</string> <string name="keyguard_password_enter_puk_prompt" msgid="2825313071899938305">"PUK код"</string> - <string name="keyguard_password_enter_pin_prompt" msgid="5505434724229581207">"Шинэ PIN код"</string> + <string name="keyguard_password_enter_pin_prompt" msgid="5505434724229581207">"Шинэ ПИН код"</string> <string name="keyguard_password_entry_touch_hint" msgid="4032288032993261520"><font size="17">"Нууц үг шивэх бол товшино уу"</font></string> <string name="keyguard_password_enter_password_code" msgid="2751130557661643482">"Тайлах нууц үгийг бичнэ үү"</string> - <string name="keyguard_password_enter_pin_password_code" msgid="7792964196473964340">"Тайлах PIN-г оруулна уу"</string> - <string name="keyguard_password_wrong_pin_code" msgid="8583732939138432793">"Буруу PIN код."</string> + <string name="keyguard_password_enter_pin_password_code" msgid="7792964196473964340">"Тайлах ПИН-г оруулна уу"</string> + <string name="keyguard_password_wrong_pin_code" msgid="8583732939138432793">"Буруу ПИН код."</string> <string name="keyguard_label_text" msgid="3841953694564168384">"Тайлах бол Цэсийг дараад 0."</string> <string name="emergency_call_dialog_number_for_display" msgid="2978165477085612673">"Яаралтай тусламжийн дугаар"</string> <string name="lockscreen_carrier_default" msgid="6192313772955399160">"Үйлчилгээ байхгүй"</string> @@ -911,7 +911,7 @@ <string name="lockscreen_sim_unlock_progress_dialog_message" msgid="2286497117428409709">"SIM картны түгжээг гаргаж байна…"</string> <string name="lockscreen_too_many_failed_attempts_dialog_message" msgid="6458790975898594240">"Та тайлах хээг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу зурлаа. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> <string name="lockscreen_too_many_failed_password_attempts_dialog_message" msgid="3118353451602377380">"Та нууц үгээ <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> - <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Та PIN кодоо <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> + <string name="lockscreen_too_many_failed_pin_attempts_dialog_message" msgid="2874278239714821984">"Та ПИН кодоо <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> <string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="3069635524964070596">"Та тайлах хээг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%2$d</xliff:g> удаа дахин буруу оруулбал, та таблетаа тайлахын тулд Google нэвтрэлтээ ашиглах шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> секундын дараа дахин оролдоно уу."</string> <string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"Та тайлах хээг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу зурсан байна. Та дахин <xliff:g id="NUMBER_1">%2$d</xliff:g> удаа буруу оруулсан тохиолдолд Android TV төхөөрөмжийнхөө түгжээг тайлахын тулд Google-д нэвтрэх шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> секундийн дараа дахин оролдоно уу."</string> <string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"Та тайлах хээг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%2$d</xliff:g> удаа дахин буруу оролдвол, та таблетаа тайлахын тулд Google нэвтрэлтээ ашиглах шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> секундын дараа дахин оролдоно уу."</string> @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Текст хуулагдав."</string> <string name="copied" msgid="4675902854553014676">"Хуулсан"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>-с буулгасан <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Түр санах ойгоос буулгасан <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Таны түр санах ойгоос <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-г буулгасан"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан текстийг буулгасан"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан зургийг буулгасан"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан контентыг буулгасан"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Бэлдэж байна <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Апп-г эхлүүлж байна."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Эхлэлийг дуусгаж байна."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Дэлгэцийг унтраах уу?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Та хурууны хээгээ тохируулж байх үед Асаах/унтраах товчийг дарсан байна.\n\nЭнэ нь ихэвчлэн таны дэлгэцийг унтраана."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Унтраах"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Цуцлах"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ажиллаж байна"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Тоглоом руу буцахын тулд товших"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Тоглоом сонгох"</string> @@ -1638,24 +1642,24 @@ <string name="kg_forgot_pattern_button_text" msgid="406145459223122537">"Хээг мартсан"</string> <string name="kg_wrong_pattern" msgid="1342812634464179931">"Буруу хээ"</string> <string name="kg_wrong_password" msgid="2384677900494439426">"Нууц үг буруу"</string> - <string name="kg_wrong_pin" msgid="3680925703673166482">"PIN буруу"</string> + <string name="kg_wrong_pin" msgid="3680925703673166482">"ПИН буруу"</string> <plurals name="kg_too_many_failed_attempts_countdown" formatted="false" msgid="236717428673283568"> <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> секундын дараа дахин оролдоно уу.</item> <item quantity="one">1 секундын дараа дахин оролдоно уу.</item> </plurals> <string name="kg_pattern_instructions" msgid="8366024510502517748">"Хээг зурах"</string> - <string name="kg_sim_pin_instructions" msgid="6479401489471690359">"SIM PIN оруулна уу"</string> - <string name="kg_pin_instructions" msgid="7355933174673539021">"PIN оруулна уу"</string> + <string name="kg_sim_pin_instructions" msgid="6479401489471690359">"SIM ПИН оруулна уу"</string> + <string name="kg_pin_instructions" msgid="7355933174673539021">"ПИН оруулна уу"</string> <string name="kg_password_instructions" msgid="7179782578809398050">"Нууц үгээ оруулна уу"</string> <string name="kg_puk_enter_puk_hint" msgid="6696187482616360994">"SIM идэвхгүй байна. Үргэлжлүүлэх бол PUK кодыг оруулна уу. Дэлгэрэнгүй мэдээллийг оператороос асууна ууу"</string> - <string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Хүссэн PIN кодоо оруулна уу"</string> - <string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Хүссэн PIN кодоо дахин оруулна уу"</string> + <string name="kg_puk_enter_pin_hint" msgid="8190982314659429770">"Хүссэн ПИН кодоо оруулна уу"</string> + <string name="kg_enter_confirm_pin_hint" msgid="6372557107414074580">"Хүссэн ПИН кодоо дахин оруулна уу"</string> <string name="kg_sim_unlock_progress_dialog_message" msgid="8871937892678885545">"SIM картны түгжээг гаргаж байна…"</string> - <string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Буруу PIN код."</string> - <string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4-8 тооноос бүтэх PIN-г бичнэ үү."</string> + <string name="kg_password_wrong_pin_code" msgid="9013856346870572451">"Буруу ПИН код."</string> + <string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4-8 тооноос бүтэх ПИН-г бичнэ үү."</string> <string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK код 8 тоотой байх ёстой."</string> <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_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"ПИН кодууд таарахгүй байна"</string> <string name="kg_login_too_many_attempts" msgid="699292728290654121">"Хээ оруулах оролдлого хэт олон"</string> <string name="kg_login_instructions" msgid="3619844310339066827">"Түгжээг тайлах бол Google акаунтаараа нэвтэрнэ үү."</string> <string name="kg_login_username_hint" msgid="1765453775467133251">"Хэрэглэгчийн нэр (имэйл)"</string> @@ -1664,8 +1668,8 @@ <string name="kg_login_invalid_input" msgid="8292367491901220210">"Хэрэглэгчийн нэр эсвэл нууц үг буруу."</string> <string name="kg_login_account_recovery_hint" msgid="4892466171043541248">"Хэрэглэгчийн нэр нууц үгээ мартсан уу?\n"<b>"google.com/accounts/recovery"</b>"-д зочилно уу."</string> <string name="kg_login_checking_password" msgid="4676010303243317253">"Бүртгэл шалгаж байна…"</string> - <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="23741434207544038">"Та PIN кодоо <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> - <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"Та PIN кодоо <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> + <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="23741434207544038">"Та ПИН кодоо <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> + <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"Та ПИН кодоо <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу бичив. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> <string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="7357404233979139075">"Та тайлах хээг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу зурлаа. \n\n<xliff:g id="NUMBER_1">%2$d</xliff:g> секундын дараа дахин оролдоно уу."</string> <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"Та таблетыг тайлах гэж <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу оролдлоо. <xliff:g id="NUMBER_1">%2$d</xliff:g> удаа дахин буруу оролдвол таблет үйлдвэрийн үндсэн утгаараа тохируулагдах ба хэрэглэгчийн дата бүхэлдээ устана."</string> <string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"Та Android TV төхөөрөмжийнхөө түгжээг тайлахаар <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу оролдсон байна. <xliff:g id="NUMBER_1">%2$d</xliff:g> удаагийн амжилтгүй оролдлогын дараагаас таны Android TV төхөөрөмжийг үйлдвэрийн өгөгдмөл төлөвт шинэчлэх бөгөөд хэрэглэгчийн бүх өгөгдөл устах болно."</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Товчлол ашиглах"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Өнгө хувиргалт"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Өнгөний засвар"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Хэт бүүдгэр"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаалаа."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г унтраалаа."</string> @@ -1830,14 +1836,14 @@ <string name="print_service_installed_title" msgid="6134880817336942482">"<xliff:g id="NAME">%s</xliff:g> үйлчилгээ суугдсан"</string> <string name="print_service_installed_message" msgid="7005672469916968131">"Идэвхжүүлэх бол товшино уу"</string> <string name="restr_pin_enter_admin_pin" msgid="1199419462726962697">"Админы ПИН-г оруулах"</string> - <string name="restr_pin_enter_pin" msgid="373139384161304555">"PIN оруулна уу"</string> + <string name="restr_pin_enter_pin" msgid="373139384161304555">"ПИН оруулна уу"</string> <string name="restr_pin_incorrect" msgid="3861383632940852496">"Буруу"</string> - <string name="restr_pin_enter_old_pin" msgid="7537079094090650967">"Одоогийн PIN"</string> - <string name="restr_pin_enter_new_pin" msgid="3267614461844565431">"Шинэ PIN"</string> - <string name="restr_pin_confirm_pin" msgid="7143161971614944989">"Шинэ PIN-г баталгаажуулах"</string> - <string name="restr_pin_create_pin" msgid="917067613896366033">"Өөрчлөлтийг хязгаарлахад зориулан PIN үүсгэх"</string> - <string name="restr_pin_error_doesnt_match" msgid="7063392698489280556">"PIN таарахгүй байна. Дахин оролдоно уу."</string> - <string name="restr_pin_error_too_short" msgid="1547007808237941065">"PIN хэт богино байна. Хамгийн багадаа 4 цифртэй байх ёстой."</string> + <string name="restr_pin_enter_old_pin" msgid="7537079094090650967">"Одоогийн ПИН"</string> + <string name="restr_pin_enter_new_pin" msgid="3267614461844565431">"Шинэ ПИН"</string> + <string name="restr_pin_confirm_pin" msgid="7143161971614944989">"Шинэ ПИН-г баталгаажуулах"</string> + <string name="restr_pin_create_pin" msgid="917067613896366033">"Өөрчлөлтийг хязгаарлахад зориулан ПИН үүсгэх"</string> + <string name="restr_pin_error_doesnt_match" msgid="7063392698489280556">"ПИН таарахгүй байна. Дахин оролдоно уу."</string> + <string name="restr_pin_error_too_short" msgid="1547007808237941065">"ПИН хэт богино байна. Хамгийн багадаа 4 цифртэй байх ёстой."</string> <plurals name="restr_pin_countdown" formatted="false" msgid="4427486903285216153"> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> секундын дараа дахин оролдоно уу</item> <item quantity="one">1 секундын дараа дахин оролдоно уу</item> @@ -1857,15 +1863,17 @@ <string name="managed_profile_label_badge" msgid="6762559569999499495">"Ажлын <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2 дахь ажил <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3 дахь ажил <xliff:g id="LABEL">%1$s</xliff:g>"</string> - <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Бэхэлснийг болиулахаасаа өмнө PIN асуух"</string> + <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Бэхэлснийг болиулахаасаа өмнө ПИН асуух"</string> <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Бэхэлснийг болиулахаас өмнө түгжээ тайлах хээ асуух"</string> <string name="lock_to_app_unlock_password" msgid="9126722403506560473">"Тогтоосныг суллахаас өмнө нууц үг асуух"</string> <string name="package_installed_device_owner" msgid="7035926868974878525">"Таны админ суулгасан"</string> <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="750683025714899363">"Батарей хэмнэгч нь Бараан загварыг асааж, дэвсгэрийн үйл ажиллагаа, зарим визуал эффект болон тодорхой онцлогуудийг хязгаарлаж эсвэл унтраана.\n\n"<annotation id="url">"Нэмэлт мэдээлэл авах"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Батарей хэмнэгч нь Бараан загварыг асааж, дэвсгэрийн үйл ажиллагаа, зарим визуал эффект болон тодорхой онцлогуудийг хязгаарлаж эсвэл унтраана."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Дата ашиглалтыг багасгахын тулд дата хэмнэгч нь ар талд ажиллаж буй зарим апп-н өгөгдлийг илгээх болон авахаас сэргийлдэг. Таны одоогийн ашиглаж буй апп нь өгөгдөлд хандах боломжтой хэдий ч тогтмол хандахгүй. Энэ нь жишээлбэл зургийг товших хүртэл харагдахгүй гэсэн үг юм."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Дата хэмнэгчийг асаах уу?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Асаах"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> одоогоор боломжгүй байна. Үүнийг <xliff:g id="APP_NAME_1">%2$s</xliff:g>-р удирддаг."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Дэлгэрэнгүй үзэх"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Аппыг түр зогсоохоо болих"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ажлын профайлыг асаах уу?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Таны ажлын апп, мэдэгдэл, өгөгдөл болон бусад ажлын профайлын онцлогийг асаана"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Асаах"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Апп боломжгүй байна"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> яг одоо боломжгүй байна."</string> @@ -1982,7 +1992,7 @@ <string name="profile_encrypted_message" msgid="1128512616293157802">"Ажлын профайлын түгжээг тайлахын тулд дарна уу"</string> <string name="usb_mtp_launch_notification_title" msgid="774319638256707227">"<xliff:g id="PRODUCT_NAME">%1$s</xliff:g>-д холбогдсон"</string> <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"Файлыг үзэхийн тулд дарна уу"</string> - <string name="pin_target" msgid="8036028973110156895">"PIN"</string> + <string name="pin_target" msgid="8036028973110156895">"ПИН"</string> <string name="pin_specific_target" msgid="7824671240625957415">"<xliff:g id="LABEL">%1$s</xliff:g>-г бэхлэх"</string> <string name="unpin_target" msgid="3963318576590204447">"Unpin"</string> <string name="unpin_specific_target" msgid="3859828252160908146">"<xliff:g id="LABEL">%1$s</xliff:g>-г тогтоосныг болиулах"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 82b7093448ca..2e8d6f523c8e 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"मजकूर क्लिपबोर्डवर कॉपी केला."</string> <string name="copied" msgid="4675902854553014676">"कॉपी केले"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> वरून <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> पेस्ट केले"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"क्लिपबोर्डवरून <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> पेस्ट केले"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"तुम्ही कॉपी केलेला मजकूर <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केला"</string> <string name="pasted_image" msgid="4729097394781491022">"तुम्ही कॉपी केलेली इमेज <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केली"</string> <string name="pasted_content" msgid="646276353060777131">"तुम्ही कॉपी केलेला आशय <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केला"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> तयार करत आहे."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"अॅप्स सुरू करत आहे."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"बूट समाप्त होत आहे."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"रन होणारे <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"गेमवर परत जाण्यासाठी टॅप करा"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"गेम निवडा"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट वापरा"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रंगांची उलटापालट"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रंग सुधारणा"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"आणखी डिम"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सुरू केला आहे."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> बंद केले आहे."</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"बॅटरी सेव्हर गडद थीम सुरू करते आणि बॅकग्राउंड ॲक्टिव्हिटी, काही व्हिज्युअल इफेक्ट व ठरावीक वैशिष्ट्ये मर्यादित किंवा बंद करते.\n\n"<annotation id="url">"अधिक जाणून घ्या"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"बॅटरी सेव्हर गडद थीम सुरू करते आणि बॅकग्राउंड ॲक्टिव्हिटी, काही व्हिज्युअल इफेक्ट व ठरावीक वैशिष्ट्ये मर्यादित किंवा बंद करते."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"डेटाचा वापर कमी करण्यात मदत करण्यासाठी काही अॅप्सना बॅकग्राउंडमध्ये डेटा पाठवण्यास किंवा मिळवण्यास डेटा सर्व्हर प्रतिबंध करतो. तुम्ही सध्या वापरत असलेले अॅप डेटा अॅक्सेस करू शकते, पण तसे खूप कमी वेळा होते. याचाच अर्थ असा की, तुम्ही इमेजवर टॅप करेपर्यंत त्या डिस्प्ले होणार नाहीत असे होऊ शकते."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"डेटा सेव्हर सुरू करायचे?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"सुरू करा"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> आत्ता उपलब्ध नाही. हे <xliff:g id="APP_NAME_1">%2$s</xliff:g> कडून व्यवस्थापित केले जाते."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"अधिक जाणून घ्या"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"अॅप उघडा"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"कार्य प्रोफाइल सुरू ठेवायची?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"तुमची कार्य अॅप्स, सूचना, डेटा आणि अन्य कार्य प्रोफाइल वैशिष्ट्ये सुरू केली जातील"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"सुरू करा"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ॲप उपलब्ध नाही"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> आता उपलब्ध नाही."</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index c84a5667d43f..d1545824776a 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teks disalin ke papan keratan"</string> <string name="copied" msgid="4675902854553014676">"Disalin"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditampalkan daripada <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditampalkan daripada papan keratan"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal teks yang anda salin"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal imej yang anda salin"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal kandungan yang anda salin"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Menyediakan <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Memulakan apl."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"But akhir."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> dijalankan"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Ketik untuk kembali ke permainan"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Pilih permainan"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Penyongsangan Warna"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Pembetulan Warna"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mod sebelah tangan"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Amat malap"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dihidupkan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dimatikan."</string> @@ -1864,8 +1874,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Dikemas kini oleh pentadbir anda"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dipadamkan oleh pentadbir anda"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Penjimat Bateri menghidupkan tema Gelap dan mengehadkan atau mematikan aktiviti latar, sesetengah kesan visual dan ciri tertentu.\n\n"<annotation id="url">"Ketahui lebih lanjut"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Penjimat Bateri menghidupkan tema Gelap dan mengehadkan atau mematikan aktiviti latar, sesetengah kesan visual dan ciri tertentu."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Penjimat Bateri menghidupkan tema Gelap dan mengehadkan atau mematikan aktiviti latar, sesetengah kesan visual, ciri tertentu dan sesetengah sambungan rangkaian.\n\n"<annotation id="url">"Ketahui lebih lanjut"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Penjimat Bateri menghidupkan tema Gelap dan mengehadkan atau mematikan aktiviti latar, sesetengah kesan visual, ciri tertentu dan sesetengah sambungan rangkaian."</string> <string name="data_saver_description" msgid="4995164271550590517">"Untuk membantu penggunaan data dikurangkan, Penjimat Data menghalang sesetengah apl daripada menghantar atau menerima data di latar. Apl yang sedang digunakan boleh mengakses data tetapi mungkin tidak secara kerap. Perkara ini mungkin bermaksud bahawa imej tidak dipaparkan sehingga anda mengetik pada imej itu, contohnya."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Hidupkan Penjimat Data?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Hidupkan"</string> @@ -1968,8 +1978,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> tidak tersedia sekarang. Ini diurus oleh <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Ketahui lebih lanjut"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Nyahjeda apl"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Hidupkan profil kerja?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Apl kerja, pemberitahuan, data dan ciri profil kerja anda yang lain akan dihidupkan"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Hidupkan apl kerja?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Dapatkan akses kepada apl kerja dan pemberitahuan anda"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Hidupkan"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Apl tidak tersedia"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak tersedia sekarang."</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 0affc3d4c78e..2054e47ed438 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"clipboardထံ စာသားအားကူးယူမည်"</string> <string name="copied" msgid="4675902854553014676">"မိတ္တူကူးပြီးပါပြီ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> မှ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> သို့ ကူးထည့်ထားသည်"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ကလစ်ဘုတ်မှ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> သို့ ကူးထည့်ထားသည်"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော စာသားကို ထည့်လိုက်သည်"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော ပုံကို ထည့်လိုက်သည်"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော အကြောင်းအရာကို ထည့်လိုက်သည်"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> အားပြင်ဆင်နေသည်။"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"အက်ပ်များကို စတင်နေ"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"လုပ်ငန်းစနစ်ထည့်သွင်း၍ ပြန်လည်စတင်ရန် ပြီးပါပြီ"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> က အလုပ်လုပ်နေသည်"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ဂိမ်းသို့ ပြန်သွားရန် တို့ပါ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ဂိမ်းကို ရွေးခြင်း"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ဖြတ်လမ်းလင့်ခ်ကို သုံးရန်"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"အရောင် ပြောင်းပြန်လှန်ခြင်း"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"အရောင်ပြင်ဆင်ခြင်း"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"လက်တစ်ဖက်သုံးမုဒ်"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ပိုမှိန်ခြင်း"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ဖွင့်လိုက်သည်။"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ပိတ်လိုက်သည်။"</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"သင်၏ စီမံခန့်ခွဲသူက အပ်ဒိတ်လုပ်ထားသည်"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"သင်၏ စီမံခန့်ခွဲသူက ဖျက်လိုက်ပါပြီ"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"‘ဘက်ထရီ အားထိန်း’ က ‘မှောင်သည့် အပြင်အဆင်’ ကို ဖွင့်ပြီး နောက်ခံလုပ်ဆောင်ချက်၊ ပြသမှုဆိုင်ရာ အထူးပြုလုပ်ချက်အချို့နှင့် ဝန်ဆောင်မှုအချို့ကို ကန့်သတ်သည် သို့မဟုတ် ပိတ်သည်။\n\n"<annotation id="url">"ပိုမိုလေ့လာရန်"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"‘ဘက်ထရီ အားထိန်း’ က ‘မှောင်သည့် အပြင်အဆင်’ ကို ဖွင့်ပြီး နောက်ခံလုပ်ဆောင်ချက်၊ ပြသမှုဆိုင်ရာ အထူးပြုလုပ်ချက်အချို့နှင့် ဝန်ဆောင်မှုအချို့ကို ကန့်သတ်သည် သို့မဟုတ် ပိတ်သည်။"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ဒေတာအသုံးလျှော့ချနိုင်ရန်အတွက် အက်ပ်များကို နောက်ခံတွင် ဒေတာပို့ခြင်းနှင့် လက်ခံခြင်းမပြုရန် \'ဒေတာချွေတာမှု\' စနစ်က တားဆီးထားပါသည်။ ယခုအက်ပ်ဖြင့် ဒေတာအသုံးပြုနိုင်သော်လည်း အကြိမ်လျှော့၍သုံးရပါမည်။ ဥပမာ၊ သင်က မတို့မချင်း ပုံများပေါ်လာမည် မဟုတ်ပါ။"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ဒေတာချွေတာမှုစနစ် ဖွင့်မလား။"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ဖွင့်ပါ"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ကို လောလောဆယ် မရနိုင်ပါ။ ၎င်းကို <xliff:g id="APP_NAME_1">%2$s</xliff:g> က စီမံထားပါသည်။"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ပိုမိုလေ့လာရန်"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"အက်ပ်ကို ခဏမရပ်တော့ရန်"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"အလုပ်ပရိုဖိုင် ဖွင့်လိုသလား။"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"သင်၏ အလုပ်အက်ပ်၊ အကြောင်းကြားချက်၊ ဒေတာနှင့် အခြားအလုပ်ပရိုဖိုင် ဝန်ဆောင်မှုများကို ဖွင့်လိုက်ပါမည်"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ဖွင့်ပါ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"အက်ပ်ကို မရနိုင်ပါ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို ယခု မရနိုင်ပါ။"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index b5f24eaf6b5b..a6f945c9bf99 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Kopierte tekst til utklippstavlen."</string> <string name="copied" msgid="4675902854553014676">"Kopiert"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn fra <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn fra utklippstavlen"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> har limt inn fra utklippstavlen"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn tekst du kopierte"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn et bilde du kopierte"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn innhold du kopierte"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starter apper."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Ferdigstiller oppstart."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Vil du slå av skjermen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Da du konfigurerte fingeravtrykket, trykket du på av/på-knappen.\n\nDette slår vanligvis av skjermen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Slå av"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Avbryt"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> kjører"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Trykk for å gå tilbake til spillet"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Velg et spill"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Bruk snarveien"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Fargeinvertering"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Fargekorrigering"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhåndsmodus"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dimmet"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått av."</string> @@ -1864,8 +1869,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Oppdatert av administratoren din"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Slettet av administratoren din"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Batterisparing slår på mørkt tema og begrenser eller slår av bakgrunnsaktivitet, enkelte visuelle effekter og noen funksjoner.\n\n"<annotation id="url">"Finn ut mer"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Batterisparing slår på mørkt tema og begrenser eller slår av bakgrunnsaktivitet, enkelte visuelle effekter og noen funksjoner."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Datasparing hindrer noen apper fra å sende og motta data i bakgrunnen, for å redusere dataforbruket. Aktive apper kan bruke data, men kanskje ikke så mye som ellers – for eksempel vises ikke bilder før du trykker på dem."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vil du slå på Datasparing?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Slå på"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ikke tilgjengelig akkurat nå. Dette administreres av <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Finn ut mer"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Opphev pause for appen"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vil du slå på jobbprofilen?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Jobbappene dine samt varsler, data og andre funksjoner i jobbprofilen din blir slått på"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Slå på"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Appen er ikke tilgjengelig"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ikke tilgjengelig for øyeblikket."</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index 330147d6a131..d986f2ce1c56 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"क्लिपबोर्डमा प्रतिलिप गरिएको पाठ।"</string> <string name="copied" msgid="4675902854553014676">"प्रतिलिपि गरियो"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> मा रहेको डेटा कपी गरी <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> मा पेस्ट गरियो"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"क्लिपबोर्डमा रहेको डेटा कपी गरी <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> मा पेस्ट गरियो"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको टेक्स्ट पेस्ट गरेको छ"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको एउटा फोटो पेस्ट गरेको छ"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको सामग्री पेस्ट गरेको छ"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> तयारी गर्दै।"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"सुरुवात एपहरू।"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"बुट पुरा हुँदै।"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> चलिरहेको छ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"खेलमा फर्कन ट्याप गर्नुहोस्"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"खेल छनौट गर्नुहोस्"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"सर्टकट प्रयोग गर्नुहोस्"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रङ्ग उल्टाउने सुविधा"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रङ्ग सच्याउने सुविधा"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"अझै मधुरो"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अन भयो।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अफ भयो।"</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"ब्याट्री सेभरले अँध्यारो थिम अन गर्छ र ब्याकग्राउन्डमा हुने क्रियाकलाप, केही भिजुअल इफेक्ट र निश्चित सुविधाहरू अफ गर्छ वा सीमित रूपमा मात्र चल्न दिन्छ।\n\n"<annotation id="url">"थप जान्नुहोस्"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ब्याट्री सेभरले अँध्यारो थिम अन गर्छ र ब्याकग्राउन्डमा हुने क्रियाकलाप, केही भिजुअल इफेक्ट र निश्चित सुविधाहरू अफ गर्छ वा सीमित रूपमा मात्र चल्न दिन्छ।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"डेटा सेभरले डेटा खपत कम गर्न केही एपहरूलाई ब्याकग्राउन्डमा डेटा पठाउन वा प्राप्त गर्न दिँदैन। तपाईंले अहिले प्रयोग गरिरहनुभएको एपले सीमित रूपमा मात्र डेटा चलाउन पाउँछ। उदाहरणका लागि, तपाईंले फोटोमा ट्याप गर्नुभयो भने मात्र फोटो देखिन्छ नत्र देखिँदैन।"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"डेटा सेभर अन गर्ने हो?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"सक्रिय गर्नुहोस्"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> अहिले उपलब्ध छैन। यो <xliff:g id="APP_NAME_1">%2$s</xliff:g> द्वारा व्यवस्थित छ।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"थप जान्नुहोस्"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"एपको पज हटाउनुहोस्"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"कार्य प्रोफाइल सक्रिय गर्ने?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"तपाईंका कार्यसम्बन्धी एप, सूचना, डेटा र कार्य प्रोफाइलका अन्य सुविधाहरू सक्रिय गरिने छन्"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"सक्रिय गर्नुहोस्"</string> <string name="app_blocked_title" msgid="7353262160455028160">"एप उपलब्ध छैन"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> अहिले उपलब्ध छैन।"</string> @@ -2287,8 +2302,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"एपको ब्रान्डिङ फोटो"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"भ्यु र नियन्त्रणसम्बन्धी सेटिङ जाँच्नुहोस्"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> तपाईंको स्क्रिन हेर्न र नियन्त्रण गर्न सक्छ। सेटिङ मिलाउन ट्याप गर्नुहोस्।"</string> - <!-- no translation found for ui_translation_accessibility_translated_text (3197547218178944544) --> - <skip /> - <!-- no translation found for ui_translation_accessibility_translation_finished (3057830947610088465) --> - <skip /> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"<xliff:g id="MESSAGE">%1$s</xliff:g> अनुवाद गरिएको छ।"</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"म्यासेज <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> भाषाबाट <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> भाषामा अनुवाद गरिएको छ।"</string> </resources> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 29d9ee5b75f2..37ffd46a477e 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst naar klembord gekopieerd."</string> <string name="copied" msgid="4675902854553014676">"Gekopieerd"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> geplakt vanuit <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> geplakt vanaf het klembord"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft geplakt vanaf het klembord"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft door jou gekopieerde tekst geplakt"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft een door jou gekopieerde afbeelding geplakt"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft door jou gekopieerde content geplakt"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> voorbereiden."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Apps starten."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Opstarten afronden."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Scherm uitzetten?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Toen je je vingerafdruk instelde, heb je op de aan/uit-knop gedrukt.\n\nDaarmee wordt het scherm meestal uitgezet."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Uitzetten"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Annuleren"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> wordt uitgevoerd"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tik om terug te keren naar de game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Game kiezen"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sneltoets gebruiken"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Kleurinversie"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Kleurcorrectie"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Bediening met één hand"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra gedimd"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat aan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat uit."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Geüpdatet door je beheerder"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Verwijderd door je beheerder"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Met Batterijbesparing wordt het donkere thema aangezet en worden achtergrondactiviteit, sommige visuele effecten en bepaalde functies beperkt of uitgezet.\n\n"<annotation id="url">"Meer informatie"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Met Batterijbesparing wordt het donkere thema aangezet en worden achtergrondactiviteit, sommige visuele effecten en bepaalde functies beperkt of uitgezet."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Met Batterijbesparing wordt het donkere thema aangezet en worden achtergrondactiviteit, bepaalde visuele effecten, bepaalde functies en sommige netwerkverbindingen beperkt of uitgezet.\n\n"<annotation id="url">"Meer informatie"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Met Batterijbesparing wordt het donkere thema aangezet en worden achtergrondactiviteit, bepaalde visuele effecten, bepaalde functies en sommige netwerkverbindingen beperkt of uitgezet."</string> <string name="data_saver_description" msgid="4995164271550590517">"Databesparing beperkt het datagebruik door te voorkomen dat sommige apps gegevens sturen of ontvangen op de achtergrond. De apps die je open hebt, kunnen nog steeds data verbruiken, maar doen dit minder vaak. Afbeeldingen worden dan bijvoorbeeld niet weergegeven totdat je erop tikt."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Databesparing aanzetten?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aanzetten"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is nu niet beschikbaar. Dit wordt beheerd door <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Meer info"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"App niet meer onderbreken"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Werkprofiel aanzetten?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Je werk-apps, meldingen, gegevens en andere functies van je werkprofiel worden uitgezet"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Werk-apps aanzetten?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Krijg toegang tot je werk-apps en meldingen"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aanzetten"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is niet beschikbaar"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is momenteel niet beschikbaar."</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index cdd9f52aa322..15a053157dc4 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"ଟେକ୍ସଟ୍ କ୍ଲିପବୋର୍ଡକୁ କପୀ ହୋଇଯାଇଛି"</string> <string name="copied" msgid="4675902854553014676">"କପି କରାଗଲା"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>ରୁ ପେଷ୍ଟ କରିଛି"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> କ୍ଲିପବୋର୍ଡରୁ ପେଷ୍ଟ କରିଛି"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ଆପଣଙ୍କ କ୍ଲିପବୋର୍ଡରୁ ପେଷ୍ଟ କରିଛି"</string> <string name="pasted_text" msgid="4298871641549173733">"ଆପଣ କପି କରିଥିବା ଟେକ୍ସଟକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string> <string name="pasted_image" msgid="4729097394781491022">"ଆପଣ କପି କରିଥିବା ଏକ ଛବିକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string> <string name="pasted_content" msgid="646276353060777131">"ଆପଣ କପି କରିଥିବା ବିଷୟବସ୍ତୁକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> ପ୍ରସ୍ତୁତ କରାଯାଉଛି।"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ଆପ୍ ଆରମ୍ଭ କରାଯାଉଛି।"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ବୁଟ୍ ସମାପ୍ତ କରୁଛି।"</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"ସ୍କ୍ରିନ୍ ବନ୍ଦ କରିବେ?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"ଆପଣଙ୍କ ଟିପଚିହ୍ନ ସେଟ୍ ଅପ୍ କରିବା ସମୟରେ, ଆପଣ ପାୱାର ବଟନ୍ ଦବାଇଛନ୍ତି।\n\nଏହା ସାଧାରଣତଃ ଆପଣଙ୍କ ସ୍କ୍ରିନକୁ ବନ୍ଦ କରେ।"</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"ବନ୍ଦ କରନ୍ତୁ"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"ବାତିଲ୍ କରନ୍ତୁ"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ଚାଲୁଛି"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ଗେମ୍କୁ ଫେରିଆସିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ଗେମ୍ ଚୟନ କରନ୍ତୁ"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ଶର୍ଟକଟ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ରଙ୍ଗ ବଦଳାଇବାର ସୁବିଧା"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ରଙ୍ଗ ସଂଶୋଧନ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ଅତିରିକ୍ତ ଡିମ୍"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ଚାଲୁ ହୋଇଛି।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ବନ୍ଦ ହୋଇଛି।"</string> @@ -1864,8 +1870,10 @@ <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="750683025714899363">"ବ୍ୟାଟେରୀ ସେଭର୍ ଗାଢ଼ା ଥିମକୁ ଚାଲୁ କରେ ଏବଂ ପୃଷ୍ଠପଟ କାର୍ଯ୍ୟକଳାପ, କିଛି ଭିଜୁଆଲ୍ ଇଫେକ୍ଟ ଏବଂ କିଛି ଫିଚରଗୁଡ଼ିକୁ ସୀମିତ କିମ୍ବା ବନ୍ଦ କରେ।\n\n"<annotation id="url">"ଅଧିକ ଜାଣନ୍ତୁ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ବ୍ୟାଟେରୀ ସେଭର୍ ଗାଢ଼ା ଥିମକୁ ଚାଲୁ କରେ ଏବଂ ପୃଷ୍ଠପଟ କାର୍ଯ୍ୟକଳାପ, କିଛି ଭିଜୁଆଲ୍ ଇଫେକ୍ଟ ଏବଂ କିଛି ଫିଚରଗୁଡ଼ିକୁ ସୀମିତ କିମ୍ବା ବନ୍ଦ କରେ।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ଡାଟା ବ୍ୟବହାର କମ୍ କରିବାରେ ସାହାଯ୍ୟ କରିବାକୁ, ଡାଟା ସେଭର୍ ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡରେ ଡାଟା ପଠାଇବା କିମ୍ବା ପ୍ରାପ୍ତ କରିବାକୁ କିଛି ଆପ୍କୁ ବାରଣ କରେ। ଆପଣ ବର୍ତ୍ତମାନ ବ୍ୟବହାର କରୁଥିବା ଆପ୍, ଡାଟା ଆକ୍ସେସ୍ କରିପାରେ, କିନ୍ତୁ ଏହା କମ୍ ଥର କରିପାରେ। ଏହାର ଅର୍ଥ ହୋଇପାରେ ଯେମିତି ଆପଣ ଇମେଜଗୁଡ଼ିକୁ ଟାପ୍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ସେଗୁଡ଼ିକ ଡିସପ୍ଲେ ହୁଏ ନାହିଁ।"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ଡାଟା ସେଭର୍ ଚାଲୁ କରିବେ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ଚାଲୁ କରନ୍ତୁ"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"ବର୍ତ୍ତମାନ <xliff:g id="APP_NAME_0">%1$s</xliff:g> ଉପଲବ୍ଧ ନାହିଁ। ଏହା <xliff:g id="APP_NAME_1">%2$s</xliff:g> ଦ୍ଵାରା ପରିଚାଳିତ ହେଉଛି।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ଅଧିକ ଜାଣନ୍ତୁ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ଆପ୍ ଅନପଜ୍ କରନ୍ତୁ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ୱାର୍କ ପ୍ରୋଫାଇଲ୍କୁ ଚାଲୁ କରିବେ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ଆପଣଙ୍କର କାର୍ଯ୍ୟସ୍ଥଳୀ ଆପ୍, ବିଜ୍ଞପ୍ତି, ଡାଟା ଓ ଅନ୍ୟ ୱାର୍କ ପ୍ରୋଫାଇଲ୍ଗୁଡ଼ିକ ଚାଲୁ ହୋଇଯିବ"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ଚାଲୁ କରନ୍ତୁ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ଆପ୍ ଉପଲବ୍ଧ ନାହିଁ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବର୍ତ୍ତମାନ ଉପଲବ୍ଧ ନାହିଁ।"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index afd9c0c12496..50e1f98e6afd 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ਟੈਕਸਟ ਕਲਿਪਬੋਰਡ ਤੇ ਕਾਪੀ ਕੀਤਾ।"</string> <string name="copied" msgid="4675902854553014676">"ਕਾਪੀ ਕੀਤੀ ਗਈ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ਤੋਂ ਕਾਪੀ ਕੀਤੇ ਡਾਟੇ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਵਿੱਚ ਪੇਸਟ ਕੀਤਾ ਗਿਆ"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ਕਲਿੱਪਬੋਰਡ ਦੇ ਡਾਟੇ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਵਿੱਚ ਪੇਸਟ ਕੀਤਾ ਗਿਆ"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੀ ਗਈ ਲਿਖਤ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string> <string name="pasted_image" msgid="4729097394781491022">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੇ ਗਏ ਚਿੱਤਰ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string> <string name="pasted_content" msgid="646276353060777131">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੀ ਗਈ ਸਮੱਗਰੀ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> ਤਿਆਰ ਕਰ ਰਿਹਾ ਹੈ।"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ਐਪਸ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ।"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ਬੂਟ ਪੂਰਾ ਕਰ ਰਿਹਾ ਹੈ।"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ਚੱਲ ਰਿਹਾ ਹੈ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ਗੇਮ \'ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ ਟੈਪ ਕਰੋ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ਗੇਮ ਚੁਣੋ"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ਰੰਗ ਪਲਟਨਾ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ਰੰਗ ਸੁਧਾਈ"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ਇੱਕ ਹੱਥ ਮੋਡ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ਜ਼ਿਆਦਾ ਘੱਟ ਚਮਕ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string> @@ -1864,8 +1874,10 @@ <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="750683025714899363">"ਬੈਟਰੀ ਸੇਵਰ ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ ਅਤੇ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ, ਕੁਝ ਦ੍ਰਿਸ਼ਟੀਗਤ ਪ੍ਰਭਾਵਾਂ ਅਤੇ ਕੁਝ ਖਾਸ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸੀਮਤ ਜਾਂ ਬੰਦ ਕਰਦਾ ਹੈ।\n\n"<annotation id="url">"ਹੋਰ ਜਾਣੋ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ਬੈਟਰੀ ਸੇਵਰ ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ ਅਤੇ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ, ਕੁਝ ਦ੍ਰਿਸ਼ਟੀਗਤ ਪ੍ਰਭਾਵਾਂ ਅਤੇ ਕੁਝ ਖਾਸ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸੀਮਤ ਜਾਂ ਬੰਦ ਕਰਦਾ ਹੈ।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ਡਾਟਾ ਵਰਤੋਂ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਲਈ, ਡਾਟਾ ਸੇਵਰ ਕੁਝ ਐਪਾਂ ਨੂੰ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਡਾਟਾ ਭੇਜਣ ਜਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਤੁਹਾਡੇ ਵੱਲੋਂ ਵਰਤਮਾਨ ਤੌਰ \'ਤੇ ਵਰਤੀ ਜਾ ਰਹੀ ਐਪ ਡਾਟਾ \'ਤੇ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ, ਪਰ ਉਹ ਇੰਝ ਕਦੇ-ਕਦਾਈਂ ਕਰ ਸਕਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਇਸ ਦਾ ਮਤਲਬ ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਚਿੱਤਰ ਤਦ ਤੱਕ ਨਹੀਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤੇ ਜਾਂਦੇ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਉਹਨਾਂ \'ਤੇ ਟੈਪ ਨਹੀਂ ਕਰਦੇ।"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ਕੀ ਡਾਟਾ ਸੇਵਰ ਚਾਲੂ ਕਰਨਾ ਹੈ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ਚਾਲੂ ਕਰੋ"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ਐਪ ਫਿਲਹਾਲ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਇਸਦਾ ਪ੍ਰਬੰਧਨ <xliff:g id="APP_NAME_1">%2$s</xliff:g> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ਹੋਰ ਜਾਣੋ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ਐਪ ਤੋਂ ਰੋਕ ਹਟਾਓ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ਕੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਚਾਲੂ ਕਰਨਾ ਹੈ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ, ਸੂਚਨਾਵਾਂ, ਡਾਟਾ ਅਤੇ ਹੋਰ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਚਾਲੂ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ਚਾਲੂ ਕਰੋ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ ਇਸ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 61516580df32..b77be3d5fa54 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1028,7 +1028,7 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst został skopiowany do schowka."</string> <string name="copied" msgid="4675902854553014676">"Skopiowano"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła dane z aplikacji <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła dane ze schowka"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> skopiowała dane ze schowka"</string> <string name="pasted_text" msgid="4298871641549173733">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowany tekst"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowany obraz"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowane treści"</string> @@ -1299,6 +1299,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Przygotowuję aplikację <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Uruchamianie aplikacji."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Kończenie uruchamiania."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Wyłączyć ekran?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Podczas konfigurowania odcisku palca naciśnięto przycisk zasilania.\n\nZwykle powoduje to wyłączenie ekranu."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Wyłącz"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Anuluj"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Działa <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Kliknij, by wrócić do gry"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Wybierz grę"</string> @@ -1753,6 +1757,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Użyj skrótu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Odwrócenie kolorów"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcja kolorów"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Tryb jednej ręki"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatkowe przyciemnienie"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została włączona."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została wyłączona."</string> @@ -1910,8 +1915,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Zaktualizowany przez administratora"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Usunięty przez administratora"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Oszczędzanie baterii uruchamia ciemny motyw oraz wyłącza lub ogranicza aktywność w tle, niektóre efekty wizualne i wybrane funkcje.\n\n"<annotation id="url">"Więcej informacji"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Oszczędzanie baterii uruchamia ciemny motyw oraz wyłącza lub ogranicza aktywność w tle, niektóre efekty wizualne i wybrane funkcje."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Oszczędzanie danych uniemożliwia niektórym aplikacjom wysyłanie i odbieranie danych w tle, zmniejszając w ten sposób ich użycie. Aplikacja, z której w tej chwili korzystasz, może uzyskiwać dostęp do danych, ale rzadziej. Może to powodować, że obrazy będą się wyświetlać dopiero po kliknięciu."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Włączyć Oszczędzanie danych?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Włącz"</string> @@ -2032,8 +2039,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacja <xliff:g id="APP_NAME_0">%1$s</xliff:g> nie jest teraz dostępna. Zarządza tym aplikacja <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Więcej informacji"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Wznów działanie aplikacji"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Włączyć profil służbowy?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikacje służbowe, powiadomienia, dane i inne funkcje profilu służbowego zostaną włączone"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Włącz"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacja jest niedostępna"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest obecnie niedostępna."</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index cb1ee4800e72..bc0342aecf0c 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Dados do app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Dados da área de transferência colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou conteúdo da sua área de transferência"</string> <string name="pasted_text" msgid="4298871641549173733">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto copiado"</string> <string name="pasted_image" msgid="4729097394781491022">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem copiada"</string> <string name="pasted_content" msgid="646276353060777131">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo copiado"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Concluindo a inicialização."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Desligar a tela?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Durante a configuração da sua impressão digital, você pressionou o botão liga/desliga.\n\nNormalmente, essa ação desliga a tela."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Desligar"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancelar"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toque para voltar ao jogo"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Escolha o jogo"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção de cor"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Excluído pelo seu administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos específicos.\n\n"<annotation id="url">"Saiba mais"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos específicos."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"A Economia de bateria ativa o tema escuro e limita ou desativa atividades em segundo plano, alguns efeitos visuais, recursos específicos e algumas conexões de rede.\n\n"<annotation id="url">"Saiba mais"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"A Economia de bateria ativa o tema escuro e limita ou desativa atividades em segundo plano, alguns efeitos visuais, recursos específicos e algumas conexões de rede."</string> <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando no momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não sejam exibidas até que você toque nelas."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Ativar \"Economia de dados\"?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"O app <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível no momento. Isso é gerenciado pelo app <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Seus apps, notificações, dados e outros recursos do perfil de trabalho serão ativados"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Ativar apps de trabalho?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Acesse seus apps e notificações de trabalho"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"O app não está disponível"</string> <string name="app_blocked_message" msgid="542972921087873023">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível no momento."</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index a00f9381b089..db561c9c0f8d 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou da app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou da área de transferência"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou a partir da área de transferência"</string> <string name="pasted_text" msgid="4298871641549173733">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto que copiou"</string> <string name="pasted_image" msgid="4729097394781491022">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem que copiou"</string> <string name="pasted_content" msgid="646276353060777131">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo que copiou"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"A preparar o <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"A iniciar aplicações"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"A concluir o arranque."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Pretende desligar o ecrã?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Quando configurou a sua impressão digital, premiu o botão ligar/desligar.\n\nGeralmente, esta ação desativa o seu ecrã."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Desligar"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancelar"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toque para regressar ao jogo."</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Selecionar jogo"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção da cor"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> @@ -1864,8 +1869,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu gestor"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado pelo seu gestor"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"A Poupança de bateria ativa o tema escuro e limita ou desativa a atividade em segundo plano, alguns efeitos visuais e determinadas funcionalidades.\n\n"<annotation id="url">"Saiba mais"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"A Poupança de bateria ativa o tema escuro e limita ou desativa a atividade em segundo plano, alguns efeitos visuais e determinadas funcionalidades."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir a utilização de dados, a Poupança de dados impede que algumas aplicações enviem ou recebam dados em segundo plano. Uma determinada app que esteja a utilizar atualmente pode aceder aos dados, mas é possível que o faça com menos frequência. Isto pode significar, por exemplo, que as imagens não são apresentadas até que toque nas mesmas."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Pretende ativar a Poupança de dados?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string> @@ -1968,8 +1975,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"A app <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível neste momento. A app <xliff:g id="APP_NAME_1">%2$s</xliff:g> gere esta definição."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"As apps de trabalho, as notificações, os dados e outras funcionalidades do perfil de trabalho serão desativados"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"A app não está disponível"</string> <string name="app_blocked_message" msgid="542972921087873023">"De momento, a app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível."</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index cb1ee4800e72..bc0342aecf0c 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Dados do app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Dados da área de transferência colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou conteúdo da sua área de transferência"</string> <string name="pasted_text" msgid="4298871641549173733">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto copiado"</string> <string name="pasted_image" msgid="4729097394781491022">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem copiada"</string> <string name="pasted_content" msgid="646276353060777131">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo copiado"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Concluindo a inicialização."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Desligar a tela?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Durante a configuração da sua impressão digital, você pressionou o botão liga/desliga.\n\nNormalmente, essa ação desliga a tela."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Desligar"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancelar"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toque para voltar ao jogo"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Escolha o jogo"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção de cor"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Excluído pelo seu administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos específicos.\n\n"<annotation id="url">"Saiba mais"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos específicos."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"A Economia de bateria ativa o tema escuro e limita ou desativa atividades em segundo plano, alguns efeitos visuais, recursos específicos e algumas conexões de rede.\n\n"<annotation id="url">"Saiba mais"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"A Economia de bateria ativa o tema escuro e limita ou desativa atividades em segundo plano, alguns efeitos visuais, recursos específicos e algumas conexões de rede."</string> <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando no momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não sejam exibidas até que você toque nelas."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Ativar \"Economia de dados\"?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"O app <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível no momento. Isso é gerenciado pelo app <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Seus apps, notificações, dados e outros recursos do perfil de trabalho serão ativados"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Ativar apps de trabalho?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Acesse seus apps e notificações de trabalho"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"O app não está disponível"</string> <string name="app_blocked_message" msgid="542972921087873023">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível no momento."</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 3ae21c05ac16..022e1cad8374 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1025,7 +1025,8 @@ <string name="text_copied" msgid="2531420577879738860">"Text copiat în clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copiat"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat date din <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat date din clipboard"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat textul copiat"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat o imagine copiată"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat conținutul copiat"</string> @@ -1279,6 +1280,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Se pregătește <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Se pornesc aplicațiile."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Se finalizează pornirea."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Rulează <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Atingeți pentru a reveni la joc"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Alegeți jocul"</string> @@ -1731,6 +1740,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizați comanda rapidă"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversarea culorilor"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corecția culorii"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Luminozitate redusă suplimentar"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S-au apăsat lung tastele de volum. S-a activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S-au apăsat lung tastele de volum. S-a dezactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1887,8 +1898,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizat de administratorul dvs."</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Șters de administratorul dvs."</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Economisirea bateriei activează tema întunecată și dezactivează sau restricționează activitatea în fundal, unele efecte vizuale și alte funcții.\n\n"<annotation id="url">"Aflați mai multe"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Economisirea bateriei activează tema întunecată și dezactivează sau restricționează activitatea în fundal, unele efecte vizuale și alte funcții."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Pentru a contribui la reducerea utilizării de date, Economizorul de date împiedică unele aplicații să trimită sau să primească date în fundal. O aplicație pe care o folosiți poate accesa datele, însă mai rar. Aceasta poate însemna, de exemplu, că imaginile se afișează numai după ce le atingeți."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activați Economizorul de date?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activați"</string> @@ -2000,8 +2013,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Momentan, aplicația <xliff:g id="APP_NAME_0">%1$s</xliff:g> nu este disponibilă. Aceasta este gestionată de <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Aflați mai multe"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anulați întreruperea aplicației"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activați profilul de serviciu?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Se vor activa aplicațiile dvs. de serviciu, notificările, datele și alte funcții ale profilului de serviciu"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activați"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplicația nu este disponibilă"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu este disponibilă momentan."</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 591881cd485d..86a0c0d9a8f7 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текст скопирован в буфер обмена."</string> <string name="copied" msgid="4675902854553014676">"Скопировано"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Данные из приложения \"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>\" вставлены в приложение \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\"."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Данные из буфера обмена вставлены в приложение \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\"."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированный текст вставлен"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированное изображение вставлено"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированный контент вставлен"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Подготовка приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\"..."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Запуск приложений."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Окончание загрузки..."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Приложение <xliff:g id="APP">%1$s</xliff:g> запущено"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Нажмите, чтобы вернуться в игру."</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Выберите игру"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Использовать быстрое включение"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверсия цветов"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Коррекция цвета"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнительное уменьшение яркости"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" включена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" отключена."</string> @@ -1910,8 +1921,10 @@ <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="750683025714899363">"В режиме энергосбережения включается тёмная тема, ограничиваются или отключаются фоновые процессы, некоторые визуальные эффекты и определенные функции.\n\n"<annotation id="url">"Подробнее…"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"В режиме энергосбережения включается тёмная тема, ограничиваются или отключаются фоновые процессы, некоторые визуальные эффекты и определенные функции."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"В режиме экономии трафика фоновая передача данных для некоторых приложений отключена. Приложение, которым вы пользуетесь, может получать и отправлять данные, но реже, чем обычно. Например, изображения могут не загружаться, пока вы не нажмете на них."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Включить экономию трафика?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Включить"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Приложение \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" недоступно. Его работу ограничивает приложение \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\"."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Подробнее"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Возобновить работу приложения"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Включить рабочий профиль?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Будут включены корпоративные приложения, уведомления, данные и другие функции рабочего профиля."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Включить"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Приложение недоступно"</string> <string name="app_blocked_message" msgid="542972921087873023">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" сейчас недоступно."</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 244b0df87fb8..5d38e46b81d3 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"පෙළ පසුරු පුවරුවට පිටපත් කරන ලදි."</string> <string name="copied" msgid="4675902854553014676">"පිටපත් කළා"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> වෙතින් අලවන ලදි"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> පසුරු පුවරුව වෙතින් අලවන ලදි"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"ඔබගේ පසුරු පුවරුව වෙතින් <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> පිටපත් කරන ලදි"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ පෙළ ඇලවීය"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ රූපයක් ඇලවීය"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ අන්තර්ගතය ඇලවීය"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> සූදානම් කරමින්."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"යෙදුම් ආරම්භ කරමින්."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ඇරඹුම අවසාන කරමින්."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"තිරය ක්රියාවිරහිත කරන්නද?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"ඔබගේ ඇඟිලි සලකුණ පිහිටුවන අතරතුර ඔබ බල බොත්තම එබුවේය.\n\nමෙය සාමාන්යයෙන් ඔබගේ තිරය ක්රියාවිරහිත කරයි."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"ක්රියාවිරහිත කරන්න"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"අවලංගු කරන්න"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ධාවනය වෙමින්"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ක්රීඩාව වෙත ආපසු යාමට තට්ටු කරන්න"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ක්රීඩාව තෝරන්න"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"කෙටිමඟ භාවිතා කරන්න"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"වර්ණ අපවර්තනය"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"වර්ණ නිවැරදි කිරීම"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"තවත් අඳුරු"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාත්මකයි."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාවිරහිතයි."</string> @@ -1864,8 +1870,10 @@ <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="750683025714899363">"බැටරි සුරැකුම අඳුරු තේමාව ක්රියාත්මක කර පසුබිම් ක්රියාකාරකම්, සමහර දෘශ්ය ප්රයෝග සහ යම් විශේෂාංග ක්රියාවිරහිත හෝ සීමා කරයි.\n\n"<annotation id="url">"තව දැන ගන්න"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"බැටරි සුරැකුම අඳුරු තේමාව ක්රියාත්මක කර පසුබිම් ක්රියාකාරකම්, සමහර දෘශ්ය ප්රයෝග සහ යම් විශේෂාංග ක්රියාවිරහිත හෝ සීමා කරයි."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"දත්ත භාවිතය අඩු කිරීමට උදවු වීමට, දත්ත සුරැකුම සමහර යෙදුම් පසුබිමින් දත්ත යැවීම සහ ලබා ගැනීම වළක්වයි. ඔබ දැනට භාවිත කරන යෙදුමකට දත්ත වෙත පිවිසීමට හැකිය, නමුත් එසේ කරන්නේ කලාතුරකින් විය හැකිය. මෙයින් අදහස් වන්නේ, උදාහරණයක් ලෙස, එම රූප ඔබ ඒවාට තට්ටු කරන තෙක් සංදර්ශනය නොවන බවය."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"දත්ත සුරැකුම ක්රියාත්මක කරන්නද?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ක්රියාත්මක කරන්න"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> මේ අවස්ථාවේදී ලබා ගත නොහැකිය. මෙය <xliff:g id="APP_NAME_1">%2$s</xliff:g> මගින් කළමනාකරණය කෙරේ."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"තව දැන ගන්න"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"යෙදුම විරාම කිරීම ඉවත් කරන්න"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"කාර්යාල පැතිකඩ ක්රියාත්මක කරන්නද?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ඔබගේ වැඩ යෙදුම්, දැනුම්දීම්, දත්ත සහ වෙනත් කාර්යාල පැතිකඩ විශේෂාංග ක්රියාත්මක කරනු ඇත"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ක්රියාත්මක කරන්න"</string> <string name="app_blocked_title" msgid="7353262160455028160">"යෙදුම ලබා ගත නොහැකිය"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> මේ දැන් ලබා ගත නොහැකිය."</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 3410fccd03b6..ac5483a34843 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1028,7 +1028,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text bol skopírovaný do schránky."</string> <string name="copied" msgid="4675902854553014676">"Skopírované"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila údaje z aplikácie <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila údaje zo schránky"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> bola prilepená zo schránky"</string> <string name="pasted_text" msgid="4298871641549173733">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila text, ktorý ste skopírovali"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplik. <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila obrázok, ktorý ste skopírovali"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila obsah, ktorý ste skopírovali"</string> @@ -1299,6 +1299,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Pripravuje sa aplikácia <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Prebieha spúšťanie aplikácií."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Prebieha dokončovanie spúšťania."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Chcete vypnúť obrazovku?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Pri nastavovaní odtlačku prsta ste stlačili vypínač.\n\nObrazovka sa tým zvyčajne vypne."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Vypnúť"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Zrušiť"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Spustená aplikácia: <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Klepnutím prejdete späť do hry"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Vyberte hru"</string> @@ -1753,6 +1757,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použiť skratku"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzia farieb"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Úprava farieb"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Veľmi tmavé"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vypnutá."</string> @@ -1910,8 +1916,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Aktualizoval správca"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Odstránil správca"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Šetrič batérie zapne tmavý motív a obmedzí alebo vypne aktivitu na pozadí, niektoré vizuálne efekty a určité funkcie.\n\n"<annotation id="url">"Ďalšie informácie"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Šetrič batérie zapne tmavý motív a obmedzí alebo vypne aktivitu na pozadí, niektoré vizuálne efekty a určité funkcie."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Šetrič batérie zapne tmavý motív a obmedzí alebo vypne aktivitu na pozadí, niektoré vizuálne efekty, určité funkcie a niektoré pripojenia k sieti.\n\n"<annotation id="url">"Ďalšie informácie"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Šetrič batérie zapne tmavý motív a obmedzí alebo vypne aktivitu na pozadí, niektoré vizuálne efekty, určité funkcie a niektoré pripojenia k sieti."</string> <string name="data_saver_description" msgid="4995164271550590517">"S cieľom znížiť spotrebu dát bráni šetrič dát niektorým aplikáciám odosielať alebo prijímať dáta na pozadí. Aplikácia, ktorú práve používate, môže využívať dáta, ale možno to bude robiť menej často. Môže to napríklad znamenať, že sa obrázky zobrazia, až keď na ne klepnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Chcete zapnúť šetrič dát?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Zapnúť"</string> @@ -2032,8 +2038,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikácia <xliff:g id="APP_NAME_0">%1$s</xliff:g> nie je momentálne k dispozícii. Spravuje to aplikácia <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Ďalšie informácie"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Znova spustiť aplikáciu"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Zapnúť pracovný profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Pracovné aplikácie, upozornenia, dáta a ďalšie funkcie pracovného profilu sa zapnú"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Zapnúť pracovné aplikácie?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Získajte prístup k svojim pracovným aplikáciám a upozorneniam"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Zapnúť"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikácia nie je dostupná"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> nie je teraz dostupná."</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index f4c2cd3f4c39..7dce14894c39 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Besedilo, kopirano v odložišče."</string> <string name="copied" msgid="4675902854553014676">"Kopirano"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila iz aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila iz odložišča."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila besedilo iz odložišča."</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila sliko iz odložišča."</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila vsebino iz odložišča."</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Pripravljanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Zagon aplikacij."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Dokončevanje zagona."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> se izvaja"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dotaknite se za vrnitev v igro"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Izberite igro"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Uporabi bližnjico"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija barv"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Popravljanje barv"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Zelo zatemnjeno"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vklopljena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je izklopljena."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Posodobil skrbnik"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisal skrbnik"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"V redu"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Varčevanje z energijo baterije vklopi temno temo ter omeji ali izklopi dejavnost v ozadju, nekatere vizualne učinke in določene funkcije.\n\n"<annotation id="url">"Več o tem"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Varčevanje z energijo baterije vklopi temno temo ter omeji ali izklopi dejavnost v ozadju, nekatere vizualne učinke in določene funkcije."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Zaradi zmanjševanja prenesene količine podatkov funkcija varčevanja s podatki nekaterim aplikacijam preprečuje, da bi v ozadju pošiljale ali prejemale podatke. Aplikacija, ki jo trenutno uporabljate, lahko prenaša podatke, vendar to morda počne manj pogosto. To na primer pomeni, da se slike ne prikažejo, dokler se jih ne dotaknete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vklop varčevanja s podatki?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Vklopi"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno ni na voljo. To upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Več o tem"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Prekliči začasno zaustavitev aplikacije"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Želite vklopiti delovni profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Vklopili boste svoje delovne aplikacije, obvestila, podatke in druge funkcije delovnega profila"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Vklop"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija ni na voljo"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno ni na voljo."</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 56afd6020944..d895f74a0e0b 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Teksti u kopjua në kujtesën e fragmenteve."</string> <string name="copied" msgid="4675902854553014676">"U kopjua"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> u ngjit nga <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> u ngjit nga kujtesa e fragmenteve"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjitur nga kujtesa jote e fragmenteve"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një tekst që kopjove"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një imazh që kopjove"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një përmbajtje që kopjove"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Po përgatit <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Aplikacionet e fillimit."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Po përfundon nisjen."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Të fiket ekrani?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Gjatë konfigurimit të gjurmës së gishtit tënd, ke shtypur butonin e \"Energjisë\".\n\nKjo zakonisht fik ekranin tënd."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Fik"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Anulo"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> është në punë"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Trokit për t\'u kthyer te loja"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Zgjidh një lojë"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Përdor shkurtoren"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Anasjellja e ngjyrës"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korrigjimi i ngjyrës"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Shumë më i zbehtë"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tastet e volumit të mbajtura shtypur. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> i aktivizuar."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tastet e volumit të mbajtura shtypur. U çaktivizua \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string> @@ -1864,8 +1870,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Përditësuar nga administratori"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Fshirë nga administratori"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Në rregull"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"\"Kursyesi i baterisë\" aktivizon \"Temën e errët\" dhe kufizon ose çaktivizon aktivitetin në sfond, disa efekte vizuale dhe veçori të caktuara.\n\n"<annotation id="url">"Mëso më shumë"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"\"Kursyesi i baterisë\" aktivizon \"Temën e errët\" dhe kufizon ose çaktivizon aktivitetin në sfond, disa efekte vizuale dhe veçori të caktuara."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Për të ndihmuar në reduktimin e përdorimit të të dhënave, \"Kursyesi i të dhënave\" pengon që disa aplikacione të dërgojnë apo të marrin të dhëna në sfond. Një aplikacion që po përdor aktualisht mund të ketë qasje te të dhënat, por këtë mund ta bëjë më rrallë. Kjo mund të nënkuptojë, për shembull, se imazhet nuk shfaqen kur troket mbi to."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Të aktivizohet \"Kursyesi i të dhënave\"?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivizo"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> nuk ofrohet në këtë moment. Kjo menaxhohet nga <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Mëso më shumë"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anulo pauzën për aplikacionin"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Të aktivizohet profili i punës?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikacionet e punës, njoftimet, të dhënat e tua dhe funksionet e tjera të profilit të punës do të aktivizohen"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivizo"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacioni nuk ofrohet"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk ofrohet për momentin."</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 0c083b093e99..35129455625f 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1025,7 +1025,7 @@ <string name="text_copied" msgid="2531420577879738860">"Текст је копиран у привремену меморију."</string> <string name="copied" msgid="4675902854553014676">"Копирано је"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила податке из апликације <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> налепила податке из привремене меморије"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"Садржај апликације <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепљен у привр. меморију"</string> <string name="pasted_text" msgid="4298871641549173733">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила текст који сте копирали"</string> <string name="pasted_image" msgid="4729097394781491022">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила слику коју сте копирали"</string> <string name="pasted_content" msgid="646276353060777131">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила садржај који сте копирали"</string> @@ -1279,6 +1279,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Припрема се <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Покретање апликација."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Завршавање покретања."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Желите да искључите екран?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Притисли сте дугме за укључивање током подешавања отиска прста.\n\nТако се најчешће искључује екран."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Искључи"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Откажи"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"Апликација <xliff:g id="APP">%1$s</xliff:g> је покренута"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Додирните да бисте се вратили у игру"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Одаберите игру"</string> @@ -1731,6 +1735,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи пречицу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија боја"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекција боја"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим једном руком"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додатно затамњено"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је укључена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је искључена."</string> @@ -1887,8 +1892,10 @@ <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="750683025714899363">"Уштеда батерије укључује Тамну тему и ограничава или искључује активности у позадини, неке визуелне ефекте и одређене функције.\n\n"<annotation id="url">"Сазнајте више"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Уштеда батерије укључује Тамну тему и ограничава или искључује активности у позадини, неке визуелне ефекте и одређене функције."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Да би се смањила потрошња података, Уштеда података спречава неке апликације да шаљу или примају податке у позадини. Апликација коју тренутно користите може да приступа подацима, али ће то чинити ређе. На пример, слике се неће приказивати док их не додирнете."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Желите да укључите Уштеду података?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Укључи"</string> @@ -2000,8 +2007,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Апликација <xliff:g id="APP_NAME_0">%1$s</xliff:g> тренутно није доступна. <xliff:g id="APP_NAME_1">%2$s</xliff:g> управља доступношћу."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Сазнајте више"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Опозови паузирање апликације"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Да укључимо пословни профил?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Укључиће се пословне апликације, обавештења, подаци и друге функције пословног профила"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Укључи"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Апликација није доступна"</string> <string name="app_blocked_message" msgid="542972921087873023">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> тренутно није доступна."</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index cd21511fa23a..71fcb7da984d 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text har kopierats till urklipp."</string> <string name="copied" msgid="4675902854553014676">"Kopierat"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in från <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in från urklipp"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in från urklipp"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in text som du kopierade"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in en bild som du kopierade"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in innehåll som du kopierade"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> förbereds."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Appar startas."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Uppgraderingen är klar."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Vill du stänga av skärmen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Du tryckte på strömbrytaren när du skulle konfigurera fingeravtrycket.\n\nDet brukar leda till att skärmen stängs av."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Stäng av"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Avbryt"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> körs"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Återgå till spelet genom att trycka här"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Välj spel"</string> @@ -1709,6 +1713,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Använd kortkommandot"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverterade färger"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Färgkorrigering"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradimmat"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har aktiverats."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har inaktiverats."</string> @@ -1864,8 +1870,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administratören uppdaterade paketet"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administratören raderade paketet"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Batterisparläget aktiverar mörkt tema och begränsar eller inaktiverar bakgrundsaktivitet, vissa visuella effekter och vissa funktioner.\n\n"<annotation id="url">"Läs mer"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Batterisparläget aktiverar mörkt tema och begränsar eller inaktiverar bakgrundsaktivitet, vissa visuella effekter och vissa funktioner."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Med Databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vill du aktivera Databesparing?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivera"</string> @@ -1968,8 +1976,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> är inte tillgänglig just nu. Detta hanteras av <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Läs mer"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Återuppta app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vill du aktivera jobbprofilen?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Jobbappar, aviseringar, data och andra funktioner i jobbprofilen aktiveras"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivera"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Appen är inte tillgänglig"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> är inte tillgängligt just nu."</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 9b91ad54b14d..cf224927cad1 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -26,7 +26,7 @@ <string name="gigabyteShort" msgid="7515809460261287991">"GB"</string> <string name="terabyteShort" msgid="1822367128583886496">"TB"</string> <string name="petabyteShort" msgid="5651571254228534832">"PB"</string> - <string name="fileSizeSuffix" msgid="4233671691980131257">"<xliff:g id="NUMBER">%1$s</xliff:g> <xliff:g id="UNIT">%2$s</xliff:g>"</string> + <string name="fileSizeSuffix" msgid="4233671691980131257">"<xliff:g id="UNIT">%2$s</xliff:g> <xliff:g id="NUMBER">%1$s</xliff:g>"</string> <string name="untitled" msgid="3381766946944136678">"<Haina jina>"</string> <string name="emptyPhoneNumber" msgid="5812172618020360048">"(Hakuna nambari ya simu)"</string> <string name="unknownName" msgid="7078697621109055330">"Isiyojulikana"</string> @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Maandishi yamenakiliwa kwenye ubao wa kunakili."</string> <string name="copied" msgid="4675902854553014676">"Umenakili"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika kutoka <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika kutoka ubao wa kunakili"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika maandishi uliyonakili"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika picha uliyonakili"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika maudhui uliyonakili"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Inaandaa <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Programu zinaanza"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Inamaliza kuwasha."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> inaendelea"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Gusa ili urudi kwenye mchezo"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Chagua mchezo"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tumia Njia ya Mkato"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ugeuzaji rangi"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Usahihishaji wa rangi"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Kipunguza mwangaza zaidi"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Vitufe vya sauti vilivyoshikiliwa. Umewasha <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Vitufe vya sauti vimeshikiliwa. Umezima <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Imesasishwa na msimamizi wako"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Imefutwa na msimamizi wako"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Sawa"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Kiokoa Betri huwasha Mandhari meusi na kudhibiti au kuzima shughuli za chinichini, baadhi ya madoido yanayoonekana na vipengele fulani.\n\n"<annotation id="url">"Pata maelezo zaidi"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Kiokoa Betri huwasha Mandhari meusi na kudhibiti au kuzima shughuli za chinichini, baadhi ya madoido yanayoonekana na vipengele fulani."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Ili kusaidia kupunguza matumizi ya data, Kiokoa Data huzuia baadhi ya programu kupokea na kutuma data chinichini. Programu ambayo unatumia sasa inaweza kufikia data, lakini si kila wakati. Kwa mfano, haitaonyesha picha hadi utakapozifungua."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Ungependa Kuwasha Kiokoa Data?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Washa"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> haipatikani kwa sasa. Inasimamiwa na <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Pata maelezo zaidi"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Acha kusimamisha programu"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ungependa kuwasha wasifu wa kazini?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Hatua hii itawasha data, arifa, programu za kazini na vipengele vingine vya wasifu wa kazini"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Washa"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Programu haipatikani"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> haipatikani hivi sasa."</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index f923be6a4c81..7d853eece02f 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"உரை கிளிப்போர்டிற்கு நகலெடுக்கப்பட்டது."</string> <string name="copied" msgid="4675902854553014676">"நகலெடுக்கப்பட்டது"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ஆப்ஸிலிருந்து <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஒட்டப்பட்டது"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"கிளிப்போர்டிலிருந்து <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஒட்டப்பட்டது"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"நீங்கள் நகலெடுத்த உரையை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string> <string name="pasted_image" msgid="4729097394781491022">"நீங்கள் நகலெடுத்த படத்தை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string> <string name="pasted_content" msgid="646276353060777131">"நீங்கள் நகலெடுத்த உள்ளடக்கத்தை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>ஐத் தயார்செய்கிறது."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ஆப்ஸ் தொடங்கப்படுகின்றன."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"துவக்குதலை முடிக்கிறது."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> இயங்குகிறது"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"கேமிற்குச் செல்ல, தட்டவும்"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"கேமைத் தேர்வுசெய்க"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ஷார்ட்கட்டைப் பயன்படுத்து"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"நிற நேரெதிர் மாற்றம்"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"நிறத் திருத்தம்"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"மிகக் குறைவான வெளிச்சம்"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆன் செய்யப்பட்டது."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆஃப் செய்யப்பட்டது."</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"பேட்டரி சேமிப்பான் டார்க் தீமை ஆன் செய்யும். பின்னணிச் செயல்பாடு, சில விஷுவல் எஃபெக்ட்கள் மற்றும் குறிப்பிட்ட அம்சங்களைக் கட்டுப்படுத்தும் அல்லது ஆஃப் செய்யும்.\n\n"<annotation id="url">"மேலும் அறிக"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"பேட்டரி சேமிப்பான் டார்க் தீமை ஆன் செய்யும். பின்னணிச் செயல்பாடு, சில விஷுவல் எஃபெக்ட்கள் மற்றும் குறிப்பிட்ட அம்சங்களைக் கட்டுப்படுத்தும் அல்லது ஆஃப் செய்யும்."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"டேட்டா உபயோகத்தைக் குறைப்பதற்கு உதவ, பின்புலத்தில் டேட்டாவை அனுப்புவது அல்லது பெறுவதிலிருந்து சில ஆப்ஸை டேட்டா சேமிப்பான் தடுக்கும். தற்போது பயன்படுத்தும் ஆப்ஸானது எப்போதாவது டேட்டாவை அணுகலாம். எடுத்துக்காட்டாக, படங்களை நீங்கள் தட்டும் வரை அவை காட்டப்படாது."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"டேட்டா சேமிப்பானை இயக்கவா?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"இயக்கு"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"இப்போது <xliff:g id="APP_NAME_0">%1$s</xliff:g> ஆப்ஸை உபயோகிக்க இயலாது. இதை <xliff:g id="APP_NAME_1">%2$s</xliff:g> நிர்வகிக்கிறது."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"மேலும் அறிக"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ஆப்ஸ் இயக்கு"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"பணிச் சுயவிவரத்தை ஆன் செய்யவா?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"பணி ஆப்ஸ், அறிவிப்புகள், தரவு மற்றும் பிற பணிச் சுயவிவர அம்சங்கள் ஆன் செய்யப்படும்"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"இயக்கு"</string> <string name="app_blocked_title" msgid="7353262160455028160">"இந்த ஆப்ஸ் இப்போது கிடைப்பதில்லை"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் இப்போது கிடைப்பதில்லை."</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index e1998ddf0dfe..13b3e2cd9d9e 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"వచనం క్లిప్బోర్డ్కు కాపీ చేయబడింది."</string> <string name="copied" msgid="4675902854553014676">"కాపీ చేయబడింది"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> నుండి పేస్ట్ చేయబడింది"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> క్లిప్బోర్డ్ నుండి పేస్ట్ చేయబడింది"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన టెక్స్ట్ను పేస్ట్ చేసింది"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన ఇమేజ్ను పేస్ట్ చేసింది"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన కంటెంట్ను పేస్ట్ చేసింది"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>ని సిద్ధం చేస్తోంది."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"అనువర్తనాలను ప్రారంభిస్తోంది."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"బూట్ను ముగిస్తోంది."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> అమలవుతోంది"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"గేమ్కి తిరిగి రావడానికి నొక్కండి"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"గేమ్ను ఎంచుకోండి"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"సత్వరమార్గాన్ని ఉపయోగించు"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"కలర్ మార్పిడి"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"కలర్ సరిచేయడం"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"కాంతిని మరింత డిమ్ చేయడం"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆన్ చేయబడింది"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆఫ్ చేయబడింది"</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"బ్యాటరీ సేవర్ ముదురు రంగు రూపాన్ని ఆన్ చేసి, బ్యాక్గ్రౌండ్ యాక్టివిటీ, కొన్ని విజువల్ ఎఫెక్ట్లు, నిర్దిష్ట ఫీచర్లను పరిమితం చేస్తుంది లేదా ఆఫ్ చేస్తుంది.\n\n"<annotation id="url">"మరింత తెలుసుకోండి"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"బ్యాటరీ సేవర్ ముదురు రంగు రూపాన్ని ఆన్ చేసి, బ్యాక్గ్రౌండ్ యాక్టివిటీ, కొన్ని విజువల్ ఎఫెక్ట్లు, నిర్దిష్ట ఫీచర్లను పరిమితం చేస్తుంది లేదా ఆఫ్ చేస్తుంది."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"డేటా వినియోగాన్ని తగ్గించడంలో డేటా సేవర్ సహాయకరంగా ఉంటుంది. బ్యాక్గ్రౌండ్లో కొన్ని యాప్లు డేటాను పంపకుండా లేదా స్వీకరించకుండా నిరోధిస్తుంది. మీరు ప్రస్తుతం ఉపయోగిస్తోన్న యాప్, డేటాను యాక్సెస్ చేయగలదు. కానీ తక్కువ సార్లు మాత్రమే అలా చేయవచ్చు. ఉదాహరణకు, మీరు నొక్కే వరకు ఫోటోలు ప్రదర్శించబడవు."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"డేటా సేవర్ను ఆన్ చేయాలా?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ఆన్ చేయి"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ప్రస్తుతం అందుబాటులో లేదు. ఇది <xliff:g id="APP_NAME_1">%2$s</xliff:g> ద్వారా నిర్వహించబడుతుంది."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"మరింత తెలుసుకోండి"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"యాప్పై వున్న పాజ్ను తొలగించండి"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ఆఫీస్ ప్రొఫైల్ను ఆన్ చేయాలా?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"మీ ఆఫీస్ యాప్లు, నోటిఫికేషన్లు, డేటాతో పాటు ఇతర ఆఫీస్ ప్రొఫైల్ ఫీచర్లు ఆన్ అవుతాయి"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ఆన్ చేయి"</string> <string name="app_blocked_title" msgid="7353262160455028160">"యాప్ అందుబాటులో లేదు"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ప్రస్తుతం అందుబాటులో లేదు."</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index a83f9c250b1e..663fc848acc4 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"คัดลอกข้อความไปยังคลิปบอร์ด"</string> <string name="copied" msgid="4675902854553014676">"คัดลอกแล้ว"</string> <string name="pasted_from_app" msgid="5627698450808256545">"วาง <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> จาก <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> แล้ว"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"วาง <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> จากคลิปบอร์ดแล้ว"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางข้อความที่คุณคัดลอก"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางรูปภาพที่คุณคัดลอก"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางเนื้อหาที่คุณคัดลอก"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"กำลังเตรียม <xliff:g id="APPNAME">%1$s</xliff:g>"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"กำลังเริ่มต้นแอปพลิเคชัน"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"เสร็จสิ้นการบูต"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> กำลังทำงาน"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"แตะเพื่อกลับไปที่เกม"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"เลือกเกม"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ใช้ทางลัด"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"การกลับสี"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"การแก้สี"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"โหมดมือเดียว"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"หรี่แสงเพิ่มเติม"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว เปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว ปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> @@ -1864,8 +1874,10 @@ <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="750683025714899363">"โหมดประหยัดแบตเตอรี่จะเปิดใช้ธีมมืดและจำกัดหรือปิดกิจกรรมในเบื้องหลัง เอฟเฟกต์ภาพบางอย่าง และฟีเจอร์บางส่วน\n\n"<annotation id="url">"ดูข้อมูลเพิ่มเติม"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"โหมดประหยัดแบตเตอรี่จะเปิดใช้ธีมมืดและจำกัดหรือปิดกิจกรรมในเบื้องหลัง เอฟเฟกต์ภาพบางอย่าง และฟีเจอร์บางส่วน"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"เพื่อช่วยลดปริมาณการใช้อินเทอร์เน็ต โปรแกรมประหยัดอินเทอร์เน็ตจะช่วยป้องกันไม่ให้บางแอปส่งหรือรับข้อมูลโดยการใช้อินเทอร์เน็ตอยู่เบื้องหลัง แอปที่คุณกำลังใช้งานสามารถเข้าถึงอินเทอร์เน็ตได้ แต่อาจไม่บ่อยเท่าเดิม ตัวอย่างเช่น ภาพต่างๆ จะไม่แสดงจนกว่าคุณจะแตะที่ภาพเหล่านั้น"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"เปิดการประหยัดอินเทอร์เน็ตไหม"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"เปิด"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"เปิด <xliff:g id="APP_NAME_0">%1$s</xliff:g> ไม่ได้ในขณะนี้ แอปนี้จัดการโดย <xliff:g id="APP_NAME_1">%2$s</xliff:g>"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ดูข้อมูลเพิ่มเติม"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ยกเลิกการหยุดแอปชั่วคราว"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"เปิดโปรไฟล์งานไหม"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ระบบจะเปิดแอปงาน การแจ้งเตือน ข้อมูล และฟีเจอร์อื่นๆ ในโปรไฟล์งาน"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"เปิด"</string> <string name="app_blocked_title" msgid="7353262160455028160">"แอปไม่พร้อมใช้งาน"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่พร้อมใช้งานในขณะนี้"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 145177da9384..e26ce1c94ef9 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Nakopya ang teksto sa clipboard."</string> <string name="copied" msgid="4675902854553014676">"Nakopya"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Na-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> mula sa <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Na-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> mula sa clipboard"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng text na nakopya mo"</string> <string name="pasted_image" msgid="4729097394781491022">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng larawang nakopya mo"</string> <string name="pasted_content" msgid="646276353060777131">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng content na nakopya mo"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Ihinahanda ang <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Sinisimulan ang apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Pagtatapos ng pag-boot."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Tumatakbo ang <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Mag-tap upang bumalik sa laro"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Pumili ng laro"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gamitin ang Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Pag-invert ng Kulay"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Pagwawasto ng Kulay"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pinindot nang matagal ang volume keys. Na-on ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pinindot nang matagal ang volume keys. Na-off ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Na-update ng iyong admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Na-delete ng iyong admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Ino-on ng Pantipid ng Baterya ang Madilim na tema at nililimitahan o ino-off nito ang aktibidad sa background, ilang visual effect, at ilang partikular na feature.\n\n"<annotation id="url">"Matuto pa"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Ino-on ng Pantipid ng Baterya ang Madilim na tema at nililimitahan o ino-off nito ang aktibidad sa background, ilang visual effect, at ilang partikular na feature."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Upang makatulong na mabawasan ang paggamit ng data, pinipigilan ng Data Saver ang ilang app na magpadala o makatanggap ng data sa background. Maaaring mag-access ng data ang isang app na ginagamit mo sa kasalukuyan, ngunit mas bihira na nito magagawa iyon. Halimbawa, maaaring hindi lumabas ang mga larawan hangga\'t hindi mo nata-tap ang mga ito."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"I-on ang Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"I-on"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Hindi available ang <xliff:g id="APP_NAME_0">%1$s</xliff:g> sa ngayon. Pinamamahalaan ito ng <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Matuto pa"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"I-unpause ang app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"I-on ang profile sa trabaho?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Mao-on ang iyong mga app sa trabaho, notification, data, at iba pang feature sa profile sa trabaho"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"I-on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Hindi available ang app"</string> <string name="app_blocked_message" msgid="542972921087873023">"Hindi available sa ngayon ang <xliff:g id="APP_NAME">%1$s</xliff:g>."</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 8f455dd2e401..9c4a4d4b9679 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Metin panoya kopyalandı."</string> <string name="copied" msgid="4675902854553014676">"Kopyalandı"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> uygulaması <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> kaynağından yapıştırdı"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, panodan yapıştırıldı."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız metni yapıştırdı"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız resmi yapıştırdı"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız içeriği yapıştırdı"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> hazırlanıyor."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Uygulamalar başlatılıyor"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Açılış tamamlanıyor."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> çalışıyor"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Oyuna geri dönmek için dokunun"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Oyun seçin"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kısayolu Kullan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Rengi Ters Çevirme"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Renk Düzeltme"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra loş"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> açıldı."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kapatıldı."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Yöneticiniz tarafından güncellendi"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Yöneticiniz tarafından silindi"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Tamam"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Pil Tasarrufu özelliği Koyu temayı açıp arka plan etkinliğini, bazı görsel efektleri ve belirli özellikleri sınırlandırır ya da kapatır.\n\n"<annotation id="url">"Daha fazla bilgi"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Pil Tasarrufu özelliği Koyu temayı açıp arka plan etkinliğini, bazı görsel efektleri ve belirli özellikleri sınırlandırır ya da kapatır."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Veri kullanımını azaltmaya yardımcı olması için Veri Tasarrufu, bazı uygulamaların arka planda veri göndermesini veya almasını engeller. Kullanmakta olduğunuz bir uygulama veri bağlantısına erişebilir, ancak bunu daha seyrek yapabilir. Bu durumda örneğin, siz resimlere dokunmadan resimler görüntülenmez."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Veri Tasarrufu açılsın mı?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aç"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> uygulaması şu anda kullanılamıyor. Uygulamanın kullanım durumu <xliff:g id="APP_NAME_1">%2$s</xliff:g> tarafından yönetiliyor."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Daha fazla bilgi"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Uygulamanın duraklatmasını kaldır"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"İş profili açılsın mı?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"İş uygulamalarınız, bildirimleriniz, verileriniz ve diğer iş profili özellikleriniz açılacak"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aç"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Uygulama kullanılamıyor"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulaması şu anda kullanılamıyor."</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 3eee1bc9f410..bfac2642471b 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текст скопійов. в буф. обм."</string> <string name="copied" msgid="4675902854553014676">"Скопійовано"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Дані з додатка <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> вставлено в <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Дані з буфера обміну вставлено в <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Скопійований текст вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_image" msgid="4729097394781491022">"Скопійоване зображення вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_content" msgid="646276353060777131">"Скопійований контент вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Підготовка додатка <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Запуск програм."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Завершення завантаження."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Працює <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Торкніться, щоб повернутися в гру"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Виберіть гру"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Використовувати ярлик"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія кольорів"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекція кольорів"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додаткове зменшення яскравості"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> увімкнено."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> вимкнено."</string> @@ -1910,8 +1921,10 @@ <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="750683025714899363">"У режимі енергозбереження вмикається темна тема й обмежуються чи вимикаються фонова робота додатків, деякі візуальні ефекти та певні функції.\n\n"<annotation id="url">"Докладніше"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"У режимі енергозбереження вмикається темна тему й обмежуються чи вимикаються фонова робота додатків, деякі візуальні ефекти та певні функції."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Щоб зменшити використання трафіку, функція \"Заощадження трафіку\" не дозволяє деяким додаткам надсилати чи отримувати дані у фоновому режимі. Поточний додаток зможе отримувати доступ до таких даних, але рідше. Наприклад, зображення не відображатиметься, доки ви не торкнетеся його."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Увімкнути заощадження трафіку?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Увімкнути"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Додаток <xliff:g id="APP_NAME_0">%1$s</xliff:g> зараз недоступний. Керує додаток <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Докладніше"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Відновити доступ до додатка"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Увімкнути робочий профіль?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Додатки, сповіщення, дані й інші функції робочого профілю буде ввімкнено"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Увімкнути"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Додаток недоступний"</string> <string name="app_blocked_message" msgid="542972921087873023">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> зараз недоступний."</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 6d99dfb4563c..fedb557fe6f6 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"متن کو کلپ بورڈ پر کاپی کیا گیا۔"</string> <string name="copied" msgid="4675902854553014676">"کاپی ہو گیا"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> سے <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> میں پیسٹ کیا گیا"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"کلپ بورڈ سے <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> میں پیسٹ کیا گیا"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کا کاپی کردہ ٹیکسٹ پیسٹ کر دیا"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کی کاپی کردہ ایک تصویر پیسٹ کر دی"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کا کاپی کردہ مواد پیسٹ کر دیا"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> تیار ہو رہی ہے۔"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ایپس شروع ہو رہی ہیں۔"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"بوٹ مکمل ہو رہا ہے۔"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> چل رہی ہے"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"گیم پر واپس جانے کے لیے تھپتھپائیں"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"گیم کا انتخاب کریں"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"شارٹ کٹ استعمال کریں"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"رنگوں کی تقلیب"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"رنگ کی تصحیح"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"اضافی دھندلا"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آن ہے۔"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آف ہے۔"</string> @@ -1864,8 +1875,10 @@ <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="750683025714899363">"بیٹری سیور گہری تھیم کو آن کرتی ہے اور پس منظر کی سرگرمی، کچھ بصری اثرات اور کچھ مخصوص خصوصیات کو محدود یا آف کرتی ہے۔\n\n"<annotation id="url">"مزید جانیں"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"بیٹری سیور گہری تھیم کو آن کرتی ہے اور پس منظر کی سرگرمی، کچھ بصری اثرات اور کچھ مخصوص خصوصیات کو محدود یا آف کرتی ہے۔"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ڈیٹا کے استعمال کو کم کرنے میں مدد کیلئے، ڈیٹا سیور پس منظر میں کچھ ایپس کو ڈیٹا بھیجنے یا موصول کرنے سے روکتی ہے۔ آپ جو ایپ فی الحال استعمال کر رہے ہیں وہ ڈیٹا تک رسائی کر سکتی ہے مگر ہو سکتا ہے ایسا اکثر نہ ہو۔ اس کا مطلب مثال کے طور پر یہ ہو سکتا ہے کہ تصاویر تھپتھپانے تک ظاہر نہ ہوں۔"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ڈیٹا سیور آن کریں؟"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"آن کریں"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ابھی دستیاب نہیں ہے۔ یہ <xliff:g id="APP_NAME_1">%2$s</xliff:g> کے زیر انتظام ہے۔"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"مزید جانیں"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ایپ کو غیر موقوف کریں"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"دفتری پروفائل آن کریں؟"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"آپ کی دفتری ایپس، اطلاعات، ڈیٹا اور دفتری پروفائل کی دیگر خصوصیات آن کر دی جائیں گی"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"آن کریں"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ایپ دستیاب نہیں ہے"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ابھی دستیاب نہیں ہے۔"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index f5558140e26e..8320aafc100a 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Matn klipboardga nusxa olindi."</string> <string name="copied" msgid="4675902854553014676">"Nusxalandi"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ilovasidan <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> joylandi"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Vaqtincha xotiradan <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> joylandi"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vaqtinchalik xotiradan joylandi"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan matnni joyladi"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan rasmni joyladi"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan kontentni joyladi"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> tayyorlanmoqda."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Ilovalar ishga tushirilmoqda."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Tizimni yuklashni tugatish."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Ekran oʻchirilsinmi?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Barmoq izini sozlayotganda Quvvat tugmasini bosdingiz.\n\nBunda odatda ekran oʻchib qoladi."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Oʻchirish"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Bekor qilish"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ishlamoqda"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"O‘yinga qaytish uchun bosing"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"O‘yinni tanlang"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tezkor ishga tushirishdan foydalanish"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ranglarni akslantirish"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Ranglarni tuzatish"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Ixcham rejim"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Juda xira"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> yoqildi."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> faolsizlantirildi."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administrator tomonidan yangilangan"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administrator tomonidan o‘chirilgan"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Quvvat tejash tungi mavzuni yoqadi va orqa fondagi harakatlar, ayrim vizual effektlar va ayrim funksiyalarni cheklaydi yoki oʻchiradi.\n\n"<annotation id="url">"Batafsil"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Quvvat tejash tungi mavzuni yoqadi va orqa fondagi harakatlar, ayrim vizual effektlar va ayrim funksiyalarni cheklaydi yoki oʻchiradi."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Quvvat tejash funksiyasi Tungi mavzuni va cheklovlarni yoqadi va fondagi harakatlar, vizual effektlar, ayrim funksiyalar va tarmoq aloqalari kabi boshqa funksiyalarni faolsizlantiradi yoki cheklaydi.\n\n"<annotation id="url">"Batafsil"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Quvvat tejash funksiyasi Tungi mavzuni va cheklovlarni yoqadi va fondagi harakatlar, vizual effektlar, ayrim funksiyalar va tarmoq aloqalari kabi boshqa funksiyalarni faolsizlantiradi yoki cheklaydi."</string> <string name="data_saver_description" msgid="4995164271550590517">"Trafik tejash rejimida ayrim ilovalar uchun orqa fonda internetdan foydalanish imkoniyati cheklanadi. Siz ishlatayotgan ilova zaruratga qarab internet-trafik sarflashi mumkin, biroq cheklangan miqdorda. Masalan, rasmlar ustiga bosmaguningizcha ular yuklanmaydi."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Trafik tejash yoqilsinmi?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Yoqish"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ishlamayapti. Uning ishlashini <xliff:g id="APP_NAME_1">%2$s</xliff:g> cheklamoqda."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Batafsil"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Ilovani pauzadan chiqarish"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ish profili yoqilsinmi?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Ishga oid ilovalar, bildirishnomalar, ma’lumotlar va boshqa ish profili imkoniyatlari yoqiladi"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Ishga oid ilovalar yoqilsinmi?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Ishga oid ilovalaringiz va bildirishnomalarga ruxsat oling"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Yoqish"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Ilova ishlamayapti"</string> <string name="app_blocked_message" msgid="542972921087873023">"Ayni vaqtda <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi ishlamayapti."</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index f20f6966d9ae..9ddb3a6f3160 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Đã sao chép văn bản vào bảng nhớ tạm thời."</string> <string name="copied" msgid="4675902854553014676">"Đã sao chép"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán dữ liệu từ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán dữ liệu từ bảng nhớ tạm"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán văn bản mà bạn sao chép"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán một hình ảnh mà bạn sao chép"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán nội dung mà bạn sao chép"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Đang chuẩn bị <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Khởi động ứng dụng."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Hoàn tất khởi động."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> đang hoạt động"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Nhấn để quay lại trò chơi"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Chọn trò chơi"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sử dụng phím tắt"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Đảo màu"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Chỉnh màu"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Siêu tối"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã bật."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã tắt."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Do quản trị viên của bạn cập nhật"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Do quản trị viên của bạn xóa"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Tính năng Tiết kiệm pin sẽ bật Giao diện tối, đồng thời hạn chế hoặc tắt hoạt động chạy trong nền, một số hiệu ứng hình ảnh và các tính năng nhất định.\n\n"<annotation id="url">"Tìm hiểu thêm"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Tính năng Tiết kiệm pin sẽ bật Giao diện tối, đồng thời hạn chế hoặc tắt hoạt động chạy trong nền, một số hiệu ứng hình ảnh và các tính năng nhất định."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Để giúp giảm mức sử dụng dữ liệu, Trình tiết kiệm dữ liệu sẽ chặn một số ứng dụng gửi hoặc nhận dữ liệu trong nền. Ứng dụng mà bạn hiện sử dụng có thể dùng dữ liệu nhưng tần suất sẽ giảm. Ví dụ: hình ảnh sẽ không hiển thị cho đến khi bạn nhấn vào hình ảnh đó."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Bật Trình tiết kiệm dữ liệu?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Bật"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> hiện không sử dụng được. Chính sách này do <xliff:g id="APP_NAME_1">%2$s</xliff:g> quản lý."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Tìm hiểu thêm"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Mở lại ứng dụng"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Bạn muốn bật hồ sơ công việc?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Các ứng dụng công việc, thông báo, dữ liệu và các tính năng khác của hồ sơ công việc sẽ được bật"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Bật"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Ứng dụng này không dùng được"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> hiện không dùng được."</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 3122053aca0b..50324d82c0c8 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"文本已复制到剪贴板。"</string> <string name="copied" msgid="4675902854553014676">"已复制"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴从<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>复制的内容"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴剪贴板中的内容"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的文字"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的图片"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的内容"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"正在准备升级<xliff:g id="APPNAME">%1$s</xliff:g>。"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"正在启动应用。"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"即将完成启动。"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g>正在运行"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"点按即可返回游戏"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"选择游戏"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快捷方式"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"颜色反转"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"单手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"极暗"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已开启。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已关闭。"</string> @@ -1864,8 +1874,10 @@ <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="750683025714899363">"在省电模式下,系统会启用深色主题,并限制或关闭后台活动、部分视觉效果和某些功能。\n\n"<annotation id="url">"了解详情"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"在省电模式下,系统会启用深色主题,并限制或关闭后台活动、部分视觉效果和某些功能。"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"为了减少流量消耗,流量节省程序会阻止某些应用在后台收发数据。您当前使用的应用可以收发数据,但频率可能会降低。举例而言,这可能意味着图片只有在您点按之后才会显示。"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"要开启流量节省程序吗?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"开启"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>目前无法使用。该应用是由<xliff:g id="APP_NAME_1">%2$s</xliff:g>所管理。"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"了解详情"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暂停应用"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"要开启工作资料吗?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"您的工作应用、通知、数据及其他工作资料功能将会开启"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"开启"</string> <string name="app_blocked_title" msgid="7353262160455028160">"应用无法使用"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g>目前无法使用。"</string> @@ -2287,8 +2301,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"应用品牌图片"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"查看权限设置"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g>可以查看和控制您的屏幕。点按即可查看。"</string> - <!-- no translation found for ui_translation_accessibility_translated_text (3197547218178944544) --> - <skip /> - <!-- no translation found for ui_translation_accessibility_translation_finished (3057830947610088465) --> - <skip /> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"已翻译“<xliff:g id="MESSAGE">%1$s</xliff:g>”。"</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"已将消息内容从<xliff:g id="FROM_LANGUAGE">%1$s</xliff:g>翻译成<xliff:g id="TO_LANGUAGE">%2$s</xliff:g>。"</string> </resources> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 3a54e4a55678..993b1bc4d1e7 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"文字已複製到剪貼簿。"</string> <string name="copied" msgid="4675902854553014676">"已複製"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 已貼上從 <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> 複製的資料"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 已貼上剪貼簿中的資料"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"您複製的文字已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> <string name="pasted_image" msgid="4729097394781491022">"您複製的圖片已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> <string name="pasted_content" msgid="646276353060777131">"您複製的內容已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"正在準備 <xliff:g id="APPNAME">%1$s</xliff:g>。"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"正在啟動應用程式。"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"啟動完成。"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"正在執行 <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"輕按即可返回遊戲"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"選擇遊戲"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快速鍵"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已開啟。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已關閉。"</string> @@ -1864,8 +1874,10 @@ <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="750683025714899363">"「省電模式」會開啟深色主題背景,並限制或關閉背景活動、部分視覺效果和特定功能。\n\n"<annotation id="url">"瞭解詳情"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"「省電模式」會開啟深色主題背景,並限制或關閉背景活動、部分視覺效果和特定功能。"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"「數據節省模式」可防止部分應用程式在背景收發資料,以節省數據用量。您正在使用的應用程式可存取資料,但次數可能會減少。例如,圖片可能需要輕按才會顯示。"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"要開啟「數據節省模式」嗎?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"開啟"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"目前無法使用 <xliff:g id="APP_NAME_0">%1$s</xliff:g>。此應用程式是由「<xliff:g id="APP_NAME_1">%2$s</xliff:g>」管理。"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"瞭解詳情"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暫停應用程式"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"要開啟工作設定檔嗎?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"系統將開啟您的工作應用程式、通知、資料和其他工作設定檔功能"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"開啟"</string> <string name="app_blocked_title" msgid="7353262160455028160">"無法使用應用程式"</string> <string name="app_blocked_message" msgid="542972921087873023">"目前無法使用「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 8f5f36cc3f68..a45f981de5c4 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"文字已複製到剪貼簿。"</string> <string name="copied" msgid="4675902854553014676">"已複製"</string> <string name="pasted_from_app" msgid="5627698450808256545">"「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」已貼上從「<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>」複製的資料"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」已貼上剪貼簿中的資料"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"你複製的文字已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> <string name="pasted_image" msgid="4729097394781491022">"你複製的圖片已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> <string name="pasted_content" msgid="646276353060777131">"你複製的內容已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"正在準備升級「<xliff:g id="APPNAME">%1$s</xliff:g>」。"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"正在啟動應用程式。"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"啟動完成。"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> 執行中"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"輕觸即可返回遊戲"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"選擇遊戲"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用捷徑"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已開啟。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已關閉。"</string> @@ -1864,8 +1874,10 @@ <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="750683025714899363">"省電模式會開啟深色主題,並限制或關閉背景活動、某些視覺效果和特定功能。\n\n"<annotation id="url">"瞭解詳情"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"省電模式會開啟深色主題,並限制或關閉背景活動、某些視覺效果和特定功能。"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"「數據節省模式」可防止部分應用程式在背景收發資料,以節省數據用量。你目前使用的應用程式可以存取資料,但存取頻率可能不如平時高。舉例來說,圖片可能不會自動顯示,在你輕觸後才會顯示。"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"要開啟數據節省模式嗎?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"開啟"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"目前無法使用「<xliff:g id="APP_NAME_0">%1$s</xliff:g>」。這項設定是由「<xliff:g id="APP_NAME_1">%2$s</xliff:g>」管理。"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"瞭解詳情"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暫停應用程式"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"要開啟工作資料夾嗎?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"系統將開啟你的工作應用程式、通知、資料和其他工作資料夾功能"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"開啟"</string> <string name="app_blocked_title" msgid="7353262160455028160">"應用程式無法使用"</string> <string name="app_blocked_message" msgid="542972921087873023">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」目前無法使用。"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 3fd96d11dd43..b983f1115c09 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Umbhalo ukopishwe ebhodini lokunamathisela."</string> <string name="copied" msgid="4675902854553014676">"Kukopishiwe"</string> <string name="pasted_from_app" msgid="5627698450808256545">"I-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> inamathiselwe kusuka ku-<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"I-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> inamathiselwe kusuka ebhodini yokunamathisela"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele umbhalo owukopishile"</string> <string name="pasted_image" msgid="4729097394781491022">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele isithombe osikopishile"</string> <string name="pasted_content" msgid="646276353060777131">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele okuqukethwe okukopishile"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Ukulungisela i-<xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Qalisa izinhlelo zokusebenza."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Qedela ukuqala kabusha."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> iyasebenza"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Thepha ukuze ubuyele emuva kwigeyimu"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Khetha igeyimu"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sebenzisa isinqamuleli"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ukuguqulwa kombala"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Ukulungiswa kombala"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ukufiphaza okwengeziwe"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivuliwe."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivaliwe."</string> @@ -1864,8 +1875,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Kubuyekezwe umlawuli wakho"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Kususwe umlawuli wakho"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"KULUNGILE"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Isilondolozi Sebhethri sivula Itimu emnyama futhi silinganise noma sivale umsebenzi ongemuva, imiphumela ethile yokubuka, nezakhi ezithile.\n\n"<annotation id="url">"Funda kabanzi"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Isilondolozi Sebhethri sivula itimu emnyama futhi silinganise noma sivale umsebenzi ongemuva, imiphumela ethile yokubuka, nezakhi ezithile."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Isilondolozi Sebhethri sivula itimu emnyama futhi sikhawulele noma sivale umsebenzi ongemuva, imiphumela ethile yokubuka, izakhi ezithile, nokuxhumeka kwenethiwekhi ethile.\n\n"<annotation id="url">"Funda kabanzi"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Isilondolozi Sebhethri sivula ingqikithi emnyama futhi sibeke umkhawulo noma sivale umsebenzi ongemuva, imiphumela ethile yokubuka, izici ezithile, nokuxhumeka okuthile kwenethiwekhi."</string> <string name="data_saver_description" msgid="4995164271550590517">"Ukusiza ukwehlisa ukusetshenziswa kwedatha, iseva yedatha igwema ezinye izinhlelo zokusebenza ukuthi zithumele noma zamukele idatha ngasemuva. Uhlelo lokusebenza olisebenzisa okwamanje lingafinyelela idatha, kodwa lingenza kanjalo kancane. Lokhu kungachaza, isibonelo, ukuthi izithombe azibonisi uze uzithephe."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vula iseva yedatha?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Vula"</string> @@ -1968,8 +1979,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"I-<xliff:g id="APP_NAME_0">%1$s</xliff:g> ayitholakali okwamanje. Lokhu kuphethwe i-<xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Funda kabanzi"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Susa ukuphumuza uhlelo lokusebenza"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vula iphrofayela yomsebenzi?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Izinhlelo zakho zokusebenza zomsebenzi, izaziso, idatha, nezinye izici zephrofayela yomsebenzi kuzovulwa"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Vula ama-app okusebenza womsebenzi?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Thola ukufinyelela kuma-app akho womsebenzi kanye nezaziso"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Vula"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Uhlelo lokusebenza alutholakali"</string> <string name="app_blocked_message" msgid="542972921087873023">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayitholakali khona manje."</string> diff --git a/core/tests/batterystatstests/BatteryStatsViewer/Android.bp b/core/tests/batterystatstests/BatteryStatsViewer/Android.bp index abac56bbe4d5..6046a76f65cd 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/Android.bp +++ b/core/tests/batterystatstests/BatteryStatsViewer/Android.bp @@ -15,6 +15,7 @@ android_app { "androidx.appcompat_appcompat", "androidx.cardview_cardview", "androidx.recyclerview_recyclerview", + "androidx.swiperefreshlayout_swiperefreshlayout", "com.google.android.material_material", ], platform_apis: true, diff --git a/core/tests/batterystatstests/BatteryStatsViewer/res/drawable/gm_sum_24.xml b/core/tests/batterystatstests/BatteryStatsViewer/res/drawable/gm_sum_24.xml new file mode 100644 index 000000000000..3d29102627fb --- /dev/null +++ b/core/tests/batterystatstests/BatteryStatsViewer/res/drawable/gm_sum_24.xml @@ -0,0 +1,10 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="#d14d2c"> +<path + android:fillColor="@android:color/white" + android:pathData="M19,4H5v2l6,6 -6,6v2h14v-3h-9l5,-5 -5,-5h9V4z"/> +</vector> diff --git a/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_entry_layout.xml b/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_entry_layout.xml index 98fc581f3420..be0e135af23a 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_entry_layout.xml +++ b/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_entry_layout.xml @@ -30,7 +30,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginEnd="8dp"/> + android:layout_marginEnd="8dp" + android:paddingBottom="8dp"/> <TextView android:id="@+id/title" @@ -40,7 +41,7 @@ android:textAppearance="@style/TextAppearanceBody"/> <TextView - android:id="@+id/amount" + android:id="@+id/value1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" @@ -49,7 +50,7 @@ android:textAppearance="@style/TextAppearanceBody"/> <TextView - android:id="@+id/percent" + android:id="@+id/value2" android:layout_width="76dp" android:layout_height="wrap_content" android:gravity="right" diff --git a/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_picker_activity_layout.xml b/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_picker_activity_layout.xml deleted file mode 100644 index ecc89f0cb33e..000000000000 --- a/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_picker_activity_layout.xml +++ /dev/null @@ -1,33 +0,0 @@ -<!-- - ~ 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. - --> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> - - <com.google.android.material.tabs.TabLayout - android:id="@+id/tab_layout" - android:layout_width="match_parent" - android:layout_height="wrap_content"/> - - <androidx.viewpager.widget.ViewPager - android:id="@+id/pager" - android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_weight="1" /> - -</LinearLayout> diff --git a/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_picker_layout.xml b/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_picker_layout.xml index bea38c18c20b..f35a210cae4b 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_picker_layout.xml +++ b/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_consumer_picker_layout.xml @@ -14,22 +14,15 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> -<FrameLayout +<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/swipe_refresh" android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/list_view" android:layout_width="match_parent" - android:layout_height="match_parent" - android:visibility="gone"/> + android:layout_height="match_parent"/> - <ProgressBar - style="?android:attr/progressBarStyleLarge" - android:id="@+id/loading_view" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:indeterminate="true"/> -</FrameLayout>
\ No newline at end of file +</androidx.swiperefreshlayout.widget.SwipeRefreshLayout> diff --git a/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_stats_viewer_layout.xml b/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_stats_viewer_layout.xml index 24d193c49219..cf50d2ad1e91 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_stats_viewer_layout.xml +++ b/core/tests/batterystatstests/BatteryStatsViewer/res/layout/battery_stats_viewer_layout.xml @@ -14,94 +14,89 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> -<FrameLayout +<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/swipe_refresh" android:layout_width="match_parent" android:layout_height="match_parent"> + <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> - <androidx.cardview.widget.CardView - style="@style/LoadTestCardView" + <LinearLayout android:id="@+id/app_card" + android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="10dp" - android:layout_marginEnd="10dp" - android:layout_marginBottom="10dp" - android:layout_marginStart="10dp" - android:padding="20dp"> + android:visibility="invisible"> - <LinearLayout + <androidx.cardview.widget.CardView + style="@style/LoadTestCardView" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical" - android:minHeight="80dp" - android:paddingStart="10dp" - android:paddingEnd="10dp"> + android:layout_marginTop="10dp" + android:layout_marginEnd="10dp" + android:layout_marginBottom="10dp" + android:layout_marginStart="10dp" + android:padding="20dp"> - <include layout="@layout/battery_consumer_info_layout"/> - </LinearLayout> + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:minHeight="80dp" + android:paddingStart="10dp" + android:paddingEnd="10dp"> - </androidx.cardview.widget.CardView> + <include layout="@layout/battery_consumer_info_layout"/> + </LinearLayout> + </androidx.cardview.widget.CardView> - <LinearLayout - android:id="@+id/headings" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:paddingTop="2dp" - android:paddingBottom="4dp"> - <FrameLayout - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1"/> - <TextView - android:layout_width="100dp" - android:layout_height="wrap_content" - android:gravity="end" - android:paddingEnd="10dp" - android:text="Total"/> - <TextView - android:layout_width="100dp" + <LinearLayout + android:id="@+id/headings" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:gravity="end" - android:paddingEnd="30dp" - android:text="Apps"/> - </LinearLayout> + android:paddingTop="2dp" + android:paddingBottom="4dp"> + <FrameLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1"/> + <TextView + android:layout_width="76dp" + android:layout_height="wrap_content" + android:gravity="end" + android:paddingEnd="20dp" + android:text="Total"/> + <TextView + android:layout_width="76dp" + android:layout_height="wrap_content" + android:gravity="end" + android:paddingEnd="20dp" + android:text="Apps"/> + </LinearLayout> - <View - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="@android:color/darker_gray"/> + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:background="@android:color/darker_gray"/> + </LinearLayout> <androidx.recyclerview.widget.RecyclerView android:id="@+id/battery_consumer_data_view" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> - - <TextView - android:id="@+id/empty_view" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:gravity="center" - android:visibility="gone" - android:text="No battery stats available"/> </LinearLayout> - <FrameLayout - android:id="@+id/loading_view" + <TextView + android:id="@+id/empty_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="#AAFFFFFF"> - <ProgressBar - style="?android:attr/progressBarStyleLarge" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center" - android:indeterminate="true"/> - </FrameLayout> -</FrameLayout> + android:gravity="center" + android:visibility="gone" + android:text="No battery stats available"/> +</androidx.swiperefreshlayout.widget.SwipeRefreshLayout> diff --git a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerData.java b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerData.java index 24b164bcb8c0..c2071357bbdd 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerData.java +++ b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerData.java @@ -28,29 +28,54 @@ import java.util.List; public class BatteryConsumerData { + public static final String UID_BATTERY_CONSUMER_ID_PREFIX = "APP|"; + public static final String AGGREGATE_BATTERY_CONSUMER_ID = "SYS|"; + enum EntryType { - POWER_MODELED, - POWER_MEASURED, - POWER_CUSTOM, - DURATION, + UID_TOTAL_POWER, + UID_POWER_MODELED, + UID_POWER_MEASURED, + UID_POWER_CUSTOM, + UID_DURATION, + DEVICE_TOTAL_POWER, + DEVICE_POWER_MODELED, + DEVICE_POWER_MEASURED, + DEVICE_POWER_CUSTOM, + DEVICE_DURATION, + } + + enum ConsumerType { + UID_BATTERY_CONSUMER, + DEVICE_POWER_COMPONENT, } public static class Entry { - public String title; public EntryType entryType; - public double value; - public double total; - public boolean isSystemBatteryConsumer; + public String title; + public double value1; + public double value2; } - private final BatteryConsumerInfoHelper.BatteryConsumerInfo mBatteryConsumerInfo; + private BatteryConsumerInfoHelper.BatteryConsumerInfo mBatteryConsumerInfo; private final List<Entry> mEntries = new ArrayList<>(); public BatteryConsumerData(Context context, List<BatteryUsageStats> batteryUsageStatsList, String batteryConsumerId) { + switch (getConsumerType(batteryConsumerId)) { + case UID_BATTERY_CONSUMER: + populateForUidBatteryConsumer(context, batteryUsageStatsList, batteryConsumerId); + break; + case DEVICE_POWER_COMPONENT: + populateForAggregateBatteryConsumer(context, batteryUsageStatsList); + break; + } + } + + private void populateForUidBatteryConsumer( + Context context, List<BatteryUsageStats> batteryUsageStatsList, + String batteryConsumerId) { BatteryUsageStats batteryUsageStats = batteryUsageStatsList.get(0); BatteryUsageStats modeledBatteryUsageStats = batteryUsageStatsList.get(1); - BatteryConsumer requestedBatteryConsumer = getRequestedBatteryConsumer(batteryUsageStats, batteryConsumerId); BatteryConsumer requestedModeledBatteryConsumer = getRequestedBatteryConsumer( @@ -62,7 +87,7 @@ public class BatteryConsumerData { } mBatteryConsumerInfo = BatteryConsumerInfoHelper.makeBatteryConsumerInfo( - requestedBatteryConsumer, batteryConsumerId, context.getPackageManager()); + batteryUsageStats, batteryConsumerId, context.getPackageManager()); double[] totalPowerByComponentMah = new double[BatteryConsumer.POWER_COMPONENT_COUNT]; double[] totalModeledPowerByComponentMah = @@ -77,56 +102,152 @@ public class BatteryConsumerData { computeTotalPowerForCustomComponent(batteryUsageStats, totalCustomPowerByComponentMah); computeTotalDuration(batteryUsageStats, totalDurationByComponentMs); + if (isPowerProfileModelsOnly(requestedBatteryConsumer)) { + addEntry("Consumed", EntryType.UID_TOTAL_POWER, + requestedBatteryConsumer.getConsumedPower(), + batteryUsageStats.getAggregateBatteryConsumer( + BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS) + .getConsumedPower()); + } else { + addEntry("Consumed (measured)", EntryType.UID_TOTAL_POWER, + requestedBatteryConsumer.getConsumedPower(), + batteryUsageStats.getAggregateBatteryConsumer( + BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS) + .getConsumedPower()); + addEntry("Consumed (modeled)", EntryType.UID_TOTAL_POWER, + requestedModeledBatteryConsumer.getConsumedPower(), + modeledBatteryUsageStats.getAggregateBatteryConsumer( + BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS) + .getConsumedPower()); + } + for (int component = 0; component < BatteryConsumer.POWER_COMPONENT_COUNT; component++) { final String metricTitle = getPowerMetricTitle(component); final int powerModel = requestedBatteryConsumer.getPowerModel(component); if (powerModel == BatteryConsumer.POWER_MODEL_POWER_PROFILE) { - addEntry(metricTitle, EntryType.POWER_MODELED, + addEntry(metricTitle, EntryType.UID_POWER_MODELED, requestedBatteryConsumer.getConsumedPower(component), - totalPowerByComponentMah[component], - mBatteryConsumerInfo.isSystemBatteryConsumer); + totalPowerByComponentMah[component] + ); } else { - addEntry(metricTitle + " (measured)", EntryType.POWER_MEASURED, + addEntry(metricTitle + " (measured)", EntryType.UID_POWER_MEASURED, requestedBatteryConsumer.getConsumedPower(component), - totalPowerByComponentMah[component], - mBatteryConsumerInfo.isSystemBatteryConsumer); - addEntry(metricTitle + " (modeled)", EntryType.POWER_MODELED, + totalPowerByComponentMah[component] + ); + addEntry(metricTitle + " (modeled)", EntryType.UID_POWER_MODELED, requestedModeledBatteryConsumer.getConsumedPower(component), - totalModeledPowerByComponentMah[component], - mBatteryConsumerInfo.isSystemBatteryConsumer); + totalModeledPowerByComponentMah[component] + ); } } for (int component = 0; component < customComponentCount; component++) { final String name = requestedBatteryConsumer.getCustomPowerComponentName( BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + component); - addEntry(name + " (custom)", EntryType.POWER_CUSTOM, + addEntry(name + " (custom)", EntryType.UID_POWER_CUSTOM, requestedBatteryConsumer.getConsumedPowerForCustomComponent( BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + component), - totalCustomPowerByComponentMah[component], - mBatteryConsumerInfo.isSystemBatteryConsumer); + totalCustomPowerByComponentMah[component] + ); } for (int component = 0; component < BatteryConsumer.POWER_COMPONENT_COUNT; component++) { final String metricTitle = getTimeMetricTitle(component); - addEntry(metricTitle, EntryType.DURATION, + addEntry(metricTitle, EntryType.UID_DURATION, requestedBatteryConsumer.getUsageDurationMillis(component), - totalDurationByComponentMs[component], - mBatteryConsumerInfo.isSystemBatteryConsumer); + totalDurationByComponentMs[component] + ); } + + mBatteryConsumerInfo = BatteryConsumerInfoHelper.makeBatteryConsumerInfo(batteryUsageStats, + batteryConsumerId, context.getPackageManager()); } - private BatteryConsumer getRequestedBatteryConsumer(BatteryUsageStats batteryUsageStats, - String batteryConsumerId) { - for (int scope = 0; - scope < BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_COUNT; - scope++) { - if (batteryConsumerId(scope).equals(batteryConsumerId)) { - return batteryUsageStats.getAggregateBatteryConsumer(scope); + private void populateForAggregateBatteryConsumer(Context context, + List<BatteryUsageStats> batteryUsageStatsList) { + BatteryUsageStats batteryUsageStats = batteryUsageStatsList.get(0); + BatteryUsageStats modeledBatteryUsageStats = batteryUsageStatsList.get(1); + + final BatteryConsumer deviceBatteryConsumer = + batteryUsageStats.getAggregateBatteryConsumer( + BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE); + BatteryConsumer appsBatteryConsumer = + batteryUsageStats.getAggregateBatteryConsumer( + BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS); + + BatteryConsumer modeledDeviceBatteryConsumer = + modeledBatteryUsageStats.getAggregateBatteryConsumer( + BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE); + BatteryConsumer modeledAppsBatteryConsumer = + modeledBatteryUsageStats.getAggregateBatteryConsumer( + BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS); + + if (isPowerProfileModelsOnly(deviceBatteryConsumer)) { + addEntry("Consumed", EntryType.DEVICE_TOTAL_POWER, + deviceBatteryConsumer.getConsumedPower(), + appsBatteryConsumer.getConsumedPower()); + } else { + addEntry("Consumed (measured)", EntryType.DEVICE_TOTAL_POWER, + deviceBatteryConsumer.getConsumedPower(), + appsBatteryConsumer.getConsumedPower()); + addEntry("Consumed (modeled)", EntryType.DEVICE_TOTAL_POWER, + modeledDeviceBatteryConsumer.getConsumedPower(), + modeledAppsBatteryConsumer.getConsumedPower()); + } + + mBatteryConsumerInfo = BatteryConsumerInfoHelper.makeBatteryConsumerInfo(batteryUsageStats, + AGGREGATE_BATTERY_CONSUMER_ID, context.getPackageManager()); + + + for (int component = 0; component < BatteryConsumer.POWER_COMPONENT_COUNT; component++) { + final String metricTitle = getPowerMetricTitle(component); + final int powerModel = deviceBatteryConsumer.getPowerModel(component); + if (powerModel == BatteryConsumer.POWER_MODEL_POWER_PROFILE) { + addEntry(metricTitle, EntryType.DEVICE_POWER_MODELED, + deviceBatteryConsumer.getConsumedPower(component), + appsBatteryConsumer.getConsumedPower(component)); + } else { + addEntry(metricTitle + " (measured)", EntryType.DEVICE_POWER_MEASURED, + deviceBatteryConsumer.getConsumedPower(component), + appsBatteryConsumer.getConsumedPower(component)); + addEntry(metricTitle + " (modeled)", EntryType.DEVICE_POWER_MODELED, + modeledDeviceBatteryConsumer.getConsumedPower(component), + modeledAppsBatteryConsumer.getConsumedPower(component)); } } - for (BatteryConsumer consumer : batteryUsageStats.getUidBatteryConsumers()) { + final int customComponentCount = + deviceBatteryConsumer.getCustomPowerComponentCount(); + for (int component = 0; component < customComponentCount; component++) { + final String name = deviceBatteryConsumer.getCustomPowerComponentName( + BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + component); + addEntry(name + " (custom)", EntryType.DEVICE_POWER_CUSTOM, + deviceBatteryConsumer.getConsumedPowerForCustomComponent( + BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + component), + appsBatteryConsumer.getConsumedPowerForCustomComponent( + BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID + component)); + } + + for (int component = 0; component < BatteryConsumer.POWER_COMPONENT_COUNT; component++) { + final String metricTitle = getTimeMetricTitle(component); + addEntry(metricTitle, EntryType.DEVICE_DURATION, + deviceBatteryConsumer.getUsageDurationMillis(component), 0); + } + } + + private boolean isPowerProfileModelsOnly(BatteryConsumer batteryConsumer) { + for (int component = 0; component < BatteryConsumer.POWER_COMPONENT_COUNT; component++) { + if (batteryConsumer.getPowerModel(component) + != BatteryConsumer.POWER_MODEL_POWER_PROFILE) { + return false; + } + } + return true; + } + + private BatteryConsumer getRequestedBatteryConsumer(BatteryUsageStats batteryUsageStats, + String batteryConsumerId) { + for (UidBatteryConsumer consumer : batteryUsageStats.getUidBatteryConsumers()) { if (batteryConsumerId(consumer).equals(batteryConsumerId)) { return consumer; } @@ -136,17 +257,27 @@ public class BatteryConsumerData { } static String getPowerMetricTitle(int componentId) { - final String componentName = DebugUtils.constantToString(BatteryConsumer.class, - "POWER_COMPONENT_", componentId); - return componentName.charAt(0) + componentName.substring(1).toLowerCase().replace('_', ' ') - + " power"; + return getPowerComponentName(componentId); } static String getTimeMetricTitle(int componentId) { - final String componentName = DebugUtils.constantToString(BatteryConsumer.class, - "POWER_COMPONENT_", componentId); - return componentName.charAt(0) + componentName.substring(1).toLowerCase().replace('_', ' ') - + " time"; + return getPowerComponentName(componentId) + " time"; + } + + private static String getPowerComponentName(int componentId) { + switch (componentId) { + case BatteryConsumer.POWER_COMPONENT_CPU: + return "CPU"; + case BatteryConsumer.POWER_COMPONENT_GNSS: + return "GNSS"; + case BatteryConsumer.POWER_COMPONENT_WIFI: + return "Wi-Fi"; + default: + String componentName = DebugUtils.constantToString(BatteryConsumer.class, + "POWER_COMPONENT_", componentId); + return componentName.charAt(0) + componentName.substring(1).toLowerCase() + .replace('_', ' '); + } } private void computeTotalPower(BatteryUsageStats batteryUsageStats, @@ -183,14 +314,12 @@ public class BatteryConsumerData { } } - private void addEntry(String title, EntryType entryType, double amount, double totalAmount, - boolean isSystemBatteryConsumer) { + private void addEntry(String title, EntryType entryType, double value1, double value2) { Entry entry = new Entry(); entry.title = title; entry.entryType = entryType; - entry.value = amount; - entry.total = totalAmount; - entry.isSystemBatteryConsumer = isSystemBatteryConsumer; + entry.value1 = value1; + entry.value2 = value2; mEntries.add(entry); } @@ -202,18 +331,15 @@ public class BatteryConsumerData { return mEntries; } - public static String batteryConsumerId(BatteryConsumer consumer) { - if (consumer instanceof UidBatteryConsumer) { - return "APP|" - + UserHandle.getUserId(((UidBatteryConsumer) consumer).getUid()) + "|" - + ((UidBatteryConsumer) consumer).getUid(); - } else { - return ""; + public static ConsumerType getConsumerType(String batteryConsumerId) { + if (batteryConsumerId.startsWith(UID_BATTERY_CONSUMER_ID_PREFIX)) { + return ConsumerType.UID_BATTERY_CONSUMER; } + return ConsumerType.DEVICE_POWER_COMPONENT; } - public static String batteryConsumerId( - @BatteryUsageStats.AggregateBatteryConsumerScope int scope) { - return "SYS|" + scope; + public static String batteryConsumerId(UidBatteryConsumer consumer) { + return UID_BATTERY_CONSUMER_ID_PREFIX + UserHandle.getUserId(consumer.getUid()) + "|" + + consumer.getUid(); } }
\ No newline at end of file diff --git a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerInfoHelper.java b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerInfoHelper.java index f2d6bca28136..c6d71c3f573a 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerInfoHelper.java +++ b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerInfoHelper.java @@ -16,18 +16,16 @@ package com.android.frameworks.core.batterystatsviewer; -import static com.android.frameworks.core.batterystatsviewer.BatteryConsumerData.batteryConsumerId; - import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; -import android.os.BatteryConsumer; import android.os.BatteryUsageStats; import android.os.Process; import android.os.UidBatteryConsumer; -import android.util.DebugUtils; import androidx.annotation.NonNull; +import java.util.List; + class BatteryConsumerInfoHelper { private static final String SYSTEM_SERVER_PACKAGE_NAME = "android"; @@ -39,93 +37,110 @@ class BatteryConsumerInfoHelper { public ApplicationInfo iconInfo; public CharSequence packages; public CharSequence details; - public boolean isSystemBatteryConsumer; + public BatteryConsumerData.ConsumerType consumerType; } @NonNull public static BatteryConsumerInfo makeBatteryConsumerInfo( - @NonNull BatteryConsumer batteryConsumer, String batteryConsumerId, + @NonNull BatteryUsageStats batteryUsageStats, String batteryConsumerId, PackageManager packageManager) { + BatteryConsumerData.ConsumerType consumerType = BatteryConsumerData.getConsumerType( + batteryConsumerId); + switch (consumerType) { + case UID_BATTERY_CONSUMER: + final List<UidBatteryConsumer> consumers = + batteryUsageStats.getUidBatteryConsumers(); + for (UidBatteryConsumer consumer : consumers) { + if (BatteryConsumerData.batteryConsumerId(consumer).equals(batteryConsumerId)) { + return makeBatteryConsumerInfo(consumer, packageManager); + } + } + break; + case DEVICE_POWER_COMPONENT: + return makeAggregateBatteryConsumerInfo(batteryUsageStats); + } + BatteryConsumerInfo info = new BatteryConsumerInfo(); info.id = batteryConsumerId; - info.powerMah = batteryConsumer.getConsumedPower(); + return info; + } - if (batteryConsumer instanceof UidBatteryConsumer) { - final UidBatteryConsumer uidBatteryConsumer = (UidBatteryConsumer) batteryConsumer; - int uid = uidBatteryConsumer.getUid(); - info.details = String.format("UID: %d", uid); - String packageWithHighestDrain = uidBatteryConsumer.getPackageWithHighestDrain(); - if (uid == Process.ROOT_UID) { - info.label = "<root>"; - } else { - String[] packages = packageManager.getPackagesForUid(uid); - String primaryPackageName = null; - if (uid == Process.SYSTEM_UID) { - primaryPackageName = SYSTEM_SERVER_PACKAGE_NAME; - } else if (packages != null) { - for (String name : packages) { - primaryPackageName = name; - if (name.equals(packageWithHighestDrain)) { - break; - } + private static BatteryConsumerInfo makeBatteryConsumerInfo( + UidBatteryConsumer uidBatteryConsumer, PackageManager packageManager) { + BatteryConsumerInfo info = new BatteryConsumerInfo(); + info.consumerType = BatteryConsumerData.ConsumerType.UID_BATTERY_CONSUMER; + info.id = BatteryConsumerData.batteryConsumerId(uidBatteryConsumer); + info.powerMah = uidBatteryConsumer.getConsumedPower(); + int uid = uidBatteryConsumer.getUid(); + info.details = String.format("UID: %d", uid); + String packageWithHighestDrain = uidBatteryConsumer.getPackageWithHighestDrain(); + if (uid == Process.ROOT_UID) { + info.label = "<root>"; + } else { + String[] packages = packageManager.getPackagesForUid(uid); + String primaryPackageName = null; + if (uid == Process.SYSTEM_UID) { + primaryPackageName = SYSTEM_SERVER_PACKAGE_NAME; + } else if (packages != null) { + for (String name : packages) { + primaryPackageName = name; + if (name.equals(packageWithHighestDrain)) { + break; } } + } - if (primaryPackageName != null) { - try { - ApplicationInfo applicationInfo = - packageManager.getApplicationInfo(primaryPackageName, 0); - info.label = applicationInfo.loadLabel(packageManager); - info.iconInfo = applicationInfo; - } catch (PackageManager.NameNotFoundException e) { - info.label = primaryPackageName; - } - } else if (packageWithHighestDrain != null) { - info.label = packageWithHighestDrain; + if (primaryPackageName != null) { + try { + ApplicationInfo applicationInfo = + packageManager.getApplicationInfo(primaryPackageName, 0); + info.label = applicationInfo.loadLabel(packageManager); + info.iconInfo = applicationInfo; + } catch (PackageManager.NameNotFoundException e) { + info.label = primaryPackageName; } + } else if (packageWithHighestDrain != null) { + info.label = packageWithHighestDrain; + } - if (packages != null && packages.length > 0) { - StringBuilder sb = new StringBuilder(); - if (primaryPackageName != null) { - sb.append(primaryPackageName); + if (packages != null && packages.length > 0) { + StringBuilder sb = new StringBuilder(); + if (primaryPackageName != null) { + sb.append(primaryPackageName); + } + for (String packageName : packages) { + if (packageName.equals(primaryPackageName)) { + continue; } - for (String packageName : packages) { - if (packageName.equals(primaryPackageName)) { - continue; - } - if (sb.length() != 0) { - sb.append(", "); - } - sb.append(packageName); + if (sb.length() != 0) { + sb.append(", "); } - - info.packages = sb; - } - } - // Default the app icon to System Server. This includes root, dex2oat and other UIDs. - if (info.iconInfo == null) { - try { - info.iconInfo = - packageManager.getApplicationInfo(SYSTEM_SERVER_PACKAGE_NAME, 0); - } catch (PackageManager.NameNotFoundException nameNotFoundException) { - // Won't happen + sb.append(packageName); } + + info.packages = sb; } - } else { - for (int scope = 0; - scope < BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_COUNT; - scope++) { - if (batteryConsumerId(scope).equals(batteryConsumerId)) { - final String name = DebugUtils.constantToString(BatteryUsageStats.class, - "AGGREGATE_BATTERY_CONSUMER_SCOPE_", scope) - .replace('_', ' '); - info.label = name; - break; - } + } + // Default the app icon to System Server. This includes root, dex2oat and other UIDs. + if (info.iconInfo == null) { + try { + info.iconInfo = + packageManager.getApplicationInfo(SYSTEM_SERVER_PACKAGE_NAME, 0); + } catch (PackageManager.NameNotFoundException nameNotFoundException) { + // Won't happen } } + return info; + } + private static BatteryConsumerInfo makeAggregateBatteryConsumerInfo( + BatteryUsageStats batteryUsageStats) { + BatteryConsumerInfo info = new BatteryConsumerInfo(); + info.consumerType = BatteryConsumerData.ConsumerType.DEVICE_POWER_COMPONENT; + info.id = BatteryConsumerData.AGGREGATE_BATTERY_CONSUMER_ID; + info.powerMah = batteryUsageStats.getConsumedPower(); + info.label = "Device"; return info; } } diff --git a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerPickerActivity.java b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerPickerActivity.java index 9e63a350df41..4469168a77b4 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerPickerActivity.java +++ b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryConsumerPickerActivity.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.os.BatteryStatsManager; import android.os.BatteryUsageStats; +import android.os.BatteryUsageStatsQuery; import android.os.Bundle; import android.os.UidBatteryConsumer; import android.view.LayoutInflater; @@ -35,10 +36,12 @@ import androidx.loader.app.LoaderManager; import androidx.loader.content.Loader; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.android.settingslib.utils.AsyncLoaderCompat; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Locale; @@ -50,10 +53,11 @@ import java.util.Locale; public class BatteryConsumerPickerActivity extends ComponentActivity { private static final String PREF_SELECTED_BATTERY_CONSUMER = "batteryConsumerId"; private static final int BATTERY_STATS_REFRESH_RATE_MILLIS = 60 * 1000; + private static final String FORCE_FRESH_STATS = "force_fresh_stats"; private BatteryConsumerListAdapter mBatteryConsumerListAdapter; private RecyclerView mAppList; - private View mLoadingView; - private final Runnable mBatteryStatsRefresh = this::loadBatteryStats; + private SwipeRefreshLayout mSwipeRefreshLayout; + private final Runnable mBatteryStatsRefresh = this::refreshPeriodically; private interface OnBatteryConsumerSelectedListener { void onBatteryConsumerSelected(String batteryConsumerId); @@ -64,8 +68,11 @@ public class BatteryConsumerPickerActivity extends ComponentActivity { super.onCreate(icicle); setContentView(R.layout.battery_consumer_picker_layout); - mLoadingView = findViewById(R.id.loading_view); + mSwipeRefreshLayout = findViewById(R.id.swipe_refresh); + mSwipeRefreshLayout.setColorSchemeResources(android.R.color.holo_green_light); + mSwipeRefreshLayout.setRefreshing(true); + mSwipeRefreshLayout.setOnRefreshListener(this::onRefresh); mAppList = findViewById(R.id.list_view); mAppList.setLayoutManager(new LinearLayoutManager(this)); mBatteryConsumerListAdapter = @@ -97,7 +104,7 @@ public class BatteryConsumerPickerActivity extends ComponentActivity { @Override protected void onResume() { super.onResume(); - loadBatteryStats(); + refreshPeriodically(); } @Override @@ -106,42 +113,54 @@ public class BatteryConsumerPickerActivity extends ComponentActivity { getMainThreadHandler().removeCallbacks(mBatteryStatsRefresh); } - private void loadBatteryStats() { - LoaderManager.getInstance(this).restartLoader(0, null, - new BatteryConsumerListLoaderCallbacks()); + private void refreshPeriodically() { + loadBatteryUsageStats(false); getMainThreadHandler().postDelayed(mBatteryStatsRefresh, BATTERY_STATS_REFRESH_RATE_MILLIS); } + private void onRefresh() { + loadBatteryUsageStats(true); + } + + private void loadBatteryUsageStats(boolean forceFreshStats) { + Bundle args = new Bundle(); + args.putBoolean(FORCE_FRESH_STATS, forceFreshStats); + LoaderManager.getInstance(this).restartLoader(0, args, + new BatteryConsumerListLoaderCallbacks()); + } + private static class BatteryConsumerListLoader extends AsyncLoaderCompat<List<BatteryConsumerInfoHelper.BatteryConsumerInfo>> { private final BatteryStatsManager mBatteryStatsManager; private final PackageManager mPackageManager; + private final boolean mForceFreshStats; - BatteryConsumerListLoader(Context context) { + BatteryConsumerListLoader(Context context, boolean forceFreshStats) { super(context); mBatteryStatsManager = context.getSystemService(BatteryStatsManager.class); mPackageManager = context.getPackageManager(); + mForceFreshStats = forceFreshStats; } @Override public List<BatteryConsumerInfoHelper.BatteryConsumerInfo> loadInBackground() { - final BatteryUsageStats batteryUsageStats = mBatteryStatsManager.getBatteryUsageStats(); + final BatteryUsageStatsQuery query = mForceFreshStats + ? new BatteryUsageStatsQuery.Builder().setMaxStatsAgeMs(0).build() + : BatteryUsageStatsQuery.DEFAULT; + final BatteryUsageStats batteryUsageStats = + mBatteryStatsManager.getBatteryUsageStats(query); List<BatteryConsumerInfoHelper.BatteryConsumerInfo> batteryConsumerList = new ArrayList<>(); - for (int scope = 0; - scope < BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_COUNT; - scope++) { - batteryConsumerList.add( - BatteryConsumerInfoHelper.makeBatteryConsumerInfo( - batteryUsageStats.getAggregateBatteryConsumer(scope), - BatteryConsumerData.batteryConsumerId(scope), - mPackageManager)); - } + batteryConsumerList.add( + BatteryConsumerInfoHelper.makeBatteryConsumerInfo( + batteryUsageStats, + BatteryConsumerData.AGGREGATE_BATTERY_CONSUMER_ID, + mPackageManager)); for (UidBatteryConsumer consumer : batteryUsageStats.getUidBatteryConsumers()) { batteryConsumerList.add( - BatteryConsumerInfoHelper.makeBatteryConsumerInfo(consumer, + BatteryConsumerInfoHelper.makeBatteryConsumerInfo(batteryUsageStats, BatteryConsumerData.batteryConsumerId(consumer), mPackageManager)); } @@ -166,7 +185,8 @@ public class BatteryConsumerPickerActivity extends ComponentActivity { @Override public Loader<List<BatteryConsumerInfoHelper.BatteryConsumerInfo>> onCreateLoader(int id, Bundle args) { - return new BatteryConsumerListLoader(BatteryConsumerPickerActivity.this); + return new BatteryConsumerListLoader(BatteryConsumerPickerActivity.this, + args.getBoolean(FORCE_FRESH_STATS)); } @Override @@ -174,8 +194,7 @@ public class BatteryConsumerPickerActivity extends ComponentActivity { @NonNull Loader<List<BatteryConsumerInfoHelper.BatteryConsumerInfo>> loader, List<BatteryConsumerInfoHelper.BatteryConsumerInfo> batteryConsumerList) { mBatteryConsumerListAdapter.setBatteryConsumerList(batteryConsumerList); - mAppList.setVisibility(View.VISIBLE); - mLoadingView.setVisibility(View.GONE); + mSwipeRefreshLayout.setRefreshing(false); } @Override @@ -187,7 +206,8 @@ public class BatteryConsumerPickerActivity extends ComponentActivity { public class BatteryConsumerListAdapter extends RecyclerView.Adapter<BatteryConsumerViewHolder> { private final OnBatteryConsumerSelectedListener mListener; - private List<BatteryConsumerInfoHelper.BatteryConsumerInfo> mBatteryConsumerList; + private List<BatteryConsumerInfoHelper.BatteryConsumerInfo> mBatteryConsumerList = + Collections.emptyList(); public BatteryConsumerListAdapter(OnBatteryConsumerSelectedListener listener) { mListener = listener; diff --git a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryStatsViewerActivity.java b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryStatsViewerActivity.java index bb75be4f5ba8..33ce6bf0bdb5 100644 --- a/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryStatsViewerActivity.java +++ b/core/tests/batterystatstests/BatteryStatsViewer/src/com/android/frameworks/core/batterystatsviewer/BatteryStatsViewerActivity.java @@ -36,6 +36,7 @@ import androidx.loader.app.LoaderManager.LoaderCallbacks; import androidx.loader.content.Loader; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import com.android.settingslib.utils.AsyncLoaderCompat; @@ -48,10 +49,10 @@ public class BatteryStatsViewerActivity extends ComponentActivity { private static final int BATTERY_STATS_REFRESH_RATE_MILLIS = 60 * 1000; private static final int MILLIS_IN_MINUTE = 60000; - private static final int LOADER_BATTERY_USAGE_STATS = 1; + private static final String FORCE_FRESH_STATS = "force_fresh_stats"; private BatteryStatsDataAdapter mBatteryStatsDataAdapter; - private final Runnable mBatteryStatsRefresh = this::loadBatteryStats; + private final Runnable mBatteryStatsRefresh = this::refreshPeriodically; private String mBatteryConsumerId; private TextView mTitleView; private TextView mDetailsView; @@ -59,7 +60,8 @@ public class BatteryStatsViewerActivity extends ComponentActivity { private TextView mPackagesView; private View mHeadingsView; private RecyclerView mBatteryConsumerDataView; - private View mLoadingView; + private SwipeRefreshLayout mSwipeRefreshLayout; + private View mCardView; private View mEmptyView; private List<BatteryUsageStats> mBatteryUsageStats; @@ -71,6 +73,12 @@ public class BatteryStatsViewerActivity extends ComponentActivity { setContentView(R.layout.battery_stats_viewer_layout); + mSwipeRefreshLayout = findViewById(R.id.swipe_refresh); + mSwipeRefreshLayout.setColorSchemeResources(android.R.color.holo_green_light); + mSwipeRefreshLayout.setRefreshing(true); + mSwipeRefreshLayout.setOnRefreshListener(this::onRefresh); + + mCardView = findViewById(R.id.app_card); mTitleView = findViewById(android.R.id.title); mDetailsView = findViewById(R.id.details); mIconView = findViewById(android.R.id.icon); @@ -82,18 +90,13 @@ public class BatteryStatsViewerActivity extends ComponentActivity { mBatteryStatsDataAdapter = new BatteryStatsDataAdapter(); mBatteryConsumerDataView.setAdapter(mBatteryStatsDataAdapter); - mLoadingView = findViewById(R.id.loading_view); mEmptyView = findViewById(R.id.empty_view); - - LoaderManager loaderManager = LoaderManager.getInstance(this); - loaderManager.restartLoader(LOADER_BATTERY_USAGE_STATS, null, - new BatteryUsageStatsLoaderCallbacks()); } @Override protected void onResume() { super.onResume(); - loadBatteryStats(); + refreshPeriodically(); } @Override @@ -102,32 +105,46 @@ public class BatteryStatsViewerActivity extends ComponentActivity { getMainThreadHandler().removeCallbacks(mBatteryStatsRefresh); } - private void loadBatteryStats() { - LoaderManager loaderManager = LoaderManager.getInstance(this); - loaderManager.restartLoader(LOADER_BATTERY_USAGE_STATS, null, - new BatteryUsageStatsLoaderCallbacks()); + private void refreshPeriodically() { + loadBatteryUsageStats(false); getMainThreadHandler().postDelayed(mBatteryStatsRefresh, BATTERY_STATS_REFRESH_RATE_MILLIS); } + private void onRefresh() { + loadBatteryUsageStats(true); + } + + private void loadBatteryUsageStats(boolean forceFreshStats) { + Bundle args = new Bundle(); + args.putBoolean(FORCE_FRESH_STATS, forceFreshStats); + LoaderManager.getInstance(this).restartLoader(0, args, + new BatteryUsageStatsLoaderCallbacks()); + } + private static class BatteryUsageStatsLoader extends AsyncLoaderCompat<List<BatteryUsageStats>> { private final BatteryStatsManager mBatteryStatsManager; + private final boolean mForceFreshStats; - BatteryUsageStatsLoader(Context context) { + BatteryUsageStatsLoader(Context context, boolean forceFreshStats) { super(context); mBatteryStatsManager = context.getSystemService(BatteryStatsManager.class); + mForceFreshStats = forceFreshStats; } @Override public List<BatteryUsageStats> loadInBackground() { + final int maxStatsAgeMs = mForceFreshStats ? 0 : BATTERY_STATS_REFRESH_RATE_MILLIS; final BatteryUsageStatsQuery queryDefault = new BatteryUsageStatsQuery.Builder() .includePowerModels() + .setMaxStatsAgeMs(maxStatsAgeMs) .build(); final BatteryUsageStatsQuery queryPowerProfileModeledOnly = new BatteryUsageStatsQuery.Builder() .powerProfileModeledOnly() .includePowerModels() + .setMaxStatsAgeMs(maxStatsAgeMs) .build(); return mBatteryStatsManager.getBatteryUsageStats( List.of(queryDefault, queryPowerProfileModeledOnly)); @@ -143,7 +160,8 @@ public class BatteryStatsViewerActivity extends ComponentActivity { @NonNull @Override public Loader<List<BatteryUsageStats>> onCreateLoader(int id, Bundle args) { - return new BatteryUsageStatsLoader(BatteryStatsViewerActivity.this); + return new BatteryUsageStatsLoader(BatteryStatsViewerActivity.this, + args.getBoolean(FORCE_FRESH_STATS)); } @Override @@ -194,7 +212,8 @@ public class BatteryStatsViewerActivity extends ComponentActivity { mPackagesView.setVisibility(View.GONE); } - if (batteryConsumerInfo.isSystemBatteryConsumer) { + if (batteryConsumerInfo.consumerType + == BatteryConsumerData.ConsumerType.DEVICE_POWER_COMPONENT) { mHeadingsView.setVisibility(View.VISIBLE); } else { mHeadingsView.setVisibility(View.GONE); @@ -210,7 +229,8 @@ public class BatteryStatsViewerActivity extends ComponentActivity { mBatteryConsumerDataView.setVisibility(View.VISIBLE); } - mLoadingView.setVisibility(View.GONE); + mCardView.setVisibility(View.VISIBLE); + mSwipeRefreshLayout.setRefreshing(false); } private static class BatteryStatsDataAdapter extends @@ -218,16 +238,16 @@ public class BatteryStatsViewerActivity extends ComponentActivity { public static class ViewHolder extends RecyclerView.ViewHolder { public ImageView iconImageView; public TextView titleTextView; - public TextView amountTextView; - public TextView percentTextView; + public TextView value1TextView; + public TextView value2TextView; ViewHolder(View itemView) { super(itemView); iconImageView = itemView.findViewById(R.id.icon); titleTextView = itemView.findViewById(R.id.title); - amountTextView = itemView.findViewById(R.id.amount); - percentTextView = itemView.findViewById(R.id.percent); + value1TextView = itemView.findViewById(R.id.value1); + value2TextView = itemView.findViewById(R.id.value2); } } @@ -255,57 +275,108 @@ public class BatteryStatsViewerActivity extends ComponentActivity { @Override public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) { BatteryConsumerData.Entry entry = mEntries.get(position); + switch (entry.entryType) { - case POWER_MODELED: - viewHolder.titleTextView.setText(entry.title); - viewHolder.amountTextView.setText( - String.format(Locale.getDefault(), "%.1f mAh", entry.value)); - viewHolder.iconImageView.setImageResource(R.drawable.gm_calculate_24); - viewHolder.itemView.setBackgroundResource( + case UID_TOTAL_POWER: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_sum_24, 0); + setPowerText(viewHolder.value1TextView, entry.value1); + setProportionText(viewHolder.value2TextView, entry); + break; + case UID_POWER_MODELED: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_calculate_24, R.color.battery_consumer_bg_power_profile); + setPowerText(viewHolder.value1TextView, entry.value1); + setProportionText(viewHolder.value2TextView, entry); break; - case POWER_MEASURED: - viewHolder.titleTextView.setText(entry.title); - viewHolder.amountTextView.setText( - String.format(Locale.getDefault(), "%.1f mAh", entry.value)); - viewHolder.iconImageView.setImageResource(R.drawable.gm_amp_24); - viewHolder.itemView.setBackgroundResource( + case UID_POWER_MEASURED: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_amp_24, R.color.battery_consumer_bg_measured_energy); + setPowerText(viewHolder.value1TextView, entry.value1); + setProportionText(viewHolder.value2TextView, entry); break; - case POWER_CUSTOM: - viewHolder.titleTextView.setText(entry.title); - viewHolder.amountTextView.setText( - String.format(Locale.getDefault(), "%.1f mAh", entry.value)); - viewHolder.iconImageView.setImageResource(R.drawable.gm_custom_24); - viewHolder.itemView.setBackgroundResource( + case UID_POWER_CUSTOM: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_custom_24, R.color.battery_consumer_bg_measured_energy); + setPowerText(viewHolder.value1TextView, entry.value1); + setProportionText(viewHolder.value2TextView, entry); + break; + case UID_DURATION: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_timer_24, 0); + setDurationText(viewHolder.value1TextView, (long) entry.value1); + setProportionText(viewHolder.value2TextView, entry); break; - case DURATION: - viewHolder.titleTextView.setText(entry.title); - final long durationMs = (long) entry.value; - CharSequence text; - if (durationMs < MILLIS_IN_MINUTE) { - text = String.format(Locale.getDefault(), "%,d ms", durationMs); - } else { - text = String.format(Locale.getDefault(), "%,d m %d s", - durationMs / MILLIS_IN_MINUTE, - (durationMs % MILLIS_IN_MINUTE) / 1000); - } - - viewHolder.amountTextView.setText(text); - viewHolder.iconImageView.setImageResource(R.drawable.gm_timer_24); - viewHolder.itemView.setBackground(null); + case DEVICE_TOTAL_POWER: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_sum_24, 0); + setPowerText(viewHolder.value1TextView, entry.value1); + setPowerText(viewHolder.value2TextView, entry.value2); + break; + case DEVICE_POWER_MODELED: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_calculate_24, + R.color.battery_consumer_bg_power_profile); + setPowerText(viewHolder.value1TextView, entry.value1); + setPowerText(viewHolder.value2TextView, entry.value2); + break; + case DEVICE_POWER_MEASURED: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_amp_24, + R.color.battery_consumer_bg_measured_energy); + setPowerText(viewHolder.value1TextView, entry.value1); + setPowerText(viewHolder.value2TextView, entry.value2); + break; + case DEVICE_POWER_CUSTOM: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_custom_24, + R.color.battery_consumer_bg_measured_energy); + setPowerText(viewHolder.value1TextView, entry.value1); + setPowerText(viewHolder.value2TextView, entry.value2); + break; + case DEVICE_DURATION: + setTitleIconAndBackground(viewHolder, entry.title, + R.drawable.gm_timer_24, 0); + setDurationText(viewHolder.value1TextView, (long) entry.value1); + viewHolder.value2TextView.setVisibility(View.GONE); break; } + } + + private void setTitleIconAndBackground(ViewHolder viewHolder, String title, int icon, + int background) { + viewHolder.titleTextView.setText(title); + viewHolder.iconImageView.setImageResource(icon); + viewHolder.itemView.setBackgroundResource(background); + } - double proportion; - if (entry.isSystemBatteryConsumer) { - proportion = entry.value != 0 ? entry.total * 100 / entry.value : 0; + private void setProportionText(TextView textView, BatteryConsumerData.Entry entry) { + final double proportion = entry.value2 != 0 ? entry.value1 * 100 / entry.value2 : 0; + textView.setText( + String.format(Locale.getDefault(), "%.1f%%", proportion)); + textView.setVisibility(View.VISIBLE); + } + + private void setPowerText(TextView textView, double powerMah) { + textView.setText(String.format(Locale.getDefault(), "%.1f", powerMah)); + textView.setVisibility(View.VISIBLE); + } + + private void setDurationText(TextView textView, long durationMs) { + CharSequence text; + if (durationMs < MILLIS_IN_MINUTE) { + text = String.format(Locale.getDefault(), "%,d ms", durationMs); } else { - proportion = entry.total != 0 ? entry.value * 100 / entry.total : 0; + text = String.format(Locale.getDefault(), "%,d m %d s", + durationMs / MILLIS_IN_MINUTE, + (durationMs % MILLIS_IN_MINUTE) / 1000); } - viewHolder.percentTextView.setText( - String.format(Locale.getDefault(), "%.1f%%", proportion)); + + textView.setText(text); + textView.setVisibility(View.VISIBLE); } } } diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java index 127cea84ba8c..c8564acfc656 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java @@ -24,6 +24,7 @@ import android.os.BatteryConsumer; import android.os.BatteryUsageStats; import android.os.Parcel; import android.os.UidBatteryConsumer; +import android.os.UserBatteryConsumer; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -31,7 +32,11 @@ import androidx.test.runner.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.HashSet; import java.util.List; +import java.util.Set; @SmallTest @RunWith(AndroidJUnit4.class) @@ -60,13 +65,42 @@ public class BatteryUsageStatsTest { validateBatteryUsageStats(inBatteryUsageStats); } + @Test + public void testDump() { + final BatteryUsageStats stats = buildBatteryUsageStats(); + final StringWriter out = new StringWriter(); + try (PrintWriter pw = new PrintWriter(out)) { + stats.dump(pw, " "); + } + final String dump = out.toString(); + + assertThat(dump).contains("Capacity: 4000"); + assertThat(dump).contains("Computed drain: 30000"); + assertThat(dump).contains("actual drain: 1000-2000"); + assertThat(dump).contains("cpu: 20100 apps: 10100 duration: 20s 300ms"); + assertThat(dump).contains("FOO: 20200 apps: 10200 duration: 20s 400ms"); + assertThat(dump).contains("UID 2000: 1200 ( screen=300 cpu=400 FOO=500 )"); + assertThat(dump).contains("User 42: 30.0 ( cpu=10.0 FOO=20.0 )"); + } + + @Test + public void testPowerComponentNames_existAndUnique() { + Set<String> allNames = new HashSet<>(); + for (int i = 0; i < BatteryConsumer.POWER_COMPONENT_COUNT; i++) { + assertThat(BatteryConsumer.powerComponentIdToString(i)).isNotNull(); + allNames.add(BatteryConsumer.powerComponentIdToString(i)); + } + assertThat(allNames).hasSize(BatteryConsumer.POWER_COMPONENT_COUNT); + } + private BatteryUsageStats buildBatteryUsageStats() { final MockClocks clocks = new MockClocks(); final MockBatteryStatsImpl batteryStats = new MockBatteryStatsImpl(clocks); final BatteryStatsImpl.Uid batteryStatsUid = batteryStats.getUidStatsLocked(2000); final BatteryUsageStats.Builder builder = - new BatteryUsageStats.Builder(new String[]{"FOO"}) + new BatteryUsageStats.Builder(new String[]{"FOO"}, true) + .setBatteryCapacity(4000) .setDischargePercentage(20) .setDischargedPowerRange(1000, 2000) .setStatsStartTimestamp(1000); @@ -108,11 +142,22 @@ public class BatteryUsageStatsTest { .setUsageDurationForCustomComponentMillis( BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 20400); + builder.getOrCreateUserBatteryConsumerBuilder(42) + .setConsumedPower( + BatteryConsumer.POWER_COMPONENT_CPU, 10) + .setConsumedPowerForCustomComponent( + BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 20) + .setUsageDurationMillis( + BatteryConsumer.POWER_COMPONENT_CPU, 30) + .setUsageDurationForCustomComponentMillis( + BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 40); + return builder.build(); } public void validateBatteryUsageStats(BatteryUsageStats batteryUsageStats) { assertThat(batteryUsageStats.getConsumedPower()).isEqualTo(30000); + assertThat(batteryUsageStats.getBatteryCapacity()).isEqualTo(4000); assertThat(batteryUsageStats.getDischargePercentage()).isEqualTo(20); assertThat(batteryUsageStats.getDischargedPowerRange().getLower()).isEqualTo(1000); assertThat(batteryUsageStats.getDischargedPowerRange().getUpper()).isEqualTo(2000); @@ -173,5 +218,26 @@ public class BatteryUsageStatsTest { assertThat(deviceBatteryConsumer.getCustomPowerComponentCount()).isEqualTo(1); assertThat(deviceBatteryConsumer.getCustomPowerComponentName( BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID)).isEqualTo("FOO"); + + final List<UserBatteryConsumer> userBatteryConsumers = + batteryUsageStats.getUserBatteryConsumers(); + for (UserBatteryConsumer userBatteryConsumer : userBatteryConsumers) { + if (userBatteryConsumer.getUserId() == 42) { + assertThat(userBatteryConsumer.getConsumedPower( + BatteryConsumer.POWER_COMPONENT_CPU)).isEqualTo(10); + assertThat(userBatteryConsumer.getConsumedPowerForCustomComponent( + BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID)).isEqualTo(20); + assertThat(userBatteryConsumer.getUsageDurationMillis( + BatteryConsumer.POWER_COMPONENT_CPU)).isEqualTo(30); + assertThat(userBatteryConsumer.getUsageDurationForCustomComponentMillis( + BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID)).isEqualTo(40); + assertThat(userBatteryConsumer.getConsumedPower()).isEqualTo(30); + assertThat(userBatteryConsumer.getCustomPowerComponentCount()).isEqualTo(1); + assertThat(userBatteryConsumer.getCustomPowerComponentName( + BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID)).isEqualTo("FOO"); + } else { + fail("Unexpected user ID " + userBatteryConsumer.getUserId()); + } + } } } diff --git a/data/etc/car/com.android.car.cluster.home.xml b/data/etc/car/com.android.car.cluster.home.xml index 832e5a76debd..e1d2b18d7167 100644 --- a/data/etc/car/com.android.car.cluster.home.xml +++ b/data/etc/car/com.android.car.cluster.home.xml @@ -17,7 +17,6 @@ <permissions> <privapp-permissions package="com.android.car.cluster.home"> <permission name="android.permission.INTERACT_ACROSS_USERS"/> - <permission name="android.car.permission.ACCESS_PRIVATE_DISPLAY_ID"/> <permission name="android.car.permission.CAR_INSTRUMENT_CLUSTER_CONTROL"/> </privapp-permissions> </permissions> diff --git a/data/etc/car/com.android.carsystemui.xml b/data/etc/car/com.android.carsystemui.xml index 8c05282e65e4..a267d5650782 100644 --- a/data/etc/car/com.android.carsystemui.xml +++ b/data/etc/car/com.android.carsystemui.xml @@ -19,6 +19,7 @@ <permission name="android.car.permission.ACCESS_CAR_PROJECTION_STATUS"/> <permission name="android.car.permission.CAR_CONTROL_AUDIO_VOLUME"/> <permission name="android.car.permission.CAR_ENROLL_TRUST"/> + <permission name="android.car.permission.CAR_INSTRUMENT_CLUSTER_CONTROL"/> <permission name="android.car.permission.CAR_POWER"/> <permission name="android.car.permission.CONTROL_CAR_CLIMATE"/> <permission name="android.car.permission.CONTROL_CAR_EVS_ACTIVITY"/> diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index e1a0f64913a8..545a5641b932 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -570,4 +570,8 @@ applications that come with the platform <privapp-permissions package="com.android.bips"> <permission name="android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON"/> </privapp-permissions> + + <privapp-permissions package="com.android.calllogbackup"> + <permission name="com.android.voicemail.permission.READ_VOICEMAIL"/> + </privapp-permissions> </permissions> diff --git a/libs/WindowManager/Shell/res/values/config.xml b/libs/WindowManager/Shell/res/values/config.xml index edf000b5e68a..26f98d8aeddb 100644 --- a/libs/WindowManager/Shell/res/values/config.xml +++ b/libs/WindowManager/Shell/res/values/config.xml @@ -33,9 +33,6 @@ <!-- Allow PIP to resize via dragging the corner of PiP. --> <bool name="config_pipEnableDragCornerResize">false</bool> - <!-- Allow PIP to enable round corner, see also R.dimen.pip_corner_radius --> - <bool name="config_pipEnableRoundCorner">false</bool> - <!-- Animation duration when using long press on recents to dock --> <integer name="long_press_dock_anim_duration">250</integer> @@ -52,6 +49,12 @@ when the PIP menu is shown in center. --> <string translatable="false" name="pip_menu_bounds">"596 280 1324 690"</string> + <!-- Animation duration when exit starting window: fade out icon --> + <integer name="starting_window_app_reveal_icon_fade_out_duration">133</integer> + + <!-- Animation duration when exit starting window: reveal app --> + <integer name="starting_window_app_reveal_anim_delay">83</integer> + <!-- Animation duration when exit starting window: reveal app --> - <integer name="starting_window_app_reveal_anim_duration">333</integer> + <integer name="starting_window_app_reveal_anim_duration">266</integer> </resources> diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/IPipAnimationListener.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/IPipAnimationListener.aidl index 2569b780c1bb..b4c745fc4892 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/IPipAnimationListener.aidl +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/IPipAnimationListener.aidl @@ -24,4 +24,12 @@ oneway interface IPipAnimationListener { * Notifies the listener that the Pip animation is started. */ void onPipAnimationStarted(); + + /** + * Notifies the listener about PiP round corner radius changes. + * Listener can expect an immediate callback the first time they attach. + * + * @param cornerRadius the pixel value of the corner radius, zero means it's disabled. + */ + void onPipCornerRadiusChanged(int cornerRadius); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java index 2b795390adda..319d57a63320 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java @@ -17,7 +17,6 @@ package com.android.wm.shell.pip; import android.content.Context; -import android.content.res.Resources; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.RectF; @@ -30,10 +29,6 @@ import com.android.wm.shell.R; * Abstracts the common operations on {@link SurfaceControl.Transaction} for PiP transition. */ public class PipSurfaceTransactionHelper { - - private final boolean mEnableCornerRadius; - private int mCornerRadius; - /** for {@link #scale(SurfaceControl.Transaction, SurfaceControl, Rect, Rect)} operation */ private final Matrix mTmpTransform = new Matrix(); private final float[] mTmpFloat9 = new float[9]; @@ -41,11 +36,7 @@ public class PipSurfaceTransactionHelper { private final RectF mTmpDestinationRectF = new RectF(); private final Rect mTmpDestinationRect = new Rect(); - public PipSurfaceTransactionHelper(Context context) { - final Resources res = context.getResources(); - mEnableCornerRadius = res.getBoolean(R.bool.config_pipEnableRoundCorner) - || SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false); - } + private int mCornerRadius; /** * Called when display size or font size of settings changed @@ -53,10 +44,10 @@ public class PipSurfaceTransactionHelper { * @param context the current context */ public void onDensityOrFontScaleChanged(Context context) { - if (mEnableCornerRadius) { - final Resources res = context.getResources(); - mCornerRadius = res.getDimensionPixelSize(R.dimen.pip_corner_radius); - } + final boolean enableCornerRadius = + SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false); + mCornerRadius = enableCornerRadius + ? context.getResources().getDimensionPixelSize(R.dimen.pip_corner_radius) : 0; } /** @@ -194,9 +185,7 @@ public class PipSurfaceTransactionHelper { */ public PipSurfaceTransactionHelper round(SurfaceControl.Transaction tx, SurfaceControl leash, boolean applyCornerRadius) { - if (mEnableCornerRadius) { - tx.setCornerRadius(leash, applyCornerRadius ? mCornerRadius : 0); - } + tx.setCornerRadius(leash, applyCornerRadius ? mCornerRadius : 0); return this; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java index fa5caf00dde7..29a483bd7ae3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java @@ -36,6 +36,7 @@ import android.content.res.Configuration; import android.graphics.Rect; import android.os.IBinder; import android.os.RemoteException; +import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.util.Log; @@ -50,6 +51,7 @@ import androidx.annotation.BinderThread; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.android.wm.shell.R; import com.android.wm.shell.WindowManagerShellWrapper; import com.android.wm.shell.common.DisplayChangeController; import com.android.wm.shell.common.DisplayController; @@ -428,6 +430,7 @@ public class PipController implements PipTransitionController.PipTransitionCallb private void onDensityOrFontScaleChanged() { mPipTaskOrganizer.onDensityOrFontScaleChanged(mContext); + onPipCornerRadiusChanged(); } private void onOverlayChanged() { @@ -488,10 +491,6 @@ public class PipController implements PipTransitionController.PipTransitionCallb mTouchHandler.getMotionHelper().expandLeavePip(false /* skipAnimation */); } - private PipTouchHandler getPipTouchHandler() { - return mTouchHandler; - } - /** * Hides the PIP menu. */ @@ -531,6 +530,21 @@ public class PipController implements PipTransitionController.PipTransitionCallb private void setPinnedStackAnimationListener(IPipAnimationListener callback) { mPinnedStackAnimationRecentsCallback = callback; + onPipCornerRadiusChanged(); + } + + private void onPipCornerRadiusChanged() { + if (mPinnedStackAnimationRecentsCallback != null) { + final boolean enableCornerRadius = + SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false); + final int cornerRadius = enableCornerRadius + ? mContext.getResources().getDimensionPixelSize(R.dimen.pip_corner_radius) : 0; + try { + mPinnedStackAnimationRecentsCallback.onPipCornerRadiusChanged(cornerRadius); + } catch (RemoteException e) { + Log.e(TAG, "Failed to call onPipCornerRadiusChanged", e); + } + } } private Rect startSwipePipToHome(ComponentName componentName, ActivityInfo activityInfo, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java index 2b45346cfa5c..ecbf0f128b5c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java @@ -152,9 +152,8 @@ public class PipMenuView extends FrameLayout { mAccessibilityManager = context.getSystemService(AccessibilityManager.class); inflate(context, R.layout.pip_menu, this); - final boolean enableCornerRadius = mContext.getResources() - .getBoolean(R.bool.config_pipEnableRoundCorner) - || SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false); + final boolean enableCornerRadius = + SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false); mBackgroundDrawable = enableCornerRadius ? mContext.getDrawable(R.drawable.pip_menu_background) : new ColorDrawable(Color.BLACK); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java index 3fe57c61c0bb..c303a33afc78 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java @@ -20,6 +20,7 @@ import static android.view.View.GONE; import android.animation.Animator; import android.animation.ValueAnimator; +import android.content.Context; import android.graphics.BlendMode; import android.graphics.Canvas; import android.graphics.Color; @@ -29,6 +30,7 @@ import android.graphics.Point; import android.graphics.RadialGradient; import android.graphics.Rect; import android.graphics.Shader; +import android.util.MathUtils; import android.util.Slog; import android.view.Choreographer; import android.view.SurfaceControl; @@ -38,10 +40,10 @@ import android.view.ViewGroup; import android.view.WindowManager; import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; -import android.view.animation.Transformation; -import android.view.animation.TranslateYAnimation; import android.window.SplashScreenView; +import com.android.wm.shell.R; +import com.android.wm.shell.animation.Interpolators; import com.android.wm.shell.common.TransactionPool; /** @@ -53,52 +55,64 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { private static final boolean DEBUG_EXIT_ANIMATION_BLEND = false; private static final String TAG = StartingSurfaceDrawer.TAG; - private static final Interpolator APP_EXIT_INTERPOLATOR = new PathInterpolator(0f, 0f, 0f, 1f); + private static final Interpolator ICON_INTERPOLATOR = new PathInterpolator(0.15f, 0f, 1f, 1f); + private static final Interpolator MASK_RADIUS_INTERPOLATOR = + new PathInterpolator(0f, 0f, 0.4f, 1f); + private static final Interpolator SHIFT_UP_INTERPOLATOR = new PathInterpolator(0f, 0f, 0f, 1f); - private final Matrix mTmpTransform = new Matrix(); private final SurfaceControl mFirstWindowSurface; private final Rect mFirstWindowFrame = new Rect(); private final SplashScreenView mSplashScreenView; private final int mMainWindowShiftLength; - private final int mAppDuration; + private final int mIconFadeOutDuration; + private final int mAppRevealDelay; + private final int mAppRevealDuration; + private final int mAnimationDuration; + private final float mIconStartAlpha; private final TransactionPool mTransactionPool; private ValueAnimator mMainAnimator; private ShiftUpAnimation mShiftUpAnimation; + private RadialVanishAnimation mRadialVanishAnimation; private Runnable mFinishCallback; - SplashScreenExitAnimation(SplashScreenView view, SurfaceControl leash, Rect frame, - int appDuration, int mainWindowShiftLength, TransactionPool pool, - Runnable handleFinish) { + SplashScreenExitAnimation(Context context, SplashScreenView view, SurfaceControl leash, + Rect frame, int mainWindowShiftLength, TransactionPool pool, Runnable handleFinish) { mSplashScreenView = view; mFirstWindowSurface = leash; if (frame != null) { mFirstWindowFrame.set(frame); } - mAppDuration = appDuration; + + View iconView = view.getIconView(); + if (iconView == null) { + mIconFadeOutDuration = 0; + mIconStartAlpha = 0; + mAppRevealDelay = 0; + } else { + iconView.setLayerType(View.LAYER_TYPE_HARDWARE, null); + mIconFadeOutDuration = context.getResources().getInteger( + R.integer.starting_window_app_reveal_icon_fade_out_duration); + mAppRevealDelay = context.getResources().getInteger( + R.integer.starting_window_app_reveal_anim_delay); + mIconStartAlpha = iconView.getAlpha(); + } + mAppRevealDuration = context.getResources().getInteger( + R.integer.starting_window_app_reveal_anim_duration); + mAnimationDuration = Math.max(mIconFadeOutDuration, mAppRevealDelay + mAppRevealDuration); mMainWindowShiftLength = mainWindowShiftLength; mFinishCallback = handleFinish; mTransactionPool = pool; } void startAnimations() { - prepareRevealAnimation(); - if (mMainAnimator != null) { - mMainAnimator.start(); - } - if (mShiftUpAnimation != null) { - mShiftUpAnimation.start(); - } + mMainAnimator = createAnimator(); + mMainAnimator.start(); } - // reveal splash screen, shift up main window - private void prepareRevealAnimation() { - // splash screen - mMainAnimator = ValueAnimator.ofFloat(0f, 1f); - mMainAnimator.setDuration(mAppDuration); - mMainAnimator.setInterpolator(APP_EXIT_INTERPOLATOR); - mMainAnimator.addListener(this); - + // fade out icon, reveal app, shift up main window + private ValueAnimator createAnimator() { + // reveal app final float transparentRatio = 0.8f; final int globalHeight = mSplashScreenView.getHeight(); final int verticalCircleCenter = 0; @@ -106,14 +120,13 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { final int halfWidth = mSplashScreenView.getWidth() / 2; final int endRadius = (int) (0.5 + (1f / transparentRatio * (int) Math.sqrt(finalVerticalLength * finalVerticalLength + halfWidth * halfWidth))); - final RadialVanishAnimation radialVanishAnimation = new RadialVanishAnimation( - mSplashScreenView, mMainAnimator); - radialVanishAnimation.setCircleCenter(halfWidth, verticalCircleCenter); - radialVanishAnimation.setRadius(0/* initRadius */, endRadius); - final int[] colors = {Color.TRANSPARENT, Color.TRANSPARENT, Color.WHITE}; + final int[] colors = {Color.WHITE, Color.WHITE, Color.TRANSPARENT}; final float[] stops = {0f, transparentRatio, 1f}; - radialVanishAnimation.setRadialPaintParam(colors, stops); - radialVanishAnimation.setReady(); + + mRadialVanishAnimation = new RadialVanishAnimation(mSplashScreenView); + mRadialVanishAnimation.setCircleCenter(halfWidth, verticalCircleCenter); + mRadialVanishAnimation.setRadius(0 /* initRadius */, endRadius); + mRadialVanishAnimation.setRadialPaintParam(colors, stops); if (mFirstWindowSurface != null && mFirstWindowSurface.isValid()) { // shift up main window @@ -128,38 +141,47 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { mSplashScreenView.addView(occludeHoleView, params); mShiftUpAnimation = new ShiftUpAnimation(0, -mMainWindowShiftLength, occludeHoleView); - mShiftUpAnimation.setDuration(mAppDuration); - mShiftUpAnimation.setInterpolator(APP_EXIT_INTERPOLATOR); - - occludeHoleView.setAnimation(mShiftUpAnimation); } + + ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f); + animator.setDuration(mAnimationDuration); + animator.setInterpolator(Interpolators.LINEAR); + animator.addListener(this); + animator.addUpdateListener(a -> onAnimationProgress((float) a.getAnimatedValue())); + return animator; } private static class RadialVanishAnimation extends View { private final SplashScreenView mView; private int mInitRadius; private int mFinishRadius; - private boolean mReady; private final Point mCircleCenter = new Point(); private final Matrix mVanishMatrix = new Matrix(); private final Paint mVanishPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - RadialVanishAnimation(SplashScreenView target, ValueAnimator animator) { + RadialVanishAnimation(SplashScreenView target) { super(target.getContext()); mView = target; - animator.addUpdateListener((animation) -> { - if (mVanishPaint.getShader() == null) { - return; - } - final float value = (float) animation.getAnimatedValue(); - final float scale = (mFinishRadius - mInitRadius) * value + mInitRadius; - mVanishMatrix.setScale(scale, scale); - mVanishMatrix.postTranslate(mCircleCenter.x, mCircleCenter.y); - mVanishPaint.getShader().setLocalMatrix(mVanishMatrix); - postInvalidate(); - }); mView.addView(this); + mVanishPaint.setAlpha(0); + } + + void onAnimationProgress(float linearProgress) { + if (mVanishPaint.getShader() == null) { + return; + } + + final float radiusProgress = MASK_RADIUS_INTERPOLATOR.getInterpolation(linearProgress); + final float alphaProgress = Interpolators.ALPHA_OUT.getInterpolation(linearProgress); + final float scale = mInitRadius + (mFinishRadius - mInitRadius) * radiusProgress; + + mVanishMatrix.setScale(scale, scale); + mVanishMatrix.postTranslate(mCircleCenter.x, mCircleCenter.y); + mVanishPaint.getShader().setLocalMatrix(mVanishMatrix); + mVanishPaint.setAlpha(Math.round(0xFF * alphaProgress)); + + postInvalidate(); } void setRadius(int initRadius, int finishRadius) { @@ -184,38 +206,44 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { new RadialGradient(0, 0, 1, colors, stops, Shader.TileMode.CLAMP); mVanishPaint.setShader(rShader); if (!DEBUG_EXIT_ANIMATION_BLEND) { - mVanishPaint.setBlendMode(BlendMode.MODULATE); + // We blend the reveal gradient with the splash screen using DST_OUT so that the + // splash screen is fully visible when radius = 0 (or gradient opacity is 0) and + // fully invisible when radius = finishRadius AND gradient opacity is 1. + mVanishPaint.setBlendMode(BlendMode.DST_OUT); } } - void setReady() { - mReady = true; - } - @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - if (mReady) { - canvas.drawRect(0, 0, mView.getWidth(), mView.getHeight(), mVanishPaint); - } + canvas.drawRect(0, 0, mView.getWidth(), mView.getHeight(), mVanishPaint); } } - private final class ShiftUpAnimation extends TranslateYAnimation { - final SyncRtSurfaceTransactionApplier mApplier; - ShiftUpAnimation(float fromYDelta, float toYDelta, View targetView) { - super(fromYDelta, toYDelta); - mApplier = new SyncRtSurfaceTransactionApplier(targetView); + private final class ShiftUpAnimation { + private final float mFromYDelta; + private final float mToYDelta; + private final View mOccludeHoleView; + private final SyncRtSurfaceTransactionApplier mApplier; + private final Matrix mTmpTransform = new Matrix(); + + ShiftUpAnimation(float fromYDelta, float toYDelta, View occludeHoleView) { + mFromYDelta = fromYDelta; + mToYDelta = toYDelta; + mOccludeHoleView = occludeHoleView; + mApplier = new SyncRtSurfaceTransactionApplier(occludeHoleView); } - @Override - protected void applyTransformation(float interpolatedTime, Transformation t) { - super.applyTransformation(interpolatedTime, t); - + void onAnimationProgress(float linearProgress) { if (mFirstWindowSurface == null || !mFirstWindowSurface.isValid()) { return; } - mTmpTransform.set(t.getMatrix()); + + final float progress = SHIFT_UP_INTERPOLATOR.getInterpolation(linearProgress); + final float dy = mFromYDelta + (mToYDelta - mFromYDelta) * progress; + + mOccludeHoleView.setTranslationY(dy); + mTmpTransform.setTranslate(0 /* dx */, dy); // set the vsyncId to ensure the transaction doesn't get applied too early. final SurfaceControl.Transaction tx = mTransactionPool.acquire(); @@ -290,4 +318,32 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { public void onAnimationRepeat(Animator animation) { // ignore } + + private void onAnimationProgress(float linearProgress) { + View iconView = mSplashScreenView.getIconView(); + if (iconView != null) { + final float iconProgress = ICON_INTERPOLATOR.getInterpolation( + getProgress(linearProgress, 0 /* delay */, mIconFadeOutDuration)); + iconView.setAlpha(mIconStartAlpha * (1 - iconProgress)); + } + + final float revealLinearProgress = getProgress(linearProgress, mAppRevealDelay, + mAppRevealDuration); + + if (mRadialVanishAnimation != null) { + mRadialVanishAnimation.onAnimationProgress(revealLinearProgress); + } + + if (mShiftUpAnimation != null) { + mShiftUpAnimation.onAnimationProgress(revealLinearProgress); + } + } + + private float getProgress(float linearProgress, long delay, long duration) { + return MathUtils.constrain( + (linearProgress * (mAnimationDuration) - delay) / duration, + 0.0f, + 1.0f + ); + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java index e656f43cfe35..fd6f0ad99e66 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java @@ -74,16 +74,14 @@ public class SplashscreenContentDrawer { private int mDefaultIconSize; private int mBrandingImageWidth; private int mBrandingImageHeight; - private final int mAppRevealDuration; private int mMainWindowShiftLength; private final TransactionPool mTransactionPool; private final SplashScreenWindowAttrs mTmpAttrs = new SplashScreenWindowAttrs(); private final Handler mSplashscreenWorkerHandler; - SplashscreenContentDrawer(Context context, int appRevealAnimDuration, TransactionPool pool) { + SplashscreenContentDrawer(Context context, TransactionPool pool) { mContext = context; mIconProvider = new IconProvider(context); - mAppRevealDuration = appRevealAnimDuration; mTransactionPool = pool; // Initialize Splashscreen worker thread @@ -671,9 +669,8 @@ public class SplashscreenContentDrawer { */ void applyExitAnimation(SplashScreenView view, SurfaceControl leash, Rect frame, Runnable finishCallback) { - final SplashScreenExitAnimation animation = new SplashScreenExitAnimation(view, leash, - frame, mAppRevealDuration, mMainWindowShiftLength, mTransactionPool, - finishCallback); + final SplashScreenExitAnimation animation = new SplashScreenExitAnimation(mContext, view, + leash, frame, mMainWindowShiftLength, mTransactionPool, finishCallback); animation.startAnimations(); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java index b7a0339aa93d..a1e68329fdc0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java @@ -17,7 +17,6 @@ package com.android.wm.shell.startingsurface; import static android.content.Context.CONTEXT_RESTRICTED; -import static android.content.res.Configuration.EMPTY; import static android.view.Choreographer.CALLBACK_INSETS_ANIMATION; import static android.view.Display.DEFAULT_DISPLAY; @@ -54,7 +53,6 @@ import com.android.internal.policy.PhoneWindow; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.TransactionPool; -import java.util.function.Consumer; import java.util.function.Supplier; /** @@ -92,8 +90,6 @@ import java.util.function.Supplier; * => makeSplashScreenContentView -> cachePaint(=AdaptiveIconDrawable#draw) * => WM#addView -> .. waiting for Choreographer#doFrame -> relayout -> draw -> (draw the Paint * directly). - * - * @hide */ public class StartingSurfaceDrawer { static final String TAG = StartingSurfaceDrawer.class.getSimpleName(); @@ -116,10 +112,7 @@ public class StartingSurfaceDrawer { mContext = context; mDisplayManager = mContext.getSystemService(DisplayManager.class); mSplashScreenExecutor = splashScreenExecutor; - final int appRevealAnimDuration = context.getResources().getInteger( - com.android.wm.shell.R.integer.starting_window_app_reveal_anim_duration); - mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, appRevealAnimDuration, - pool); + mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, pool); mSplashScreenExecutor.execute(() -> mChoreographer = Choreographer.getInstance()); } @@ -200,7 +193,7 @@ public class StartingSurfaceDrawer { } final Configuration taskConfig = taskInfo.getConfiguration(); - if (taskConfig != null && !taskConfig.equals(EMPTY)) { + if (taskConfig.diffPublicOnly(context.getResources().getConfiguration()) != 0) { if (DEBUG_SPLASH_SCREEN) { Slog.d(TAG, "addSplashScreen: creating context based" + " on task Configuration " + taskConfig + " for splash screen"); @@ -229,20 +222,11 @@ public class StartingSurfaceDrawer { typedArray.recycle(); } - int windowFlags = 0; - windowFlags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; - - final boolean[] showWallpaper = new boolean[1]; - getWindowResFromContext(context, a -> - showWallpaper[0] = a.getBoolean(R.styleable.Window_windowShowWallpaper, false)); - if (showWallpaper[0]) { - windowFlags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; - } - final PhoneWindow win = new PhoneWindow(context); win.setIsStartingWindow(true); - CharSequence label = context.getResources().getText(labelRes, null); + final Resources res = context.getResources(); + final CharSequence label = res.getText(labelRes, null); // Only change the accessibility title if the label is localized if (label != null) { win.setTitle(label, true); @@ -250,7 +234,12 @@ public class StartingSurfaceDrawer { win.setTitle(nonLocalizedLabel, false); } - win.setType(WindowManager.LayoutParams.TYPE_APPLICATION_STARTING); + int windowFlags = WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; + final TypedArray a = context.obtainStyledAttributes(R.styleable.Window); + if (a.getBoolean(R.styleable.Window_windowShowWallpaper, false)) { + windowFlags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; + } + a.recycle(); // Assumes it's safe to show starting windows of launched apps while // the keyguard is being hidden. This is okay because starting windows never show @@ -264,24 +253,20 @@ public class StartingSurfaceDrawer { // touchable or focusable by the user. We also add in the ALT_FOCUSABLE_IM // flag because we do know that the next window will take input // focus, so we want to get the IME window up on top of us right away. - win.setFlags(windowFlags - | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE - | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE - | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, - windowFlags - | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE - | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE - | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); + windowFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE + | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE + | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM; + win.setFlags(windowFlags, windowFlags); final int iconRes = activityInfo.getIconResource(); final int logoRes = activityInfo.getLogoResource(); win.setDefaultIcon(iconRes); win.setDefaultLogo(logoRes); - win.setLayout(WindowManager.LayoutParams.MATCH_PARENT, - WindowManager.LayoutParams.MATCH_PARENT); - final WindowManager.LayoutParams params = win.getAttributes(); + params.type = WindowManager.LayoutParams.TYPE_APPLICATION_STARTING; + params.width = WindowManager.LayoutParams.MATCH_PARENT; + params.height = WindowManager.LayoutParams.MATCH_PARENT; params.token = appToken; params.packageName = activityInfo.packageName; params.windowAnimations = win.getWindowStyle().getResourceId( @@ -292,10 +277,7 @@ public class StartingSurfaceDrawer { params.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY; params.format = PixelFormat.RGBA_8888; - final Resources res = context.getResources(); - final boolean supportsScreen = res != null && (res.getCompatibilityInfo() != null - && res.getCompatibilityInfo().supportsScreen()); - if (!supportsScreen) { + if (!res.getCompatibilityInfo().supportsScreen()) { params.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COMPATIBLE_WINDOW; } @@ -340,7 +322,7 @@ public class StartingSurfaceDrawer { try { final View view = win.getDecorView(); - final WindowManager wm = mContext.getSystemService(WindowManager.class); + final WindowManager wm = context.getSystemService(WindowManager.class); postAddWindow(taskId, appToken, view, wm, params); // We use the splash screen worker thread to create SplashScreenView while adding the @@ -508,12 +490,6 @@ public class StartingSurfaceDrawer { } } - private void getWindowResFromContext(Context ctx, Consumer<TypedArray> consumer) { - final TypedArray a = ctx.obtainStyledAttributes(R.styleable.Window); - consumer.accept(a); - a.recycle(); - } - /** * Record the view or surface for a starting window. */ diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipAnimationControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipAnimationControllerTest.java index 882d38286130..8ef1df606b43 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipAnimationControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipAnimationControllerTest.java @@ -68,7 +68,7 @@ public class PipAnimationControllerTest extends ShellTestCase { @Before public void setUp() throws Exception { mPipAnimationController = new PipAnimationController( - new PipSurfaceTransactionHelper(mContext)); + new PipSurfaceTransactionHelper()); mLeash = new SurfaceControl.Builder() .setContainerLayer() .setName("FakeLeash") diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h index bebfbee55f12..9d2b6173021d 100644 --- a/libs/hwui/Properties.h +++ b/libs/hwui/Properties.h @@ -180,7 +180,7 @@ enum DebugLevel { /** * Turns on the Skia GPU option "reduceOpsTaskSplitting" which improves GPU - * efficiency but may increase VRAM consumption. Default is "false". + * efficiency but may increase VRAM consumption. Default is "true". */ #define PROPERTY_REDUCE_OPS_TASK_SPLITTING "renderthread.skia.reduceopstasksplitting" diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp index 04aa1cb91492..3421e01b1585 100644 --- a/libs/hwui/renderthread/RenderThread.cpp +++ b/libs/hwui/renderthread/RenderThread.cpp @@ -275,7 +275,7 @@ void RenderThread::requireVkContext() { void RenderThread::initGrContextOptions(GrContextOptions& options) { options.fPreferExternalImagesOverES3 = true; options.fDisableDistanceFieldPaths = true; - if (android::base::GetBoolProperty(PROPERTY_REDUCE_OPS_TASK_SPLITTING, false)) { + if (android::base::GetBoolProperty(PROPERTY_REDUCE_OPS_TASK_SPLITTING, true)) { options.fReduceOpsTaskSplitting = GrContextOptions::Enable::kYes; } else { options.fReduceOpsTaskSplitting = GrContextOptions::Enable::kNo; diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 5952479da702..7c2f5408fffb 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -346,6 +346,43 @@ public class LocationManager { */ public static final String EXTRA_GNSS_CAPABILITIES = "android.location.extra.GNSS_CAPABILITIES"; + /** + * Broadcast intent action for Settings app to inject a footer at the bottom of location + * settings. This is for use only by apps that are included in the system image. + * + * <p>To inject a footer to location settings, you must declare a broadcast receiver for + * this action in the manifest: + * <pre> + * <receiver android:name="com.example.android.footer.MyFooterInjector"> + * <intent-filter> + * <action android:name="com.android.settings.location.INJECT_FOOTER" /> + * </intent-filter> + * <meta-data + * android:name="com.android.settings.location.FOOTER_STRING" + * android:resource="@string/my_injected_footer_string" /> + * </receiver> + * </pre> + * + * <p>This broadcast receiver will never actually be invoked. See also + * {#METADATA_SETTINGS_FOOTER_STRING}. + * + * @hide + */ + public static final String SETTINGS_FOOTER_DISPLAYED_ACTION = + "com.android.settings.location.DISPLAYED_FOOTER"; + + /** + * Metadata name for {@link LocationManager#SETTINGS_FOOTER_DISPLAYED_ACTION} broadcast + * receivers to specify a string resource id as location settings footer text. This is for use + * only by apps that are included in the system image. + * + * <p>See {@link #SETTINGS_FOOTER_DISPLAYED_ACTION} for more detail on how to use. + * + * @hide + */ + public static final String METADATA_SETTINGS_FOOTER_STRING = + "com.android.settings.location.FOOTER_STRING"; + private static final long MAX_SINGLE_LOCATION_TIMEOUT_MS = 30 * 1000; private static final String CACHE_KEY_LOCATION_ENABLED_PROPERTY = diff --git a/location/java/android/location/SatellitePvt.java b/location/java/android/location/SatellitePvt.java index 27c7eda1dae3..1456f74ef6d4 100644 --- a/location/java/android/location/SatellitePvt.java +++ b/location/java/android/location/SatellitePvt.java @@ -28,6 +28,19 @@ import android.os.Parcelable; * same signal transmission time {@link GnssMeasurement#getReceivedSvTimeNanos()}. * * <p>The position and velocity must be in ECEF coordinates. + * + * <p>If {@link GnssMeasurement#getSatellitePvt()} is derived from Broadcast ephemeris, then the + * position is already w.r.t. the antenna phase center. However, if + * {@link GnssMeasurement#getSatellitePvt()} is derived from other modeled orbits, such as + * long-term orbits, or precise orbits, then the orbits may have been computed w.r.t. + * the satellite center of mass, and then GNSS vendors are expected to correct for the effect + * on different phase centers (can differ by meters) of different GNSS signals (e.g. L1, L5) + * on the reported satellite position. Accordingly, we might observe a different satellite + * position reported for L1 GnssMeasurement struct compared to L5 GnssMeasurement struct. + * + * <p>If {@link GnssMeasurement#getReceivedSvTimeNanos()} is not fully decoded, + * {@link GnssMeasurement#getSatellitePvt()} could still be reported and + * {@link GnssMeasurement#getReceivedSvTimeUncertaintyNanos()} would be used to provide confidence. * @hide */ @SystemApi @@ -203,7 +216,7 @@ public final class SatellitePvt implements Parcelable { /** * Returns the signal in Space User Range Error Rate (URE Rate) (meters per second). * - * It covers satellite velocity error and Satellite clock drift + * <p>It covers satellite velocity error and Satellite clock drift * projected to the pseudorange rate measurements. */ @FloatRange(from = 0.0f, fromInclusive = false) @@ -272,6 +285,14 @@ public final class SatellitePvt implements Parcelable { /** * Returns the satellite hardware code bias of the reported code type w.r.t * ionosphere-free measurement in meters. + * + * <p>When broadcast ephemeris is used, this is the offset caused + * by the satellite hardware delays at different frequencies; + * e.g. in IS-GPS-705D, this term is described in Section + * 20.3.3.3.1.2.1. + * + * <p>For GPS this term is ~10ns, and affects the satellite position + * computation by less than a millimeter. */ @FloatRange() public double getHardwareCodeBiasMeters() { @@ -282,6 +303,17 @@ public final class SatellitePvt implements Parcelable { * Returns the satellite time correction for ionospheric-free signal measurement * (meters). The satellite clock correction for the given signal type * = satTimeCorrectionMeters - satHardwareCodeBiasMeters. + * + * <p>When broadcast ephemeris is used, this is the offset modeled in the + * clock terms broadcast over the air by the satellites; + * e.g. in IS-GPS-200H, Section 20.3.3.3.3.1, this term is + * ∆tsv = af0 + af1(t - toc) + af2(t - toc)^2 + ∆tr. + * + * <p>If another source of ephemeris is used for SatellitePvt, then the + * equivalent value of satTimeCorrection must be provided. + * + * <p>For GPS this term is ~1ms, and affects the satellite position + * computation by ~1m. */ @FloatRange() public double getTimeCorrectionMeters() { diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java index 8fee768ecf1e..c8412f214cfa 100644 --- a/media/java/android/media/AudioFormat.java +++ b/media/java/android/media/AudioFormat.java @@ -518,13 +518,13 @@ public final class AudioFormat implements Parcelable { * @hide */ // never unhide - public static final int SAMPLE_RATE_HZ_MIN = 4000; + public static final int SAMPLE_RATE_HZ_MIN = AudioSystem.SAMPLE_RATE_HZ_MIN; /** Maximum value for sample rate, * assuming AudioTrack and AudioRecord share the same limitations. * @hide */ // never unhide - public static final int SAMPLE_RATE_HZ_MAX = 192000; + public static final int SAMPLE_RATE_HZ_MAX = AudioSystem.SAMPLE_RATE_HZ_MAX; /** Sample rate will be a route-dependent value. * For AudioTrack, it is usually the sink sample rate, * and for AudioRecord it is usually the source sample rate. diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index ce9d7e3c8d01..39b7922017e3 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -105,11 +105,31 @@ public class AudioSystem */ public static final int NUM_STREAMS = 5; + /* + * Framework static final constants that are primitives or Strings + * accessed by CTS tests or internal applications must be set from methods + * (or in a static block) to prevent Java compile-time replacement. + * We set them from methods so they are read from the device framework. + * Do not un-hide or change to a numeric literal. + */ + /** Maximum value for AudioTrack channel count - * @hide public for MediaCode only, do not un-hide or change to a numeric literal + * @hide + */ + public static final int OUT_CHANNEL_COUNT_MAX = native_getMaxChannelCount(); + private static native int native_getMaxChannelCount(); + + /** Maximum value for sample rate, used by AudioFormat. + * @hide + */ + public static final int SAMPLE_RATE_HZ_MAX = native_getMaxSampleRate(); + private static native int native_getMaxSampleRate(); + + /** Minimum value for sample rate, used by AudioFormat. + * @hide */ - public static final int OUT_CHANNEL_COUNT_MAX = native_get_FCC_8(); - private static native int native_get_FCC_8(); + public static final int SAMPLE_RATE_HZ_MIN = native_getMinSampleRate(); + private static native int native_getMinSampleRate(); // Expose only the getter method publicly so we can change it in the future private static final int NUM_STREAM_TYPES = 12; diff --git a/media/java/android/media/metrics/PlaybackErrorEvent.java b/media/java/android/media/metrics/PlaybackErrorEvent.java index d155576c9b47..184b35913783 100644 --- a/media/java/android/media/metrics/PlaybackErrorEvent.java +++ b/media/java/android/media/metrics/PlaybackErrorEvent.java @@ -39,71 +39,95 @@ public final class PlaybackErrorEvent extends Event implements Parcelable { /** Error code for runtime errors */ public static final int ERROR_RUNTIME = 2; - /** No network */ - public static final int ERROR_NETWORK_OFFLINE = 3; - /** Connection opening error */ - public static final int ERROR_NETWORK_CONNECT = 4; - /** Bad HTTP status code */ - public static final int ERROR_NETWORK_BAD_STATUS = 5; - /** DNS resolution error */ - public static final int ERROR_NETWORK_DNS = 6; - /** Network socket timeout */ - public static final int ERROR_NETWORK_TIMEOUT = 7; - /** Connection closed */ - public static final int ERROR_NETWORK_CLOSED = 8; - /** Other network errors */ - public static final int ERROR_NETWORK_OTHER = 9; - - /** Manifest parsing error */ - public static final int ERROR_MEDIA_MANIFEST = 10; + /** Error code for lack of network connectivity while trying to access a network resource */ + public static final int ERROR_IO_NETWORK_UNAVAILABLE = 3; + /** Error code for a failure while establishing a network connection */ + public static final int ERROR_IO_NETWORK_CONNECTION_FAILED = 4; + /** Error code for an HTTP server returning an unexpected HTTP response status code */ + public static final int ERROR_IO_BAD_HTTP_STATUS = 5; + /** Error code for failing to resolve a hostname */ + public static final int ERROR_IO_DNS_FAILED = 6; /** - * Media bitstream (audio, video, text, metadata) parsing error, either malformed or - * unsupported. + * Error code for a network timeout, meaning the server is taking too long to fulfill + * a request */ - public static final int ERROR_MEDIA_PARSER = 11; - /** Other media errors */ - public static final int ERROR_MEDIA_OTHER = 12; - - /** Codec initialization failed */ - public static final int ERROR_DECODER_INIT = 13; - /** Decoding failed */ - public static final int ERROR_DECODER_DECODE = 14; - /** Out of memory */ - public static final int ERROR_DECODER_OOM = 15; - /** Other decoder errors */ - public static final int ERROR_DECODER_OTHER = 16; - - /** AudioTrack initialization failed */ - public static final int ERROR_AUDIOTRACK_INIT = 17; - /** AudioTrack writing failed */ - public static final int ERROR_AUDIOTRACK_WRITE = 18; - /** Other AudioTrack errors */ - public static final int ERROR_AUDIOTRACK_OTHER = 19; - - /** Exception in remote controller or player */ + public static final int ERROR_IO_CONNECTION_TIMEOUT = 7; + /** Error code for an existing network connection being unexpectedly closed */ + public static final int ERROR_IO_CONNECTION_CLOSED = 8; + /** Error code for other Input/Output errors */ + public static final int ERROR_IO_OTHER = 9; + + /** Error code for a parsing error associated to a media manifest */ + public static final int ERROR_PARSING_MANIFEST_MALFORMED = 10; + /** Error code for a parsing error associated to a media container format bitstream */ + public static final int ERROR_PARSING_CONTAINER_MALFORMED = 11; + /** Error code for other media parsing errors */ + public static final int ERROR_PARSING_OTHER = 12; + + /** Error code for a decoder initialization failure */ + public static final int ERROR_DECODER_INIT_FAILED = 13; + /** Error code for a failure while trying to decode media samples */ + public static final int ERROR_DECODING_FAILED = 14; + /** + * Error code for trying to decode content whose format exceeds the capabilities of the device. + */ + public static final int ERROR_DECODING_FORMAT_EXCEEDS_CAPABILITIES = 15; + /** Error code for other decoding errors */ + public static final int ERROR_DECODING_OTHER = 16; + + /** Error code for an AudioTrack initialization failure */ + public static final int ERROR_AUDIO_TRACK_INIT_FAILED = 17; + /** Error code for an AudioTrack write operation failure */ + public static final int ERROR_AUDIO_TRACK_WRITE_FAILED = 18; + /** Error code for other AudioTrack errors */ + public static final int ERROR_AUDIO_TRACK_OTHER = 19; + + /** Error code for an unidentified error in a remote controller or player */ public static final int ERROR_PLAYER_REMOTE = 20; - /** Error when a Live playback falls behind the Live DVR window. */ + /** + * Error code for the loading position falling behind the sliding window of available live + * content. + */ public static final int ERROR_PLAYER_BEHIND_LIVE_WINDOW = 21; - /** Other player errors */ + /** Error code for other player errors */ public static final int ERROR_PLAYER_OTHER = 22; - /** Scheme unsupported by device */ - public static final int ERROR_DRM_UNAVAILABLE = 23; - /** Provisioning failed */ + /** Error code for a chosen DRM protection scheme not being supported by the device */ + public static final int ERROR_DRM_SCHEME_UNSUPPORTED = 23; + /** Error code for a failure while provisioning the device */ public static final int ERROR_DRM_PROVISIONING_FAILED = 24; - /** Failed to acquire license */ - public static final int ERROR_DRM_LICENSE_ERROR = 25; - /** Operation prevented by license policy */ - public static final int ERROR_DRM_DISALLOWED = 26; - /** Failure in the DRM system */ + /** Error code for a failure while trying to obtain a license */ + public static final int ERROR_DRM_LICENSE_ACQUISITION_FAILED = 25; + /** Error code an operation being disallowed by a license policy */ + public static final int ERROR_DRM_DISALLOWED_OPERATION = 26; + /** Error code for an error in the DRM system */ public static final int ERROR_DRM_SYSTEM_ERROR = 27; - /** Incompatible content */ + /** Error code for attempting to play incompatible DRM-protected content */ public static final int ERROR_DRM_CONTENT_ERROR = 28; - /** Device has been revoked */ - public static final int ERROR_DRM_REVOKED = 29; - /** Other drm errors */ + /** Error code for the device having revoked DRM privileges */ + public static final int ERROR_DRM_DEVICE_REVOKED = 29; + /** Error code for other DRM errors */ public static final int ERROR_DRM_OTHER = 30; + /** Error code for a non-existent file */ + public static final int ERROR_IO_FILE_NOT_FOUND = 31; + /** + * Error code for lack of permission to perform an IO operation, for example, lack of permission + * to access internet or external storage. + */ + public static final int ERROR_IO_NO_PERMISSION = 32; + + /** Error code for an unsupported feature in a media manifest */ + public static final int ERROR_PARSING_MANIFEST_UNSUPPORTED = 33; + /** + * Error code for attempting to extract a file with an unsupported media container format, or an + * unsupported media container feature + */ + public static final int ERROR_PARSING_CONTAINER_UNSUPPORTED = 34; + + /** Error code for trying to decode content whose format is not supported */ + public static final int ERROR_DECODING_FORMAT_UNSUPPORTED = 35; + private final @Nullable String mExceptionStack; private final int mErrorCode; @@ -116,34 +140,39 @@ public final class PlaybackErrorEvent extends Event implements Parcelable { ERROR_UNKNOWN, ERROR_OTHER, ERROR_RUNTIME, - ERROR_NETWORK_OFFLINE, - ERROR_NETWORK_CONNECT, - ERROR_NETWORK_BAD_STATUS, - ERROR_NETWORK_DNS, - ERROR_NETWORK_TIMEOUT, - ERROR_NETWORK_CLOSED, - ERROR_NETWORK_OTHER, - ERROR_MEDIA_MANIFEST, - ERROR_MEDIA_PARSER, - ERROR_MEDIA_OTHER, - ERROR_DECODER_INIT, - ERROR_DECODER_DECODE, - ERROR_DECODER_OOM, - ERROR_DECODER_OTHER, - ERROR_AUDIOTRACK_INIT, - ERROR_AUDIOTRACK_WRITE, - ERROR_AUDIOTRACK_OTHER, + ERROR_IO_NETWORK_UNAVAILABLE, + ERROR_IO_NETWORK_CONNECTION_FAILED, + ERROR_IO_BAD_HTTP_STATUS, + ERROR_IO_DNS_FAILED, + ERROR_IO_CONNECTION_TIMEOUT, + ERROR_IO_CONNECTION_CLOSED, + ERROR_IO_OTHER, + ERROR_PARSING_MANIFEST_MALFORMED, + ERROR_PARSING_CONTAINER_MALFORMED, + ERROR_PARSING_OTHER, + ERROR_DECODER_INIT_FAILED, + ERROR_DECODING_FAILED, + ERROR_DECODING_FORMAT_EXCEEDS_CAPABILITIES, + ERROR_DECODING_OTHER, + ERROR_AUDIO_TRACK_INIT_FAILED, + ERROR_AUDIO_TRACK_WRITE_FAILED, + ERROR_AUDIO_TRACK_OTHER, ERROR_PLAYER_REMOTE, ERROR_PLAYER_BEHIND_LIVE_WINDOW, ERROR_PLAYER_OTHER, - ERROR_DRM_UNAVAILABLE, + ERROR_DRM_SCHEME_UNSUPPORTED, ERROR_DRM_PROVISIONING_FAILED, - ERROR_DRM_LICENSE_ERROR, - ERROR_DRM_DISALLOWED, + ERROR_DRM_LICENSE_ACQUISITION_FAILED, + ERROR_DRM_DISALLOWED_OPERATION, ERROR_DRM_SYSTEM_ERROR, ERROR_DRM_CONTENT_ERROR, - ERROR_DRM_REVOKED, + ERROR_DRM_DEVICE_REVOKED, ERROR_DRM_OTHER, + ERROR_IO_FILE_NOT_FOUND, + ERROR_IO_NO_PERMISSION, + ERROR_PARSING_MANIFEST_UNSUPPORTED, + ERROR_PARSING_CONTAINER_UNSUPPORTED, + ERROR_DECODING_FORMAT_UNSUPPORTED, }) @Retention(java.lang.annotation.RetentionPolicy.SOURCE) public @interface ErrorCode {} diff --git a/packages/Connectivity/framework/api/module-lib-current.txt b/packages/Connectivity/framework/api/module-lib-current.txt index 90580fa17b79..78dff21b6c68 100644 --- a/packages/Connectivity/framework/api/module-lib-current.txt +++ b/packages/Connectivity/framework/api/module-lib-current.txt @@ -109,7 +109,7 @@ package android.net { public final class NetworkCapabilities implements android.os.Parcelable { method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getUids(); - method public boolean hasUnwantedCapability(int); + method public boolean hasForbiddenCapability(int); field public static final long REDACT_ALL = -1L; // 0xffffffffffffffffL field public static final long REDACT_FOR_ACCESS_FINE_LOCATION = 1L; // 0x1L field public static final long REDACT_FOR_LOCAL_MAC_ADDRESS = 2L; // 0x2L @@ -123,13 +123,13 @@ package android.net { } public class NetworkRequest implements android.os.Parcelable { - method @NonNull public int[] getUnwantedCapabilities(); - method public boolean hasUnwantedCapability(int); + method @NonNull public int[] getForbiddenCapabilities(); + method public boolean hasForbiddenCapability(int); } public static class NetworkRequest.Builder { - method @NonNull public android.net.NetworkRequest.Builder addUnwantedCapability(int); - method @NonNull public android.net.NetworkRequest.Builder removeUnwantedCapability(int); + method @NonNull public android.net.NetworkRequest.Builder addForbiddenCapability(int); + method @NonNull public android.net.NetworkRequest.Builder removeForbiddenCapability(int); method @NonNull public android.net.NetworkRequest.Builder setUids(@Nullable java.util.Set<android.util.Range<java.lang.Integer>>); } diff --git a/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java b/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java index 775c88f20d56..0bafd5b2f817 100644 --- a/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java +++ b/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java @@ -183,7 +183,7 @@ public final class NetworkCapabilities implements Parcelable { throw new UnsupportedOperationException( "Cannot clear NetworkCapabilities when mRedactions is set"); } - mNetworkCapabilities = mTransportTypes = mUnwantedNetworkCapabilities = 0; + mNetworkCapabilities = mTransportTypes = mForbiddenNetworkCapabilities = 0; mLinkUpBandwidthKbps = mLinkDownBandwidthKbps = LINK_BANDWIDTH_UNSPECIFIED; mNetworkSpecifier = null; mTransportInfo = null; @@ -219,7 +219,7 @@ public final class NetworkCapabilities implements Parcelable { mUids = (nc.mUids == null) ? null : new ArraySet<>(nc.mUids); setAdministratorUids(nc.getAdministratorUids()); mOwnerUid = nc.mOwnerUid; - mUnwantedNetworkCapabilities = nc.mUnwantedNetworkCapabilities; + mForbiddenNetworkCapabilities = nc.mForbiddenNetworkCapabilities; mSSID = nc.mSSID; mPrivateDnsBroken = nc.mPrivateDnsBroken; mRequestorUid = nc.mRequestorUid; @@ -237,7 +237,7 @@ public final class NetworkCapabilities implements Parcelable { /** * If any capabilities specified here they must not exist in the matching Network. */ - private long mUnwantedNetworkCapabilities; + private long mForbiddenNetworkCapabilities; /** @hide */ @Retention(RetentionPolicy.SOURCE) @@ -595,21 +595,21 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ public @NonNull NetworkCapabilities addCapability(@NetCapability int capability) { - // If the given capability was previously added to the list of unwanted capabilities - // then the capability will also be removed from the list of unwanted capabilities. - // TODO: Consider adding unwanted capabilities to the public API and mention this + // If the given capability was previously added to the list of forbidden capabilities + // then the capability will also be removed from the list of forbidden capabilities. + // TODO: Consider adding forbidden capabilities to the public API and mention this // in the documentation. checkValidCapability(capability); mNetworkCapabilities |= 1L << capability; - // remove from unwanted capability list - mUnwantedNetworkCapabilities &= ~(1L << capability); + // remove from forbidden capability list + mForbiddenNetworkCapabilities &= ~(1L << capability); return this; } /** - * Adds the given capability to the list of unwanted capabilities of this + * Adds the given capability to the list of forbidden capabilities of this * {@code NetworkCapability} instance. Note that when searching for a network to - * satisfy a request, the network must not contain any capability from unwanted capability + * satisfy a request, the network must not contain any capability from forbidden capability * list. * <p> * If the capability was previously added to the list of required capabilities (for @@ -619,9 +619,9 @@ public final class NetworkCapabilities implements Parcelable { * @see #addCapability(int) * @hide */ - public void addUnwantedCapability(@NetCapability int capability) { + public void addForbiddenCapability(@NetCapability int capability) { checkValidCapability(capability); - mUnwantedNetworkCapabilities |= 1L << capability; + mForbiddenNetworkCapabilities |= 1L << capability; mNetworkCapabilities &= ~(1L << capability); // remove from requested capabilities } @@ -641,16 +641,16 @@ public final class NetworkCapabilities implements Parcelable { } /** - * Removes (if found) the given unwanted capability from this {@code NetworkCapability} - * instance that were added via addUnwantedCapability(int) or setCapabilities(int[], int[]). + * Removes (if found) the given forbidden capability from this {@code NetworkCapability} + * instance that were added via addForbiddenCapability(int) or setCapabilities(int[], int[]). * * @param capability the capability to be removed. * @return This NetworkCapabilities instance, to facilitate chaining. * @hide */ - public @NonNull NetworkCapabilities removeUnwantedCapability(@NetCapability int capability) { + public @NonNull NetworkCapabilities removeForbiddenCapability(@NetCapability int capability) { checkValidCapability(capability); - mUnwantedNetworkCapabilities &= ~(1L << capability); + mForbiddenNetworkCapabilities &= ~(1L << capability); return this; } @@ -679,13 +679,13 @@ public final class NetworkCapabilities implements Parcelable { } /** - * Gets all the unwanted capabilities set on this {@code NetworkCapability} instance. + * Gets all the forbidden capabilities set on this {@code NetworkCapability} instance. * - * @return an array of unwanted capability values for this instance. + * @return an array of forbidden capability values for this instance. * @hide */ - public @NetCapability int[] getUnwantedCapabilities() { - return NetworkCapabilitiesUtils.unpackBits(mUnwantedNetworkCapabilities); + public @NetCapability int[] getForbiddenCapabilities() { + return NetworkCapabilitiesUtils.unpackBits(mForbiddenNetworkCapabilities); } @@ -696,9 +696,9 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ public void setCapabilities(@NetCapability int[] capabilities, - @NetCapability int[] unwantedCapabilities) { + @NetCapability int[] forbiddenCapabilities) { mNetworkCapabilities = NetworkCapabilitiesUtils.packBits(capabilities); - mUnwantedNetworkCapabilities = NetworkCapabilitiesUtils.packBits(unwantedCapabilities); + mForbiddenNetworkCapabilities = NetworkCapabilitiesUtils.packBits(forbiddenCapabilities); } /** @@ -723,9 +723,9 @@ public final class NetworkCapabilities implements Parcelable { /** @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public boolean hasUnwantedCapability(@NetCapability int capability) { + public boolean hasForbiddenCapability(@NetCapability int capability) { return isValidCapability(capability) - && ((mUnwantedNetworkCapabilities & (1L << capability)) != 0); + && ((mForbiddenNetworkCapabilities & (1L << capability)) != 0); } /** @@ -755,14 +755,14 @@ public final class NetworkCapabilities implements Parcelable { private void combineNetCapabilities(@NonNull NetworkCapabilities nc) { final long wantedCaps = this.mNetworkCapabilities | nc.mNetworkCapabilities; - final long unwantedCaps = - this.mUnwantedNetworkCapabilities | nc.mUnwantedNetworkCapabilities; - if ((wantedCaps & unwantedCaps) != 0) { + final long forbiddenCaps = + this.mForbiddenNetworkCapabilities | nc.mForbiddenNetworkCapabilities; + if ((wantedCaps & forbiddenCaps) != 0) { throw new IllegalArgumentException( - "Cannot have the same capability in wanted and unwanted lists."); + "Cannot have the same capability in wanted and forbidden lists."); } this.mNetworkCapabilities = wantedCaps; - this.mUnwantedNetworkCapabilities = unwantedCaps; + this.mForbiddenNetworkCapabilities = forbiddenCaps; } /** @@ -773,7 +773,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ public @Nullable String describeFirstNonRequestableCapability() { - final long nonRequestable = (mNetworkCapabilities | mUnwantedNetworkCapabilities) + final long nonRequestable = (mNetworkCapabilities | mForbiddenNetworkCapabilities) & NON_REQUESTABLE_CAPABILITIES; if (nonRequestable != 0) { @@ -790,28 +790,28 @@ public final class NetworkCapabilities implements Parcelable { private boolean satisfiedByNetCapabilities(@NonNull NetworkCapabilities nc, boolean onlyImmutable) { long requestedCapabilities = mNetworkCapabilities; - long requestedUnwantedCapabilities = mUnwantedNetworkCapabilities; + long requestedForbiddenCapabilities = mForbiddenNetworkCapabilities; long providedCapabilities = nc.mNetworkCapabilities; if (onlyImmutable) { requestedCapabilities &= ~MUTABLE_CAPABILITIES; - requestedUnwantedCapabilities &= ~MUTABLE_CAPABILITIES; + requestedForbiddenCapabilities &= ~MUTABLE_CAPABILITIES; } return ((providedCapabilities & requestedCapabilities) == requestedCapabilities) - && ((requestedUnwantedCapabilities & providedCapabilities) == 0); + && ((requestedForbiddenCapabilities & providedCapabilities) == 0); } /** @hide */ public boolean equalsNetCapabilities(@NonNull NetworkCapabilities nc) { return (nc.mNetworkCapabilities == this.mNetworkCapabilities) - && (nc.mUnwantedNetworkCapabilities == this.mUnwantedNetworkCapabilities); + && (nc.mForbiddenNetworkCapabilities == this.mForbiddenNetworkCapabilities); } private boolean equalsNetCapabilitiesRequestable(@NonNull NetworkCapabilities that) { - return ((this.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) == - (that.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)) - && ((this.mUnwantedNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) == - (that.mUnwantedNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)); + return ((this.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) + == (that.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)) + && ((this.mForbiddenNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) + == (that.mForbiddenNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)); } /** @@ -1734,7 +1734,7 @@ public final class NetworkCapabilities implements Parcelable { * Combine a set of Capabilities to this one. Useful for coming up with the complete set. * <p> * Note that this method may break an invariant of having a particular capability in either - * wanted or unwanted lists but never in both. Requests that have the same capability in + * wanted or forbidden lists but never in both. Requests that have the same capability in * both lists will never be satisfied. * @hide */ @@ -1875,8 +1875,8 @@ public final class NetworkCapabilities implements Parcelable { public int hashCode() { return (int) (mNetworkCapabilities & 0xFFFFFFFF) + ((int) (mNetworkCapabilities >> 32) * 3) - + ((int) (mUnwantedNetworkCapabilities & 0xFFFFFFFF) * 5) - + ((int) (mUnwantedNetworkCapabilities >> 32) * 7) + + ((int) (mForbiddenNetworkCapabilities & 0xFFFFFFFF) * 5) + + ((int) (mForbiddenNetworkCapabilities >> 32) * 7) + ((int) (mTransportTypes & 0xFFFFFFFF) * 11) + ((int) (mTransportTypes >> 32) * 13) + mLinkUpBandwidthKbps * 17 @@ -1911,7 +1911,7 @@ public final class NetworkCapabilities implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(mNetworkCapabilities); - dest.writeLong(mUnwantedNetworkCapabilities); + dest.writeLong(mForbiddenNetworkCapabilities); dest.writeLong(mTransportTypes); dest.writeInt(mLinkUpBandwidthKbps); dest.writeInt(mLinkDownBandwidthKbps); @@ -1935,7 +1935,7 @@ public final class NetworkCapabilities implements Parcelable { NetworkCapabilities netCap = new NetworkCapabilities(); netCap.mNetworkCapabilities = in.readLong(); - netCap.mUnwantedNetworkCapabilities = in.readLong(); + netCap.mForbiddenNetworkCapabilities = in.readLong(); netCap.mTransportTypes = in.readLong(); netCap.mLinkUpBandwidthKbps = in.readInt(); netCap.mLinkDownBandwidthKbps = in.readInt(); @@ -1989,9 +1989,9 @@ public final class NetworkCapabilities implements Parcelable { appendStringRepresentationOfBitMaskToStringBuilder(sb, mNetworkCapabilities, NetworkCapabilities::capabilityNameOf, "&"); } - if (0 != mUnwantedNetworkCapabilities) { - sb.append(" Unwanted: "); - appendStringRepresentationOfBitMaskToStringBuilder(sb, mUnwantedNetworkCapabilities, + if (0 != mForbiddenNetworkCapabilities) { + sb.append(" Forbidden: "); + appendStringRepresentationOfBitMaskToStringBuilder(sb, mForbiddenNetworkCapabilities, NetworkCapabilities::capabilityNameOf, "&"); } if (mLinkUpBandwidthKbps > 0) { diff --git a/packages/Connectivity/framework/src/android/net/NetworkRequest.java b/packages/Connectivity/framework/src/android/net/NetworkRequest.java index 194b8ff4eb5e..a384109e2300 100644 --- a/packages/Connectivity/framework/src/android/net/NetworkRequest.java +++ b/packages/Connectivity/framework/src/android/net/NetworkRequest.java @@ -311,7 +311,7 @@ public class NetworkRequest implements Parcelable { * * @see #addCapability(int) * - * @param capability The capability to add to unwanted capability list. + * @param capability The capability to add to forbidden capability list. * @return The builder to facilitate chaining. * * @hide @@ -319,15 +319,15 @@ public class NetworkRequest implements Parcelable { @NonNull @SuppressLint("MissingGetterMatchingBuilder") @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public Builder addUnwantedCapability(@NetworkCapabilities.NetCapability int capability) { - mNetworkCapabilities.addUnwantedCapability(capability); + public Builder addForbiddenCapability(@NetworkCapabilities.NetCapability int capability) { + mNetworkCapabilities.addForbiddenCapability(capability); return this; } /** - * Removes (if found) the given unwanted capability from this builder instance. + * Removes (if found) the given forbidden capability from this builder instance. * - * @param capability The unwanted capability to remove. + * @param capability The forbidden capability to remove. * @return The builder to facilitate chaining. * * @hide @@ -335,8 +335,9 @@ public class NetworkRequest implements Parcelable { @NonNull @SuppressLint("BuilderSetStyle") @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public Builder removeUnwantedCapability(@NetworkCapabilities.NetCapability int capability) { - mNetworkCapabilities.removeUnwantedCapability(capability); + public Builder removeForbiddenCapability( + @NetworkCapabilities.NetCapability int capability) { + mNetworkCapabilities.removeForbiddenCapability(capability); return this; } @@ -598,13 +599,13 @@ public class NetworkRequest implements Parcelable { } /** - * @see Builder#addUnwantedCapability(int) + * @see Builder#addForbiddenCapability(int) * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public boolean hasUnwantedCapability(@NetCapability int capability) { - return networkCapabilities.hasUnwantedCapability(capability); + public boolean hasForbiddenCapability(@NetCapability int capability) { + return networkCapabilities.hasForbiddenCapability(capability); } /** @@ -690,18 +691,18 @@ public class NetworkRequest implements Parcelable { } /** - * Gets all the unwanted capabilities set on this {@code NetworkRequest} instance. + * Gets all the forbidden capabilities set on this {@code NetworkRequest} instance. * - * @return an array of unwanted capability values for this instance. + * @return an array of forbidden capability values for this instance. * * @hide */ @NonNull @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public @NetCapability int[] getUnwantedCapabilities() { - // No need to make a defensive copy here as NC#getUnwantedCapabilities() already returns + public @NetCapability int[] getForbiddenCapabilities() { + // No need to make a defensive copy here as NC#getForbiddenCapabilities() already returns // a new array. - return networkCapabilities.getUnwantedCapabilities(); + return networkCapabilities.getForbiddenCapabilities(); } /** diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java index c47638ac239b..b4fe7ed1a8fb 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java @@ -78,6 +78,10 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { super.startActivity(intent, options); return; } + if (options != null) { + super.startActivity(intent, getMergedBundleForTransition(options)); + return; + } super.startActivity(intent, getActivityOptionsBundle(toolbar)); } @@ -110,6 +114,11 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { super.startActivityForResult(intent, requestCode, options); return; } + if (options != null) { + super.startActivityForResult(intent, requestCode, + getMergedBundleForTransition(options)); + return; + } super.startActivityForResult(intent, requestCode, getActivityOptionsBundle(toolbar)); } @@ -133,4 +142,15 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { return ActivityOptions.makeSceneTransitionAnimation(this, toolbar, "shared_element_view").toBundle(); } + + private Bundle getMergedBundleForTransition(@NonNull Bundle options) { + final Toolbar toolbar = getToolbar(); + final Bundle mergedBundle = new Bundle(); + mergedBundle.putAll(options); + final Bundle activityOptionsBundle = getActivityOptionsBundle(toolbar); + if (activityOptionsBundle != null) { + mergedBundle.putAll(activityOptionsBundle); + } + return mergedBundle; + } } diff --git a/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml b/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml new file mode 100644 index 000000000000..205485d76145 --- /dev/null +++ b/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?android:attr/listPreferredItemHeight" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" + android:background="?android:attr/selectableItemBackground" + android:orientation="vertical" + android:importantForAccessibility = "no" + android:clipToPadding="false"> + + <LinearLayout + android:id="@+id/icon_frame" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:minWidth="56dp" + android:gravity="start|top" + android:orientation="horizontal" + android:paddingEnd="12dp" + android:paddingTop="16dp" + android:paddingBottom="4dp"> + <ImageView + android:id="@android:id/icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + </LinearLayout> + + <com.android.settingslib.widget.LinkTextView + android:id="@android:id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingBottom="16dp" + android:paddingTop="16dp" + android:maxLines="10" + android:textColor="?android:attr/textColorSecondary" + android:ellipsize="marquee" /> + +</LinearLayout>
\ No newline at end of file diff --git a/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml b/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml index 7a550aed94ac..7567c170c41d 100644 --- a/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml +++ b/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml @@ -23,7 +23,7 @@ android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:background="?android:attr/selectableItemBackground" - android:orientation="vertical" + android:importantForAccessibility = "no" android:clipToPadding="false"> <LinearLayout diff --git a/packages/SettingsLib/MainSwitchPreference/Android.bp b/packages/SettingsLib/MainSwitchPreference/Android.bp index 7b7496ca650a..4ce854ada849 100644 --- a/packages/SettingsLib/MainSwitchPreference/Android.bp +++ b/packages/SettingsLib/MainSwitchPreference/Android.bp @@ -14,7 +14,7 @@ android_library { resource_dirs: ["res"], static_libs: [ - "androidx.preference_preference", + "androidx.preference_preference", ], sdk_version: "system_current", diff --git a/packages/SettingsLib/MainSwitchPreference/lint-baseline.xml b/packages/SettingsLib/MainSwitchPreference/lint-baseline.xml index 0ecf97952899..017d1fcdd9fc 100644 --- a/packages/SettingsLib/MainSwitchPreference/lint-baseline.xml +++ b/packages/SettingsLib/MainSwitchPreference/lint-baseline.xml @@ -7,7 +7,7 @@ errorLine1=" android:id="@android:id/switch_widget"" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <location - file="frameworks/base/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_bar.xml" + file="frameworks/base/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_bar.xml" line="49" column="9"/> </issue> @@ -15,7 +15,7 @@ <issue id="NewApi" message="`@android:style/Widget.Material.CompoundButton.Switch` requires API level 24 (current min is 21)" - errorLine1=" <style name="Settings.MainSwitch" parent="@android:style/Widget.Material.CompoundButton.Switch">" + errorLine1=" <style name="MainSwitch.Settingslib" parent="@android:style/Widget.Material.CompoundButton.Switch">" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <location file="frameworks/base/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml" @@ -26,7 +26,7 @@ <issue id="NewApi" message="`@android:style/Widget.Material.CompoundButton.Switch` requires API level 24 (current min is 21)" - errorLine1=" <style name="Widget.SwitchBar.Switch" parent="@android:style/Widget.Material.CompoundButton.Switch">" + errorLine1=" <style name="SwitchBar.Switch.Settingslib" parent="@android:style/Widget.Material.CompoundButton.Switch">" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"> <location file="frameworks/base/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml" @@ -37,7 +37,7 @@ <issue id="NewApi" message="`android:trackTint` requires API level 23 (current min is 21)" - errorLine1=" <item name="android:trackTint">@color/switchbar_switch_track_tint</item>" + errorLine1=" <item name="android:trackTint">@color/settingslib_switchbar_switch_track_tint</item>" errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~"> <location file="frameworks/base/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml" diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_switch_bar_bg_disabled.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_switch_bar_bg_disabled.xml new file mode 100644 index 000000000000..088e82bb4260 --- /dev/null +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_switch_bar_bg_disabled.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/settingslib_state_off_color"/> + <corners android:radius="@dimen/settingslib_switch_bar_radius"/> + </shape> + </item> +</ripple> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_switch_bar_bg_off.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_switch_bar_bg_off.xml new file mode 100644 index 000000000000..088e82bb4260 --- /dev/null +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_switch_bar_bg_off.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/settingslib_state_off_color"/> + <corners android:radius="@dimen/settingslib_switch_bar_radius"/> + </shape> + </item> +</ripple> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_off.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_switch_bar_bg_on.xml index 2be00b95af3c..250188b892f4 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_off.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_switch_bar_bg_on.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2020 The Android Open Source Project + Copyright (C) 2021 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,17 +15,12 @@ limitations under the License. --> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item - android:top="4dp" - android:left="4dp" - android:right="4dp" - android:bottom="4dp"> - - <shape android:shape="oval" > - <size android:height="20dp" android:width="20dp" /> - <solid android:color="@color/thumb_off" /> - </shape> - - </item> -</layer-list> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/settingslib_state_on_color"/> + <corners android:radius="@dimen/settingslib_switch_bar_radius"/> + </shape> + </item> +</ripple> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_disabled.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_disabled.xml new file mode 100644 index 000000000000..900400eb59d8 --- /dev/null +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_disabled.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:top="@dimen/settingslib_switch_thumb_margin" + android:left="@dimen/settingslib_switch_thumb_margin" + android:right="@dimen/settingslib_switch_thumb_margin" + android:bottom="@dimen/settingslib_switch_thumb_margin"> + <shape android:shape="oval"> + <size + android:height="@dimen/settingslib_switch_thumb_size" + android:width="@dimen/settingslib_switch_thumb_size"/> + <solid + android:color="@color/settingslib_state_off_color" + android:alpha="?android:attr/disabledAlpha"/> + </shape> + </item> +</layer-list> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_off.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_off.xml new file mode 100644 index 000000000000..e54c33211e3e --- /dev/null +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_off.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + 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. + --> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:top="@dimen/settingslib_switch_thumb_margin" + android:left="@dimen/settingslib_switch_thumb_margin" + android:right="@dimen/settingslib_switch_thumb_margin" + android:bottom="@dimen/settingslib_switch_thumb_margin"> + <shape android:shape="oval"> + <size + android:height="@dimen/settingslib_switch_thumb_size" + android:width="@dimen/settingslib_switch_thumb_size"/> + <solid android:color="@color/settingslib_state_off_color"/> + </shape> + </item> +</layer-list> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_on.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_on.xml index e85eb42007b8..0f27fc2f4ad8 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_on.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_on.xml @@ -16,16 +16,16 @@ --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item - android:top="4dp" - android:left="4dp" - android:right="4dp" - android:bottom="4dp"> - - <shape android:shape="oval" > - <size android:height="20dp" android:width="20dp" /> - <solid android:color="?android:attr/colorAccent" /> - </shape> - - </item> + <item + android:top="@dimen/settingslib_switch_thumb_margin" + android:left="@dimen/settingslib_switch_thumb_margin" + android:right="@dimen/settingslib_switch_thumb_margin" + android:bottom="@dimen/settingslib_switch_thumb_margin"> + <shape android:shape="oval"> + <size + android:height="@dimen/settingslib_switch_thumb_size" + android:width="@dimen/settingslib_switch_thumb_size"/> + <solid android:color="@color/settingslib_state_on_color"/> + </shape> + </item> </layer-list> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_selector.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_selector.xml index 8cc9bb3d5198..06bb779b91ef 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_selector.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_thumb_selector.xml @@ -16,6 +16,7 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/thumb_on" android:state_checked="true" /> - <item android:drawable="@drawable/thumb_off" android:state_checked="false" /> + <item android:drawable="@drawable/settingslib_thumb_on" android:state_checked="true"/> + <item android:drawable="@drawable/settingslib_thumb_off" android:state_checked="false"/> + <item android:drawable="@drawable/settingslib_thumb_disabled" android:state_enabled="false"/> </selector> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_disabled_background.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_disabled_background.xml new file mode 100644 index 000000000000..15dfcb70e25e --- /dev/null +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_disabled_background.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" + android:width="@dimen/settingslib_switch_track_width" + android:height="@dimen/settingslib_switch_track_height"> + <solid + android:color="@color/settingslib_track_off_color" + android:alpha="?android:attr/disabledAlpha"/> + <corners android:radius="@dimen/settingslib_switch_track_radius"/> +</shape> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_off_background.xml index cf241129f16d..4d79a6e20776 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_off_background.xml @@ -15,12 +15,10 @@ limitations under the License. --> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/track_on_background" /> - <item - android:width="13.19dp" - android:height="10.06dp" - android:gravity="center" - android:right="21dp" - android:drawable="@drawable/track_on_indicator" /> -</layer-list> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" + android:width="@dimen/settingslib_switch_track_width" + android:height="@dimen/settingslib_switch_track_height"> + <solid android:color="@color/settingslib_track_off_color"/> + <corners android:radius="@dimen/settingslib_switch_track_radius"/> +</shape> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_on_background.xml index b29f4596d77c..c12d012a0508 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_on_background.xml @@ -15,12 +15,10 @@ limitations under the License. --> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/track_off_background" /> - <item - android:width="13.33dp" - android:height="1.67dp" - android:left="21dp" - android:gravity="center" - android:drawable="@drawable/track_off_indicator" /> -</layer-list> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" + android:width="@dimen/settingslib_switch_track_width" + android:height="@dimen/settingslib_switch_track_height"> + <solid android:color="@color/settingslib_track_on_color"/> + <corners android:radius="@dimen/settingslib_switch_track_radius"/> +</shape> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_selector.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_selector.xml index 5c699be4939a..a38c3b4241a3 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_selector.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/settingslib_track_selector.xml @@ -16,6 +16,7 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/track_on" android:state_checked="true" /> - <item android:drawable="@drawable/track_off" android:state_checked="false" /> + <item android:drawable="@drawable/settingslib_track_on_background" android:state_checked="true"/> + <item android:drawable="@drawable/settingslib_track_off_background" android:state_checked="false"/> + <item android:drawable="@drawable/settingslib_track_disabled_background" android:state_enabled="false"/> </selector> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_background.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_background.xml deleted file mode 100644 index c838654dd209..000000000000 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_background.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - 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. - --> - -<vector - xmlns:android="http://schemas.android.com/apk/res/android" - android:width="52dp" - android:height="28dp" - android:viewportWidth="52" - android:viewportHeight="28"> - - <group> - <clip-path - android:pathData="M14 0H38C45.732 0 52 6.26801 52 14C52 21.732 45.732 28 38 28H14C6.26801 28 0 21.732 0 14C0 6.26801 6.26801 0 14 0Z" /> - - <path - android:pathData="M0 0V28H52V0" - android:fillColor="@color/track_off" /> - </group> - -</vector> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_indicator.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_indicator.xml deleted file mode 100644 index 6cc6224ae6c5..000000000000 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_indicator.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - 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. - --> - -<vector - xmlns:android="http://schemas.android.com/apk/res/android" - android:width="13.33dp" - android:height="1.67dp" - android:viewportWidth="13.33" - android:viewportHeight="1.67"> - - <group> - <clip-path - android:pathData="M0 0H13.3333V1.66667H0V0Z" /> - - <path - android:pathData="M0 0V1.66667H13.3333V0" - android:fillColor="@android:color/white" /> - </group> - -</vector> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_background.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_background.xml deleted file mode 100644 index bb1a7ef9c733..000000000000 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_background.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - 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. - --> - -<vector - xmlns:android="http://schemas.android.com/apk/res/android" - android:width="52dp" - android:height="28dp" - android:viewportWidth="52" - android:viewportHeight="28" - android:tint="@*android:color/switch_track_material"> - - <group> - <clip-path - android:pathData="M14 0H38C45.732 0 52 6.26801 52 14C52 21.732 45.732 28 38 28H14C6.26801 28 0 21.732 0 14C0 6.26801 6.26801 0 14 0Z" /> - - <path - android:pathData="M0 0V28H52V0" - android:fillColor="@*android:color/white_disabled_material" /> - - </group> - -</vector> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_indicator.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_indicator.xml deleted file mode 100644 index 2281d045e101..000000000000 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_indicator.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - 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. - --> - -<vector - xmlns:android="http://schemas.android.com/apk/res/android" - android:width="13.19dp" - android:height="10.06dp" - android:viewportWidth="13.19" - android:viewportHeight="10.06"> - - <group> - <path - android:pathData="M4.75012 8.12738L1.62262 4.99988L0.557617 6.05738L4.75012 10.2499L13.7501 1.24988L12.6926 0.192383L4.75012 8.12738Z" - android:fillColor="@android:color/white" /> - </group> - -</vector> diff --git a/packages/SettingsLib/MainSwitchPreference/res/layout-v31/main_switch_bar.xml b/packages/SettingsLib/MainSwitchPreference/res/layout-v31/settingslib_main_switch_bar.xml index 3ce9421f8e97..27c30ca620d1 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/layout-v31/main_switch_bar.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/layout-v31/settingslib_main_switch_bar.xml @@ -19,17 +19,20 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="match_parent" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" + android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" + android:paddingRight="?android:attr/listPreferredItemPaddingRight" android:background="?android:attr/colorBackground" android:orientation="vertical"> <LinearLayout android:id="@+id/frame" - android:minHeight="@dimen/min_switch_bar_height" + android:minHeight="@dimen/settingslib_min_switch_bar_height" android:layout_height="wrap_content" android:layout_width="match_parent" - android:background="?android:attr/selectableItemBackground" - android:paddingLeft="@dimen/switchbar_margin_start" - android:paddingRight="@dimen/switchbar_margin_end"> + android:paddingLeft="@dimen/settingslib_switchbar_margin_start" + android:paddingRight="@dimen/settingslib_switchbar_margin_end"> <TextView android:id="@+id/switch_text" @@ -41,35 +44,29 @@ android:maxLines="2" android:ellipsize="end" android:textAppearance="?android:attr/textAppearanceListItem" - android:textAlignment="viewStart" - style="@style/MainSwitchText" /> + style="@style/MainSwitchText.Settingslib" /> <ImageView android:id="@+id/restricted_icon" - android:layout_width="@dimen/restricted_icon_size" - android:layout_height="@dimen/restricted_icon_size" + android:layout_width="@dimen/settingslib_restricted_icon_size" + android:layout_height="@dimen/settingslib_restricted_icon_size" android:tint="?android:attr/colorAccent" android:theme="@android:style/Theme.Material" android:layout_gravity="center_vertical" - android:layout_marginEnd="@dimen/restricted_icon_margin_end" + android:layout_marginEnd="@dimen/settingslib_restricted_icon_margin_end" android:src="@*android:drawable/ic_info" android:visibility="gone" /> <Switch android:id="@android:id/switch_widget" android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_height="48dp" android:layout_gravity="center_vertical" - android:track="@drawable/track_selector" - android:thumb="@drawable/thumb_selector" - android:theme="@style/Settings.MainSwitch"/> + android:track="@drawable/settingslib_track_selector" + android:thumb="@drawable/settingslib_thumb_selector" + android:theme="@style/MainSwitch.Settingslib"/> </LinearLayout> - <View - android:id="@+id/below_divider" - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?android:attr/listDivider" /> </LinearLayout> diff --git a/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_bar.xml b/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_bar.xml index 5dc320924da2..306145a3e689 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_bar.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_bar.xml @@ -31,17 +31,17 @@ android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title" android:textSize="16sp" android:textColor="?android:attr/textColorPrimaryInverse" - android:layout_marginStart="@dimen/switchbar_subsettings_margin_start" + android:layout_marginStart="@dimen/settingslib_switchbar_subsettings_margin_start" android:textAlignment="viewStart"/> <ImageView android:id="@+id/restricted_icon" - android:layout_width="@dimen/restricted_icon_size" - android:layout_height="@dimen/restricted_icon_size" + android:layout_width="@dimen/settingslib_restricted_icon_size" + android:layout_height="@dimen/settingslib_restricted_icon_size" android:tint="?android:attr/colorAccent" android:theme="@android:style/Theme.Material" android:layout_gravity="center_vertical" - android:layout_marginEnd="@dimen/restricted_icon_margin_end" + android:layout_marginEnd="@dimen/settingslib_restricted_icon_margin_end" android:src="@*android:drawable/ic_info" android:visibility="gone"/> @@ -50,8 +50,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:layout_marginEnd="@dimen/switchbar_subsettings_margin_end" - android:theme="@style/Widget.SwitchBar.Switch"/> + android:layout_marginEnd="@dimen/settingslib_switchbar_subsettings_margin_end" + android:theme="@style/SwitchBar.Switch.Settingslib"/> </LinearLayout> - diff --git a/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_layout.xml b/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_layout.xml index efc047cbd69e..eccf0c091e49 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_layout.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/layout/settingslib_main_switch_layout.xml @@ -20,7 +20,7 @@ android:layout_width="match_parent" > <com.android.settingslib.widget.MainSwitchBar - android:id="@+id/main_switch_bar" + android:id="@+id/settingslib_main_switch_bar" android:visibility="gone" android:layout_height="wrap_content" android:layout_width="match_parent" /> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml b/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml index e54569e9a814..c8d06d4722d0 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml @@ -15,11 +15,10 @@ limitations under the License. --> -<resources> +<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> + <color name="settingslib_switchbar_switch_track_tint">#82000000</color> + <color name="settingslib_switchbar_switch_thumb_tint">@android:color/black</color> - <color name="thumb_off">#BFFFFFFF</color> - <color name="track_off">@*android:color/material_grey_600</color> - - <color name="switchbar_switch_track_tint">#82000000</color> - <color name="switchbar_switch_thumb_tint">@android:color/black</color> + <!-- Material next track on color--> + <color name="settingslib_track_on_color">?androidprv:attr/colorSurfaceHighlight</color> </resources> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values-sw600dp/dmiens.xml b/packages/SettingsLib/MainSwitchPreference/res/values-sw600dp/dmiens.xml index c6bb77ddad7d..55a2589102d3 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values-sw600dp/dmiens.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values-sw600dp/dmiens.xml @@ -18,5 +18,5 @@ <resources> <!-- SwitchBar sub settings margin start / end --> - <dimen name="switchbar_subsettings_margin_start">80dp</dimen> + <dimen name="settingslib_switchbar_subsettings_margin_start">80dp</dimen> </resources> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values-sw720dp-land/dmiens.xml b/packages/SettingsLib/MainSwitchPreference/res/values-sw720dp-land/dmiens.xml index 3e941c22f52b..53995bcf055b 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values-sw720dp-land/dmiens.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values-sw720dp-land/dmiens.xml @@ -18,6 +18,6 @@ <resources> <!-- SwitchBar sub settings margin start / end --> - <dimen name="switchbar_subsettings_margin_start">128dp</dimen> - <dimen name="switchbar_subsettings_margin_end">128dp</dimen> + <dimen name="settingslib_switchbar_subsettings_margin_start">128dp</dimen> + <dimen name="settingslib_switchbar_subsettings_margin_end">128dp</dimen> </resources> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values-sw720dp/dmiens.xml b/packages/SettingsLib/MainSwitchPreference/res/values-sw720dp/dmiens.xml index 2f040daf0d7a..9015c581eff5 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values-sw720dp/dmiens.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values-sw720dp/dmiens.xml @@ -18,6 +18,6 @@ <resources> <!-- SwitchBar sub settings margin start / end --> - <dimen name="switchbar_subsettings_margin_start">80dp</dimen> - <dimen name="switchbar_subsettings_margin_end">80dp</dimen> + <dimen name="settingslib_switchbar_subsettings_margin_start">80dp</dimen> + <dimen name="settingslib_switchbar_subsettings_margin_end">80dp</dimen> </resources> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml b/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml index b5a73b17ed34..3fcc1ddacef0 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml @@ -15,12 +15,20 @@ limitations under the License. --> -<resources> +<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> + <color name="settingslib_switchbar_background_color">@*android:color/material_grey_600</color> + <color name="settingslib_switchbar_switch_track_tint">#BFFFFFFF</color> + <color name="settingslib_switchbar_switch_thumb_tint">@android:color/white</color> - <color name="thumb_off">#BFFFFFFF</color> - <color name="track_off">@*android:color/material_grey_600</color> + <!-- Material next state on color--> + <color name="settingslib_state_on_color">?androidprv:attr/colorAccentPrimary</color> - <color name="switchbar_background_color">@*android:color/material_grey_600</color> - <color name="switchbar_switch_track_tint">#BFFFFFFF</color> - <color name="switchbar_switch_thumb_tint">@android:color/white</color> + <!-- Material next state off color--> + <color name="settingslib_state_off_color">?androidprv:attr/colorAccentSecondary</color> + + <!-- Material next track on color--> + <color name="settingslib_track_on_color">?androidprv:attr/colorAccentPrimaryVariant</color> + + <!-- Material next track off color--> + <color name="settingslib_track_off_color">?androidprv:attr/colorAccentSecondaryVariant</color> </resources> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values/dimens.xml b/packages/SettingsLib/MainSwitchPreference/res/values/dimens.xml index c471bcd645a6..4c528da0979c 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values/dimens.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values/dimens.xml @@ -18,24 +18,42 @@ <resources> <!-- Size of layout margin left --> - <dimen name="switchbar_margin_start">22dp</dimen> + <dimen name="settingslib_switchbar_margin_start">24dp</dimen> <!-- Size of layout margin right --> - <dimen name="switchbar_margin_end">16dp</dimen> + <dimen name="settingslib_switchbar_margin_end">16dp</dimen> <!-- Minimum width of switch --> - <dimen name="min_switch_width">52dp</dimen> + <dimen name="settingslib_min_switch_width">52dp</dimen> <!-- Minimum width of switch bar --> - <dimen name="min_switch_bar_height">72dp</dimen> + <dimen name="settingslib_min_switch_bar_height">72dp</dimen> <!-- Restricted icon size in switch bar --> - <dimen name="restricted_icon_size">@*android:dimen/config_restrictedIconSize</dimen> + <dimen name="settingslib_restricted_icon_size">@*android:dimen/config_restrictedIconSize</dimen> <!-- Restricted icon in switch bar --> - <dimen name="restricted_icon_margin_end">16dp</dimen> + <dimen name="settingslib_restricted_icon_margin_end">16dp</dimen> + + <!-- Radius of switch bar --> + <dimen name="settingslib_switch_bar_radius">28dp</dimen> + + <!-- Margin of switch thumb --> + <dimen name="settingslib_switch_thumb_margin">4dp</dimen> + + <!-- Size of switch thumb --> + <dimen name="settingslib_switch_thumb_size">20dp</dimen> + + <!-- Width of switch track --> + <dimen name="settingslib_switch_track_width">52dp</dimen> + + <!-- Height of switch track --> + <dimen name="settingslib_switch_track_height">28dp</dimen> + + <!-- Radius of switch track --> + <dimen name="settingslib_switch_track_radius">35dp</dimen> <!-- SwitchBar sub settings margin start / end --> - <dimen name="switchbar_subsettings_margin_start">72dp</dimen> - <dimen name="switchbar_subsettings_margin_end">16dp</dimen> + <dimen name="settingslib_switchbar_subsettings_margin_start">72dp</dimen> + <dimen name="settingslib_switchbar_subsettings_margin_end">16dp</dimen> </resources> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml b/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml index e05809799865..472025ab8130 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml @@ -17,17 +17,19 @@ <resources> - <style name="MainSwitchText"> + <style name="MainSwitchText.Settingslib" parent="@android:style/TextAppearance.DeviceDefault.Widget.ActionBar.Title"> <item name="android:textSize">20sp</item> + <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item> + <item name="android:textColor">@android:color/black</item> </style> - <style name="Settings.MainSwitch" parent="@android:style/Widget.Material.CompoundButton.Switch"> - <item name="android:switchMinWidth">@dimen/min_switch_width</item> + <style name="MainSwitch.Settingslib" parent="@android:style/Widget.Material.CompoundButton.Switch"> + <item name="android:switchMinWidth">@dimen/settingslib_min_switch_width</item> </style> - <style name="Widget.SwitchBar.Switch" parent="@android:style/Widget.Material.CompoundButton.Switch"> - <item name="android:trackTint">@color/switchbar_switch_track_tint</item> - <item name="android:thumbTint">@color/switchbar_switch_thumb_tint</item> + <style name="SwitchBar.Switch.Settingslib" parent="@android:style/Widget.Material.CompoundButton.Switch"> + <item name="android:trackTint">@color/settingslib_switchbar_switch_track_tint</item> + <item name="android:thumbTint">@color/settingslib_switchbar_switch_thumb_tint</item> <item name="android:minHeight">48dp</item> <item name="android:minWidth">48dp</item> </style> diff --git a/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchBar.java b/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchBar.java index 2be3f0d815aa..0748acd4d730 100644 --- a/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchBar.java +++ b/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchBar.java @@ -18,6 +18,7 @@ package com.android.settingslib.widget; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; @@ -50,6 +51,10 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec protected TextView mTextView; protected Switch mSwitch; + private Drawable mBackgroundOn; + private Drawable mBackgroundOff; + private Drawable mBackgroundDisabled; + private View mFrameView; public MainSwitchBar(Context context) { this(context, null); @@ -67,22 +72,30 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - LayoutInflater.from(context).inflate(resourceId(context, "layout", "main_switch_bar"), + LayoutInflater.from(context).inflate( + resourceId(context, "layout", "settingslib_main_switch_bar"), this); if (!BuildCompat.isAtLeastS()) { final TypedArray a = context.obtainStyledAttributes( new int[]{android.R.attr.colorAccent}); mBackgroundActivatedColor = a.getColor(0, 0); - mBackgroundColor = context.getColor(R.color.switchbar_background_color); + mBackgroundColor = context.getColor(R.color.settingslib_switchbar_background_color); a.recycle(); } setFocusable(true); setClickable(true); + mFrameView = findViewById(R.id.frame); mTextView = (TextView) findViewById(R.id.switch_text); mSwitch = (Switch) findViewById(android.R.id.switch_widget); + mBackgroundOn = getContext().getDrawable( + resourceId(context, "drawable", "settingslib_switch_bar_bg_on")); + mBackgroundOff = getContext().getDrawable( + resourceId(context, "drawable", "settingslib_switch_bar_bg_off")); + mBackgroundDisabled = getContext().getDrawable( + resourceId(context, "drawable", "settingslib_switch_bar_bg_disabled")); addOnSwitchChangeListener((switchView, isChecked) -> setChecked(isChecked)); @@ -194,21 +207,31 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec super.setEnabled(enabled); mTextView.setEnabled(enabled); mSwitch.setEnabled(enabled); + + if (BuildCompat.isAtLeastS()) { + if (enabled) { + mFrameView.setBackground(isChecked() ? mBackgroundOn : mBackgroundOff); + } else { + mFrameView.setBackground(mBackgroundDisabled); + } + } } private void propagateChecked(boolean isChecked) { + setBackground(isChecked); + final int count = mSwitchChangeListeners.size(); for (int n = 0; n < count; n++) { mSwitchChangeListeners.get(n).onSwitchChanged(mSwitch, isChecked); } } - private void setBackground(boolean checked) { - if (BuildCompat.isAtLeastS()) { - return; + private void setBackground(boolean isChecked) { + if (!BuildCompat.isAtLeastS()) { + setBackgroundColor(isChecked ? mBackgroundActivatedColor : mBackgroundColor); + } else { + mFrameView.setBackground(isChecked ? mBackgroundOn : mBackgroundOff); } - - setBackgroundColor(checked ? mBackgroundActivatedColor : mBackgroundColor); } static class SavedState extends BaseSavedState { @@ -273,6 +296,7 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec mSwitch.setChecked(ss.mChecked); setChecked(ss.mChecked); + setBackground(ss.mChecked); setVisibility(ss.mVisible ? View.VISIBLE : View.GONE); mSwitch.setOnCheckedChangeListener(ss.mVisible ? this : null); diff --git a/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchPreference.java b/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchPreference.java index 1f7f8d44d610..6f371ce2e3c1 100644 --- a/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchPreference.java +++ b/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchPreference.java @@ -63,16 +63,16 @@ public class MainSwitchPreference extends TwoStatePreference { public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); - holder.setDividerAllowedAbove(true); + holder.setDividerAllowedAbove(false); holder.setDividerAllowedBelow(false); - mMainSwitchBar = (MainSwitchBar) holder.findViewById(R.id.main_switch_bar); + mMainSwitchBar = (MainSwitchBar) holder.findViewById(R.id.settingslib_main_switch_bar); updateStatus(isChecked()); registerListenerToSwitchBar(); } private void init(Context context, AttributeSet attrs) { - setLayoutResource(R.layout.main_switch_layout); + setLayoutResource(R.layout.settingslib_main_switch_layout); if (attrs != null) { final TypedArray a = context.obtainStyledAttributes(attrs, diff --git a/packages/SettingsLib/SettingsTheme/res/layout/settings_dropdown_preference.xml b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_dropdown_preference.xml index 87977bdcd6b3..60088bd0470d 100644 --- a/packages/SettingsLib/SettingsTheme/res/layout/settings_dropdown_preference.xml +++ b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_dropdown_preference.xml @@ -30,6 +30,6 @@ android:layout_marginLeft="@dimen/preference_dropdown_padding_start" android:visibility="invisible" /> - <include layout="@layout/settings_preference" /> + <include layout="@layout/settingslib_preference" /> </FrameLayout>
\ No newline at end of file diff --git a/packages/SettingsLib/SettingsTheme/res/layout/settings_icon.xml b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_icon_frame.xml index 55677908b684..f7e0151637b7 100644 --- a/packages/SettingsLib/SettingsTheme/res/layout/settings_icon.xml +++ b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_icon_frame.xml @@ -20,7 +20,7 @@ android:id="@+id/icon_frame" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:minWidth="@dimen/icon_min_width" + android:minWidth="48dp" android:gravity="start|center_vertical" android:orientation="horizontal" android:paddingLeft="0dp" diff --git a/packages/SettingsLib/SettingsTheme/res/layout/settings_preference.xml b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_preference.xml index d2b3169369ae..579abbd58169 100644 --- a/packages/SettingsLib/SettingsTheme/res/layout/settings_preference.xml +++ b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_preference.xml @@ -29,7 +29,7 @@ android:clipToPadding="false" android:baselineAligned="false"> - <include layout="@layout/settings_icon"/> + <include layout="@layout/settingslib_icon_frame"/> <RelativeLayout android:layout_width="0dp" diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/config.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/config.xml index acf06c4ffc29..8993d0fc71f7 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v31/config.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/config.xml @@ -15,6 +15,6 @@ limitations under the License. --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <bool name="config_icon_space_reserved">false</bool> - <bool name="config_allow_divider">false</bool> + <bool name="settingslib_config_icon_space_reserved">false</bool> + <bool name="settingslib_config_allow_divider">false</bool> </resources>
\ No newline at end of file diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/dimens.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/dimens.xml index d092666f972c..acbf35946126 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v31/dimens.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/dimens.xml @@ -16,10 +16,6 @@ --> <resources> - <dimen name="preference_title_font_size">20sp</dimen> - <dimen name="icon_min_width">48dp</dimen> - <dimen name="preference_padding_start">24dp</dimen> - <dimen name="preference_padding_end">16dp</dimen> <dimen name="app_preference_padding_start">20dp</dimen> <dimen name="app_icon_min_width">52dp</dimen> </resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/style_preference.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/style_preference.xml new file mode 100644 index 000000000000..e61d5534aa25 --- /dev/null +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/style_preference.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> +<resources> + <style name="PreferenceTheme.SettingsLib" parent="@style/PreferenceThemeOverlay"> + <item name="preferenceCategoryTitleTextAppearance">@style/TextAppearance.CategoryTitle.SettingsLib</item> + <item name="preferenceCategoryStyle">@style/SettingsCategoryPreference.SettingsLib</item> + <item name="preferenceStyle">@style/SettingsPreference.SettingsLib</item> + <item name="checkBoxPreferenceStyle">@style/SettingsCheckBoxPreference.SettingsLib</item> + <item name="dialogPreferenceStyle">@style/SettingsPreference.SettingsLib</item> + <item name="editTextPreferenceStyle">@style/SettingsEditTextPreference.SettingsLib</item> + <item name="dropdownPreferenceStyle">@style/SettingsDropdownPreference.SettingsLib</item> + <item name="switchPreferenceStyle">@style/SettingsSwitchPreference.SettingsLib</item> + <item name="seekBarPreferenceStyle">@style/SettingsSeekbarPreference.SettingsLib</item> + <item name="footerPreferenceStyle">@style/Preference.Material</item> + </style> + + <style name="SettingsCategoryPreference.SettingsLib" parent="@style/Preference.Category.Material"> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + <item name="allowDividerAbove">@bool/settingslib_config_allow_divider</item> + <item name="allowDividerBelow">@bool/settingslib_config_allow_divider</item> + </style> + + <style name="SettingsPreference.SettingsLib" parent="@style/Preference.Material"> + <item name="layout">@layout/settingslib_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsCheckBoxPreference.SettingsLib" parent="@style/Preference.CheckBoxPreference.Material"> + <item name="layout">@layout/settingslib_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsEditTextPreference.SettingsLib" + parent="@style/Preference.DialogPreference.EditTextPreference.Material"> + <item name="layout">@layout/settingslib_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsDropdownPreference.SettingsLib" parent="@style/Preference.DropDown.Material"> + <item name="layout">@layout/settingslib_dropdown_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsSwitchPreference.SettingsLib" parent="@style/Preference.SwitchPreference.Material"> + <item name="layout">@layout/settingslib_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsSeekbarPreference.SettingsLib" parent="@style/Preference.SeekBarPreference.Material"> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> +</resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values/styles.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml index f24e0083db27..83a259e624bd 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/styles.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml @@ -15,8 +15,11 @@ limitations under the License. --> <resources> - <style name="TextAppearance.PreferenceTitle" + <style name="TextAppearance.PreferenceTitle.SettingsLib" parent="@*android:style/TextAppearance.DeviceDefault.ListItem"> - <item name="android:textSize">@dimen/preference_title_font_size</item> + <item name="android:textSize">20sp</item> </style> + + <style name="TextAppearance.CategoryTitle.SettingsLib" + parent="@*android:style/TextAppearance.DeviceDefault.Body2" /> </resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml new file mode 100644 index 000000000000..69649e042ac4 --- /dev/null +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<resources> + <!-- Only using in Settings application --> + <style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings" > + <item name="android:textAppearanceListItem">@style/TextAppearance.PreferenceTitle.SettingsLib</item> + <item name="android:listPreferredItemPaddingStart">24dp</item> + <item name="android:listPreferredItemPaddingEnd">16dp</item> + <item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item> + </style> + + <!-- Using in SubSettings page including injected settings page --> + <style name="Theme.SubSettingsBase" parent="Theme.SettingsBase"> + <!-- Suppress the built-in action bar --> + <item name="android:windowActionBar">false</item> + <item name="android:windowNoTitle">true</item> + <!-- Set up edge-to-edge configuration for top app bar --> + <item name="android:navigationBarColor">@android:color/transparent</item> + <item name="android:statusBarColor">@android:color/transparent</item> + </style> +</resources>
\ No newline at end of file diff --git a/packages/SettingsLib/SettingsTheme/res/values/config.xml b/packages/SettingsLib/SettingsTheme/res/values/config.xml deleted file mode 100644 index a3bb1da71c9a..000000000000 --- a/packages/SettingsLib/SettingsTheme/res/values/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2021 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <bool name="config_icon_space_reserved">true</bool> - <bool name="config_allow_divider">true</bool> -</resources>
\ No newline at end of file diff --git a/packages/SettingsLib/SettingsTheme/res/values/dimens.xml b/packages/SettingsLib/SettingsTheme/res/values/dimens.xml index 009ae6bc46a9..3f473a3e0e85 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/dimens.xml +++ b/packages/SettingsLib/SettingsTheme/res/values/dimens.xml @@ -17,10 +17,6 @@ <resources> <dimen name="secondary_app_icon_size">32dp</dimen> - <dimen name="preference_title_font_size">16sp</dimen> - <dimen name="icon_min_width">56dp</dimen> - <dimen name="preference_padding_start">?android:attr/dialogPreferredPadding</dimen> - <dimen name="preference_padding_end">?android:attr/dialogPreferredPadding</dimen> <dimen name="app_preference_padding_start">?android:attr/listPreferredItemPaddingStart</dimen> <dimen name="app_icon_min_width">56dp</dimen> </resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml b/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml deleted file mode 100644 index cec8b3294418..000000000000 --- a/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2021 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> -<resources> - <!--DEPRECATED. It will be removed after all of client teams migrated to new style. --> - <style name="PreferenceTheme" parent="@style/PreferenceThemeOverlay"> - <item name="preferenceCategoryStyle">@style/SettingsCategoryPreference</item> - <item name="preferenceStyle">@style/SettingsPreference</item> - <item name="checkBoxPreferenceStyle">@style/SettingsCheckBoxPreference</item> - <item name="dialogPreferenceStyle">@style/SettingsPreference</item> - <item name="editTextPreferenceStyle">@style/SettingsEditTextPreference</item> - <item name="dropdownPreferenceStyle">@style/SettingsDropdownPreference</item> - <item name="switchPreferenceStyle">@style/SettingsSwitchPreference</item> - <item name="seekBarPreferenceStyle">@style/SettingsSeekbarPreference</item> - <item name="footerPreferenceStyle">@style/Preference.Material</item> - </style> - - <style name="PreferenceTheme.SettingsBase" parent="@style/PreferenceThemeOverlay"> - <item name="preferenceCategoryStyle">@style/SettingsCategoryPreference</item> - <item name="preferenceStyle">@style/SettingsPreference</item> - <item name="checkBoxPreferenceStyle">@style/SettingsCheckBoxPreference</item> - <item name="dialogPreferenceStyle">@style/SettingsPreference</item> - <item name="editTextPreferenceStyle">@style/SettingsEditTextPreference</item> - <item name="dropdownPreferenceStyle">@style/SettingsDropdownPreference</item> - <item name="switchPreferenceStyle">@style/SettingsSwitchPreference</item> - <item name="seekBarPreferenceStyle">@style/SettingsSeekbarPreference</item> - <item name="footerPreferenceStyle">@style/Preference.Material</item> - </style> - - <style name="SettingsCategoryPreference" parent="@style/Preference.Category.Material"> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - <item name="allowDividerAbove">@bool/config_allow_divider</item> - <item name="allowDividerBelow">@bool/config_allow_divider</item> - </style> - - <style name="SettingsPreference" parent="@style/Preference.Material"> - <item name="layout">@layout/settings_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsCheckBoxPreference" parent="@style/Preference.CheckBoxPreference.Material"> - <item name="layout">@layout/settings_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsEditTextPreference" - parent="@style/Preference.DialogPreference.EditTextPreference.Material"> - <item name="layout">@layout/settings_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsDropdownPreference" parent="@style/Preference.DropDown.Material"> - <item name="layout">@layout/settings_dropdown_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsSwitchPreference" parent="@style/Preference.SwitchPreference.Material"> - <item name="layout">@layout/settings_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsSeekbarPreference" parent="@style/Preference.SeekBarPreference.Material"> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingFooterPreference" parent="@style/Preference.Material"> - <item name="allowDividerAbove">@bool/config_allow_divider</item> - </style> -</resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values/themes.xml b/packages/SettingsLib/SettingsTheme/res/values/themes.xml index 771fbc2e0b1f..e856aa1a2780 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/themes.xml +++ b/packages/SettingsLib/SettingsTheme/res/values/themes.xml @@ -17,11 +17,8 @@ <resources> <!-- Only using in Settings application --> - <style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings" > - <item name="android:textAppearanceListItem">@style/TextAppearance.PreferenceTitle</item> - <item name="android:listPreferredItemPaddingStart">@dimen/preference_padding_start</item> - <item name="android:listPreferredItemPaddingEnd">@dimen/preference_padding_end</item> - <item name="preferenceTheme">@style/PreferenceTheme.SettingsBase</item> + <style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings"> + <item name="preferenceTheme">@style/PreferenceThemeOverlay</item> </style> <!-- Using in SubSettings page including injected settings page --> @@ -29,8 +26,5 @@ <!-- Suppress the built-in action bar --> <item name="android:windowActionBar">false</item> <item name="android:windowNoTitle">true</item> - <!-- Set up edge-to-edge configuration for top app bar --> - <item name="android:navigationBarColor">@android:color/transparent</item> - <item name="android:statusBarColor">@android:color/transparent</item> </style> -</resources>
\ No newline at end of file +</resources> diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 70b826a5fc2e..08d87df84945 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1422,7 +1422,7 @@ <string name="user_set_lock_button">Set lock</string> <!-- Label for switching to other user in the user switcher [CHAR LIMIT=35] --> <string name="user_switch_to_user">Switch to <xliff:g id="user_name" example="John Doe">%s</xliff:g></string> - <!-- Dialog message when creating a new user [CHAR LIMIT=40] --> + <!-- Dialog message when creating a new user [CHAR LIMIT=NONE] --> <string name="creating_new_user_dialog_message">Creating new user…</string> <!-- Text shown to notify that the creation of new user has failed. [CHAR LIMIT=40] --> <string name="add_user_failed">Failed to create a new user</string> diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/MainSwitchPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/MainSwitchPreferenceTest.java index 2e77acaa0807..e58c04a3b435 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/MainSwitchPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/MainSwitchPreferenceTest.java @@ -41,7 +41,8 @@ public class MainSwitchPreferenceTest { @Before public void setUp() { mContext = RuntimeEnvironment.application; - mRootView = View.inflate(mContext, R.layout.main_switch_layout, null /* parent */); + mRootView = View.inflate(mContext, R.layout.settingslib_main_switch_layout, + null /* parent */); mHolder = PreferenceViewHolder.createInstanceForTests(mRootView); mPreference = new MainSwitchPreference(mContext); } @@ -59,15 +60,6 @@ public class MainSwitchPreferenceTest { } @Test - public void shouldAllowDividerBelow() { - mPreference.onBindViewHolder(mHolder); - - View divider = mRootView.findViewById(R.id.below_divider); - - assertThat(divider.getVisibility()).isEqualTo(View.VISIBLE); - } - - @Test public void updateStatus_shouldMatchTheStatus() { mPreference.onBindViewHolder(mHolder); mPreference.updateStatus(true); diff --git a/packages/SoundPicker/res/values-hr/strings.xml b/packages/SoundPicker/res/values-hr/strings.xml index f74c4ae69e80..3adc5009448b 100644 --- a/packages/SoundPicker/res/values-hr/strings.xml +++ b/packages/SoundPicker/res/values-hr/strings.xml @@ -21,7 +21,7 @@ <string name="alarm_sound_default" msgid="4787646764557462649">"Zadani zvuk alarma"</string> <string name="add_ringtone_text" msgid="6642389991738337529">"Dodaj melodiju zvona"</string> <string name="add_alarm_text" msgid="3545497316166999225">"Dodaj alarm"</string> - <string name="add_notification_text" msgid="4431129543300614788">"Dodaj obavijest"</string> + <string name="add_notification_text" msgid="4431129543300614788">"Dodajte obavijest"</string> <string name="delete_ringtone_text" msgid="201443984070732499">"Izbriši"</string> <string name="unable_to_add_ringtone" msgid="4583511263449467326">"Dodavanje prilagođene melodije zvona nije moguće"</string> <string name="unable_to_delete_ringtone" msgid="6792301380142859496">"Brisanje prilagođene melodije zvona nije moguće"</string> diff --git a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java index 69ce2754ca43..32def0309aaa 100644 --- a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java +++ b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java @@ -20,7 +20,7 @@ import android.app.PendingIntent; import android.app.smartspace.SmartspaceAction; import android.app.smartspace.SmartspaceTarget; import android.content.Intent; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.os.Parcelable; import android.view.View; import android.view.ViewGroup; @@ -93,9 +93,14 @@ public interface BcSmartspaceDataPlugin extends Plugin { void setFalsingManager(com.android.systemui.plugins.FalsingManager falsingManager); /** - * Set or clear any Do Not Disturb information. + * Set or clear Do Not Disturb information. */ - void setDnd(@Nullable Icon dndIcon, @Nullable String description); + void setDnd(@Nullable Drawable image, @Nullable String description); + + /** + * Set or clear next alarm information + */ + void setNextAlarm(@Nullable Drawable image, @Nullable String description); } /** Interface for launching Intents, which can differ on the lockscreen */ diff --git a/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml b/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml index 604ab723da90..3a7a8ae5bc3c 100644 --- a/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml +++ b/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml @@ -16,23 +16,14 @@ * limitations under the License. */ --> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> +<ripple + xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> <item android:id="@+id/background"> <shape> <solid android:color="?android:attr/colorControlNormal" /> <corners android:radius="10dp" /> </shape> </item> - <item android:id="@+id/ripple"> - <ripple - android:color="?android:attr/colorControlHighlight"> - <item android:id="@android:id/mask"> - <shape android:shape="rectangle"> - <solid android:color="?android:attr/colorControlNormal" /> - <corners android:radius="10dp" /> - </shape> - </item> - </ripple> - </item> -</layer-list> +</ripple> diff --git a/packages/SystemUI/res/layout/media_view.xml b/packages/SystemUI/res/layout/media_view.xml index e9a24e284601..8dbbd4a4a66f 100644 --- a/packages/SystemUI/res/layout/media_view.xml +++ b/packages/SystemUI/res/layout/media_view.xml @@ -40,7 +40,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.5" /> + app:layout_constraintGuide_begin="48dp" /> <!-- As per Material Design on Biderectionality, this is forced to LTR in code --> <FrameLayout diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index be5cbbb52a6f..d3ab5b32975a 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Volkome\nstilte"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Net\nprioriteit"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Net\nwekkers"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans draadloos (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans vinnig (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans stadig (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Wissel gebruiker"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Wissel gebruiker, huidige gebruiker <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Huidige gebruiker <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index bae6aa2b5660..4dee0850fee1 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ሙሉ ለሙሉ\nጸጥታ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ቅድሚያ ተሰጪ\nብቻ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ማንቂያዎች\nብቻ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • በገመድ አልባ ኃይል በመሙላት ላይ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> እስከሚሞላ ድረስ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ኃይል በመሙላት ላይ (እስኪሞላ ድረስ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • በፍጥነት ኃይልን በመሙላት ላይ (እስኪሞላ ድረስ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • በዝግታ ኃይልን በመሙላት ላይ (እስኪሞላ ድረስ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ተጠቃሚ ቀይር"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ተጠቃሚ ይለውጡ፣ የአሁን ተጠቃሚ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"የአሁን ተጠቃሚ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 84113981131d..cfbab4b0e858 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -481,10 +481,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"كتم الصوت\nتمامًا"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"الأولوية \nفقط"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"التنبيهات\nفقط"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن لاسلكيًا (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> على اكتمال الشحن)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن (يتبقى <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> حتى الامتلاء)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن سريعًا (يتبقى <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> حتى الامتلاء)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن ببطء (يتبقى <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> حتى الامتلاء)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تبديل المستخدم"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"تبديل المستخدم، المستخدم الحالي <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"المستخدم الحالي <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -885,7 +889,7 @@ <string name="accessibility_data_saver_on" msgid="5394743820189757731">"تم تفعيل توفير البيانات"</string> <string name="accessibility_data_saver_off" msgid="58339669022107171">"تم إيقاف توفير البيانات"</string> <string name="switch_bar_on" msgid="1770868129120096114">"مفعّل"</string> - <string name="switch_bar_off" msgid="5669805115416379556">"إيقاف"</string> + <string name="switch_bar_off" msgid="5669805115416379556">"متوقف"</string> <string name="tile_unavailable" msgid="3095879009136616920">"غير متوفّر"</string> <!-- no translation found for tile_disabled (373212051546573069) --> <skip /> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index 42dcbc78725e..d20b67d4dbc5 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"সম্পূর্ণ \n নিৰৱতা"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"কেৱল\nগুৰুত্বপূৰ্ণ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"কেৱল\nএলাৰ্মসমূহ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • বেতাঁৰৰ জৰিয়তে চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ’বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • দ্ৰুতগতিৰে চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • লাহে লাহে চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যৱহাৰকাৰী সলনি কৰক"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ব্যৱহাৰকাৰী সলনি কৰক, বৰ্তমানৰ ব্যৱহাৰকাৰী <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"বর্তমানৰ ব্যৱহাৰকাৰী <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>স্থিতি:</b> নীৰৱলৈ হ্ৰাস কৰা হৈছে"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>স্থিতি:</b> স্থান ওপৰলৈ কৰা হৈছে"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>স্থিতি:</b> স্থান তললৈ কৰা হৈছে"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়, এটা বাবল হিচাপে দেখা পোৱা যায়"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়, অসুবিধা নিদিব ম’ডত ব্যাঘাত জন্মায়"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়, এটা বাবল হিচাপে দেখা পোৱা যায়, অসুবিধা নিদিব ম’ডত ব্যাঘাত জন্মায়"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ছেটিংসমূহ"</string> <string name="notification_priority_title" msgid="2079708866333537093">"অগ্ৰাধিকাৰ"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ বাৰ্তালাপৰ সুবিধাসমূহ সমৰ্থন নকৰে"</string> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 99fd2cb54740..d30d8ab57b71 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Tam\nsakitlik"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Yalnız\nprioritet"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Yalnız\nalarmlar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Simsiz şəkildə batareya yığır (tam dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qalıb)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Enerji yığır (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> dolana qədər)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sürətlə enerji yığır (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> dolana qədər)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Yavaş enerji yığır (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> dolana qədər)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"İstifadəçiləri dəyişin, indiki istifadəçi: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Cari istifadəçi <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index b09df03f0f40..dd342ff312a1 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -475,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Samo\npriorit. prekidi"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bežično punjenje (napuniće se za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Puni se (napuniće se za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Brzo se puni (napuniće se za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sporo se puni (napuniće se za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zameni korisnika"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Promenite korisnika, aktuelni korisnik je <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktuelni korisnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index b6a86c7431cf..eed153581347 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Поўная\nцішыня"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Толькі\nпрыярытэтныя"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Толькі\nбудзільнікі"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ідзе бесправадная зарадка (да поўнага зараду засталося <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"Ідзе зарадка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, яшчэ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"Ідзе хуткая зарадка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, яшчэ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"Ідзе павольная зарадка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> да канца)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Перайсці да іншага карыстальніка"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Перайсці да іншага карыстальніка, бягучы карыстальнік <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Бягучы карыстальнік <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 7ce16095617b..17480bf533b1 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Пълна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Само\nс приоритет"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Само\nбудилници"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се безжично (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се бързо (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се бавно (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Превключване между потребителите"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Превключване на потребителя – текущият е <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Текущ потребител – <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index 7d734698f0c4..adbef201fef7 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"একদম\nনিরব"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"শুধুমাত্র\nঅগ্রাধিকার"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"শুধুমাত্র\nঅ্যালার্মগুলি"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ওয়্যারলেস পদ্ধতিতে চার্জ হচ্ছে (পুরোটা হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • চার্জ হচ্ছে (পুরো চার্জ হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • দ্রুত চার্জ হচ্ছে (পুরোটা হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ধীরে চার্জ হচ্ছে (পুরোটা হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যবহারকারী পাল্টে দিন"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ব্যবহারকারী পাল্টান, বর্তমান ব্যবহারকারী <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"<xliff:g id="CURRENT_USER_NAME">%s</xliff:g> হল বর্তমান ব্যবহারকারী"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index ebdf654ddd70..a54dffe5f555 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -475,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Samo\nprioritetni prekidi"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bežično punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do potpune napunjenosti)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Brzo punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Brzo punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zamijeni korisnika"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Zamijeni korisnika. Trenutni korisnik je <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Trenutni korisnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 95d3b3140fef..803bbd1d5ec5 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silenci\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Només\ninterr. prior."</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Només\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant sense fil (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregant ràpidament (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregant lentament (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Canvia d\'usuari"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Canvia d\'usuari. Usuari actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuari actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -518,7 +522,7 @@ <string name="manage_notifications_text" msgid="6885645344647733116">"Gestiona"</string> <string name="manage_notifications_history_text" msgid="57055985396576230">"Historial"</string> <string name="notification_section_header_incoming" msgid="850925217908095197">"Novetats"</string> - <string name="notification_section_header_gentle" msgid="6804099527336337197">"Silenci"</string> + <string name="notification_section_header_gentle" msgid="6804099527336337197">"Silenciat"</string> <string name="notification_section_header_alerting" msgid="5581175033680477651">"Notificacions"</string> <string name="notification_section_header_conversations" msgid="821834744538345661">"Converses"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Esborra totes les notificacions silencioses"</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 88e5cf4455d0..8ed760a0029c 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Úplné\nticho"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Pouze\nprioritní"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Pouze\nbudíky"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bezdrátové nabíjení (plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíjení (plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Rychlé nabíjení (plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Pomalé nabíjení (plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Přepnout uživatele"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Přepnout uživatele, aktuální uživatel: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktuální uživatel <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 4c156b9ee728..c76ebc3082d3 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nstilhed"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Kun\nprioritet"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Kun\nalarmer"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Trådløs opladning (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> til batteriet er fuldt opladet)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Oplader (fuldt opladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Oplader hurtigt (fuldt opladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Oplader langsomt (fuldt opladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skift bruger"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Skift bruger. Nuværende bruger er <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Nuværende bruger: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index fb3d9a13ef27..19691c09cbc1 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Laut-\nlos"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Nur\nwichtige"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Nur\nWecker"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kabelloses Laden (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wird geladen (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wird schnell geladen (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wird langsam geladen (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Nutzer wechseln"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Nutzer wechseln. Aktueller Nutzer: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktueller Nutzer <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status</b>: auf „Lautlos“ herabgestuft"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status</b>: höher eingestuft"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status</b>: niedriger eingestuft"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt, erscheint als Bubble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt, unterbricht „Bitte nicht stören“"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt, erscheint als Bubble, unterbricht „Bitte nicht stören“"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Einstellungen"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Priorität"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> unterstützt keine Funktionen für Unterhaltungen"</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index db72cb183260..3da19fc8dc92 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Πλήρης\nσίγαση"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Μόνο\nπροτεραιότητας"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Μόνο\nειδοποιήσεις"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ασύρματη φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Γρήγορη φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Αργή φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Εναλλαγή χρήστη"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Εναλλαγή χρήστη, τρέχων χρήστης <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Τρέχων χρήστης <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index e2b5ec4de7f7..25a34ae8ed0c 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -289,11 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -412,8 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> - <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> - <skip /> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -473,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -672,12 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> - <skip /> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards. Please try again later."</string> - <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> - <skip /> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Aeroplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -867,8 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> - <!-- no translation found for tile_disabled (373212051546573069) --> - <skip /> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 4440831327b7..3511d971635c 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -289,11 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -412,8 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> - <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> - <skip /> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -473,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -672,12 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> - <skip /> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards. Please try again later."</string> - <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> - <skip /> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Airplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -867,8 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> - <!-- no translation found for tile_disabled (373212051546573069) --> - <skip /> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index e2b5ec4de7f7..25a34ae8ed0c 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -289,11 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -412,8 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> - <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> - <skip /> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -473,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -672,12 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> - <skip /> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards. Please try again later."</string> - <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> - <skip /> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Aeroplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -867,8 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> - <!-- no translation found for tile_disabled (373212051546573069) --> - <skip /> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index e2b5ec4de7f7..25a34ae8ed0c 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -289,11 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -412,8 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> - <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> - <skip /> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -473,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -672,12 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> - <skip /> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards. Please try again later."</string> - <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> - <skip /> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Aeroplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -867,8 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> - <!-- no translation found for tile_disabled (373212051546573069) --> - <skip /> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index e42e1e0f91f2..04d0adeeea13 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -470,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index b4d8eeadcfb8..15347dd32ba4 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Solo\nprioridad"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Solo\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando de manera inalámbrica (tiempo restante para completar: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando rápido (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando lento (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Cambiar de usuario (usuario actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"El usuario actual es <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 65387315d0a3..57ce1c589e43 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Solo\ncon prioridad"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Solo\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando sin cables (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga rápida (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar de usuario"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Cambiar de usuario (usuario actual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuario actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 154246f5bb54..ff833d9b700e 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Täielik\nvaikus"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Ainult\nprioriteetsed"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Ainult\nalarmid"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Juhtmeta laadimine (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> täislaadimiseni)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laadimine (täislaadimiseks kulub <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kiirlaadim. (täislaadimiseks kulub <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Aegl. laad. (täislaadimiseks kulub <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kasutaja vahetamine"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Kasutaja vahetamine, praegune kasutaja: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Praegune kasutaja <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index e36867361d1e..85679b9d18c8 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Isiltasun\nosoa"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Lehentasunezkoak\nsoilik"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarmak\nsoilik"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hari gabe kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bizkor kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mantso kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Aldatu erabiltzailea"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Aldatu erabiltzailea. <xliff:g id="CURRENT_USER_NAME">%s</xliff:g> da saioa hasita daukana."</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Erabiltzailea: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 018db7c0a979..052a87a9c5bb 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"سکوت\nکامل"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"فقط\nاولویتدار"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"فقط\nهشدارها"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • درحال شارژ بیسیم (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • درحال شارژ شدن (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • درحال شارژ سریع (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • آهستهآهسته شارژ میشود (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تغییر کاربر"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"تعویض کاربر، کاربر کنونی <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"کاربر کنونی <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 019c9380cbe1..6fc785529c18 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Täydellinen\nhiljaisuus"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Vain\ntärkeät"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Vain\nherätykset"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ladataan langattomasti (täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ladataan (täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ladataan nopeasti (täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ladataan hitaasti (täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Vaihda käyttäjää"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Vaihda käyttäjä (nyt <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Nykyinen käyttäjä: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index f6adbda5fbe7..7218b869423a 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Aucune\ninterruption"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priorités\nuniquement"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarmes\nuniquement"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • En recharge sans fil (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> jusqu\'à la recharge complète)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"En recharge : <xliff:g id="PERCENTAGE">%2$s</xliff:g> (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> jusqu\'à charge complète)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"En recharge rapide : <xliff:g id="PERCENTAGE">%2$s</xliff:g> (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> jusqu\'à ch. comp.)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"Recharge lente : <xliff:g id="PERCENTAGE">%2$s</xliff:g> (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Changer d\'utilisateur (utilisateur actuel <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utilisateur actuel : <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index 769f66a227da..efe1833060ec 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Aucune\ninterruption"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priorité\nuniquement"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarmes\nuniquement"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge sans fil (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge... (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge rapide… (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge lente… (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Changer d\'utilisateur (utilisateur actuel : <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utilisateur actuel : <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -518,7 +522,7 @@ <string name="manage_notifications_text" msgid="6885645344647733116">"Gérer"</string> <string name="manage_notifications_history_text" msgid="57055985396576230">"Historique"</string> <string name="notification_section_header_incoming" msgid="850925217908095197">"Nouvelles notifications"</string> - <string name="notification_section_header_gentle" msgid="6804099527336337197">"En mode silencieux"</string> + <string name="notification_section_header_gentle" msgid="6804099527336337197">"Notifications silencieuses"</string> <string name="notification_section_header_alerting" msgid="5581175033680477651">"Notifications"</string> <string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Effacer toutes les notifications silencieuses"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>État :</b> Abaissée à la catégorie \"Silencieux\""</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>État :</b> Élevée d\'un niveau"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>État ::</b> Abaissée d\'un niveau"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage, apparaît sous forme de bulle"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage, interrompt le mode Ne pas déranger"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage, apparaît sous forme de bulle, interrompt le mode Ne pas déranger"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Paramètres"</string> <string name="notification_priority_title" msgid="2079708866333537093">"Prioritaire"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas compatible avec les fonctionnalités de conversation"</string> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 2d4ab36d9e3c..d5da5d5e506a 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Só\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Só\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando sen fíos (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar a carga)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar a carga)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando rapidamente (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar a carga)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando lentamente (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar a carga)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Cambiar usuario, usuario actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuario actual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 5055305dde10..7e92ccfd84bf 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"સાવ\nશાંતિ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ફક્ત\nપ્રાધાન્યતા"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ફક્ત\nએલાર્મ્સ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • વાયરલેસથી ચાર્જ થઈ રહ્યું છે (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ચાર્જિંગ (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ઝડપથી ચાર્જિંગ (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ધીમેથી ચાર્જિંગ (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"વપરાશકર્તા સ્વિચ કરો"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"વપરાશકર્તાને સ્વિચ કરો, વર્તમાન વપરાશકર્તા <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"વર્તમાન વપરાશકર્તા <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 6daea1860ac6..cfe20796aa7f 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"पूरी तरह\nशांत"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"केवल\nप्राथमिकता"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"केवल\nअलार्म"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • वायरलेस तरीके से चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • तेज़ चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • धीरे चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"उपयोगकर्ता बदलें"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"उपयोगकर्ता बदलें, मौजूदा उपयोगकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"मौजूदा उपयोगकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index b99d1b066439..9246023d29a2 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -475,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Samo\nprioritetno"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • bežično punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • brzo punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • sporo punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Promjena korisnika"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Promjena korisnika, trenutačni korisnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Trenutačan korisnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 3ac3d0d2949a..3cfbabac1339 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Teljes\nnémítás"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Csak\nprioritás"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Csak\nriasztások"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Vezeték nélküli töltés folyamatban (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> a teljes feltöltésig)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Töltés (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> a teljes töltöttségig)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Gyors töltés (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> a teljes töltöttségig)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lassú töltés (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> a teljes töltöttségig)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Felhasználóváltás"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Felhasználóváltás (a jelenlegi felhasználó: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Jelenlegi felhasználó (<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index bf0ed5377af2..ad11a26c6401 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Ընդհանուր\nլուռ վիճակը"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Միայն\nկարևորները"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Միայն\nզարթուցիչ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Անլար լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Արագ լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Դանդաղ լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Անջատել օգտվողին"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Փոխել օգտատիրոջը. ներկայիս օգտատերն է՝ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Ընթացիկ օգտատերը՝ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 2d26a47f7df0..1e67b9a091e3 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Senyap\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Hanya\nprioritas"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Hanya\nalarm"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya secara nirkabel (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga baterai terisi penuh)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya dengan cepat (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya dengan lambat (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Beralih pengguna"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Ganti pengguna, pengguna saat ini <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Pengguna saat ini <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index 70081336a3a4..4295b96c22a3 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Algjör\nþögn"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Aðeins\nforgangur"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Aðeins\nvekjarar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Í þráðlausri hleðslu (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> í fulla hleðslu)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Í hleðslu (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> fram að fullri hleðslu)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hröð hleðsla (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> að fullri hleðslu)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hæg hleðsla (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> fram að fullri hleðslu)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skipta um notanda"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Skipta um notanda; núverandi notandi er <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Núverandi notandi er <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 08bd2c53ff23..78b85c9eba80 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silenzio\ntotale"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Solo con\npriorità"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Solo\nsveglie"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • In carica wireless (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • In carica (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ricarica veloce (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ricarica lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambio utente"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Cambia utente, utente corrente <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utente corrente <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index c50802bef965..1853ecfc5315 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"שקט\nמוחלט"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"הודעות בעדיפות\nבלבד"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"התראות\nבלבד"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה אלחוטית (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה מהירה (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה איטית (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"החלפת משתמש"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"החלפת משתמש. המשתמש הנוכחי: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"משתמש נוכחי <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 852d75b5f324..39abcde1e1ee 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"サイレント\n"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"重要な\n通知のみ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"アラーム\nのみ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ワイヤレス充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 急速充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 低速充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ユーザーを切り替える"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ユーザーを切り替える、現在のユーザーは<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"現在のユーザー: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index d972b338265e..2d4d9bc62a88 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"სრული\nსიჩუმე"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"მხოლოდ\nპრიორიტეტულები"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"მხოლოდ\nგაფრთხილებები"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება უსადენოდ (სრულად დატენვამდე დარჩა<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> სრულ დატენვამდე)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება სწრაფად (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> სრულ დატენვამდე)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება ნელა (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> სრულ დატენვამდე)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"მომხმარებლის გადართვა"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"მომხმარებლის გდართვა. ამჟამინდელი მომხმარებელი <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ამჟამინდელი მომხმარებელი <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 4a5f9d6756da..a4cfaaaeb75a 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Толық\nтыныштық"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Тек\nбасымдық"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Тек\nдабылдар"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Сымсыз зарядталып жатыр (толық зарядталуға <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарядталуда (толуына <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Жылдам зарядталуда (толуына <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Баяу зарядталуда (толуына <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Пайдаланушыны ауыстыру"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Пайдаланушыны ауыстыру, ағымдағы пайдаланушы <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Ағымдағы пайдаланушы: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 461889065391..78f228aa4a01 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ស្ងៀមស្ងាត់\nទាំងស្រុង"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"អាទិភាព\nប៉ុណ្ណោះ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"សំឡេងរោទ៍\nប៉ុណ្ណោះ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្មឥតខ្សែ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្ម (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្មយ៉ាងឆាប់រហ័ស (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្មយឺត (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ប្ដូរអ្នកប្រើ"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ប្ដូរអ្នកប្រើ អ្នកប្រើបច្ចុប្បន្ន <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"អ្នកប្រើបច្ចុប្បន្ន <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index f7822440dc2f..3cb20af5e969 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ಸಂಪೂರ್ಣ\nನಿಶ್ಯಬ್ಧ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ಆದ್ಯತೆ\nಮಾತ್ರ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ಅಲಾರಮ್ಗಳು\nಮಾತ್ರ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ವೈರ್ಲೆಸ್ ಆಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ ಉಳಿದಿದೆ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ಚಾರ್ಜ್ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ವೇಗವಾಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ನಿಧಾನವಾಗಿ ಚಾರ್ಜ್ಆಗುತ್ತಿದೆ (ಪೂರ್ಣವಾಗಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ, ಪ್ರಸ್ತುತ ಬಳಕೆದಾರ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"<xliff:g id="CURRENT_USER_NAME">%s</xliff:g> ಪ್ರಸ್ತುತ ಬಳಕೆದಾರ"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ಸ್ಥಿತಿ:</b> ಸೈಲೆಂಟ್ಗೆ ಕೆಳದರ್ಜೆಗೆ ಇಳಿದಿದೆ"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ಸ್ಥಿತಿ:</b> ಉನ್ನತ ಸ್ಥಾನವನ್ನು ಹೊಂದಿದೆ"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ಸ್ಥಿತಿ:</b> ಕಡಿಮೆ ಸ್ಥಾನವನ್ನು ಹೊಂದಿದೆ"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ, ಬಬಲ್ನಂತೆ ಗೋಚರಿಸುತ್ತದೆ"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ, ಅಡಚಣೆ ಮಾಡಬೇಡ ಮೋಡ್ಗೆ ಅಡ್ಡಿಯುಂಟುಮಾಡುತ್ತದೆ"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ, ಬಬಲ್ನಂತೆ ಗೋಚರಿಸುತ್ತದೆ, ಅಡಚಣೆ ಮಾಡಬೇಡ ಮೋಡ್ಗೆ ಅಡ್ಡಿಯುಂಟುಮಾಡುತ್ತದೆ"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> <string name="notification_priority_title" msgid="2079708866333537093">"ಆದ್ಯತೆ"</string> <string name="no_shortcut" msgid="8257177117568230126">"ಸಂವಾದ ಫೀಚರ್ಗಳನ್ನು <xliff:g id="APP_NAME">%1$s</xliff:g> ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index fbfc097c4bec..5f6bbcb00471 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"모두\n차단"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"중요 알림만\n허용"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"알람만\n"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 무선 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>후 충전 완료)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> 후 충전 완료)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 고속 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> 후 충전 완료)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 저속 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> 후 충전 완료)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"사용자 전환"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"사용자 전환, 현재 사용자 <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"현재 사용자: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index 648e646a19e1..90b16002191e 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Тым-\nтырс"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Артыкчылыктуу\nгана"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Ойготкучтар\nгана"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зымсыз кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Тез кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Жай кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Колдонуучуну которуу"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Колдонуучуну күйгүзүү, учурдагы колдонуучу <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Учурдагы колдонуучу <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 8202ef56a2e5..91bdc6e6a2dd 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ຄວາມງຽບ\nທັງໝົດ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ບຸລິມະສິດ\nເທົ່ານັ້ນ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ໂມງປຸກ\nເທົ່ານັ້ນ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກໄຟໄຮ້ສາຍ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈົນກວ່າຈະເຕັມ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈຶ່ງຈະເຕັມ)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກແບບດ່ວນ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈຶ່ງຈະເຕັມ)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກແບບຊ້າ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈຶ່ງຈະເຕັມ)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ສະຫຼັບຜູ້ໃຊ້"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ປ່ຽນຜູ່ໃຊ້, ຜູ່ໃຊ້ປະຈຸບັນ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ຜູ້ໃຊ້ປະຈຸບັນ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ສະຖານະ:</b> ຫຼຸດລະດັບເປັນປິດສຽງແລ້ວ"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ສະຖານະ:</b> ມີອັນດັບສູງຂຶ້ນແລ້ວ"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ສະຖານະ:</b> ມີອັນດັບຕ່ຳລົງແລ້ວ"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ, ປາກົດເປັນຟອງ"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ, ສະແດງໃນໂໝດຫ້າມລົບກວນໄດ້"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ, ປາກົດເປັນຟອງ, ສະແດງໃນໂໝດຫ້າມລົບກວນໄດ້"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ຕັ້ງຄ່າ"</string> <string name="notification_priority_title" msgid="2079708866333537093">"ສຳຄັນ"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ຮອງຮັບຄຸນສົມບັດການສົນທະນາ"</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 95e337dfa8d6..407db297d31a 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Visiška\ntyla"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Tik\nprioritetiniai"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Tik\nsignalai"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kraunama be laidų (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>, kol bus visiškai įkrauta)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Įkraunama (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> iki visiško įkrovimo)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Greitai įkraunama (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> iki visiško įkr.)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lėtai įkraunama (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> iki visiško įkr.)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Perjungti naudotoją"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Perjungti naudotoją, dabartinis naudotojas <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Dabartinis naudotojas <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 38ed1684e264..307f0b6f1104 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -475,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Pilnīgs\nklusums"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Tikai\nprioritārie"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Tikai\nsignāli"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Notiek bezvadu uzlāde (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> līdz pilnai uzlādei)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Notiek uzlāde (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> līdz pilnai uzlādei)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ātrā uzlāde (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> līdz pilnai uzlādei)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lēnā uzlāde (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> līdz pilnai uzlādei)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mainīt lietotāju"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Pārslēgt lietotāju; pašreizējais lietotājs: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Pašreizējais lietotājs: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 69bb114202de..c4524f3d9e92 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Целосна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Само\nприоритетни"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Само\nаларми"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Се полни безжично (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Се полни (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Брзо полнење (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Бавно полнење (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Промени го корисникот"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Промени го корисникот, тековен корисник <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Тековен корисник <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 1eb50c733009..e793e19b5f52 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"പൂർണ്ണ\nനിശബ്ദത"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"മുൻഗണന\nമാത്രം"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"അലാറങ്ങൾ\nമാത്രം"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • വയർലെസ്സ് ആയി ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • വേഗത്തിൽ ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • പതുക്കെ ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ഉപയോക്താവ് മാറുക"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ഉപയോക്താവിനെ മാറ്റുക, <xliff:g id="CURRENT_USER_NAME">%s</xliff:g> എന്നയാളാണ് നിലവിലുള്ള ഉപയോക്താവ്"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"നിലവിലെ ഉപയോക്താവ് <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>നില:</b> നിശബ്ദമാക്കി തരം താഴ്ത്തി"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>നില:</b> ഉയർന്ന റാങ്കിംഗ് നൽകി"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>നില:</b> താഴ്ന്ന റാങ്കിംഗ് നൽകി"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ഒരു ബബിൾ രൂപത്തിൽ ദൃശ്യമാകുന്നു"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ശല്യപ്പെടുത്തരുത് മോഡ് തടസ്സപ്പെടുത്തുന്നു"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ഒരു ബബിൾ രൂപത്തിൽ ദൃശ്യമാകുന്നു, ശല്യപ്പെടുത്തരുത് മോഡ് തടസ്സപ്പെടുത്തുന്നു"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ക്രമീകരണം"</string> <string name="notification_priority_title" msgid="2079708866333537093">"മുൻഗണന"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> സംഭാഷണ ഫീച്ചറുകളെ പിന്തുണയ്ക്കുന്നില്ല"</string> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 3f549d43658f..7001a1ace6e3 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Дуугүй\nболгох"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Зөвхөн\nхамгийн чухлыг"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Зөвхөн\nсэрүүлэг"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Утасгүй цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Хурдан цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Удаан цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Хэрэглэгчийг сэлгэх"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Хэрэглэгчийг сэлгэх, одоогийн хэрэглэгч <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Одоогийн хэрэглэгч <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 50dc6e7fc949..f26bf3195481 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"संपूर्ण\nशांतता"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"केवळ\nप्राधान्य"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"केवळ\nअलार्म"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • वायरलेस पद्धतीने चार्ज करत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण चार्ज होईल)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज होत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण होईल)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • वेगाने चार्ज होत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण होईल)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • सावकाश चार्ज होत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण होईल)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"वापरकर्ता स्विच करा"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"वापरकर्ता स्विच करा, वर्तमान वापरकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"वर्तमान वापरकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index 9f5631c7d1ae..837d900fb935 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Senyap\nsepenuhnya"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Keutamaan\nsahaja"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Penggera\nsahaja"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas secara wayarles (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas dengan cepat (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas dengan perlahan (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Tukar pengguna"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Tukar pengguna, pengguna semasa <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Pengguna semasa <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 9ee7b92367db..1756d28ecba4 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"လုံးဝ\nတိတ်ဆိတ်ခြင်း"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ဦးစားပေးမှု\nသာ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"နှိုးစက်များ\nသာ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ကြိုးမဲ့အားသွင်းနေသည် (ပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လိုပါသည်)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • အားသွင်းနေသည် (အားပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လို)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • အမြန်အားသွင်းနေသည် (အားပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လို)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • နှေးကွေးစွာ သွင်းနေသည် (အားပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လို)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"အသုံးပြုသူကို ပြောင်းလဲရန်"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"အသုံးပြုသူကို ပြောင်းရန်၊ လက်ရှိ အသုံးပြုသူ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"လတ်တလော သုံးစွဲသူ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 113adbaa2b38..fa6e62e83ef7 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nstillhet"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Bare\nPrioritet"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Bare\nalarmer"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader trådløst (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader raskt (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader sakte (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Bytt bruker"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Bytt bruker, gjeldende bruker er <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Gjeldende bruker: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 27948bef7a82..7c1e919a3a3a 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"पूरै\nशान्त"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"प्राथमिकता \nमात्र"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"अलार्महरू \nमात्र"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • तारविनै चार्ज गर्दै (चार्ज पूरा हुन<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> बाँकी)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज गरिँदै (चार्ज पूरा हुन <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> बाँकी)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • द्रुत गतिमा चार्ज गरिँदै (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> समय बाँकी)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • मन्द गतिमा चार्ज गरिँदै (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> समय बाँकी)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"प्रयोगकर्ता फेर्नुहोस्"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"प्रयोगकर्ता, हालको प्रयोगकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g> मा स्विच गर्नुहोस्"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"हालको प्रयोगकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>स्थिति:</b> सूचनालाई कम महत्त्वपूर्ण ठानी साइलेन्ट मोडमा सेट गरिएको छ"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>स्थिति:</b> धेरै महत्त्वपूर्ण सूचनाका रूपमा सेट गरिएको छ"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>स्थिति:</b> कम महत्त्वपूर्ण सूचनाका रूपमा सेट गरिएको छ"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"यो वार्तालापका सूचनाहरूको सिरानमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"यो वार्तालापका सूचनाहरूको सिरानमा, बबलका रूपमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"यो वार्तालापका सूचनाहरूको सिरानमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ। साथै, यसले गर्दा \'बाधा नपुऱ्याउनुहोस्\' नामक सुविधामा अवरोध आउँछ"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"यो वार्तालापका सूचनाहरूको सिरानमा, बबलका रूपमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ। साथै, यसले गर्दा \'बाधा नपुऱ्याउनुहोस्\' नामक सुविधामा अवरोध आउँछ"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"सेटिङ"</string> <string name="notification_priority_title" msgid="2079708866333537093">"प्राथमिकता"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> मा वार्तालापसम्बन्धी सुविधा प्रयोग गर्न मिल्दैन"</string> @@ -869,7 +869,7 @@ <string name="accessibility_data_saver_on" msgid="5394743820189757731">"डेटा सेभर सक्रिय छ"</string> <string name="accessibility_data_saver_off" msgid="58339669022107171">"डेटा सेभर बन्द छ"</string> <string name="switch_bar_on" msgid="1770868129120096114">"अन छ"</string> - <string name="switch_bar_off" msgid="5669805115416379556">"अफ"</string> + <string name="switch_bar_off" msgid="5669805115416379556">"अफ छ"</string> <string name="tile_unavailable" msgid="3095879009136616920">"उपलब्ध छैन"</string> <!-- no translation found for tile_disabled (373212051546573069) --> <skip /> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index c007b65d4315..26412ce92287 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Totale\nstilte"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Alleen\nprioriteit"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alleen\nalarmen"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Draadloos opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Snel opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Langzaam opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Gebruiker wijzigen"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Schakelen tussen gebruikers, huidige gebruiker <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Huidige gebruiker <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index c57dd52aee7b..268c245b1361 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ସମ୍ପୂର୍ଣ୍ଣ\nନୀରବ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"କେବଳ\nପ୍ରାଥମିକତା"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"କେବଳ\nଆଲାର୍ମ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"ୱାୟାର୍ଲେସ୍ଭାବରେ <xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଚାର୍ଜ ହୋଇଛି (ସମ୍ପୁର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବାକି ଅଛି)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବଳକା ଅଛି)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଶୀଘ୍ର ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବଳକା ଅଛି)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଧୀରେ ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବଳକା ଅଛି)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ୟୁଜର୍ ବଦଳାନ୍ତୁ"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ୟୁଜର୍ ବଦଳାନ୍ତୁ, ବର୍ତ୍ତମାନର ୟୁଜର୍ ହେଉଛନ୍ତି <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ବର୍ତ୍ତମାନର ୟୁଜର୍ ହେଉଛନ୍ତି <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index 58130d4106a8..635cb2f46fda 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ਕੁਲ \n ਚੁੱਪੀ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ਕੇਵਲ\nਤਰਜੀਹੀ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ਕੇਵਲ\nਅਲਾਰਮ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਬਿਨਾਂ ਤਾਰ ਤੋਂ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਤੇਜ਼ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ਵਰਤੋਂਕਾਰ ਸਵਿੱਚ ਕਰੋ"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ਵਰਤੋਂਕਾਰ, ਵਰਤਮਾਨ ਵਰਤੋਂਕਾਰ ਸਵਿੱਚ ਕਰੋ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ਮੌਜੂਦਾ ਉਪਭੋਗਤਾ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 20075e97cd51..6ee745310fc7 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Całkowita\ncisza"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Tylko\npriorytetowe"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Tylko\nalarmy"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ładowanie bezprzewodowe (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do pełnego naładowania)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ładowanie (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do końca)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Szybkie ładowanie (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do końca)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wolne ładowanie (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do końca)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Przełącz użytkownika"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Przełącz użytkownika. Bieżący użytkownik: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Bieżący użytkownik: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 8f4634c7f145..b15a14414040 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Somente\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Somente\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando sem fio (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga rápida (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Alternar usuário. Usuário atual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuário atual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index f4f95ea2b7fa..90b193163afd 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Apenas\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Apenas\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar sem fios (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até ao carregamento completo)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até à carga máxima)…"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar rapid. (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até carga máx.)…"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar lentam. (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até carga máx.)…"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mudar utilizador"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Mudar de utilizador; o utilizador atual é <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utilizador atual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 8f4634c7f145..b15a14414040 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Somente\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Somente\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando sem fio (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga rápida (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Alternar usuário. Usuário atual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuário atual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 9e669bb432d3..87f9e9884c02 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -475,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Niciun\nsunet"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Numai\ncu prioritate"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Numai\nalarme"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă wireless (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la încărcarea completă)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la finalizare)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă rapid (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la finalizare)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă lent (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la finalizare)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Comutați între utilizatori"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Schimbați utilizatorul (utilizator actual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utilizator actual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 65927fb2cb59..c64d557f5646 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Полная\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Только\nважные"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Только\nбудильник"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Беспроводная зарядка (ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"Идет зарядка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"Идет быстрая зарядка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"Идет медленная зарядка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Сменить пользователя."</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Сменить аккаунт. Вход выполнен под именем <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>."</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Выбран аккаунт пользователя <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 07d18ad08f5a..961fe173752c 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -473,10 +473,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"සම්පූර්ණ\nනිහඬතාව"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ප්රමුඛතා\nපමණි"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ඇඟවීම්\nපමණි"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • නොරැහැන්ව ආරෝපණ කෙරේ (සම්පූර්ණ වන තෙක් <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ආරෝපණය වෙමින් (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> සම්පූර්ණ වන තෙක්)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • වේගයෙන් ආරෝපණය වෙමින් (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> සම්පූර්ණ වන තෙක්)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • සෙමින් ආරෝපණය වෙමින් (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> සම්පූර්ණ වන තෙක්)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • නොරැහැන්ව ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • වේගයෙන් ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • සෙමින් ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"පරිශීලක මාරුව"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"පරිශීලකයා මාරු කරන්න,දැන් සිටින පරිශීලකයා <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"වත්මන් පරිශීලක <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 7392c21ccd93..44325f70bc16 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Úplné\nticho"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Iba\nprioritné"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Iba\nbudíky"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa bezdrôtovo (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa rýchlo (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa pomaly (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Prepnutie používateľa"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Prepnúť používateľa (súčasný používateľ: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktuálny používateľ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 1d26588aac98..f11db070526e 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Popolna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Samo\nprednostno"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • brezžično polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • hitro polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • počasno polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Preklop med uporabniki"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Preklop med uporabniki, trenutni uporabnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Trenutni uporabnik: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index 6c7c86d2c711..70b53cbf68dd 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Heshtje\ne plotë"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Vetëm\nme prioritet"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Vetëm\nalarmet"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet me valë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> deri sa të mbushet)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet me shpejtësi (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet ngadalë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Ndërro përdorues"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Ndërro përdoruesin. Përdoruesi aktual është <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Përdoruesi aktual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 986a2c171ef1..de1c9a44a35d 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -475,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Потпуна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Само\nприорит. прекиди"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Само\nаларми"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Бежично пуњење (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Пуни се (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Брзо се пуни (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Споро се пуни (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Замени корисника"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Промените корисника, актуелни корисник је <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Актуелни корисник <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index cd7e1f6e5294..fcbe07d03a9c 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Helt\ntyst"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Endast\nprioriterade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Endast\nalarm"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas trådlöst (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas snabbt (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas långsamt (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Byt användare"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Byt användare. Aktuell användare: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktuell användare <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 75337fdbe3d3..a591d0056361 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Kimya\nkabisa"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Kipaumbele\npekee"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Kengele\npekee"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji bila kutumia waya (imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ili ijae)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji (Imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ili ijae)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji kwa kasi (Imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ili ijae)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji pole pole (Imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ijae)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Badili mtumiaji"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Badili mtumiaji, mtumiaji wa sasa <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Mtumiaji wa sasa <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index 5e540d0731fe..d616eabdc023 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"அறிவிப்புகள்\nவேண்டாம்"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"முன்னுரிமைகள்\nமட்டும்"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"அலாரங்கள்\nமட்டும்"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • வயர்லெஸ் முறையில் சார்ஜாகிறது (முடிய <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ஆகும்)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • சார்ஜாகிறது (முழு சார்ஜ்: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • வேகமாகச் சார்ஜாகிறது (முழு சார்ஜ்: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • மெதுவாகச் சார்ஜாகிறது (முழு சார்ஜ்: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"பயனரை மாற்று"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"பயனரை மாற்று, தற்போதைய பயனர் <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"தற்போதைய பயனர்: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 4805e9199e21..7d44b2b594ca 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"మొత్తం\nనిశ్శబ్దం"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ప్రాధాన్యమైనవి\nమాత్రమే"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"అలారాలు\nమాత్రమే"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • వైర్ లేకుండా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> పడుతుంది)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • వేగంగా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • నెమ్మదిగా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"వినియోగదారుని మార్చు"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"వినియోగదారుని మార్చు, ప్రస్తుత వినియోగదారు <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ప్రస్తుత వినియోగదారు <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>స్టేటస్:</b> నిశ్శబ్దం స్థాయికి తగ్గించబడింది"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>స్టేటస్:</b> ఎక్కువ ర్యాంక్కు సర్దుబాటు చేయబడింది"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>స్టేటస్:</b> తక్కువ ర్యాంక్కు సర్దుబాటు చేయబడింది"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"సంభాషణ నోటిఫికేషన్ల ఎగువున, లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోగా చూపిస్తుంది"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"సంభాషణ నోటిఫికేషన్ల ఎగువున, లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోగా చూపిస్తుంది, బబుల్గా కనిపిస్తుంది"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"సంభాషణ నోటిఫికేషన్ల ఎగువున, లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోగా చూపిస్తుంది, \'అంతరాయం కలిగించవద్దు\'ను అంతరాయం కలిగిస్తుంది"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"సంభాషణ నోటిఫికేషన్ల ఎగువున, లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోగా చూపిస్తుంది, బబుల్గా కనిపిస్తుంది, \'అంతరాయం కలిగించవద్దు\'ను అంతరాయం కలిగిస్తుంది"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"సెట్టింగ్లు"</string> <string name="notification_priority_title" msgid="2079708866333537093">"ప్రాధాన్యత"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> సంభాషణ ఫీచర్లను సపోర్ట్ చేయదు"</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index c8b76e144a2c..ff216a48c693 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ปิดเสียง\nทั้งหมด"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"เฉพาะเรื่อง\nสำคัญ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"เฉพาะปลุก\nเท่านั้น"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จแบบไร้สาย (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จ (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จอย่างเร็ว (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จอย่างช้าๆ (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"สลับผู้ใช้"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"เปลี่ยนผู้ใช้จากผู้ใช้ปัจจุบัน <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ผู้ใช้ปัจจุบัน <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index b6f5d313607d..fe75e012a826 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Ganap na\nkatahimikan"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priyoridad\nlang"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Mga alarm\nlang"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wireless na nagcha-charge (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> bago mapuno)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nagcha-charge (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hanggang mapuno)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mabilis na nagcha-charge (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> na lang)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mabagal na nagcha-charge (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> na lang)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Magpalit ng user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Magpalit ng user, kasalukuyang user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Kasalukuyang user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index d36d840a4be0..6d3743f10c47 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Tamamen\nsessiz"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Yalnızca\nöncelik"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Yalnızca\nalarmlar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kablosuz olarak şarj ediliyor (tam şarj olmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Şarj oluyor (dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hızlı şarj oluyor (dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Yavaş şarj oluyor (dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kullanıcı değiştirme"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Kullanıcı değiştir. Geçerli kullanıcı: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Geçerli kullanıcı: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 0433542a1113..c0f6e746bdf0 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -477,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Без\nсигналів"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Лише\nприорітетні"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Лише\nсигнали"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Бездротове заряджання (залишилося <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Заряджання (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до повного)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Швидке заряджання (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до повного)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Повільне заряджання (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до повного)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Змінити користувача"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Змінити користувача, поточний користувач – <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Поточний користувач: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 6b894340f9d1..491454a40ae0 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"مکمل\nخاموشی"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"صرف\nترجیحی"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"صرف\nالارمز"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • وائرلیس طریقے سے چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> باقی)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • تیزی سے چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> باقی)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • آہستہ چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> باقی)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"صارف سوئچ کریں"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"صارف سوئچ کریں، موجودہ صارف <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"موجودہ صارف <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 7fb06040bb09..1ba1eed9a2ab 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -289,11 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobil ulanish nuqtasi o‘chirildi."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobil ulanish nuqtasi yoqildi."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ekranni translatsiya qilish to‘xtadi."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Ish rejimi pauzada."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Ish rejimi yoniq."</string> - <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> - <skip /> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Ish rejimi pauza qilindi."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Ishchi rejim yoqildi."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Trafik tejash rejimi o‘chirib qo‘yildi."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Trafik tejash rejimi yoqildi."</string> @@ -412,8 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Cheklov: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Ogohlantirish: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Ish profili"</string> - <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> - <skip /> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Pauzada"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Tungi rejim"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Kunbotarda yoqish"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Quyosh chiqqunicha"</string> @@ -473,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Tinchlik\nsaqlansin"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Faqat\nmuhimlar"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Faqat\nsignallar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Simsiz quvvatlanyapti (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Quvvat olmoqda (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Tez quvvat olmoqda (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sekin quvvat olmoqda (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Simsiz quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Tez quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sekin quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Foydalanuvchini almashtirish"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Foydalanuvchini o‘zgartirish. Joriy foydalanuvchi – <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Joriy foydalanuvchi <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -672,12 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Hammasi"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Toʻlov uchun qulfdan chiqarish"</string> - <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> - <skip /> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Sozlanmagan"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Foydalanish uchun qulfdan chiqarish"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Bildirgilarni yuklashda xatolik yuz berdi, keyinroq qaytadan urining"</string> - <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> - <skip /> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Qulflangan ekran sozlamalari"</string> <string name="status_bar_work" msgid="5238641949837091056">"Ish profili"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Parvoz rejimi"</string> <string name="add_tile" msgid="6239678623873086686">"Tezkor sozlamalar tugmasini qo‘shish"</string> @@ -867,8 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Yoniq"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Yoqilmagan"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Mavjud emas"</string> - <!-- no translation found for tile_disabled (373212051546573069) --> - <skip /> + <string name="tile_disabled" msgid="373212051546573069">"Faolsizlantirilgan"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigatsiya paneli"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Tugmalar joylashuvi"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Qo‘shimcha Chapga tugmasi turi"</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 1840aed1ee6c..902c30f2564b 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Hoàn toàn\ntắt tiếng"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Chỉ\nưu tiên"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Chỉ\nbáo thức"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc không dây (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> cho tới khi đầy)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> cho tới khi đầy)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc nhanh (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> cho tới khi đầy)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc chậm (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> cho tới khi đầy)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Chuyển đổi người dùng"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Chuyển người dùng, người dùng hiện tại <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Người dùng hiện tại <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 0c1fdcc2790b..728e0255b01a 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"完全\n静音"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"仅限\n优先打扰"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"仅限\n闹钟"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在无线充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在快速充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在慢速充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切换用户"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"切换用户,当前用户为<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"当前用户为<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -746,14 +750,10 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>状态</b>:已降低为“静音”"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>状态</b>:已调高顺序"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>状态</b>:已调低顺序"</string> - <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> - <skip /> - <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> - <skip /> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"显示在对话通知顶部(屏幕锁定时显示为个人资料照片)"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"以气泡形式显示在对话通知顶部(屏幕锁定时显示为个人资料照片)"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"显示在对话通知顶部(屏幕锁定时显示为个人资料照片),并且会中断勿扰模式"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"以气泡形式显示在对话通知顶部(屏幕锁定时显示为个人资料照片),并且会中断勿扰模式"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"设置"</string> <string name="notification_priority_title" msgid="2079708866333537093">"优先"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>不支持对话功能"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 6588758b7811..165ccf9694af 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"完全\n靜音"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"僅限\n優先"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"僅限\n鬧鐘"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 無線充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成充電)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成充電)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在快速充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成充電)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在慢速充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"切換使用者,目前使用者是<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"目前的使用者是 <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index b241d7b39a46..8e2ecda4343d 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"完全\n靜音"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"僅允許\n優先通知"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"僅允許\n鬧鐘"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 無線充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 快速充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 慢速充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"切換使用者,目前使用者是<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"目前使用者是「<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>」"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index ab940677012e..1c70acc18722 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -473,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Ukuthula\niokuphelele"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Okubalulekile\nkuphela"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Ama-alamu\nkuphela"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ishaja ngokungenantambo (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kuze kugcwale)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Iyashaja (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ize igcwale)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ishaja kaningi (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ize igcwale)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ishaja kancane (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ize igcwale)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Shintsha umsebenzisi"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Shintsha umsebenzisi, umsebenzisi wamanje ngu-<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Umsebenzisi wamanje <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index abc44a204fca..10f7e4019867 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -637,6 +637,8 @@ <item name="android:background">@drawable/qs_media_light_source</item> <item name="android:tint">?android:attr/textColorPrimary</item> <item name="android:stateListAnimator">@anim/media_button_state_list_animator</item> + <item name="android:padding">12dp</item> + <item name="android:scaleType">fitCenter</item> </style> <style name="MediaPlayer.OutlineButton"> diff --git a/packages/SystemUI/res/xml/media_collapsed.xml b/packages/SystemUI/res/xml/media_collapsed.xml index 9bd462e66e3b..bdb8c049b861 100644 --- a/packages/SystemUI/res/xml/media_collapsed.xml +++ b/packages/SystemUI/res/xml/media_collapsed.xml @@ -40,10 +40,7 @@ app:layout_constrainedWidth="true" app:layout_constraintWidth_min="48dp" app:layout_constraintHeight_min="48dp" - android:paddingTop="@dimen/qs_media_padding" - android:paddingEnd="@dimen/qs_media_padding" android:layout_marginStart="@dimen/qs_center_guideline_padding" - android:layout_marginBottom="4dp" /> <Constraint @@ -125,10 +122,9 @@ <Constraint android:id="@+id/action0" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_action_spacing" - android:layout_marginTop="@dimen/qs_media_action_spacing" android:visibility="gone" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" @@ -142,10 +138,9 @@ <Constraint android:id="@+id/action1" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_action_spacing" - android:layout_marginTop="@dimen/qs_media_action_spacing" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action0" @@ -156,10 +151,9 @@ <Constraint android:id="@+id/action2" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_action_spacing" - android:layout_marginTop="@dimen/qs_media_action_spacing" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action1" @@ -170,10 +164,9 @@ <Constraint android:id="@+id/action3" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_action_spacing" - android:layout_marginTop="@dimen/qs_media_action_spacing" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action2" @@ -184,11 +177,10 @@ <Constraint android:id="@+id/action4" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_padding" android:visibility="gone" - android:layout_marginTop="@dimen/qs_media_action_spacing" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" app:layout_constraintBottom_toBottomOf="parent" diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java b/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java index 7cd7c9ed7de5..74aa1384e1f8 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/pip/PipSurfaceTransactionHelper.java @@ -16,9 +16,6 @@ package com.android.systemui.shared.pip; -import static android.graphics.Matrix.MSCALE_X; -import static android.graphics.Matrix.MSCALE_Y; - import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.RectF; @@ -32,15 +29,17 @@ import android.window.PictureInPictureSurfaceTransaction; * source of truth on enabling/disabling and the actual value of corner radius. */ public class PipSurfaceTransactionHelper { - /** corner radius is currently disabled. */ - private final float mCornerRadius = 0f; - + private final int mCornerRadius; private final Matrix mTmpTransform = new Matrix(); private final float[] mTmpFloat9 = new float[9]; private final RectF mTmpSourceRectF = new RectF(); private final RectF mTmpDestinationRectF = new RectF(); private final Rect mTmpDestinationRect = new Rect(); + public PipSurfaceTransactionHelper(int cornerRadius) { + mCornerRadius = cornerRadius; + } + public PictureInPictureSurfaceTransaction scale( SurfaceControl.Transaction tx, SurfaceControl leash, Rect sourceBounds, Rect destinationBounds) { @@ -52,8 +51,7 @@ public class PipSurfaceTransactionHelper { .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( mTmpDestinationRectF.left, mTmpDestinationRectF.top, - mTmpFloat9[MSCALE_X], mTmpFloat9[MSCALE_Y], - 0 /* rotation*/, mCornerRadius, sourceBounds); + mTmpFloat9, 0 /* rotation */, mCornerRadius, sourceBounds); } public PictureInPictureSurfaceTransaction scale( @@ -68,9 +66,7 @@ public class PipSurfaceTransactionHelper { .setPosition(leash, positionX, positionY) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( - positionX, positionY, - mTmpFloat9[MSCALE_X], mTmpFloat9[MSCALE_Y], - degree, mCornerRadius, sourceBounds); + positionX, positionY, mTmpFloat9, degree, mCornerRadius, sourceBounds); } public PictureInPictureSurfaceTransaction scaleAndCrop( @@ -92,7 +88,7 @@ public class PipSurfaceTransactionHelper { .setPosition(leash, left, top) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( - left, top, scale, scale, 0 /* rotation */, mCornerRadius, mTmpDestinationRect); + left, top, mTmpFloat9, 0 /* rotation */, mCornerRadius, mTmpDestinationRect); } public PictureInPictureSurfaceTransaction scaleAndRotate( @@ -114,7 +110,7 @@ public class PipSurfaceTransactionHelper { .setPosition(leash, positionX, positionY) .setCornerRadius(leash, mCornerRadius); return new PictureInPictureSurfaceTransaction( - positionX, positionY, scale, scale, degree, mCornerRadius, mTmpDestinationRect); + positionX, positionY, mTmpFloat9, degree, mCornerRadius, mTmpDestinationRect); } /** @return {@link SurfaceControl.Transaction} instance with vsync-id */ diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java index 3d42da2e5158..97d3a5a4cd18 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java @@ -28,7 +28,6 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.systemui.R; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.util.ViewController; import com.android.systemui.util.concurrency.DelayableExecutor; @@ -167,7 +166,6 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> private final TelephonyManager mTelephonyManager; private final EmergencyButtonController.Factory mEmergencyButtonControllerFactory; private final FalsingCollector mFalsingCollector; - private final boolean mIsNewLayoutEnabled; @Inject public Factory(KeyguardUpdateMonitor keyguardUpdateMonitor, @@ -177,8 +175,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> InputMethodManager inputMethodManager, @Main DelayableExecutor mainExecutor, @Main Resources resources, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, - EmergencyButtonController.Factory emergencyButtonControllerFactory, - FeatureFlags featureFlags) { + EmergencyButtonController.Factory emergencyButtonControllerFactory) { mKeyguardUpdateMonitor = keyguardUpdateMonitor; mLockPatternUtils = lockPatternUtils; mLatencyTracker = latencyTracker; @@ -190,7 +187,6 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> mTelephonyManager = telephonyManager; mEmergencyButtonControllerFactory = emergencyButtonControllerFactory; mFalsingCollector = falsingCollector; - mIsNewLayoutEnabled = featureFlags.isKeyguardLayoutEnabled(); } /** Create a new {@link KeyguardInputViewController}. */ @@ -216,20 +212,19 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> return new KeyguardPinViewController((KeyguardPINView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, - mLiftToActivateListener, emergencyButtonController, mFalsingCollector, - mIsNewLayoutEnabled); + mLiftToActivateListener, emergencyButtonController, mFalsingCollector); } else if (keyguardInputView instanceof KeyguardSimPinView) { return new KeyguardSimPinViewController((KeyguardSimPinView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, mLiftToActivateListener, mTelephonyManager, mFalsingCollector, - emergencyButtonController, mIsNewLayoutEnabled); + emergencyButtonController); } else if (keyguardInputView instanceof KeyguardSimPukView) { return new KeyguardSimPukViewController((KeyguardSimPukView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, mLiftToActivateListener, mTelephonyManager, mFalsingCollector, - emergencyButtonController, mIsNewLayoutEnabled); + emergencyButtonController); } throw new RuntimeException("Unable to find controller for " + keyguardInputView); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java index 09fb8efba4e8..0b8868f6d3c4 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java @@ -169,20 +169,6 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView } /** - * By default, the new layout will be enabled. When false, revert to the old style. - */ - public void setIsNewLayoutEnabled(boolean isEnabled) { - if (!isEnabled) { - for (int i = 0; i < mButtons.length; i++) { - mButtons[i].disableNewLayout(); - } - mDeleteButton.disableNewLayout(); - mOkButton.disableNewLayout(); - reloadColors(); - } - } - - /** * Reload colors from resources. **/ public void reloadColors() { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java index a456d42f5be5..262bed3f695c 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java @@ -35,12 +35,11 @@ public class KeyguardPinViewController KeyguardMessageAreaController.Factory messageAreaControllerFactory, LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener, EmergencyButtonController emergencyButtonController, - FalsingCollector falsingCollector, boolean isNewLayoutEnabled) { + FalsingCollector falsingCollector) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, emergencyButtonController, falsingCollector); mKeyguardUpdateMonitor = keyguardUpdateMonitor; - view.setIsNewLayoutEnabled(isNewLayoutEnabled); } @Override diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java index fddbb3cdfc84..e04bfdc3868d 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java @@ -79,14 +79,13 @@ public class KeyguardSimPinViewController KeyguardMessageAreaController.Factory messageAreaControllerFactory, LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, - EmergencyButtonController emergencyButtonController, boolean isNewLayoutEnabled) { + EmergencyButtonController emergencyButtonController) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, emergencyButtonController, falsingCollector); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mTelephonyManager = telephonyManager; mSimImageView = mView.findViewById(R.id.keyguard_sim); - view.setIsNewLayoutEnabled(isNewLayoutEnabled); } @Override diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java index 50bd0c71752b..07309224608e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java @@ -85,14 +85,13 @@ public class KeyguardSimPukViewController KeyguardMessageAreaController.Factory messageAreaControllerFactory, LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, - EmergencyButtonController emergencyButtonController, boolean isNewLayoutEnabled) { + EmergencyButtonController emergencyButtonController) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, emergencyButtonController, falsingCollector); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mTelephonyManager = telephonyManager; mSimImageView = mView.findViewById(R.id.keyguard_sim); - view.setIsNewLayoutEnabled(isNewLayoutEnabled); } @Override diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java index abdd770c37d4..e6298a426c5b 100644 --- a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java +++ b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java @@ -21,7 +21,6 @@ import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.drawable.GradientDrawable; -import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.RippleDrawable; import android.view.ContextThemeWrapper; @@ -40,17 +39,14 @@ class NumPadAnimator { private ValueAnimator mContractAnimator; private GradientDrawable mBackground; private RippleDrawable mRipple; - private GradientDrawable mRippleMask; private int mNormalColor; private int mHighlightColor; private int mStyle; - NumPadAnimator(Context context, LayerDrawable drawable, @StyleRes int style) { - LayerDrawable ld = (LayerDrawable) drawable.mutate(); - mBackground = (GradientDrawable) ld.findDrawableByLayerId(R.id.background); - mRipple = (RippleDrawable) ld.findDrawableByLayerId(R.id.ripple); - mRippleMask = (GradientDrawable) mRipple.findDrawableByLayerId(android.R.id.mask); + NumPadAnimator(Context context, final RippleDrawable drawable, @StyleRes int style) { mStyle = style; + mRipple = (RippleDrawable) drawable.mutate(); + mBackground = (GradientDrawable) mRipple.findDrawableByLayerId(R.id.background); reloadColors(context); @@ -62,7 +58,7 @@ class NumPadAnimator { mExpandAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator anim) { mBackground.setCornerRadius((float) anim.getAnimatedValue()); - mRippleMask.setCornerRadius((float) anim.getAnimatedValue()); + mRipple.invalidateSelf(); } }); @@ -73,7 +69,7 @@ class NumPadAnimator { mContractAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator anim) { mBackground.setCornerRadius((float) anim.getAnimatedValue()); - mRippleMask.setCornerRadius((float) anim.getAnimatedValue()); + mRipple.invalidateSelf(); } }); mAnimator.playSequentially(mExpandAnimator, mContractAnimator); diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadButton.java b/packages/SystemUI/src/com/android/keyguard/NumPadButton.java index b76499a39ff8..096597afa889 100644 --- a/packages/SystemUI/src/com/android/keyguard/NumPadButton.java +++ b/packages/SystemUI/src/com/android/keyguard/NumPadButton.java @@ -16,37 +16,22 @@ package com.android.keyguard; import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.LayerDrawable; -import android.graphics.drawable.VectorDrawable; +import android.graphics.drawable.RippleDrawable; import android.util.AttributeSet; -import android.view.ContextThemeWrapper; import android.view.MotionEvent; -import androidx.annotation.Nullable; - -import com.android.settingslib.Utils; -import com.android.systemui.R; - /** * Similar to the {@link NumPadKey}, but displays an image. */ public class NumPadButton extends AlphaOptimizedImageButton { - @Nullable private NumPadAnimator mAnimator; public NumPadButton(Context context, AttributeSet attrs) { super(context, attrs); - Drawable background = getBackground(); - if (background instanceof LayerDrawable) { - mAnimator = new NumPadAnimator(context, (LayerDrawable) background, - attrs.getStyleAttribute()); - } else { - mAnimator = null; - } + mAnimator = new NumPadAnimator(context, (RippleDrawable) getBackground(), + attrs.getStyleAttribute()); } @Override @@ -56,7 +41,7 @@ public class NumPadButton extends AlphaOptimizedImageButton { // Set width/height to the same value to ensure a smooth circle for the bg, but shrink // the height to match the old pin bouncer int width = getMeasuredWidth(); - int height = mAnimator == null ? (int) (width * .75f) : width; + int height = width; setMeasuredDimension(getMeasuredWidth(), height); } @@ -65,13 +50,13 @@ public class NumPadButton extends AlphaOptimizedImageButton { protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); - if (mAnimator != null) mAnimator.onLayout(b - t); + mAnimator.onLayout(b - t); } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { - if (mAnimator != null) mAnimator.start(); + mAnimator.start(); } return super.onTouchEvent(event); } @@ -80,25 +65,6 @@ public class NumPadButton extends AlphaOptimizedImageButton { * Reload colors from resources. **/ public void reloadColors() { - if (mAnimator != null) { - mAnimator.reloadColors(getContext()); - } else { - // Needed for old style pin - int textColor = Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary) - .getDefaultColor(); - ((VectorDrawable) getDrawable()).setTintList(ColorStateList.valueOf(textColor)); - } - } - - /** - * By default, the new layout will be enabled. Invoking will revert to the old style - */ - public void disableNewLayout() { - if (mAnimator != null) { - mAnimator = null; - ContextThemeWrapper ctw = new ContextThemeWrapper(getContext(), R.style.NumPadKey); - setBackground(getContext().getResources().getDrawable( - R.drawable.ripple_drawable_pin, ctw.getTheme())); - } + mAnimator.reloadColors(getContext()); } } diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadKey.java b/packages/SystemUI/src/com/android/keyguard/NumPadKey.java index 89c1a7fe21ca..35ace0d1a404 100644 --- a/packages/SystemUI/src/com/android/keyguard/NumPadKey.java +++ b/packages/SystemUI/src/com/android/keyguard/NumPadKey.java @@ -18,12 +18,10 @@ package com.android.keyguard; import android.content.Context; import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.LayerDrawable; +import android.graphics.drawable.RippleDrawable; import android.os.PowerManager; import android.os.SystemClock; import android.util.AttributeSet; -import android.view.ContextThemeWrapper; import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -32,8 +30,6 @@ import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; import android.widget.TextView; -import androidx.annotation.Nullable; - import com.android.internal.widget.LockPatternUtils; import com.android.settingslib.Utils; import com.android.systemui.R; @@ -51,7 +47,6 @@ public class NumPadKey extends ViewGroup { private int mTextViewResId; private PasswordTextView mTextView; - @Nullable private NumPadAnimator mAnimator; private View.OnClickListener mListener = new View.OnClickListener() { @@ -131,26 +126,8 @@ public class NumPadKey extends ViewGroup { setContentDescription(mDigitText.getText().toString()); - Drawable background = getBackground(); - if (background instanceof LayerDrawable) { - mAnimator = new NumPadAnimator(context, (LayerDrawable) background, - R.style.NumPadKey); - } else { - mAnimator = null; - } - } - - /** - * By default, the new layout will be enabled. Invoking will revert to the old style - */ - public void disableNewLayout() { - findViewById(R.id.klondike_text).setVisibility(View.VISIBLE); - if (mAnimator != null) { - mAnimator = null; - ContextThemeWrapper ctw = new ContextThemeWrapper(getContext(), R.style.NumPadKey); - setBackground(getContext().getResources().getDrawable( - R.drawable.ripple_drawable_pin, ctw.getTheme())); - } + mAnimator = new NumPadAnimator(context, (RippleDrawable) getBackground(), + R.style.NumPadKey); } /** @@ -164,14 +141,14 @@ public class NumPadKey extends ViewGroup { mDigitText.setTextColor(textColor); mKlondikeText.setTextColor(klondikeColor); - if (mAnimator != null) mAnimator.reloadColors(getContext()); + mAnimator.reloadColors(getContext()); } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { doHapticKeyClick(); - if (mAnimator != null) mAnimator.start(); + mAnimator.start(); } return super.onTouchEvent(event); @@ -185,7 +162,7 @@ public class NumPadKey extends ViewGroup { // Set width/height to the same value to ensure a smooth circle for the bg, but shrink // the height to match the old pin bouncer int width = getMeasuredWidth(); - int height = mAnimator == null ? (int) (width * .75f) : width; + int height = width; setMeasuredDimension(getMeasuredWidth(), height); } @@ -206,7 +183,7 @@ public class NumPadKey extends ViewGroup { left = centerX - mKlondikeText.getMeasuredWidth() / 2; mKlondikeText.layout(left, top, left + mKlondikeText.getMeasuredWidth(), bottom); - if (mAnimator != null) mAnimator.onLayout(b - t); + mAnimator.onLayout(b - t); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index e243e1e76c54..5f27400741a9 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -345,7 +345,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { } if (isWithinSensorArea(udfpsView, event.getX(), event.getY(), fromUdfpsView)) { Trace.beginAsyncSection( - "UdfpsController.mOnTouchListener#isWithinSensorArea", 1); + "UdfpsController#ACTION_DOWN", 1); // The pointer that causes ACTION_DOWN is always at index 0. // We need to persist its ID to track it during ACTION_MOVE that could include // data for many other pointers because of multi-touch support. @@ -382,8 +382,6 @@ public class UdfpsController implements DozeReceiver, HbmCallback { minor, major, v, exceedsVelocityThreshold); final long sinceLastLog = SystemClock.elapsedRealtime() - mTouchLogTime; if (!isFingerDown && !exceedsVelocityThreshold) { - Trace.endAsyncSection( - "UdfpsController.mOnTouchListener#isWithinSensorArea", 1); onFingerDown((int) x, (int) y, minor, major); Log.v(TAG, "onTouch | finger down: " + touchInfo); mTouchLogTime = SystemClock.elapsedRealtime(); @@ -761,10 +759,13 @@ public class UdfpsController implements DozeReceiver, HbmCallback { Log.w(TAG, "Null view in onFingerDown"); return; } + mFingerprintManager.onPointerDown(mSensorProps.sensorId, x, y, minor, major); + Trace.endAsyncSection( + "UdfpsController#ACTION_DOWN", 1); Trace.beginAsyncSection("UdfpsController#startIllumination", 1); mView.startIllumination(() -> { + mFingerprintManager.onUiReady(mSensorProps.sensorId); Trace.endAsyncSection("UdfpsController#startIllumination", 1); - mFingerprintManager.onPointerDown(mSensorProps.sensorId, x, y, minor, major); }); } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 48f9a58d7d1a..36a0acc6fb4c 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -104,6 +104,7 @@ import com.android.systemui.keyguard.dagger.KeyguardModule; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.shared.system.QuickStepContract; +import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.phone.BiometricUnlockController; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.KeyguardBypassController; @@ -229,6 +230,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, private AlarmManager mAlarmManager; private AudioManager mAudioManager; private StatusBarManager mStatusBarManager; + private final SysuiStatusBarStateController mStatusBarStateController; private final Executor mUiBgExecutor; private boolean mSystemReady; @@ -779,7 +781,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, NavigationModeController navigationModeController, KeyguardDisplayManager keyguardDisplayManager, DozeParameters dozeParameters, - StatusBarStateController statusBarStateController, + SysuiStatusBarStateController statusBarStateController, KeyguardStateController keyguardStateController, Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationControllerLazy) { super(context); @@ -808,6 +810,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mInGestureNavigationMode = QuickStepContract.isGesturalMode(mode); })); mDozeParameters = dozeParameters; + mStatusBarStateController = statusBarStateController; statusBarStateController.addCallback(this); mKeyguardStateController = keyguardStateController; @@ -2100,19 +2103,17 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, playSounds(false); } - if (KeyguardService.sEnableRemoteKeyguardAnimation) { + // When remaining on the shade, there's no need to do a fancy remote animation, + // it will dismiss the panel in that case. + if (KeyguardService.sEnableRemoteKeyguardAnimation + && !mStatusBarStateController.leaveOpenOnKeyguardHide() + && apps != null && apps.length > 0) { mSurfaceBehindRemoteAnimationFinishedCallback = finishedCallback; mSurfaceBehindRemoteAnimationRunning = true; - if (apps != null && apps.length > 0) { - // Pass the surface and metadata to the unlock animation controller. - mKeyguardUnlockAnimationControllerLazy.get().notifyStartKeyguardExitAnimation( - apps[0], startTime, mSurfaceBehindRemoteAnimationRequested); - } else { - // We weren't given any surfaces to animate, so just finish. - onKeyguardExitRemoteAnimationFinished(); - return; - } + // Pass the surface and metadata to the unlock animation controller. + mKeyguardUnlockAnimationControllerLazy.get().notifyStartKeyguardExitAnimation( + apps[0], startTime, mSurfaceBehindRemoteAnimationRequested); } else { setShowingLocked(false); mWakeAndUnlocking = false; diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java index ecee1b508ce0..119e9c433f67 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java @@ -47,6 +47,7 @@ import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationShadeWindowController; +import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.KeyguardLiftController; import com.android.systemui.statusbar.phone.StatusBar; @@ -94,7 +95,7 @@ public class KeyguardModule { NavigationModeController navigationModeController, KeyguardDisplayManager keyguardDisplayManager, DozeParameters dozeParameters, - StatusBarStateController statusBarStateController, + SysuiStatusBarStateController statusBarStateController, KeyguardStateController keyguardStateController, Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController) { return new KeyguardViewMediator( diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java index 577c0d8455eb..b7f2cd0da642 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java @@ -319,10 +319,18 @@ public class InternetTile extends QSTileImpl<SignalState> { Log.d(TAG, "setIsAirplaneMode: " + "icon = " + (icon == null ? "" : icon.toString())); } + if (mCellularInfo.mAirplaneModeEnabled == icon.visible) { + return; + } mCellularInfo.mAirplaneModeEnabled = icon.visible; mWifiInfo.mAirplaneModeEnabled = icon.visible; if (!mSignalCallback.mEthernetInfo.mConnected) { - refreshState(mCellularInfo); + if (mWifiInfo.mEnabled && (mWifiInfo.mWifiSignalIconId > 0) + && (mWifiInfo.mSsid != null)) { + refreshState(mWifiInfo); + } else { + refreshState(mCellularInfo); + } } } @@ -456,6 +464,9 @@ public class InternetTile extends QSTileImpl<SignalState> { state.dualLabelContentDescription = r.getString( R.string.accessibility_quick_settings_open_settings, getTileLabel()); state.expandedAccessibilityClassName = Switch.class.getName(); + if (DEBUG) { + Log.d(TAG, "handleUpdateWifiState: " + "SignalState = " + state.toString()); + } } private void handleUpdateCellularState(SignalState state, Object arg) { @@ -496,6 +507,9 @@ public class InternetTile extends QSTileImpl<SignalState> { } else { state.stateDescription = state.secondaryLabel; } + if (DEBUG) { + Log.d(TAG, "handleUpdateCellularState: " + "SignalState = " + state.toString()); + } } private void handleUpdateEthernetState(SignalState state, Object arg) { @@ -508,6 +522,9 @@ public class InternetTile extends QSTileImpl<SignalState> { state.state = Tile.STATE_ACTIVE; state.icon = ResourceIcon.get(cb.mEthernetSignalIconId); state.secondaryLabel = cb.mEthernetContentDescription; + if (DEBUG) { + Log.d(TAG, "handleUpdateEthernetState: " + "SignalState = " + state.toString()); + } } private CharSequence appendMobileDataType(CharSequence current, CharSequence dataType) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index 1ff30a32c4ef..6baacb931a68 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -57,6 +57,7 @@ import androidx.annotation.NonNull; import com.android.internal.os.SomeArgs; import com.android.internal.statusbar.IStatusBar; import com.android.internal.statusbar.StatusBarIcon; +import com.android.internal.util.GcUtils; import com.android.internal.view.AppearanceRegion; import com.android.systemui.statusbar.CommandQueue.Callbacks; import com.android.systemui.statusbar.commandline.CommandRegistry; @@ -1086,6 +1087,12 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< thr.start(); } + @Override + public void runGcForTest() { + // Gc sysui + GcUtils.runGcAndFinalizersSync(); + } + private final class H extends Handler { private H(Looper l) { super(l); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java index c8c0755344a4..13a8661f94dc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java @@ -140,7 +140,7 @@ public class NotificationEntryManager implements private final KeyguardEnvironment mKeyguardEnvironment; private final NotificationGroupManagerLegacy mGroupManager; - private final NotificationRankingManager mRankingManager; + private final Lazy<NotificationRankingManager> mRankingManager; private final FeatureFlags mFeatureFlags; private final ForegroundServiceDismissalFeatureController mFgsFeatureController; @@ -200,7 +200,7 @@ public class NotificationEntryManager implements public NotificationEntryManager( NotificationEntryManagerLogger logger, NotificationGroupManagerLegacy groupManager, - NotificationRankingManager rankingManager, + Lazy<NotificationRankingManager> rankingManager, KeyguardEnvironment keyguardEnvironment, FeatureFlags featureFlags, Lazy<NotificationRowBinder> notificationRowBinderLazy, @@ -419,7 +419,7 @@ public class NotificationEntryManager implements mActiveNotifications.put(entry.getKey(), entry); mGroupManager.onEntryAdded(entry); - updateRankingAndSort(mRankingManager.getRankingMap(), "addEntryInternalInternal"); + updateRankingAndSort(mRankingManager.get().getRankingMap(), "addEntryInternalInternal"); } /** @@ -886,13 +886,13 @@ public class NotificationEntryManager implements /** Resorts / filters the current notification set with the current RankingMap */ public void reapplyFilterAndSort(String reason) { - updateRankingAndSort(mRankingManager.getRankingMap(), reason); + updateRankingAndSort(mRankingManager.get().getRankingMap(), reason); } /** Calls to NotificationRankingManager and updates mSortedAndFiltered */ private void updateRankingAndSort(@NonNull RankingMap rankingMap, String reason) { mSortedAndFiltered.clear(); - mSortedAndFiltered.addAll(mRankingManager.updateRanking( + mSortedAndFiltered.addAll(mRankingManager.get().updateRanking( rankingMap, mActiveNotifications.values(), reason)); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java index e2a37f647bf5..89bb65278dce 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java @@ -80,8 +80,6 @@ import com.android.systemui.wmshell.BubblesManager; import java.util.Optional; import java.util.concurrent.Executor; -import javax.inject.Provider; - import dagger.Binds; import dagger.Lazy; import dagger.Module; @@ -102,7 +100,7 @@ public interface NotificationsModule { static NotificationEntryManager provideNotificationEntryManager( NotificationEntryManagerLogger logger, NotificationGroupManagerLegacy groupManager, - NotificationRankingManager rankingManager, + Lazy<NotificationRankingManager> rankingManager, NotificationEntryManager.KeyguardEnvironment keyguardEnvironment, FeatureFlags featureFlags, Lazy<NotificationRowBinder> notificationRowBinderLazy, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 20b37e26dcee..c0d713b85287 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -2574,16 +2574,19 @@ public class NotificationPanelViewController extends PanelViewController { // Small parallax as we pull down and clip QS startHeight = -mQsExpansionHeight * 0.2f; } - if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard() - && mNotificationStackScrollLayoutController.isPulseExpanding()) { - if (!mPulseExpansionHandler.isExpanding() - && !mPulseExpansionHandler.getLeavingLockscreen()) { - // If we aborted the expansion we need to make sure the header doesn't reappear - // again after the header has animated away - appearAmount = 0; + if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard()) { + if (mNotificationStackScrollLayoutController.isPulseExpanding()) { + if (!mPulseExpansionHandler.isExpanding() + && !mPulseExpansionHandler.getLeavingLockscreen()) { + // If we aborted the expansion we need to make sure the header doesn't reappear + // again after the header has animated away + appearAmount = 0; + } else { + appearAmount = mNotificationStackScrollLayoutController + .calculateAppearFractionBypass(); + } } else { - appearAmount = mNotificationStackScrollLayoutController - .calculateAppearFractionBypass(); + appearAmount = 0.0f; } startHeight = -mQs.getQsMinExpansionHeight(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java index 99feb18b33e9..987812b0581c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java @@ -195,7 +195,8 @@ public class HotspotControllerImpl implements HotspotController, WifiManager.Sof if (enabled) { mWaitingForTerminalState = true; if (DEBUG) Log.d(TAG, "Starting tethering"); - mTetheringManager.startTethering(new TetheringRequest.Builder(TETHERING_WIFI).build(), + mTetheringManager.startTethering(new TetheringRequest.Builder( + TETHERING_WIFI).setShouldShowEntitlementUi(false).build(), ConcurrentUtils.DIRECT_EXECUTOR, new TetheringManager.StartTetheringCallback() { @Override diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt b/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt new file mode 100644 index 000000000000..647faeba1e77 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.concurrency + +import android.os.Looper +import javax.inject.Inject + +/** + * Methods to check or assert that we're on the main thread + */ +interface Execution { + fun assertIsMainThread() + fun isMainThread(): Boolean +} + +class ExecutionImpl @Inject constructor() : Execution { + private val mainLooper = Looper.getMainLooper() + + override fun assertIsMainThread() { + if (!mainLooper.isCurrentThread) { + throw IllegalStateException("should be called from the main thread." + + " Main thread name=" + mainLooper.thread.name + + " Thread.currentThread()=" + Thread.currentThread().name) + } + } + + override fun isMainThread(): Boolean { + return mainLooper.isCurrentThread + } +} + +class FakeExecution : Execution { + var simulateMainThread = true + + override fun assertIsMainThread() { + if (!simulateMainThread) { + throw IllegalStateException("should be called from the main thread") + } + } + + override fun isMainThread(): Boolean { + return simulateMainThread + } +} diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java b/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java index 5946af383b0f..1c504961e715 100644 --- a/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java +++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java @@ -24,6 +24,8 @@ import com.android.systemui.dagger.qualifiers.Main; import java.util.concurrent.Executor; +import javax.inject.Singleton; + import dagger.Binds; import dagger.Module; import dagger.Provides; @@ -40,7 +42,7 @@ public abstract class GlobalConcurrencyModule { @Binds public abstract ThreadFactory bindExecutorFactory(ThreadFactoryImpl impl); - /** Main Looper */ + /** Main Looper */ @Provides @Main public static Looper provideMainLooper() { @@ -67,4 +69,8 @@ public abstract class GlobalConcurrencyModule { return context.getMainExecutor(); } + /** */ + @Binds + @Singleton + public abstract Execution provideExecution(ExecutionImpl execution); } diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java index 26b68afed494..6c306743e4ce 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/WMShellBaseModule.java @@ -280,8 +280,8 @@ public abstract class WMShellBaseModule { @WMSingleton @Provides - static PipSurfaceTransactionHelper providePipSurfaceTransactionHelper(Context context) { - return new PipSurfaceTransactionHelper(context); + static PipSurfaceTransactionHelper providePipSurfaceTransactionHelper() { + return new PipSurfaceTransactionHelper(); } @WMSingleton diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java index 495489f1ab6e..8c5f74dc7c93 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java @@ -32,7 +32,7 @@ import android.app.smartspace.SmartspaceTarget; import android.content.Context; import android.content.pm.UserInfo; import android.content.res.Resources; -import android.graphics.drawable.Icon; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.UserHandle; import android.test.suitebuilder.annotation.SmallTest; @@ -394,6 +394,8 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { public void setFalsingManager(FalsingManager falsingManager) { } - public void setDnd(@Nullable Icon dndIcon, @Nullable String description) { } + public void setDnd(@Nullable Drawable dndIcon, @Nullable String description) { } + + public void setNextAlarm(@Nullable Drawable dndIcon, @Nullable String description) { } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java index aed49a84ca4d..875696a08cf1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java @@ -232,12 +232,14 @@ public class UdfpsControllerTest extends SysuiTestCase { MotionEvent moveEvent = MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE, 0, 0, 0); mTouchListenerCaptor.getValue().onTouch(mUdfpsView, moveEvent); moveEvent.recycle(); - // THEN illumination begins - // AND onIlluminatedRunnable that notifies FingerprintManager is set - verify(mUdfpsView).startIllumination(mOnIlluminatedRunnableCaptor.capture()); - mOnIlluminatedRunnableCaptor.getValue().run(); + // THEN FingerprintManager is notified about onPointerDown verify(mFingerprintManager).onPointerDown(eq(mUdfpsController.mSensorProps.sensorId), eq(0), eq(0), eq(0f), eq(0f)); + // AND illumination begins + verify(mUdfpsView).startIllumination(mOnIlluminatedRunnableCaptor.capture()); + // AND onIlluminatedRunnable notifies FingerprintManager about onUiReady + mOnIlluminatedRunnableCaptor.getValue().run(); + verify(mFingerprintManager).onUiReady(eq(mUdfpsController.mSensorProps.sensorId)); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java index 5c87741b8883..6f03f5d975d0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java @@ -46,7 +46,7 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.dump.DumpManager; import com.android.systemui.navigationbar.NavigationModeController; -import com.android.systemui.plugins.statusbar.StatusBarStateController; +import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -79,7 +79,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { private @Mock NavigationModeController mNavigationModeController; private @Mock KeyguardDisplayManager mKeyguardDisplayManager; private @Mock DozeParameters mDozeParameters; - private @Mock StatusBarStateController mStatusBarStateController; + private @Mock SysuiStatusBarStateController mStatusBarStateController; private @Mock KeyguardStateController mKeyguardStateController; private @Mock KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; private DeviceConfigProxy mDeviceConfig = new DeviceConfigProxyFake(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java index 5fc01ccd96b4..6459c0c9f441 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java @@ -190,7 +190,7 @@ public class NotificationEntryManagerTest extends SysuiTestCase { mEntryManager = new NotificationEntryManager( mLogger, mGroupManager, - new NotificationRankingManager( + () -> new NotificationRankingManager( () -> mNotificationMediaManager, mGroupManager, mHeadsUpManager, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java index 950b95f41542..7b0c06736979 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java @@ -181,7 +181,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase { mEntryManager = new NotificationEntryManager( mock(NotificationEntryManagerLogger.class), mGroupMembershipManager, - new NotificationRankingManager( + () -> new NotificationRankingManager( () -> mock(NotificationMediaManager.class), mGroupMembershipManager, mHeadsUpManager, diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 8e12cb207232..ae14e37c8329 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -4789,6 +4789,7 @@ public class ConnectivityService extends IConnectivityManager.Stub (Pair<ProfileNetworkPreferences.Preference, IOnCompleteListener>) msg.obj; handleSetProfileNetworkPreference(arg.first, arg.second); + break; } case EVENT_REPORT_NETWORK_ACTIVITY: mNetworkActivityTracker.handleReportNetworkActivity(); diff --git a/services/core/java/com/android/server/OWNERS b/services/core/java/com/android/server/OWNERS index f27e7ff2cc2f..95dc66727730 100644 --- a/services/core/java/com/android/server/OWNERS +++ b/services/core/java/com/android/server/OWNERS @@ -31,8 +31,9 @@ per-file GestureLauncherService.java = file:platform/packages/apps/EmergencyInfo per-file IpSecService.java = file:/services/core/java/com/android/server/net/OWNERS per-file MmsServiceBroker.java = file:/telephony/OWNERS per-file NetIdManager.java = file:/services/core/java/com/android/server/net/OWNERS -per-file PackageWatchdog.java = file:/services/core/java/com/android/server/rollback/OWNERS +per-file PackageWatchdog.java, RescueParty.java = file:/services/core/java/com/android/server/rollback/OWNERS per-file PinnerService.java = file:/apct-tests/perftests/OWNERS +per-file RescueParty.java = fdunlap@google.com, shuc@google.com per-file TelephonyRegistry.java = file:/telephony/OWNERS per-file UiModeManagerService.java = file:/packages/SystemUI/OWNERS per-file VcnManagementService.java = file:/services/core/java/com/android/server/vcn/OWNERS diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java index df4c2cfc7fd4..2bb90846d292 100644 --- a/services/core/java/com/android/server/VcnManagementService.java +++ b/services/core/java/com/android/server/VcnManagementService.java @@ -432,6 +432,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { synchronized (mLock) { final TelephonySubscriptionSnapshot oldSnapshot = mLastSnapshot; mLastSnapshot = snapshot; + Slog.d(TAG, "new snapshot: " + mLastSnapshot); // Start any VCN instances as necessary for (Entry<ParcelUuid, VcnConfig> entry : mConfigs.entrySet()) { @@ -534,7 +535,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { @GuardedBy("mLock") private void startVcnLocked(@NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) { - Slog.v(TAG, "Starting VCN config for subGrp: " + subscriptionGroup); + Slog.d(TAG, "Starting VCN config for subGrp: " + subscriptionGroup); // TODO(b/176939047): Support multiple VCNs active at the same time, or limit to one active // VCN. @@ -556,7 +557,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { @GuardedBy("mLock") private void startOrUpdateVcnLocked( @NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) { - Slog.v(TAG, "Starting or updating VCN config for subGrp: " + subscriptionGroup); + Slog.d(TAG, "Starting or updating VCN config for subGrp: " + subscriptionGroup); if (mVcns.containsKey(subscriptionGroup)) { final Vcn vcn = mVcns.get(subscriptionGroup); @@ -582,7 +583,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { if (!config.getProvisioningPackageName().equals(opPkgName)) { throw new IllegalArgumentException("Mismatched caller and VcnConfig creator"); } - Slog.v(TAG, "VCN config updated for subGrp: " + subscriptionGroup); + Slog.d(TAG, "VCN config updated for subGrp: " + subscriptionGroup); mContext.getSystemService(AppOpsManager.class) .checkPackage(mDeps.getBinderCallingUid(), config.getProvisioningPackageName()); @@ -607,7 +608,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { public void clearVcnConfig(@NonNull ParcelUuid subscriptionGroup, @NonNull String opPkgName) { requireNonNull(subscriptionGroup, "subscriptionGroup was null"); requireNonNull(opPkgName, "opPkgName was null"); - Slog.v(TAG, "VCN config cleared for subGrp: " + subscriptionGroup); + Slog.d(TAG, "VCN config cleared for subGrp: " + subscriptionGroup); mContext.getSystemService(AppOpsManager.class) .checkPackage(mDeps.getBinderCallingUid(), opPkgName); @@ -843,8 +844,14 @@ public class VcnManagementService extends IVcnManagementService.Stub { } final NetworkCapabilities result = ncBuilder.build(); - return new VcnUnderlyingNetworkPolicy( + final VcnUnderlyingNetworkPolicy policy = new VcnUnderlyingNetworkPolicy( mTrackingNetworkCallback.requiresRestartForCarrierWifi(result), result); + + if (VDBG) { + Slog.d(TAG, "getUnderlyingNetworkPolicy() called for caps: " + networkCapabilities + + "; and lp: " + linkProperties + "; result = " + policy); + } + return policy; }); } diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 5700bb367b04..1bd53ae24730 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -309,11 +309,23 @@ public final class ActiveServices { * Watch for apps being put into forced app standby, so we can step their fg * services down. */ - class ForcedStandbyListener implements AppStateTracker.ServiceStateListener { + class ForcedStandbyListener implements AppStateTracker.ForcedAppStandbyListener { @Override - public void stopForegroundServicesForUidPackage(final int uid, final String packageName) { + public void updateForceAppStandbyForUidPackage(int uid, String packageName, + boolean standby) { synchronized (mAm) { - stopAllForegroundServicesLocked(uid, packageName); + if (standby) { + stopAllForegroundServicesLocked(uid, packageName); + } + mAm.mProcessList.updateForceAppStandbyForUidPackageLocked( + uid, packageName, standby); + } + } + + @Override + public void updateForcedAppStandbyForAllApps() { + synchronized (mAm) { + mAm.mProcessList.updateForcedAppStandbyForAllAppsLocked(); } } } @@ -499,7 +511,7 @@ public final class ActiveServices { void systemServicesReady() { AppStateTracker ast = LocalServices.getService(AppStateTracker.class); - ast.addServiceStateListener(new ForcedStandbyListener()); + ast.addForcedAppStandbyListener(new ForcedStandbyListener()); mAppWidgetManagerInternal = LocalServices.getService(AppWidgetManagerInternal.class); setAllowListWhileInUsePermissionInFgs(); } diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java index 1743d7ec288e..09795855ac27 100644 --- a/services/core/java/com/android/server/am/ActivityManagerConstants.java +++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java @@ -52,7 +52,8 @@ final class ActivityManagerConstants extends ContentObserver { private static final String TAG = "ActivityManagerConstants"; // Key names stored in the settings value. - private static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time"; + static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time"; + private static final String KEY_FGSERVICE_MIN_SHOWN_TIME = "fgservice_min_shown_time"; private static final String KEY_FGSERVICE_MIN_REPORT_TIME @@ -108,9 +109,9 @@ final class ActivityManagerConstants extends ContentObserver { static final String KEY_FG_TO_BG_FGS_GRACE_DURATION = "fg_to_bg_fgs_grace_duration"; static final String KEY_FGS_START_FOREGROUND_TIMEOUT = "fgs_start_foreground_timeout"; static final String KEY_FGS_ATOM_SAMPLE_RATE = "fgs_atom_sample_rate"; + static final String KEY_KILL_FAS_CACHED_IDLE = "kill_fas_cached_idle"; private static final int DEFAULT_MAX_CACHED_PROCESSES = 32; - private static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60*1000; private static final long DEFAULT_FGSERVICE_MIN_SHOWN_TIME = 2*1000; private static final long DEFAULT_FGSERVICE_MIN_REPORT_TIME = 3*1000; private static final long DEFAULT_FGSERVICE_SCREEN_ON_BEFORE_TIME = 1*1000; @@ -151,6 +152,10 @@ final class ActivityManagerConstants extends ContentObserver { private static final long DEFAULT_FG_TO_BG_FGS_GRACE_DURATION = 5 * 1000; private static final int DEFAULT_FGS_START_FOREGROUND_TIMEOUT_MS = 10 * 1000; private static final float DEFAULT_FGS_ATOM_SAMPLE_RATE = 1; // 100 % + + static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60 * 1000; + static final boolean DEFAULT_KILL_FAS_CACHED_IDLE = true; + /** * Same as {@link TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_NOT_ALLOWED} */ @@ -482,6 +487,12 @@ final class ActivityManagerConstants extends ContentObserver { */ volatile float mFgsAtomSampleRate = DEFAULT_FGS_ATOM_SAMPLE_RATE; + /** + * Whether or not to kill apps in force-app-standby state and it's cached, its UID state is + * idle. + */ + volatile boolean mKillForceAppStandByAndCachedIdle = DEFAULT_KILL_FAS_CACHED_IDLE; + private final ActivityManagerService mService; private ContentResolver mResolver; private final KeyValueListParser mParser = new KeyValueListParser(','); @@ -687,6 +698,9 @@ final class ActivityManagerConstants extends ContentObserver { case KEY_FGS_ATOM_SAMPLE_RATE: updateFgsAtomSamplePercent(); break; + case KEY_KILL_FAS_CACHED_IDLE: + updateKillFasCachedIdle(); + break; default: break; } @@ -1019,6 +1033,13 @@ final class ActivityManagerConstants extends ContentObserver { DEFAULT_FGS_ATOM_SAMPLE_RATE); } + private void updateKillFasCachedIdle() { + mKillForceAppStandByAndCachedIdle = DeviceConfig.getBoolean( + DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + KEY_KILL_FAS_CACHED_IDLE, + DEFAULT_KILL_FAS_CACHED_IDLE); + } + private void updateImperceptibleKillExemptions() { IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.clear(); IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.addAll(mDefaultImperceptibleKillExemptPackages); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 6a3cb6f22886..70538bb519a0 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -7726,16 +7726,17 @@ public class ActivityManagerService extends IActivityManager.Stub ApplicationErrorReport.CrashInfo crashInfo) { float loadingProgress = 1; IncrementalMetrics incrementalMetrics = null; - // Notify package manager service to possibly update package state + // Obtain Incremental information if available if (r != null && r.info != null && r.info.packageName != null) { - final String codePath = r.info.getCodePath(); IncrementalStatesInfo incrementalStatesInfo = mPackageManagerInt.getIncrementalStatesInfo(r.info.packageName, r.uid, r.userId); if (incrementalStatesInfo != null) { loadingProgress = incrementalStatesInfo.getProgress(); } - if (IncrementalManager.isIncrementalPath(codePath)) { + final String codePath = r.info.getCodePath(); + if (codePath != null && !codePath.isEmpty() + && IncrementalManager.isIncrementalPath(codePath)) { // Report in the main log about the incremental package Slog.e(TAG, "App crashed on incremental package " + r.info.packageName + " which is " + ((int) (loadingProgress * 100)) + "% loaded."); @@ -14267,6 +14268,10 @@ public class ActivityManagerService extends IActivityManager.Stub final int capability = uidRec != null ? uidRec.getSetCapability() : 0; final boolean ephemeral = uidRec != null ? uidRec.isEphemeral() : isEphemeralLocked(uid); + if (uidRec != null && uidRec.isIdle() && (change & UidRecord.CHANGE_IDLE) != 0) { + mProcessList.killAppIfForceStandbyAndCachedIdleLocked(uidRec); + } + if (uidRec != null && !uidRec.isIdle() && (change & UidRecord.CHANGE_GONE) != 0) { // If this uid is going away, and we haven't yet reported it is gone, // then do so now. diff --git a/services/core/java/com/android/server/am/AppExitInfoTracker.java b/services/core/java/com/android/server/am/AppExitInfoTracker.java index b85d7292e738..1b5483af46ed 100644 --- a/services/core/java/com/android/server/am/AppExitInfoTracker.java +++ b/services/core/java/com/android/server/am/AppExitInfoTracker.java @@ -61,6 +61,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.ProcessMap; import com.android.internal.util.ArrayUtils; +import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.IoThread; import com.android.server.LocalServices; @@ -108,6 +109,13 @@ public final class AppExitInfoTracker { private static final int APP_EXIT_RAW_INFO_POOL_SIZE = 8; + /** + * How long we're going to hold before logging an app exit info into statsd; + * we do this is because there could be multiple sources signaling an app exit, we'd like to + * gather the most accurate information before logging into statsd. + */ + private static final long APP_EXIT_INFO_STATSD_LOG_DEBOUNCE = TimeUnit.SECONDS.toMillis(15); + @VisibleForTesting static final String APP_EXIT_STORE_DIR = "procexitstore"; @@ -384,6 +392,8 @@ public final class AppExitInfoTracker { ApplicationExitInfo.REASON_LOW_MEMORY); } else if (zygote != null) { updateExistingExitInfoRecordLocked(info, (Integer) zygote.second, null); + } else { + scheduleLogToStatsdLocked(info, false); } } } @@ -398,7 +408,7 @@ public final class AppExitInfoTracker { raw.getPackageName(), raw.getPackageUid(), raw.getPid()); if (info == null) { - addExitInfoLocked(raw); + info = addExitInfoLocked(raw); } else { // always override the existing info since we are now more informational. info.setReason(raw.getReason()); @@ -407,6 +417,7 @@ public final class AppExitInfoTracker { info.setTimestamp(System.currentTimeMillis()); info.setDescription(raw.getDescription()); } + scheduleLogToStatsdLocked(info, true); } @GuardedBy("mLock") @@ -438,22 +449,29 @@ public final class AppExitInfoTracker { // if the record is way outdated, don't update it then (because of potential pid reuse) return; } + boolean immediateLog = false; if (status != null) { if (OsConstants.WIFEXITED(status)) { info.setReason(ApplicationExitInfo.REASON_EXIT_SELF); info.setStatus(OsConstants.WEXITSTATUS(status)); + immediateLog = true; } else if (OsConstants.WIFSIGNALED(status)) { if (info.getReason() == ApplicationExitInfo.REASON_UNKNOWN) { info.setReason(ApplicationExitInfo.REASON_SIGNALED); info.setStatus(OsConstants.WTERMSIG(status)); } else if (info.getReason() == ApplicationExitInfo.REASON_CRASH_NATIVE) { info.setStatus(OsConstants.WTERMSIG(status)); + immediateLog = true; } } } if (reason != null) { info.setReason(reason); + if (reason == ApplicationExitInfo.REASON_LOW_MEMORY) { + immediateLog = true; + } } + scheduleLogToStatsdLocked(info, immediateLog); } /** @@ -837,6 +855,40 @@ public final class AppExitInfoTracker { } @GuardedBy("mLock") + private void scheduleLogToStatsdLocked(ApplicationExitInfo info, boolean immediate) { + if (info.isLoggedInStatsd()) { + return; + } + if (immediate) { + mKillHandler.removeMessages(KillHandler.MSG_STATSD_LOG, info); + performLogToStatsdLocked(info); + } else if (!mKillHandler.hasMessages(KillHandler.MSG_STATSD_LOG, info)) { + mKillHandler.sendMessageDelayed(mKillHandler.obtainMessage( + KillHandler.MSG_STATSD_LOG, info), APP_EXIT_INFO_STATSD_LOG_DEBOUNCE); + } + } + + @GuardedBy("mLock") + private void performLogToStatsdLocked(ApplicationExitInfo info) { + if (info.isLoggedInStatsd()) { + return; + } + info.setLoggedInStatsd(true); + final String pkgName = info.getPackageName(); + String processName = info.getProcessName(); + if (TextUtils.equals(pkgName, processName)) { + // Omit the process name here to save space + processName = null; + } else if (processName != null && pkgName != null && processName.startsWith(pkgName)) { + // Strip the prefix to save space + processName = processName.substring(pkgName.length()); + } + FrameworkStatsLog.write(FrameworkStatsLog.APP_PROCESS_DIED, + info.getPackageUid(), processName, info.getReason(), info.getSubReason(), + info.getImportance(), (int) info.getPss(), (int) info.getRss()); + } + + @GuardedBy("mLock") private void forEachPackageLocked( BiFunction<String, SparseArray<AppExitInfoContainer>, Integer> callback) { if (callback != null) { @@ -1532,6 +1584,7 @@ public final class AppExitInfoTracker { static final int MSG_CHILD_PROC_DIED = 4102; static final int MSG_PROC_DIED = 4103; static final int MSG_APP_KILL = 4104; + static final int MSG_STATSD_LOG = 4105; KillHandler(Looper looper) { super(looper, null, true); @@ -1564,6 +1617,12 @@ public final class AppExitInfoTracker { recycleRawRecord(raw); } break; + case MSG_STATSD_LOG: { + synchronized (mLock) { + performLogToStatsdLocked((ApplicationExitInfo) msg.obj); + } + } + break; default: super.handleMessage(msg); } diff --git a/services/core/java/com/android/server/am/ContentProviderConnection.java b/services/core/java/com/android/server/am/ContentProviderConnection.java index efee4321fd9f..3bc4fcf08921 100644 --- a/services/core/java/com/android/server/am/ContentProviderConnection.java +++ b/services/core/java/com/android/server/am/ContentProviderConnection.java @@ -19,6 +19,7 @@ package com.android.server.am; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_PROVIDER; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; +import android.annotation.UserIdInt; import android.os.Binder; import android.os.SystemClock; import android.util.Slog; @@ -52,15 +53,21 @@ public final class ContentProviderConnection extends Binder { // The provider of this connection is now dead. public boolean dead; + // The original user id when this connection was requested, it could be different from + // the client's user id because the client could request to access a content provider + // living in a different user if it has the permission. + @UserIdInt final int mExpectedUserId; + // For debugging. private int mNumStableIncs; private int mNumUnstableIncs; public ContentProviderConnection(ContentProviderRecord _provider, ProcessRecord _client, - String _clientPackage) { + String _clientPackage, @UserIdInt int _expectedUserId) { provider = _provider; client = _client; clientPackage = _clientPackage; + mExpectedUserId = _expectedUserId; createTime = SystemClock.elapsedRealtime(); } diff --git a/services/core/java/com/android/server/am/ContentProviderHelper.java b/services/core/java/com/android/server/am/ContentProviderHelper.java index fb9f2dd58c58..795cd0a8bda7 100644 --- a/services/core/java/com/android/server/am/ContentProviderHelper.java +++ b/services/core/java/com/android/server/am/ContentProviderHelper.java @@ -150,6 +150,7 @@ public class ContentProviderHelper { ContentProviderConnection conn = null; ProviderInfo cpi = null; boolean providerRunning = false; + final int expectedUserId = userId; synchronized (mService) { long startTime = SystemClock.uptimeMillis(); @@ -239,7 +240,8 @@ public class ContentProviderHelper { // Return the provider instance right away since it already exists. conn = incProviderCountLocked(r, cpr, token, callingUid, callingPackage, - callingTag, stable, true, startTime, mService.mProcessList); + callingTag, stable, true, startTime, mService.mProcessList, + expectedUserId); checkTime(startTime, "getContentProviderImpl: before updateOomAdj"); final int verifiedAdj = cpr.proc.mState.getVerifiedAdj(); @@ -490,7 +492,7 @@ public class ContentProviderHelper { mProviderMap.putProviderByName(name, cpr); conn = incProviderCountLocked(r, cpr, token, callingUid, callingPackage, callingTag, - stable, false, startTime, mService.mProcessList); + stable, false, startTime, mService.mProcessList, expectedUserId); if (conn != null) { conn.waiting = true; } @@ -1286,7 +1288,7 @@ public class ContentProviderHelper { private ContentProviderConnection incProviderCountLocked(ProcessRecord r, final ContentProviderRecord cpr, IBinder externalProcessToken, int callingUid, String callingPackage, String callingTag, boolean stable, boolean updateLru, - long startTime, ProcessList processList) { + long startTime, ProcessList processList, @UserIdInt int expectedUserId) { if (r == null) { cpr.addExternalProcessHandleLocked(externalProcessToken, callingUid, callingTag); return null; @@ -1303,7 +1305,8 @@ public class ContentProviderHelper { } // Create a new ContentProviderConnection. The reference count is known to be 1. - ContentProviderConnection conn = new ContentProviderConnection(cpr, r, callingPackage); + ContentProviderConnection conn = new ContentProviderConnection(cpr, r, callingPackage, + expectedUserId); conn.startAssociationIfNeeded(); conn.initializeCount(stable); cpr.connections.add(conn); diff --git a/services/core/java/com/android/server/am/ContentProviderRecord.java b/services/core/java/com/android/server/am/ContentProviderRecord.java index b217cae61d4c..5fd15db79d66 100644 --- a/services/core/java/com/android/server/am/ContentProviderRecord.java +++ b/services/core/java/com/android/server/am/ContentProviderRecord.java @@ -189,7 +189,6 @@ final class ContentProviderRecord implements ComponentName.WithComponentName { */ void onProviderPublishStatusLocked(boolean status) { final int numOfConns = connections.size(); - final int userId = UserHandle.getUserId(appInfo.uid); for (int i = 0; i < numOfConns; i++) { final ContentProviderConnection conn = connections.get(i); if (conn.waiting && conn.client != null) { @@ -201,7 +200,7 @@ final class ContentProviderRecord implements ComponentName.WithComponentName { + appInfo.uid + " for provider " + info.authority + ": launching app became null"); EventLogTags.writeAmProviderLostProcess( - userId, + UserHandle.getUserId(appInfo.uid), appInfo.packageName, appInfo.uid, info.authority); } else { @@ -217,7 +216,7 @@ final class ContentProviderRecord implements ComponentName.WithComponentName { try { thread.notifyContentProviderPublishStatus( newHolder(status ? conn : null, false), - info.authority, userId, status); + info.authority, conn.mExpectedUserId, status); } catch (RemoteException e) { } } diff --git a/services/core/java/com/android/server/am/LmkdConnection.java b/services/core/java/com/android/server/am/LmkdConnection.java index f41c36404c50..1ecb9eb81709 100644 --- a/services/core/java/com/android/server/am/LmkdConnection.java +++ b/services/core/java/com/android/server/am/LmkdConnection.java @@ -31,6 +31,8 @@ import com.android.internal.annotations.GuardedBy; import libcore.io.IoUtils; +import java.io.ByteArrayInputStream; +import java.io.DataInputStream; import java.io.FileDescriptor; import java.io.IOException; import java.io.InputStream; @@ -43,8 +45,12 @@ import java.nio.ByteBuffer; public class LmkdConnection { private static final String TAG = TAG_WITH_CLASS_NAME ? "LmkdConnection" : TAG_AM; - // lmkd reply max size in bytes - private static final int LMKD_REPLY_MAX_SIZE = 12; + /** + * Max LMKD reply packet length in bytes + * Used to hold the data for the statsd atoms logging + * Must be in sync with statslog.h + */ + private static final int LMKD_REPLY_MAX_SIZE = 214; // connection listener interface interface LmkdConnectionListener { @@ -70,7 +76,7 @@ public class LmkdConnection { * @param receivedLen Size of the data received * @return True if the message has been handled correctly, false otherwise. */ - boolean handleUnsolicitedMessage(ByteBuffer dataReceived, int receivedLen); + boolean handleUnsolicitedMessage(DataInputStream inputData, int receivedLen); } private final MessageQueue mMsgQueue; @@ -95,6 +101,10 @@ public class LmkdConnection { private final ByteBuffer mInputBuf = ByteBuffer.allocate(LMKD_REPLY_MAX_SIZE); + // Input stream to parse the incoming data + private final DataInputStream mInputData = new DataInputStream( + new ByteArrayInputStream(mInputBuf.array())); + // object to protect mReplyBuf and to wait/notify when reply is received private final Object mReplyBufLock = new Object(); @@ -186,26 +196,32 @@ public class LmkdConnection { private void processIncomingData() { int len = read(mInputBuf); if (len > 0) { - synchronized (mReplyBufLock) { - if (mReplyBuf != null) { - if (mListener.isReplyExpected(mReplyBuf, mInputBuf, len)) { - // copy into reply buffer - mReplyBuf.put(mInputBuf.array(), 0, len); - mReplyBuf.rewind(); - // wakeup the waiting thread - mReplyBufLock.notifyAll(); - } else if (!mListener.handleUnsolicitedMessage(mInputBuf, len)) { - // received unexpected packet - // treat this as an error - mReplyBuf = null; - mReplyBufLock.notifyAll(); - Slog.e(TAG, "Received an unexpected packet from lmkd"); + try { + // reset InputStream to point into mInputBuf.array() begin + mInputData.reset(); + synchronized (mReplyBufLock) { + if (mReplyBuf != null) { + if (mListener.isReplyExpected(mReplyBuf, mInputBuf, len)) { + // copy into reply buffer + mReplyBuf.put(mInputBuf.array(), 0, len); + mReplyBuf.rewind(); + // wakeup the waiting thread + mReplyBufLock.notifyAll(); + } else if (!mListener.handleUnsolicitedMessage(mInputData, len)) { + // received unexpected packet + // treat this as an error + mReplyBuf = null; + mReplyBufLock.notifyAll(); + Slog.e(TAG, "Received an unexpected packet from lmkd"); + } + } else if (!mListener.handleUnsolicitedMessage(mInputData, len)) { + // received asynchronous communication from lmkd + // but we don't recognize it. + Slog.w(TAG, "Received an unexpected packet from lmkd"); } - } else if (!mListener.handleUnsolicitedMessage(mInputBuf, len)) { - // received asynchronous communication from lmkd - // but we don't recognize it. - Slog.w(TAG, "Received an unexpected packet from lmkd"); } + } catch (IOException e) { + Slog.e(TAG, "Failed to parse lmkd data buffer. Size = " + len); } } } diff --git a/services/core/java/com/android/server/am/LmkdStatsReporter.java b/services/core/java/com/android/server/am/LmkdStatsReporter.java new file mode 100644 index 000000000000..c702d780bd6b --- /dev/null +++ b/services/core/java/com/android/server/am/LmkdStatsReporter.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.am; + +import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; +import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME; + +import android.util.Slog; + +import com.android.internal.util.FrameworkStatsLog; + +import java.io.DataInputStream; +import java.io.IOException; + +/** + * Activity manager communication with lmkd data handling and statsd atom logging + */ +public final class LmkdStatsReporter { + + static final String TAG = TAG_WITH_CLASS_NAME ? "LmkdStatsReporter" : TAG_AM; + + public static final int KILL_OCCURRED_MSG_SIZE = 80; + public static final int STATE_CHANGED_MSG_SIZE = 8; + + private static final int PRESSURE_AFTER_KILL = 0; + private static final int NOT_RESPONDING = 1; + private static final int LOW_SWAP_AND_THRASHING = 2; + private static final int LOW_MEM_AND_SWAP = 3; + private static final int LOW_MEM_AND_THRASHING = 4; + private static final int DIRECT_RECL_AND_THRASHING = 5; + private static final int LOW_MEM_AND_SWAP_UTIL = 6; + + /** + * Processes the LMK_KILL_OCCURRED packet data + * Logs the event when LMKD kills a process to reduce memory pressure. + * Code: LMK_KILL_OCCURRED = 51 + */ + public static void logKillOccurred(DataInputStream inputData) { + try { + final long pgFault = inputData.readLong(); + final long pgMajFault = inputData.readLong(); + final long rssInBytes = inputData.readLong(); + final long cacheInBytes = inputData.readLong(); + final long swapInBytes = inputData.readLong(); + final long processStartTimeNS = inputData.readLong(); + final int uid = inputData.readInt(); + final int oomScore = inputData.readInt(); + final int minOomScore = inputData.readInt(); + final int freeMemKb = inputData.readInt(); + final int freeSwapKb = inputData.readInt(); + final int killReason = inputData.readInt(); + final String procName = inputData.readUTF(); + + FrameworkStatsLog.write(FrameworkStatsLog.LMK_KILL_OCCURRED, uid, procName, oomScore, + pgFault, pgMajFault, rssInBytes, cacheInBytes, swapInBytes, processStartTimeNS, + minOomScore, freeMemKb, freeSwapKb, mapKillReason(killReason)); + } catch (IOException e) { + Slog.e(TAG, "Invalid buffer data. Failed to log LMK_KILL_OCCURRED"); + return; + } + } + + /** + * Processes the LMK_STATE_CHANGED packet + * Logs the change in LMKD state which is used as start/stop boundaries for logging + * LMK_KILL_OCCURRED event. + * Code: LMK_STATE_CHANGED = 54 + */ + public static void logStateChanged(int state) { + FrameworkStatsLog.write(FrameworkStatsLog.LMK_STATE_CHANGED, state); + } + + private static int mapKillReason(int reason) { + switch (reason) { + case PRESSURE_AFTER_KILL: + return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__PRESSURE_AFTER_KILL; + case NOT_RESPONDING: + return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__NOT_RESPONDING; + case LOW_SWAP_AND_THRASHING: + return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__LOW_SWAP_AND_THRASHING; + case LOW_MEM_AND_SWAP: + return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__LOW_MEM_AND_SWAP; + case LOW_MEM_AND_THRASHING: + return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__LOW_MEM_AND_THRASHING; + case DIRECT_RECL_AND_THRASHING: + return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__DIRECT_RECL_AND_THRASHING; + case LOW_MEM_AND_SWAP_UTIL: + return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__LOW_MEM_AND_SWAP_UTIL; + default: + return FrameworkStatsLog.LMK_KILL_OCCURRED__REASON__UNKNOWN; + } + } +} diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index b413010772a4..40db086f377b 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -2863,6 +2863,8 @@ public class OomAdjuster { + " target=" + state.getAdjTarget() + " capability=" + item.capability); } + mProcessList.killAppIfForceStandbyAndCachedIdleLocked(app); + return success; } diff --git a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java index 5a7e14a6907a..88bd010806b6 100644 --- a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java @@ -400,7 +400,8 @@ class ProcessErrorStateRecord { loadingProgress = incrementalStatesInfo.getProgress(); } final String codePath = mApp.info.getCodePath(); - if (IncrementalManager.isIncrementalPath(codePath)) { + if (codePath != null && !codePath.isEmpty() + && IncrementalManager.isIncrementalPath(codePath)) { // Report in the main log that the incremental package is still loading Slog.e(TAG, "App ANR on incremental package " + mApp.info.packageName + " which is " + ((int) (loadingProgress * 100)) + "% loaded."); diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index af3f658ad800..0d19209e795c 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -125,6 +125,7 @@ import com.android.internal.os.Zygote; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.MemInfoReader; +import com.android.server.AppStateTracker; import com.android.server.LocalServices; import com.android.server.ServiceThread; import com.android.server.SystemConfig; @@ -139,6 +140,7 @@ import com.android.server.wm.WindowProcessController; import dalvik.system.VMRuntime; +import java.io.DataInputStream; import java.io.File; import java.io.FileDescriptor; import java.io.IOException; @@ -334,18 +336,25 @@ public final class ProcessList { // LMK_GETKILLCNT // LMK_SUBSCRIBE // LMK_PROCKILL + // LMK_UPDATE_PROPS + // LMK_KILL_OCCURRED + // LMK_STATE_CHANGED static final byte LMK_TARGET = 0; static final byte LMK_PROCPRIO = 1; static final byte LMK_PROCREMOVE = 2; static final byte LMK_PROCPURGE = 3; static final byte LMK_GETKILLCNT = 4; static final byte LMK_SUBSCRIBE = 5; - static final byte LMK_PROCKILL = 6; // Note: this is an unsolicated command + static final byte LMK_PROCKILL = 6; // Note: this is an unsolicited command + static final byte LMK_UPDATE_PROPS = 7; + static final byte LMK_KILL_OCCURRED = 8; // Msg to subscribed clients on kill occurred event + static final byte LMK_STATE_CHANGED = 9; // Msg to subscribed clients on state changed // Low Memory Killer Daemon command codes. // These must be kept in sync with async_event_type definitions in lmkd.h // static final int LMK_ASYNC_EVENT_KILL = 0; + static final int LMK_ASYNC_EVENT_STAT = 1; // lmkd reconnect delay in msecs private static final long LMKD_RECONNECT_DELAY_MS = 1000; @@ -828,22 +837,44 @@ public final class ProcessList { } @Override - public boolean handleUnsolicitedMessage(ByteBuffer dataReceived, + public boolean handleUnsolicitedMessage(DataInputStream inputData, int receivedLen) { if (receivedLen < 4) { return false; } - switch (dataReceived.getInt(0)) { - case LMK_PROCKILL: - if (receivedLen != 12) { + + try { + switch (inputData.readInt()) { + case LMK_PROCKILL: + if (receivedLen != 12) { + return false; + } + final int pid = inputData.readInt(); + final int uid = inputData.readInt(); + mAppExitInfoTracker.scheduleNoteLmkdProcKilled(pid, uid); + return true; + case LMK_KILL_OCCURRED: + if (receivedLen + < LmkdStatsReporter.KILL_OCCURRED_MSG_SIZE) { + return false; + } + LmkdStatsReporter.logKillOccurred(inputData); + return true; + case LMK_STATE_CHANGED: + if (receivedLen + != LmkdStatsReporter.STATE_CHANGED_MSG_SIZE) { + return false; + } + final int state = inputData.readInt(); + LmkdStatsReporter.logStateChanged(state); + return true; + default: return false; - } - mAppExitInfoTracker.scheduleNoteLmkdProcKilled( - dataReceived.getInt(4), dataReceived.getInt(8)); - return true; - default: - return false; + } + } catch (IOException e) { + Slog.e(TAG, "Invalid buffer data. Failed to log LMK_KILL_OCCURRED"); } + return false; } } ); @@ -1475,6 +1506,12 @@ public final class ProcessList { buf.putInt(LMK_SUBSCRIBE); buf.putInt(LMK_ASYNC_EVENT_KILL); ostream.write(buf.array(), 0, buf.position()); + + // Subscribe for stats event notifications + buf = ByteBuffer.allocate(4 * 2); + buf.putInt(LMK_SUBSCRIBE); + buf.putInt(LMK_ASYNC_EVENT_STAT); + ostream.write(buf.array(), 0, buf.position()); } catch (IOException ex) { return false; } @@ -2333,6 +2370,12 @@ public final class ProcessList { allowlistedAppDataInfoMap = null; } + AppStateTracker ast = LocalServices.getService(AppStateTracker.class); + if (ast != null) { + app.mState.setForcedAppStandby(ast.isAppInForcedAppStandby( + app.info.uid, app.info.packageName)); + } + final Process.ProcessStartResult startResult; if (hostingRecord.usesWebviewZygote()) { startResult = startWebView(entryPoint, @@ -4959,6 +5002,54 @@ public final class ProcessList { return true; } + @GuardedBy("mService") + void updateForceAppStandbyForUidPackageLocked(int uid, String packageName, boolean standby) { + final UidRecord uidRec = getUidRecordLOSP(uid); + if (uidRec != null) { + uidRec.forEachProcess(app -> { + if (TextUtils.equals(app.info.packageName, packageName)) { + app.mState.setForcedAppStandby(standby); + killAppIfForceStandbyAndCachedIdleLocked(app); + } + }); + } + } + + @GuardedBy("mService") + void updateForcedAppStandbyForAllAppsLocked() { + if (!mService.mConstants.mKillForceAppStandByAndCachedIdle) { + return; + } + final AppStateTracker ast = LocalServices.getService(AppStateTracker.class); + for (int i = mLruProcesses.size() - 1; i >= 0; i--) { + final ProcessRecord app = mLruProcesses.get(i); + final boolean standby = ast.isAppInForcedAppStandby( + app.info.uid, app.info.packageName); + app.mState.setForcedAppStandby(standby); + if (standby) { + killAppIfForceStandbyAndCachedIdleLocked(app); + } + } + } + + @GuardedBy("mService") + void killAppIfForceStandbyAndCachedIdleLocked(ProcessRecord app) { + final UidRecord uidRec = app.getUidRecord(); + if (mService.mConstants.mKillForceAppStandByAndCachedIdle + && uidRec != null && uidRec.isIdle() + && app.isCached() && app.mState.isForcedAppStandby()) { + app.killLocked("cached idle & forced-app-standby", + ApplicationExitInfo.REASON_OTHER, + ApplicationExitInfo.SUBREASON_CACHED_IDLE_FORCED_APP_STANDBY, + true); + } + } + + @GuardedBy("mService") + void killAppIfForceStandbyAndCachedIdleLocked(UidRecord uidRec) { + uidRec.forEachProcess(app -> killAppIfForceStandbyAndCachedIdleLocked(app)); + } + /** * Called by ActivityManagerService when a process died. */ diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java index 94e7f34a194a..6429b79f6111 100644 --- a/services/core/java/com/android/server/am/ProcessStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessStateRecord.java @@ -342,6 +342,12 @@ final class ProcessStateRecord { private @ReasonCode int mAllowStartFgs = REASON_DENIED; /** + * Whether or not this process has been in forced-app-standby state. + */ + @GuardedBy("mService") + private boolean mForcedAppStandby; + + /** * Debugging: primary thing impacting oom_adj. */ @GuardedBy("mService") @@ -1276,6 +1282,16 @@ final class ProcessStateRecord { } @GuardedBy("mService") + void setForcedAppStandby(boolean standby) { + mForcedAppStandby = standby; + } + + @GuardedBy("mService") + boolean isForcedAppStandby() { + return mForcedAppStandby; + } + + @GuardedBy("mService") void updateLastInvisibleTime(boolean hasVisibleActivities) { if (hasVisibleActivities) { mLastInvisibleTime = Long.MAX_VALUE; @@ -1337,7 +1353,8 @@ final class ProcessStateRecord { pw.print(" pendingUiClean="); pw.println(mApp.mProfile.hasPendingUiClean()); } pw.print(prefix); pw.print("cached="); pw.print(mCached); - pw.print(" empty="); pw.println(mEmpty); + pw.print(" empty="); pw.print(mEmpty); + pw.print(" forcedAppStandby="); pw.println(mForcedAppStandby); if (mServiceB) { pw.print(prefix); pw.print("serviceb="); pw.print(mServiceB); pw.print(" serviceHighRam="); pw.println(mServiceHighRam); diff --git a/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java b/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java index d82847c95dce..62a9769aee1a 100644 --- a/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java +++ b/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java @@ -167,13 +167,13 @@ public class ClientMonitorCallbackConverter { // Fingerprint-specific callbacks for FingerprintManager only - public void onUdfpsPointerDown(int sensorId, int cookie) throws RemoteException { + public void onUdfpsPointerDown(int sensorId) throws RemoteException { if (mFingerprintServiceReceiver != null) { mFingerprintServiceReceiver.onUdfpsPointerDown(sensorId); } } - public void onUdfpsPointerUp(int sensorId, int cookie) throws RemoteException { + public void onUdfpsPointerUp(int sensorId) throws RemoteException { if (mFingerprintServiceReceiver != null) { mFingerprintServiceReceiver.onUdfpsPointerUp(sensorId); } 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 ce06d06afe4e..6382950711ce 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 @@ -925,6 +925,18 @@ public class FingerprintService extends SystemService { } @Override + public void onUiReady(int sensorId) { + Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); + + final ServiceProvider provider = getProviderForSensor(sensorId); + if (provider == null) { + Slog.w(TAG, "No matching provider for onUiReady, sensorId: " + sensorId); + return; + } + provider.onUiReady(sensorId); + } + + @Override public void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller) { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java index 701b9a739e33..4cbe031d0141 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java @@ -140,6 +140,8 @@ public interface ServiceProvider { void onPointerUp(int sensorId); + void onUiReady(int sensorId); + void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller); void dumpProtoState(int sensorId, @NonNull ProtoOutputStream proto, diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java index 0aa112f106c4..150e69c60974 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java @@ -26,4 +26,5 @@ import com.android.server.biometrics.sensors.BaseClientMonitor; public interface Udfps { void onPointerDown(int x, int y, float minor, float major); void onPointerUp(); + void onUiReady(); } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java index 4e5d12d2021c..45842677609c 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java @@ -120,7 +120,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<ISession> imp try { getFreshDaemon().onPointerDown(0 /* pointerId */, x, y, minor, major); if (getListener() != null) { - getListener().onUdfpsPointerDown(getSensorId(), getCookie()); + getListener().onUdfpsPointerDown(getSensorId()); } } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); @@ -132,7 +132,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<ISession> imp try { getFreshDaemon().onPointerUp(0 /* pointerId */); if (getListener() != null) { - getListener().onUdfpsPointerUp(getSensorId(), getCookie()); + getListener().onUdfpsPointerUp(getSensorId()); } } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); @@ -140,6 +140,15 @@ class FingerprintAuthenticationClient extends AuthenticationClient<ISession> imp } @Override + public void onUiReady() { + try { + getFreshDaemon().onUiReady(); + } catch (RemoteException e) { + Slog.e(TAG, "Remote exception", e); + } + } + + @Override public void onLockoutTimed(long durationMillis) { mLockoutCache.setLockoutModeForUser(getTargetUserId(), LockoutTracker.LOCKOUT_TIMED); // Lockout metrics are logged as an error code. diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java index fd4aece339f3..790b38c07bf5 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java @@ -150,4 +150,13 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps { Slog.e(TAG, "Unable to send pointer up", e); } } + + @Override + public void onUiReady() { + try { + getFreshDaemon().onUiReady(); + } catch (RemoteException e) { + Slog.e(TAG, "Unable to send UI ready", e); + } + } } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java index 388bd0a1dc40..20d6ee24d327 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java @@ -514,6 +514,18 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi } @Override + public void onUiReady(int sensorId) { + final BaseClientMonitor client = + mSensors.get(sensorId).getScheduler().getCurrentClient(); + if (!(client instanceof Udfps)) { + Slog.e(getTag(), "onUiReady received during client: " + client); + return; + } + final Udfps udfps = (Udfps) client; + udfps.onUiReady(); + } + + @Override public void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller) { mUdfpsOverlayController = controller; } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java index f0ea90dcbc33..274652096624 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java @@ -738,6 +738,17 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider } @Override + public void onUiReady(int sensorId) { + final BaseClientMonitor client = mScheduler.getCurrentClient(); + if (!(client instanceof Udfps)) { + Slog.w(TAG, "onUiReady received during client: " + client); + return; + } + final Udfps udfps = (Udfps) client; + udfps.onUiReady(); + } + + @Override public void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller) { mUdfpsOverlayController = controller; } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java index 97f128748bcc..24ed85c42e4e 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java @@ -152,7 +152,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi UdfpsHelper.onFingerDown(getFreshDaemon(), x, y, minor, major); if (getListener() != null) { try { - getListener().onUdfpsPointerDown(getSensorId(), getCookie()); + getListener().onUdfpsPointerDown(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } @@ -164,10 +164,15 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi UdfpsHelper.onFingerUp(getFreshDaemon()); if (getListener() != null) { try { - getListener().onUdfpsPointerUp(getSensorId(), getCookie()); + getListener().onUdfpsPointerUp(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } } } + + @Override + public void onUiReady() { + // Unsupported in HIDL. + } } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java index db44aee1c0ed..160736433112 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java @@ -108,6 +108,11 @@ class FingerprintDetectClient extends AcquisitionClient<IBiometricsFingerprint> } @Override + public void onUiReady() { + // Unsupported in HIDL. + } + + @Override public void onAuthenticated(BiometricAuthenticator.Identifier identifier, boolean authenticated, ArrayList<Byte> hardwareAuthToken) { logOnAuthenticated(getContext(), authenticated, false /* requireConfirmation */, diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java index 41d23089a530..4265f4082ff4 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java @@ -146,4 +146,9 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint public void onPointerUp() { UdfpsHelper.onFingerUp(getFreshDaemon()); } + + @Override + public void onUiReady() { + // Unsupported in HIDL. + } } diff --git a/services/core/java/com/android/server/connectivity/FullScore.java b/services/core/java/com/android/server/connectivity/FullScore.java index 14cec0956070..fbfa7a18c9d8 100644 --- a/services/core/java/com/android/server/connectivity/FullScore.java +++ b/services/core/java/com/android/server/connectivity/FullScore.java @@ -108,9 +108,10 @@ public class FullScore { // and all bits managed by FullScore unset. As bits are handled from 0 up in NetworkScore and // from 63 down in FullScore, cut at the 32nd bit for simplicity, but change this if some day // there are more than 32 bits handled on either side. - // YIELD_TO_BAD_WIFI is temporarily handled by ConnectivityService. - private static final long EXTERNAL_POLICIES_MASK = - 0x00000000FFFFFFFFL & ~(1L << POLICY_YIELD_TO_BAD_WIFI); + // YIELD_TO_BAD_WIFI is temporarily handled by ConnectivityService, but the factory is still + // allowed to set it, so that it's possible to transition from handling it in CS to handling + // it in the factory. + private static final long EXTERNAL_POLICIES_MASK = 0x00000000FFFFFFFFL; @VisibleForTesting static @NonNull String policyNameOf(final int policy) { diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java index d865dfbf4775..0f9e604651e8 100644 --- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java +++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java @@ -74,6 +74,8 @@ public class DisplayDeviceConfig { // so -2 is used instead private static final float INVALID_BRIGHTNESS_IN_CONFIG = -2f; + private static final float NITS_INVALID = -1; + private final Context mContext; // The details of the ambient light sensor associated with this display. @@ -230,7 +232,7 @@ public class DisplayDeviceConfig { public float getNitsFromBacklight(float backlight) { if (mBacklightToNitsSpline == null) { Slog.wtf(TAG, "requesting nits when no mapping exists."); - return -1; + return NITS_INVALID; } backlight = Math.max(backlight, mBacklightMinimum); return mBacklightToNitsSpline.interpolate(backlight); @@ -280,13 +282,6 @@ public class DisplayDeviceConfig { } /** - * @return true if a nits to backlight mapping is defined in this config, false otherwise. - */ - public boolean hasNitsMapping() { - return mBacklightToNitsSpline != null; - } - - /** * @param quirkValue The quirk to test. * @return {@code true} if the specified quirk is present in this configuration, * {@code false} otherwise. diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 0a4b137fa6cd..f75f3e1f2f79 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -1282,6 +1282,7 @@ public final class DisplayManagerService extends SystemService { // this point. sendDisplayEventLocked(displayId, DisplayManagerGlobal.EVENT_DISPLAY_CHANGED); scheduleTraversalLocked(false); + mPersistentDataStore.saveIfNeeded(); } private void handleLogicalDisplayFrameRateOverridesChangedLocked( @@ -2884,6 +2885,7 @@ public final class DisplayManagerService extends SystemService { if (dpc != null) { dpc.putScreenBrightnessSetting(brightness); } + mPersistentDataStore.saveIfNeeded(); } } finally { Binder.restoreCallingIdentity(token); diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index ec9bbf0e6db6..2f17481f7487 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -67,8 +67,6 @@ final class LocalDisplayAdapter extends DisplayAdapter { private static final int NO_DISPLAY_MODE_ID = 0; - private static final float NITS_INVALID = -1; - private final LongSparseArray<LocalDisplayDevice> mDevices = new LongSparseArray<>(); private final Injector mInjector; @@ -770,48 +768,51 @@ final class LocalDisplayAdapter extends DisplayAdapter { } } - private void setDisplayBrightness(float brightness, float sdrBrightness) { - // Ensure brightnessState is valid before processing and sending to - // surface control - if (Float.isNaN(brightness)) { + private void setDisplayBrightness(float brightnessState, + float sdrBrightnessState) { + // brightnessState includes invalid, off and full range. + if (Float.isNaN(brightnessState) || Float.isNaN(sdrBrightnessState)) { return; } if (DEBUG) { Slog.d(TAG, "setDisplayBrightness(" + "id=" + physicalDisplayId - + ", brightness=" + brightness - + ", sdrBrightness=" + sdrBrightness + ")"); + + ", brightnessState=" + brightnessState + + ", sdrBrightnessState=" + sdrBrightnessState + ")"); } Trace.traceBegin(Trace.TRACE_TAG_POWER, "setDisplayBrightness(" - + "id=" + physicalDisplayId + ", brightness=" + brightness - + ", sdrBrightness=" + sdrBrightness + ")"); + + "id=" + physicalDisplayId + ", brightnessState=" + + brightnessState + ", sdrBrightnessState=" + sdrBrightnessState + + ")"); try { - final float backlight = brightnessToBacklight(brightness); - float nits = NITS_INVALID; - float sdrBacklight = PowerManager.BRIGHTNESS_INVALID_FLOAT; - float sdrNits = NITS_INVALID; - if (getDisplayDeviceConfig().hasNitsMapping() - && sdrBrightness != PowerManager.BRIGHTNESS_INVALID_FLOAT) { - nits = backlightToNits(backlight); - sdrBacklight = brightnessToBacklight(sdrBrightness); - sdrNits = backlightToNits(sdrBacklight); - } + final float backlight = brightnessToBacklight(brightnessState); + final float sdrBacklight = brightnessToBacklight(sdrBrightnessState); + + final float nits = backlightToNits(backlight); + final float sdrNits = backlightToNits(sdrBacklight); + mBacklightAdapter.setBacklight(sdrBacklight, sdrNits, backlight, nits); Trace.traceCounter(Trace.TRACE_TAG_POWER, "ScreenBrightness", - BrightnessSynchronizer.brightnessFloatToInt(brightness)); + BrightnessSynchronizer.brightnessFloatToInt(brightnessState)); Trace.traceCounter(Trace.TRACE_TAG_POWER, "SdrScreenBrightness", - BrightnessSynchronizer.brightnessFloatToInt(sdrBrightness)); + BrightnessSynchronizer.brightnessFloatToInt( + sdrBrightnessState)); } finally { Trace.traceEnd(Trace.TRACE_TAG_POWER); } } private float brightnessToBacklight(float brightness) { - return getDisplayDeviceConfig().getBacklightFromBrightness(brightness); + if (BrightnessSynchronizer.floatEquals( + brightness, PowerManager.BRIGHTNESS_OFF_FLOAT)) { + return PowerManager.BRIGHTNESS_OFF_FLOAT; + } else { + return getDisplayDeviceConfig().getBacklightFromBrightness(brightness); + } } private float backlightToNits(float backlight) { diff --git a/services/core/java/com/android/server/graphics/fonts/FontManagerService.java b/services/core/java/com/android/server/graphics/fonts/FontManagerService.java index 7c013e0bf330..609bd8b0fcfd 100644 --- a/services/core/java/com/android/server/graphics/fonts/FontManagerService.java +++ b/services/core/java/com/android/server/graphics/fonts/FontManagerService.java @@ -21,6 +21,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; import android.graphics.Typeface; +import android.graphics.fonts.Font; import android.graphics.fonts.FontFamily; import android.graphics.fonts.FontFileUtil; import android.graphics.fonts.FontManager; @@ -194,6 +195,13 @@ public final class FontManagerService extends IFontManager.Stub { } } + @Override + public void tryToCreateTypeface(File file) throws IOException { + Font font = new Font.Builder(file).build(); + FontFamily family = new FontFamily.Builder(font).build(); + new Typeface.CustomFallbackBuilder(family).build(); + } + private static ByteBuffer mmap(File file) throws IOException { try (FileInputStream in = new FileInputStream(file)) { FileChannel fileChannel = in.getChannel(); diff --git a/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java b/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java index d5326055a754..e74dac5b1d75 100644 --- a/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java +++ b/services/core/java/com/android/server/graphics/fonts/UpdatableFontDir.java @@ -68,6 +68,8 @@ final class UpdatableFontDir { String buildFontFileName(File file) throws IOException; long getRevision(File file) throws IOException; + + void tryToCreateTypeface(File file) throws IOException; } /** Interface to mock fs-verity in tests. */ @@ -372,6 +374,16 @@ final class UpdatableFontDir { "Failed to change mode to 711", e); } FontFileInfo fontFileInfo = validateFontFile(newFontFile); + + // Try to create Typeface and treat as failure something goes wrong. + try { + mParser.tryToCreateTypeface(fontFileInfo.getFile()); + } catch (IOException e) { + throw new SystemFontException( + FontManager.RESULT_ERROR_INVALID_FONT_FILE, + "Failed to create Typeface from file", e); + } + FontConfig fontConfig = getSystemFontConfig(); if (!addFileToMapIfSameOrNewer(fontFileInfo, fontConfig, false)) { throw new SystemFontException( diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java b/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java index 659874441c97..fa33338a61e7 100644 --- a/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java +++ b/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java @@ -665,7 +665,7 @@ public class ContextHubClientBroker extends IContextHubClient.Stub long nanoAppId, List<String> nanoappPermissions, boolean gracePeriodExpired) { return updateNanoAppAuthState( nanoAppId, nanoappPermissions, gracePeriodExpired, - mForceDeniedNapps.contains(nanoAppId) /* forceDenied */); + false /* forceDenied */); } /** @@ -705,7 +705,7 @@ public class ContextHubClientBroker extends IContextHubClient.Stub // DENIED_GRACE_PERIOD -> DENIED only if the grace period expires // DENIED/DENIED_GRACE_PERIOD -> GRANTED only if permissions are granted again // any state -> DENIED if "forceDenied" is true - if (forceDenied) { + if (forceDenied || mForceDeniedNapps.contains(nanoAppId)) { newAuthState = AUTHORIZATION_DENIED; mForceDeniedNapps.add(nanoAppId); } else if (gracePeriodExpired) { diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java index 9474f5de0ca1..ca5343174478 100644 --- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java +++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java @@ -462,6 +462,12 @@ public class LocationProviderManager extends } @GuardedBy("mLock") + final boolean onProviderPropertiesChanged() { + onHighPowerUsageChanged(); + return false; + } + + @GuardedBy("mLock") private void onHighPowerUsageChanged() { boolean isUsingHighPower = isUsingHighPower(); if (isUsingHighPower != mIsUsingHighPower) { @@ -485,9 +491,14 @@ public class LocationProviderManager extends Preconditions.checkState(Thread.holdsLock(mLock)); } + ProviderProperties properties = getProperties(); + if (properties == null) { + return false; + } + return isActive() && getRequest().getIntervalMillis() < MAX_HIGH_POWER_INTERVAL_MS - && getProperties().getPowerUsage() == ProviderProperties.POWER_USAGE_HIGH; + && properties.getPowerUsage() == ProviderProperties.POWER_USAGE_HIGH; } @GuardedBy("mLock") @@ -2277,6 +2288,10 @@ public class LocationProviderManager extends onEnabledChanged(UserHandle.USER_ALL); } + if (!Objects.equals(oldState.properties, newState.properties)) { + updateRegistrations(Registration::onProviderPropertiesChanged); + } + if (mOnLocationTagsChangeListener != null) { if (!oldState.extraAttributionTags.equals(newState.extraAttributionTags) || !Objects.equals(oldState.identity, newState.identity)) { diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 53e3a0e21e23..67fd09b3e15e 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -10273,13 +10273,24 @@ public class NotificationManagerService extends SystemService { if (typeList != null) { String[] typeStrings = typeList.split(XML_SEPARATOR); for (int i = 0; i < typeStrings.length; i++) { - if (TextUtils.isEmpty(typeStrings[i])) { + final String typeString = typeStrings[i]; + if (TextUtils.isEmpty(typeString)) { continue; } - try { - types |= Integer.parseInt(typeStrings[i]); - } catch (NumberFormatException e) { - // skip + if (typeString.equalsIgnoreCase("ONGOING")) { + types |= FLAG_FILTER_TYPE_ONGOING; + } else if (typeString.equalsIgnoreCase("CONVERSATIONS")) { + types |= FLAG_FILTER_TYPE_CONVERSATIONS; + } else if (typeString.equalsIgnoreCase("SILENT")) { + types |= FLAG_FILTER_TYPE_SILENT; + } else if (typeString.equalsIgnoreCase("ALERTING")) { + types |= FLAG_FILTER_TYPE_ALERTING; + } else { + try { + types |= Integer.parseInt(typeString); + } catch (NumberFormatException e) { + // skip + } } } } diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java index 55a0949fb7c7..03676b5556d9 100644 --- a/services/core/java/com/android/server/notification/PreferencesHelper.java +++ b/services/core/java/com/android/server/notification/PreferencesHelper.java @@ -330,7 +330,8 @@ public class PreferencesHelper implements RankingConfig { } } - if (isShortcutOk(channel) && isDeletionOk(channel)) { + if (isShortcutOk(channel) && isDeletionOk(channel) + && !channel.isSoundMissing()) { r.channels.put(id, channel); } } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 219fa3ca5270..fc36378a9447 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -12131,6 +12131,8 @@ public class PackageManagerService extends IPackageManager.Stub public boolean performDexOptMode(String packageName, boolean checkProfiles, String targetCompilerFilter, boolean force, boolean bootComplete, String splitName) { + enforceSystemOrRootOrShell("performDexOptMode"); + int flags = (checkProfiles ? DexoptOptions.DEXOPT_CHECK_FOR_PROFILES_UPDATES : 0) | (force ? DexoptOptions.DEXOPT_FORCE : 0) | (bootComplete ? DexoptOptions.DEXOPT_BOOT_COMPLETE : 0); @@ -22005,7 +22007,7 @@ public class PackageManagerService extends IPackageManager.Stub pir.addFilter(new PreferredActivity(filter, match, set, activity, always)); scheduleWritePackageRestrictionsLocked(userId); } - if (!updateDefaultHomeNotLocked(userId)) { + if (!(isHomeFilter(filter) && updateDefaultHomeNotLocked(userId))) { postPreferredActivityChangedBroadcast(userId); } } @@ -22295,7 +22297,9 @@ public class PackageManagerService extends IPackageManager.Stub new PersistentPreferredActivity(filter, activity, true)); scheduleWritePackageRestrictionsLocked(userId); } - updateDefaultHomeNotLocked(userId); + if (isHomeFilter(filter)) { + updateDefaultHomeNotLocked(userId); + } postPreferredActivityChangedBroadcast(userId); } @@ -22664,6 +22668,11 @@ public class PackageManagerService extends IPackageManager.Stub return filter; } + private boolean isHomeFilter(@NonNull WatchedIntentFilter filter) { + return filter.hasAction(Intent.ACTION_MAIN) && filter.hasCategory(Intent.CATEGORY_HOME) + && filter.hasCategory(CATEGORY_DEFAULT); + } + ComponentName getHomeActivitiesAsUser(List<ResolveInfo> allHomeCandidates, int userId) { return liveComputer().getHomeActivitiesAsUser(allHomeCandidates, diff --git a/services/core/java/com/android/server/policy/GlobalKeyIntent.java b/services/core/java/com/android/server/policy/GlobalKeyIntent.java new file mode 100644 index 000000000000..f8682be7c49a --- /dev/null +++ b/services/core/java/com/android/server/policy/GlobalKeyIntent.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.policy; + +import android.annotation.NonNull; +import android.content.ComponentName; +import android.content.Intent; +import android.util.Log; +import android.view.KeyEvent; + +/** + * This class wrapped the Intent for global key ops. + */ +public final class GlobalKeyIntent { + private static final String EXTRA_BEGAN_FROM_NON_INTERACTIVE = + "EXTRA_BEGAN_FROM_NON_INTERACTIVE"; + + private final ComponentName mComponentName; + private final KeyEvent mKeyEvent; + private final boolean mBeganFromNonInteractive; + + GlobalKeyIntent(@NonNull ComponentName componentName, @NonNull KeyEvent event, + boolean beganFromNonInteractive) { + mComponentName = componentName; + mKeyEvent = new KeyEvent(event); + mBeganFromNonInteractive = beganFromNonInteractive; + } + + Intent getIntent() { + final Intent intent = new Intent(Intent.ACTION_GLOBAL_BUTTON) + .setComponent(mComponentName) + .setFlags(Intent.FLAG_RECEIVER_FOREGROUND) + .putExtra(Intent.EXTRA_KEY_EVENT, mKeyEvent) + .putExtra(EXTRA_BEGAN_FROM_NON_INTERACTIVE, mBeganFromNonInteractive); + return intent; + } + + /** + * Get the {@link KeyEvent} information of {@link Intent#ACTION_GLOBAL_BUTTON}. + */ + public KeyEvent getKeyEvent() { + return mKeyEvent; + } + + /** + * Indicate if the global key is dispatched from non-interactive mode. + * Information of {@link Intent#ACTION_GLOBAL_BUTTON}. + */ + public boolean beganFromNonInteractive() { + return mBeganFromNonInteractive; + } + + /** + * Generate a GlobalKeyIntent from {@link Intent}, the action must be + * {@link Intent#ACTION_GLOBAL_BUTTON}. + * + * @param intent The received intent of the global key. + */ + public static GlobalKeyIntent from(@NonNull Intent intent) { + if (intent.getAction() != Intent.ACTION_GLOBAL_BUTTON) { + Log.wtf("GlobalKeyIntent", "Intent should be ACTION_GLOBAL_BUTTON"); + return null; + } + + final KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); + final boolean fromNonInteractive = + intent.getBooleanExtra(EXTRA_BEGAN_FROM_NON_INTERACTIVE, false); + return new GlobalKeyIntent(intent.getComponent(), event, fromNonInteractive); + } +} diff --git a/services/core/java/com/android/server/policy/GlobalKeyManager.java b/services/core/java/com/android/server/policy/GlobalKeyManager.java index 157f8256ce50..2d48452b45f0 100644 --- a/services/core/java/com/android/server/policy/GlobalKeyManager.java +++ b/services/core/java/com/android/server/policy/GlobalKeyManager.java @@ -39,6 +39,9 @@ import java.io.PrintWriter; * broadcast to the specified component. The action of the intent will be * {@link Intent#ACTION_GLOBAL_BUTTON} and the KeyEvent will be included in the intent with * {@link Intent#EXTRA_KEY_EVENT}. + * + * Use {@link GlobalKeyIntent} to get detail information from received {@link Intent}, includes + * {@link KeyEvent} and the information about if the key is dispatched from non-interactive mode. */ final class GlobalKeyManager { @@ -49,13 +52,15 @@ final class GlobalKeyManager { private static final String TAG_KEY = "key"; private static final String ATTR_KEY_CODE = "keyCode"; private static final String ATTR_COMPONENT = "component"; + private static final String ATTR_DISPATCH_WHEN_NON_INTERACTIVE = "dispatchWhenNonInteractive"; private static final int GLOBAL_KEY_FILE_VERSION = 1; - private SparseArray<ComponentName> mKeyMapping; + private SparseArray<GlobalKeyAction> mKeyMapping; + private boolean mBeganFromNonInteractive = false; public GlobalKeyManager(Context context) { - mKeyMapping = new SparseArray<ComponentName>(); + mKeyMapping = new SparseArray<>(); loadGlobalKeys(context); } @@ -69,13 +74,15 @@ final class GlobalKeyManager { */ boolean handleGlobalKey(Context context, int keyCode, KeyEvent event) { if (mKeyMapping.size() > 0) { - ComponentName component = mKeyMapping.get(keyCode); - if (component != null) { - Intent intent = new Intent(Intent.ACTION_GLOBAL_BUTTON) - .setComponent(component) - .setFlags(Intent.FLAG_RECEIVER_FOREGROUND) - .putExtra(Intent.EXTRA_KEY_EVENT, new KeyEvent(event)); + GlobalKeyAction action = mKeyMapping.get(keyCode); + if (action != null) { + final Intent intent = new GlobalKeyIntent(action.mComponentName, event, + mBeganFromNonInteractive).getIntent(); context.sendBroadcastAsUser(intent, UserHandle.CURRENT, null); + + if (event.getAction() == KeyEvent.ACTION_UP) { + mBeganFromNonInteractive = false; + } return true; } } @@ -85,10 +92,35 @@ final class GlobalKeyManager { /** * Returns {@code true} if the key will be handled globally. */ - boolean shouldHandleGlobalKey(int keyCode, KeyEvent event) { + boolean shouldHandleGlobalKey(int keyCode) { return mKeyMapping.get(keyCode) != null; } + /** + * Returns {@code true} if the key will be handled globally. + */ + boolean shouldDispatchFromNonInteractive(int keyCode) { + final GlobalKeyAction action = mKeyMapping.get(keyCode); + if (action == null) { + return false; + } + + return action.mDispatchWhenNonInteractive; + } + + void setBeganFromNonInteractive() { + mBeganFromNonInteractive = true; + } + + class GlobalKeyAction { + private ComponentName mComponentName; + private boolean mDispatchWhenNonInteractive; + GlobalKeyAction(String componentName, String dispatchWhenNonInteractive) { + mComponentName = ComponentName.unflattenFromString(componentName); + mDispatchWhenNonInteractive = Boolean.valueOf(dispatchWhenNonInteractive); + } + } + private void loadGlobalKeys(Context context) { XmlResourceParser parser = null; try { @@ -105,10 +137,12 @@ final class GlobalKeyManager { if (TAG_KEY.equals(element)) { String keyCodeName = parser.getAttributeValue(null, ATTR_KEY_CODE); String componentName = parser.getAttributeValue(null, ATTR_COMPONENT); + String dispatchWhenNonInteractive = + parser.getAttributeValue(null, ATTR_DISPATCH_WHEN_NON_INTERACTIVE); int keyCode = KeyEvent.keyCodeFromString(keyCodeName); if (keyCode != KeyEvent.KEYCODE_UNKNOWN) { - mKeyMapping.put(keyCode, ComponentName.unflattenFromString( - componentName)); + mKeyMapping.put(keyCode, new GlobalKeyAction( + componentName, dispatchWhenNonInteractive)); } } } @@ -138,7 +172,9 @@ final class GlobalKeyManager { pw.print(prefix); pw.print(KeyEvent.keyCodeToString(mKeyMapping.keyAt(i))); pw.print("="); - pw.println(mKeyMapping.valueAt(i).flattenToString()); + pw.print(mKeyMapping.valueAt(i).mComponentName.flattenToString()); + pw.print(",dispatchWhenNonInteractive="); + pw.println(mKeyMapping.valueAt(i).mDispatchWhenNonInteractive); } pw.print(prefix); pw.println("}"); } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 0a65c2367e89..d73203df81c4 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3434,7 +3434,16 @@ public class PhoneWindowManager implements WindowManagerPolicy { // If the key would be handled globally, just return the result, don't worry about special // key processing. if (isValidGlobalKey(keyCode) - && mGlobalKeyManager.shouldHandleGlobalKey(keyCode, event)) { + && mGlobalKeyManager.shouldHandleGlobalKey(keyCode)) { + // Dispatch if global key defined dispatchWhenNonInteractive. + if (!interactive && isWakeKey && down + && mGlobalKeyManager.shouldDispatchFromNonInteractive(keyCode)) { + mGlobalKeyManager.setBeganFromNonInteractive(); + result = ACTION_PASS_TO_USER; + // Since we're dispatching the input, reset the pending key + mPendingWakeKey = PENDING_KEY_NULL; + } + if (isWakeKey) { wakeUpFromWakeKey(event); } @@ -3988,6 +3997,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { Slog.e(TAG, "RemoteException when checking if dreaming", e); } } + // Otherwise, consume events since the user can't see what is being // interacted with. return false; @@ -4501,7 +4511,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public boolean okToAnimate(boolean ignoreScreenOn) { - return (ignoreScreenOn || mDefaultDisplayPolicy.isAwake()) && !mDeviceGoingToSleep; + return (ignoreScreenOn || isScreenOn()) && !mDeviceGoingToSleep; } /** {@inheritDoc} */ diff --git a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java index 24337f3ad346..12e55e5f1805 100644 --- a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java +++ b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java @@ -24,10 +24,13 @@ import static android.os.RecoverySystem.RESUME_ON_REBOOT_REBOOT_ERROR_SLOT_MISMA import static android.os.RecoverySystem.RESUME_ON_REBOOT_REBOOT_ERROR_UNSPECIFIED; import static android.os.RecoverySystem.ResumeOnRebootRebootErrorCode; import static android.os.UserHandle.USER_SYSTEM; +import static android.ota.nano.OtaPackageMetadata.ApexMetadata; import static com.android.internal.widget.LockSettingsInternal.ARM_REBOOT_ERROR_NONE; import android.annotation.IntDef; +import android.apex.CompressedApexInfo; +import android.apex.CompressedApexInfoList; import android.content.Context; import android.content.IntentSender; import android.content.SharedPreferences; @@ -47,9 +50,11 @@ import android.os.ResultReceiver; import android.os.ShellCallback; import android.os.SystemProperties; import android.provider.DeviceConfig; +import android.sysprop.ApexProperties; import android.util.ArrayMap; import android.util.ArraySet; import android.util.FastImmutableArraySet; +import android.util.Log; import android.util.Slog; import com.android.internal.annotations.GuardedBy; @@ -59,6 +64,7 @@ import com.android.internal.widget.LockSettingsInternal; import com.android.internal.widget.RebootEscrowListener; import com.android.server.LocalServices; import com.android.server.SystemService; +import com.android.server.pm.ApexManager; import libcore.io.IoUtils; @@ -68,9 +74,13 @@ import java.io.File; import java.io.FileDescriptor; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; /** * The recovery system service is responsible for coordinating recovery related @@ -871,6 +881,76 @@ public class RecoverySystemService extends IRecoverySystem.Stub implements Reboo return rebootWithLskfImpl(packageName, reason, slotSwitch); } + public static boolean isUpdatableApexSupported() { + return ApexProperties.updatable().orElse(false); + } + + // Metadata should be no more than few MB, if it's larger than 100MB something is wrong. + private static final long APEX_INFO_SIZE_LIMIT = 24 * 1024 * 100; + + private static CompressedApexInfoList getCompressedApexInfoList(String packageFile) + throws IOException { + try (ZipFile zipFile = new ZipFile(packageFile)) { + final ZipEntry entry = zipFile.getEntry("apex_info.pb"); + if (entry == null) { + return null; + } + if (entry.getSize() >= APEX_INFO_SIZE_LIMIT) { + throw new IllegalArgumentException("apex_info.pb has size " + + entry.getSize() + + " which is larger than the permitted limit" + APEX_INFO_SIZE_LIMIT); + } + if (entry.getSize() == 0) { + CompressedApexInfoList infoList = new CompressedApexInfoList(); + infoList.apexInfos = new CompressedApexInfo[0]; + return infoList; + } + Log.i(TAG, "Allocating " + entry.getSize() + + " bytes of memory to store OTA Metadata"); + byte[] data = new byte[(int) entry.getSize()]; + + try (InputStream is = zipFile.getInputStream(entry)) { + int bytesRead = is.read(data); + String msg = "Read " + bytesRead + " when expecting " + data.length; + Log.e(TAG, msg); + if (bytesRead != data.length) { + throw new IOException(msg); + } + } + ApexMetadata metadata = ApexMetadata.parseFrom(data); + CompressedApexInfoList apexInfoList = new CompressedApexInfoList(); + apexInfoList.apexInfos = + Arrays.stream(metadata.apexInfo).filter(apex -> apex.isCompressed).map(apex -> { + CompressedApexInfo info = new CompressedApexInfo(); + info.moduleName = apex.packageName; + info.decompressedSize = apex.decompressedSize; + info.versionCode = apex.version; + return info; + }).toArray(CompressedApexInfo[]::new); + return apexInfoList; + } + } + + @Override + public boolean allocateSpaceForUpdate(String packageFile) { + if (!isUpdatableApexSupported()) { + Log.i(TAG, "Updatable Apex not supported, " + + "allocateSpaceForUpdate does nothing."); + return true; + } + try { + CompressedApexInfoList apexInfoList = getCompressedApexInfoList(packageFile); + ApexManager apexManager = ApexManager.getInstance(); + apexManager.reserveSpaceForCompressedApex(apexInfoList); + return true; + } catch (RemoteException e) { + e.rethrowAsRuntimeException(); + } catch (IOException | UnsupportedOperationException e) { + Slog.e(TAG, "Failed to reserve space for compressed apex: ", e); + } + return false; + } + @Override // Binder call public boolean isLskfCaptured(String packageName) { enforcePermissionForResumeOnReboot(); diff --git a/services/core/java/com/android/server/rotationresolver/RotationResolverManagerPerUserService.java b/services/core/java/com/android/server/rotationresolver/RotationResolverManagerPerUserService.java index 1dbe3e485938..81bf29b19604 100644 --- a/services/core/java/com/android/server/rotationresolver/RotationResolverManagerPerUserService.java +++ b/services/core/java/com/android/server/rotationresolver/RotationResolverManagerPerUserService.java @@ -19,24 +19,20 @@ package com.android.server.rotationresolver; import static android.service.rotationresolver.RotationResolverService.ROTATION_RESULT_FAILURE_CANCELLED; import static com.android.server.rotationresolver.RotationResolverManagerService.RESOLUTION_UNAVAILABLE; -import static com.android.server.rotationresolver.RotationResolverManagerService.getServiceConfigPackage; import static com.android.server.rotationresolver.RotationResolverManagerService.logRotationStats; import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; +import android.app.AppGlobals; import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.os.CancellationSignal; +import android.os.RemoteException; import android.rotationresolver.RotationResolverInternal; import android.service.rotationresolver.RotationResolutionRequest; -import android.service.rotationresolver.RotationResolverService; -import android.text.TextUtils; import android.util.IndentingPrintWriter; import android.util.Slog; @@ -65,7 +61,6 @@ final class RotationResolverManagerPerUserService extends @GuardedBy("mLock") RemoteRotationResolverService mRemoteService; - private static String sTestingPackage; private ComponentName mComponentName; RotationResolverManagerPerUserService(@NonNull RotationResolverManagerService main, @@ -139,18 +134,6 @@ final class RotationResolverManagerPerUserService extends } /** - * Set the testing package name. - * - * @param packageName the name of the package that implements {@link RotationResolverService} - * and is used for testing only. - */ - @VisibleForTesting - void setTestingPackage(String packageName) { - sTestingPackage = packageName; - mComponentName = resolveRotationResolverService(getContext()); - } - - /** * get the currently bound component name. */ @VisibleForTesting @@ -158,63 +141,40 @@ final class RotationResolverManagerPerUserService extends return mComponentName; } - /** - * Provides rotation resolver service component name at runtime, making sure it's provided - * by the system. - */ - static ComponentName resolveRotationResolverService(Context context) { - String resolvedPackage; - int flags = PackageManager.MATCH_SYSTEM_ONLY; - if (!TextUtils.isEmpty(sTestingPackage)) { - // Testing Package is set. - resolvedPackage = sTestingPackage; - flags = PackageManager.GET_META_DATA; - } else { - final String serviceConfigPackage = getServiceConfigPackage(context); - if (!TextUtils.isEmpty(serviceConfigPackage)) { - resolvedPackage = serviceConfigPackage; - } else { - return null; - } - } - - final Intent intent = new Intent( - RotationResolverService.SERVICE_INTERFACE).setPackage(resolvedPackage); - - final ResolveInfo resolveInfo = context.getPackageManager().resolveServiceAsUser(intent, - flags, context.getUserId()); - if (resolveInfo == null || resolveInfo.serviceInfo == null) { - Slog.wtf(TAG, String.format("Service %s not found in package %s", - RotationResolverService.SERVICE_INTERFACE, resolvedPackage)); - return null; - } - - final ServiceInfo serviceInfo = resolveInfo.serviceInfo; - final String permission = serviceInfo.permission; - if (Manifest.permission.BIND_ROTATION_RESOLVER_SERVICE.equals(permission)) { - Slog.i(TAG, String.format("Successfully bound the service from package: %s", - resolvedPackage)); - return serviceInfo.getComponentName(); - } - Slog.e(TAG, String.format( - "Service %s should require %s permission. Found %s permission", - serviceInfo.getComponentName(), - Manifest.permission.BIND_ROTATION_RESOLVER_SERVICE, - serviceInfo.permission)); - return null; - } - /** Resolves and sets up the rotation resolver service if it had not been done yet. */ @GuardedBy("mLock") @VisibleForTesting boolean isServiceAvailableLocked() { if (mComponentName == null) { - mComponentName = resolveRotationResolverService(getContext()); + mComponentName = updateServiceInfoLocked(); } return mComponentName != null; } + @Override // from PerUserSystemService + protected ServiceInfo newServiceInfoLocked(@NonNull ComponentName serviceComponent) + throws PackageManager.NameNotFoundException { + ServiceInfo serviceInfo; + try { + serviceInfo = AppGlobals.getPackageManager().getServiceInfo(serviceComponent, + PackageManager.GET_META_DATA, mUserId); + if (serviceInfo != null) { + final String permission = serviceInfo.permission; + if (!Manifest.permission.BIND_ROTATION_RESOLVER_SERVICE.equals(permission)) { + throw new SecurityException(String.format( + "Service %s requires %s permission. Found %s permission", + serviceInfo.getComponentName(), + Manifest.permission.BIND_ROTATION_RESOLVER_SERVICE, + serviceInfo.permission)); + } + } + } catch (RemoteException e) { + throw new PackageManager.NameNotFoundException( + "Could not get service for " + serviceComponent); + } + return serviceInfo; + } @GuardedBy("mLock") private void cancelLocked() { diff --git a/services/core/java/com/android/server/rotationresolver/RotationResolverShellCommand.java b/services/core/java/com/android/server/rotationresolver/RotationResolverShellCommand.java index a0e04ee7a20d..9f3f0968028f 100644 --- a/services/core/java/com/android/server/rotationresolver/RotationResolverShellCommand.java +++ b/services/core/java/com/android/server/rotationresolver/RotationResolverShellCommand.java @@ -23,7 +23,6 @@ import android.os.CancellationSignal; import android.os.ShellCommand; import android.rotationresolver.RotationResolverInternal.RotationResolverCallbackInternal; import android.service.rotationresolver.RotationResolutionRequest; -import android.text.TextUtils; import android.view.Surface; import java.io.PrintWriter; @@ -75,12 +74,10 @@ final class RotationResolverShellCommand extends ShellCommand { return runResolveRotation(); case "get-last-resolution": return getLastResolution(); - case "set-testing-package": - return setTestRotationResolverPackage(getNextArgRequired()); case "get-bound-package": return getBoundPackageName(); - case "clear-testing-package": - return resetTestRotationResolverPackage(); + case "set-temporary-service": + return setTemporaryService(getNextArgRequired()); default: return handleDefaultCommands(cmd); } @@ -93,17 +90,18 @@ final class RotationResolverShellCommand extends ShellCommand { return 0; } - private int setTestRotationResolverPackage(String testingPackage) { - if (!TextUtils.isEmpty((testingPackage))) { - mService.setTestingPackage(testingPackage); - sTestableRotationCallbackInternal.reset(); + private int setTemporaryService(String serviceName) { + final PrintWriter out = getOutPrintWriter(); + if (serviceName == null) { + mService.getMaster().resetTemporaryService(mService.getUserId()); + out.println("RotationResolverService temporary reset. "); + return 0; } - return 0; - } - private int resetTestRotationResolverPackage() { - mService.setTestingPackage(""); - sTestableRotationCallbackInternal.reset(); + final int duration = Integer.parseInt(getNextArgRequired()); + mService.getMaster().setTemporaryService(mService.getUserId(), serviceName, duration); + out.println("RotationResolverService temporarily set to " + serviceName + + " for " + duration + "ms"); return 0; } @@ -130,8 +128,9 @@ final class RotationResolverShellCommand extends ShellCommand { pw.println(); pw.println(" resolve-rotation: request a rotation resolution."); pw.println(" get-last-resolution: show the last rotation resolution result."); - pw.println(" set-testing-package: Set the testing package that implements the service."); pw.println(" get-bound-package: print the bound package that implements the service."); - pw.println(" clear-testing-package: reset the testing package."); + pw.println(" set-temporary-service [COMPONENT_NAME DURATION]"); + pw.println(" Temporarily (for DURATION ms) changes the service implementation."); + pw.println(" To reset, call with no argument."); } } diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java index 6f0741d20e45..c1f8240f4018 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java @@ -133,6 +133,7 @@ public class SoundTriggerMiddlewarePermission implements ISoundTriggerMiddleware * Throws a {@link SecurityException} iff the originator has permission to receive data. */ void enforcePermissionsForDataDelivery(@NonNull Identity identity, @NonNull String reason) { + // TODO(b/186164881): remove // START TEMP HACK enforcePermissionForPreflight(mContext, identity, RECORD_AUDIO); int hotwordOp = AppOpsManager.strOpToOp(AppOpsManager.OPSTR_RECORD_AUDIO_HOTWORD); diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index e37edebb09ba..d6e75746c004 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -71,6 +71,7 @@ import com.android.internal.statusbar.NotificationVisibility; import com.android.internal.statusbar.RegisterStatusBarResult; import com.android.internal.statusbar.StatusBarIcon; import com.android.internal.util.DumpUtils; +import com.android.internal.util.GcUtils; import com.android.internal.view.AppearanceRegion; import com.android.server.LocalServices; import com.android.server.UiThread; @@ -649,6 +650,7 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D // ================================================================================ // From IStatusBarService // ================================================================================ + @Override public void expandNotificationsPanel() { enforceExpandStatusBar(); @@ -971,6 +973,22 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D return new int[] {disable1, disable2}; } + void runGcForTest() { + if (!Build.IS_DEBUGGABLE) { + throw new SecurityException("runGcForTest requires a debuggable build"); + } + + // Gc the system along the way + GcUtils.runGcAndFinalizersSync(); + + if (mBar != null) { + try { + mBar.runGcForTest(); + } catch (RemoteException ex) { + } + } + } + @Override public void setIcon(String slot, String iconPackage, int iconId, int iconLevel, String contentDescription) { diff --git a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java index 617182290d39..11a4976d945f 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java +++ b/services/core/java/com/android/server/statusbar/StatusBarShellCommand.java @@ -75,6 +75,8 @@ public class StatusBarShellCommand extends ShellCommand { return runSendDisableFlag(); case "tracing": return runTracing(); + case "run-gc": + return runGc(); // Handle everything that would be handled in `handleDefaultCommand()` explicitly, // so the default can be to pass all args to StatusBar case "-h": @@ -213,6 +215,11 @@ public class StatusBarShellCommand extends ShellCommand { return 0; } + private int runGc() { + mInterface.runGcForTest(); + return 0; + } + @Override public void onHelp() { final PrintWriter pw = getOutPrintWriter(); diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java index e1747f71d5a9..edb042fd344e 100644 --- a/services/core/java/com/android/server/vcn/Vcn.java +++ b/services/core/java/com/android/server/vcn/Vcn.java @@ -311,7 +311,9 @@ public class Vcn extends Handler { private void handleConfigUpdated(@NonNull VcnConfig config) { // TODO: Add a dump function in VcnConfig that omits PII. Until then, use hashCode() - Slog.v(getLogTag(), "Config updated: config = " + config.hashCode()); + Slog.d( + getLogTag(), + "Config updated: old = " + mConfig.hashCode() + "; new = " + config.hashCode()); mConfig = config; @@ -340,6 +342,7 @@ public class Vcn extends Handler { } private void handleTeardown() { + Slog.d(getLogTag(), "Tearing down"); mVcnContext.getVcnNetworkProvider().unregisterListener(mRequestListener); for (VcnGatewayConnection gatewayConnection : mVcnGatewayConnections.values()) { @@ -350,6 +353,7 @@ public class Vcn extends Handler { } private void handleSafeModeStatusChanged() { + Slog.d(getLogTag(), "VcnGatewayConnection safe mode status changed"); boolean hasSafeModeGatewayConnection = false; // If any VcnGatewayConnection is in safe mode, mark the entire VCN as being in safe mode @@ -365,21 +369,24 @@ public class Vcn extends Handler { hasSafeModeGatewayConnection ? VCN_STATUS_CODE_SAFE_MODE : VCN_STATUS_CODE_ACTIVE; if (oldStatus != mCurrentStatus) { mVcnCallback.onSafeModeStatusChanged(hasSafeModeGatewayConnection); + Slog.d( + getLogTag(), + "Safe mode " + + (mCurrentStatus == VCN_STATUS_CODE_SAFE_MODE ? "entered" : "exited")); } } private void handleNetworkRequested(@NonNull NetworkRequest request) { - Slog.v(getLogTag(), "Received request " + request); + if (VDBG) { + Slog.v(getLogTag(), "Received request " + request); + } // If preexisting VcnGatewayConnection(s) satisfy request, return for (VcnGatewayConnectionConfig gatewayConnectionConfig : mVcnGatewayConnections.keySet()) { if (isRequestSatisfiedByGatewayConnectionConfig(request, gatewayConnectionConfig)) { - if (VDBG) { - Slog.v( - getLogTag(), - "Request already satisfied by existing VcnGatewayConnection: " - + request); - } + Slog.d( + getLogTag(), + "Request already satisfied by existing VcnGatewayConnection: " + request); return; } } @@ -389,7 +396,7 @@ public class Vcn extends Handler { for (VcnGatewayConnectionConfig gatewayConnectionConfig : mConfig.getGatewayConnectionConfigs()) { if (isRequestSatisfiedByGatewayConnectionConfig(request, gatewayConnectionConfig)) { - Slog.v(getLogTag(), "Bringing up new VcnGatewayConnection for request " + request); + Slog.d(getLogTag(), "Bringing up new VcnGatewayConnection for request " + request); if (getExposedCapabilitiesForMobileDataState(gatewayConnectionConfig).isEmpty()) { // Skip; this network does not provide any services if mobile data is disabled. @@ -414,8 +421,14 @@ public class Vcn extends Handler { new VcnGatewayStatusCallbackImpl(gatewayConnectionConfig), mIsMobileDataEnabled); mVcnGatewayConnections.put(gatewayConnectionConfig, vcnGatewayConnection); + + return; } } + + if (VDBG) { + Slog.v(getLogTag(), "Request could not be fulfilled by VCN: " + request); + } } private Set<Integer> getExposedCapabilitiesForMobileDataState( @@ -432,7 +445,7 @@ public class Vcn extends Handler { } private void handleGatewayConnectionQuit(VcnGatewayConnectionConfig config) { - Slog.v(getLogTag(), "VcnGatewayConnection quit: " + config); + Slog.d(getLogTag(), "VcnGatewayConnection quit: " + config); mVcnGatewayConnections.remove(config); // Trigger a re-evaluation of all NetworkRequests (to make sure any that can be satisfied @@ -479,6 +492,8 @@ public class Vcn extends Handler { // Trigger re-evaluation of all requests; mobile data state impacts supported caps. mVcnContext.getVcnNetworkProvider().resendAllRequests(mRequestListener); + + Slog.d(getLogTag(), "Mobile data " + (mIsMobileDataEnabled ? "enabled" : "disabled")); } } @@ -521,6 +536,7 @@ public class Vcn extends Handler { pw.increaseIndent(); pw.println("mCurrentStatus: " + mCurrentStatus); + pw.println("mIsMobileDataEnabled: " + mIsMobileDataEnabled); pw.println("mVcnGatewayConnections:"); for (VcnGatewayConnection gw : mVcnGatewayConnections.values()) { diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java index 65b947c1fcdd..46fd22810a58 100644 --- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java +++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java @@ -701,6 +701,7 @@ public class VcnGatewayConnection extends StateMachine { * <p>Once torn down, this VcnTunnel CANNOT be started again. */ public void teardownAsynchronously() { + Slog.d(TAG, "Triggering async teardown"); sendDisconnectRequestedAndAcquireWakelock( DISCONNECT_REASON_TEARDOWN, true /* shouldQuit */); @@ -710,6 +711,8 @@ public class VcnGatewayConnection extends StateMachine { @Override protected void onQuitting() { + Slog.d(TAG, "Quitting VcnGatewayConnection"); + // No need to call setInterfaceDown(); the IpSecInterface is being fully torn down. if (mTunnelIface != null) { mTunnelIface.close(); @@ -750,6 +753,11 @@ public class VcnGatewayConnection extends StateMachine { // TODO(b/180132994): explore safely removing this Thread check mVcnContext.ensureRunningOnLooperThread(); + Slog.d( + TAG, + "Selected underlying network changed: " + + (underlying == null ? null : underlying.network)); + // TODO(b/179091925): Move the delayed-message handling to BaseState // If underlying is null, all underlying networks have been lost. Disconnect VCN after a @@ -774,6 +782,10 @@ public class VcnGatewayConnection extends StateMachine { if (!mIsQuitting) { mWakeLock.acquire(); + + if (VDBG) { + Slog.v(TAG, "Wakelock acquired: " + mWakeLock); + } } } @@ -781,6 +793,10 @@ public class VcnGatewayConnection extends StateMachine { mVcnContext.ensureRunningOnLooperThread(); mWakeLock.release(); + + if (VDBG) { + Slog.v(TAG, "Wakelock released: " + mWakeLock); + } } /** @@ -935,10 +951,17 @@ public class VcnGatewayConnection extends StateMachine { } private void setTeardownTimeoutAlarm() { + if (VDBG) { + Slog.v(TAG, "Setting teardown timeout alarm; mCurrentToken: " + mCurrentToken); + } + // Safe to assign this alarm because it is either 1) already null, or 2) already fired. In // either case, there is nothing to cancel. if (mTeardownTimeoutAlarm != null) { - Slog.wtf(TAG, "mTeardownTimeoutAlarm should be null before being set"); + Slog.wtf( + TAG, + "mTeardownTimeoutAlarm should be null before being set; mCurrentToken: " + + mCurrentToken); } final Message delayedMessage = obtainMessage(EVENT_TEARDOWN_TIMEOUT_EXPIRED, mCurrentToken); @@ -950,6 +973,10 @@ public class VcnGatewayConnection extends StateMachine { } private void cancelTeardownTimeoutAlarm() { + if (VDBG) { + Slog.v(TAG, "Cancelling teardown timeout alarm; mCurrentToken: " + mCurrentToken); + } + if (mTeardownTimeoutAlarm != null) { mTeardownTimeoutAlarm.cancel(); mTeardownTimeoutAlarm = null; @@ -960,6 +987,13 @@ public class VcnGatewayConnection extends StateMachine { } private void setDisconnectRequestAlarm() { + if (VDBG) { + Slog.v( + TAG, + "Setting alarm to disconnect due to underlying network loss; mCurrentToken: " + + mCurrentToken); + } + // Only schedule a NEW alarm if none is already set. if (mDisconnectRequestAlarm != null) { return; @@ -980,6 +1014,13 @@ public class VcnGatewayConnection extends StateMachine { } private void cancelDisconnectRequestAlarm() { + if (VDBG) { + Slog.v( + TAG, + "Cancelling alarm to disconnect due to underlying network loss; mCurrentToken: " + + mCurrentToken); + } + if (mDisconnectRequestAlarm != null) { mDisconnectRequestAlarm.cancel(); mDisconnectRequestAlarm = null; @@ -993,10 +1034,17 @@ public class VcnGatewayConnection extends StateMachine { } private void setRetryTimeoutAlarm(long delay) { + if (VDBG) { + Slog.v(TAG, "Setting retry alarm; mCurrentToken: " + mCurrentToken); + } + // Safe to assign this alarm because it is either 1) already null, or 2) already fired. In // either case, there is nothing to cancel. if (mRetryTimeoutAlarm != null) { - Slog.wtf(TAG, "mRetryTimeoutAlarm should be null before being set"); + Slog.wtf( + TAG, + "mRetryTimeoutAlarm should be null before being set; mCurrentToken: " + + mCurrentToken); } final Message delayedMessage = obtainMessage(EVENT_RETRY_TIMEOUT_EXPIRED, mCurrentToken); @@ -1004,6 +1052,10 @@ public class VcnGatewayConnection extends StateMachine { } private void cancelRetryTimeoutAlarm() { + if (VDBG) { + Slog.v(TAG, "Cancel retry alarm; mCurrentToken: " + mCurrentToken); + } + if (mRetryTimeoutAlarm != null) { mRetryTimeoutAlarm.cancel(); mRetryTimeoutAlarm = null; @@ -1014,6 +1066,10 @@ public class VcnGatewayConnection extends StateMachine { @VisibleForTesting(visibility = Visibility.PRIVATE) void setSafeModeAlarm() { + if (VDBG) { + Slog.v(TAG, "Setting safe mode alarm; mCurrentToken: " + mCurrentToken); + } + // Only schedule a NEW alarm if none is already set. if (mSafeModeTimeoutAlarm != null) { return; @@ -1028,6 +1084,10 @@ public class VcnGatewayConnection extends StateMachine { } private void cancelSafeModeAlarm() { + if (VDBG) { + Slog.v(TAG, "Cancel safe mode alarm; mCurrentToken: " + mCurrentToken); + } + if (mSafeModeTimeoutAlarm != null) { mSafeModeTimeoutAlarm.cancel(); mSafeModeTimeoutAlarm = null; @@ -1092,6 +1152,15 @@ public class VcnGatewayConnection extends StateMachine { + exception.getMessage(); } + Slog.d( + TAG, + "Encountered error; code=" + + errorCode + + ", exceptionClass=" + + exceptionClass + + ", exceptionMessage=" + + exceptionMessage); + mGatewayStatusCallback.onGatewayConnectionError( mConnectionConfig.getGatewayConnectionName(), errorCode, @@ -1234,7 +1303,7 @@ public class VcnGatewayConnection extends StateMachine { protected void handleDisconnectRequested(EventDisconnectRequestedInfo info) { // TODO(b/180526152): notify VcnStatusCallback for Network loss - Slog.v(TAG, "Tearing down. Cause: " + info.reason); + Slog.d(TAG, "Tearing down. Cause: " + info.reason); mIsQuitting = info.shouldQuit; teardownNetwork(); @@ -1250,6 +1319,7 @@ public class VcnGatewayConnection extends StateMachine { protected void handleSafeModeTimeoutExceeded() { mSafeModeTimeoutAlarm = null; + Slog.d(TAG, "Entering safe mode after timeout exceeded"); // Connectivity for this GatewayConnection is broken; tear down the Network. teardownNetwork(); @@ -1722,6 +1792,8 @@ public class VcnGatewayConnection extends StateMachine { } private void handleMigrationCompleted(EventMigrationCompletedInfo migrationCompletedInfo) { + Slog.v(TAG, "Migration completed: " + mUnderlying.network); + applyTransform( mCurrentToken, mTunnelIface, @@ -1744,6 +1816,8 @@ public class VcnGatewayConnection extends StateMachine { mUnderlying = ((EventUnderlyingNetworkChangedInfo) msg.obj).newUnderlying; if (mUnderlying == null) { + Slog.v(TAG, "Underlying network lost"); + // Ignored for now; a new network may be coming up. If none does, the delayed // NETWORK_LOST disconnect will be fired, and tear down the session + network. return; diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index 09461132ef37..1ab402d804fc 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -80,6 +80,7 @@ import android.content.pm.dex.ArtManagerInternal; import android.content.pm.dex.PackageOptimizationInfo; import android.metrics.LogMaker; import android.os.Binder; +import android.os.Handler; import android.os.Looper; import android.os.SystemClock; import android.os.Trace; @@ -92,9 +93,9 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; -import com.android.internal.os.BackgroundThread; import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.function.pooled.PooledLambda; +import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.apphibernation.AppHibernationManagerInternal; import com.android.server.apphibernation.AppHibernationService; @@ -150,6 +151,7 @@ class ActivityMetricsLogger { private long mLastLogTimeSecs; private final ActivityTaskSupervisor mSupervisor; private final MetricsLogger mMetricsLogger = new MetricsLogger(); + private final Handler mLoggerHandler = FgThread.getHandler(); /** All active transitions. */ private final ArrayList<TransitionInfo> mTransitionInfoList = new ArrayList<>(); @@ -897,11 +899,11 @@ class ActivityMetricsLogger { // This will avoid any races with other operations that modify the ActivityRecord. final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info); if (info.isInterestingToLoggerAndObserver()) { - BackgroundThread.getHandler().post(() -> logAppTransition( + mLoggerHandler.post(() -> logAppTransition( info.mCurrentTransitionDeviceUptime, info.mCurrentTransitionDelayMs, infoSnapshot, isHibernating)); } - BackgroundThread.getHandler().post(() -> logAppDisplayed(infoSnapshot)); + mLoggerHandler.post(() -> logAppDisplayed(infoSnapshot)); if (info.mPendingFullyDrawn != null) { info.mPendingFullyDrawn.run(); } @@ -909,7 +911,7 @@ class ActivityMetricsLogger { info.mLastLaunchedActivity.info.launchToken = null; } - // This gets called on a background thread without holding the activity manager lock. + // This gets called on another thread without holding the activity manager lock. private void logAppTransition(int currentTransitionDeviceUptime, int currentTransitionDelayMs, TransitionInfoSnapshot info, boolean isHibernating) { final LogMaker builder = new LogMaker(APP_TRANSITION); @@ -1036,7 +1038,7 @@ class ActivityMetricsLogger { : TimeUnit.NANOSECONDS.toMillis(currentTimestampNs - info.mTransitionStartTimeNs); final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info, r, (int) startupTimeMs); - BackgroundThread.getHandler().post(() -> logAppFullyDrawn(infoSnapshot)); + mLoggerHandler.post(() -> logAppFullyDrawn(infoSnapshot)); mLastTransitionInfo.remove(r); if (!info.isInterestingToLoggerAndObserver()) { diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java index eeb7fac30944..47622bc83417 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java @@ -74,8 +74,8 @@ public abstract class DisplayAreaPolicy { */ public abstract void addWindow(WindowToken token); - /** Gets the {@link DisplayArea} which a {@link WindowToken} is about to be attached to. */ - public abstract DisplayArea.Tokens getDisplayAreaForWindowToken(int type, Bundle options, + /** Gets the {@link DisplayArea} with given window type and launched options */ + public abstract DisplayArea.Tokens findAreaForWindowType(int type, Bundle options, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay); /** diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicyBuilder.java b/services/core/java/com/android/server/wm/DisplayAreaPolicyBuilder.java index a7312b321e4d..47d7c9d1279d 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaPolicyBuilder.java +++ b/services/core/java/com/android/server/wm/DisplayAreaPolicyBuilder.java @@ -756,7 +756,14 @@ class DisplayAreaPolicyBuilder { @VisibleForTesting DisplayArea.Tokens findAreaForToken(WindowToken token) { return mSelectRootForWindowFunc.apply(token.windowType, token.mOptions) - .findAreaForToken(token); + .findAreaForTokenInLayer(token); + } + + @Override + public DisplayArea.Tokens findAreaForWindowType(int type, Bundle options, + boolean ownerCanManageAppTokens, boolean roundedCornerOverlay) { + return mSelectRootForWindowFunc.apply(type, options).findAreaForWindowTypeInLayer(type, + ownerCanManageAppTokens, roundedCornerOverlay); } @VisibleForTesting @@ -794,13 +801,6 @@ class DisplayAreaPolicyBuilder { public TaskDisplayArea getDefaultTaskDisplayArea() { return mDefaultTaskDisplayArea; } - - @Override - public DisplayArea.Tokens getDisplayAreaForWindowToken(int type, Bundle options, - boolean ownerCanManageAppTokens, boolean roundedCornerOverlay) { - return mSelectRootForWindowFunc.apply(type, options).findAreaForToken(type, - ownerCanManageAppTokens, roundedCornerOverlay); - } } static class PendingArea { diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index a10847876ab6..411059de2a20 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -1123,15 +1123,8 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp token.mDisplayContent = this; // Add non-app token to container hierarchy on the display. App tokens are added through // the parent container managing them (e.g. Tasks). - switch (token.windowType) { - case TYPE_INPUT_METHOD: - case TYPE_INPUT_METHOD_DIALOG: - mImeWindowsContainer.addChild(token); - break; - default: - mDisplayAreaPolicy.addWindow(token); - break; - } + final DisplayArea.Tokens da = findAreaForToken(token).asTokens(); + da.addChild(token); } } @@ -5982,7 +5975,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp return mMagnificationSpec; } - DisplayArea getAreaForWindowToken(int windowType, Bundle options, + DisplayArea findAreaForWindowType(int windowType, Bundle options, boolean ownerCanManageAppToken, boolean roundedCornerOverlay) { // TODO(b/159767464): figure out how to find an appropriate TDA. if (windowType >= FIRST_APPLICATION_WINDOW && windowType <= LAST_APPLICATION_WINDOW) { @@ -5994,10 +5987,28 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp if (windowType == TYPE_INPUT_METHOD || windowType == TYPE_INPUT_METHOD_DIALOG) { return getImeContainer(); } - return mDisplayAreaPolicy.getDisplayAreaForWindowToken(windowType, options, + return mDisplayAreaPolicy.findAreaForWindowType(windowType, options, ownerCanManageAppToken, roundedCornerOverlay); } + /** + * Finds the {@link DisplayArea} for the {@link WindowToken} to attach to. + * <p> + * Note that the differences between this API and + * {@link RootDisplayArea#findAreaForTokenInLayer(WindowToken)} is that this API finds a + * {@link DisplayArea} in {@link DisplayContent} level, which may find a {@link DisplayArea} + * from multiple {@link RootDisplayArea RootDisplayAreas} under this {@link DisplayContent}'s + * hierarchy, while {@link RootDisplayArea#findAreaForTokenInLayer(WindowToken)} finds a + * {@link DisplayArea.Tokens} from a {@link DisplayArea.Tokens} list mapped to window layers. + * </p> + * + * @see DisplayContent#findAreaForTokenInLayer(WindowToken) + */ + DisplayArea findAreaForToken(WindowToken windowToken) { + return findAreaForWindowType(windowToken.getWindowType(), windowToken.mOptions, + windowToken.mOwnerCanManageAppTokens, windowToken.mRoundedCornerOverlay); + } + @Override DisplayContent asDisplayContent() { return this; diff --git a/services/core/java/com/android/server/wm/PinnedTaskController.java b/services/core/java/com/android/server/wm/PinnedTaskController.java index dea83f0c00e5..7b4b23ec8c84 100644 --- a/services/core/java/com/android/server/wm/PinnedTaskController.java +++ b/services/core/java/com/android/server/wm/PinnedTaskController.java @@ -257,15 +257,16 @@ class PinnedTaskController { // be rotated. float dx = pipTx.mPositionX; float dy = pipTx.mPositionY; + final Matrix matrix = pipTx.getMatrix(); if (pipTx.mRotation == 90) { dx = pipTx.mPositionY; dy = areaBounds.right - pipTx.mPositionX; + matrix.postRotate(-90); } else if (pipTx.mRotation == -90) { dx = areaBounds.bottom - pipTx.mPositionY; dy = pipTx.mPositionX; + matrix.postRotate(90); } - final Matrix matrix = new Matrix(); - matrix.setScale(pipTx.mScaleX, pipTx.mScaleY); matrix.postTranslate(dx, dy); t.setMatrix(pinnedTask.getSurfaceControl(), matrix, new float[9]); Slog.i(TAG, "Seamless rotation PiP tx=" + pipTx + " pos=" + dx + "," + dy); diff --git a/services/core/java/com/android/server/wm/RootDisplayArea.java b/services/core/java/com/android/server/wm/RootDisplayArea.java index 1cda8d56ddc7..d94bb9e89252 100644 --- a/services/core/java/com/android/server/wm/RootDisplayArea.java +++ b/services/core/java/com/android/server/wm/RootDisplayArea.java @@ -101,15 +101,24 @@ class RootDisplayArea extends DisplayArea.Dimmable { "There is no FEATURE_IME_PLACEHOLDER in this root to place the IME container"); } - /** Finds the {@link DisplayArea.Tokens} that this type of window should be attached to. */ + /** + * Finds the {@link DisplayArea.Tokens} in {@code mAreaForLayer} that this type of window + * should be attached to. + * <p> + * Note that in most cases, users are expected to call + * {@link DisplayContent#findAreaForToken(WindowToken)} to find a {@link DisplayArea} in + * {@link DisplayContent} level instead of calling this inner method. + * </p> + */ @Nullable - DisplayArea.Tokens findAreaForToken(WindowToken token) { - return findAreaForToken(token.windowType, token.mOwnerCanManageAppTokens, + DisplayArea.Tokens findAreaForTokenInLayer(WindowToken token) { + return findAreaForWindowTypeInLayer(token.windowType, token.mOwnerCanManageAppTokens, token.mRoundedCornerOverlay); } + /** @see #findAreaForTokenInLayer(WindowToken) */ @Nullable - DisplayArea.Tokens findAreaForToken(int windowType, boolean ownerCanManageAppTokens, + DisplayArea.Tokens findAreaForWindowTypeInLayer(int windowType, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay) { int windowLayerFromType = mWmService.mPolicy.getWindowLayerFromTypeLw(windowType, ownerCanManageAppTokens, roundedCornerOverlay); diff --git a/services/core/java/com/android/server/wm/WindowContextListenerController.java b/services/core/java/com/android/server/wm/WindowContextListenerController.java index b417832d3be1..bc530416c8cd 100644 --- a/services/core/java/com/android/server/wm/WindowContextListenerController.java +++ b/services/core/java/com/android/server/wm/WindowContextListenerController.java @@ -201,7 +201,9 @@ class WindowContextListenerController { return mContainer; } - private void updateContainer(WindowContainer newContainer) { + private void updateContainer(@NonNull WindowContainer newContainer) { + Objects.requireNonNull(newContainer); + if (mContainer.equals(newContainer)) { return; } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index d43a76315502..ab5e498cd3fc 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -2688,7 +2688,7 @@ public class WindowManagerService extends IWindowManager.Stub } // TODO(b/155340867): Investigate if we still need roundedCornerOverlay after // the feature b/155340867 is completed. - final DisplayArea da = dc.getAreaForWindowToken(type, options, + final DisplayArea da = dc.findAreaForWindowType(type, options, callerCanManageAppTokens, false /* roundedCornerOverlay */); mWindowContextListenerController.registerWindowContainerListener(clientToken, da, callingUid, type, options); diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index 26efbc95eedd..51b270c42bde 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -206,23 +206,27 @@ static bool isValidMountTarget(std::string_view path) { return path::isAbsolute(path) && path::isEmptyDir(path).value_or(true); } -std::string makeBindMdName() { +std::string makeUniqueName(std::string_view prefix) { static constexpr auto uuidStringSize = 36; uuid_t guid; uuid_generate(guid); std::string name; - const auto prefixSize = constants().mountpointMdPrefix.size(); + const auto prefixSize = prefix.size(); name.reserve(prefixSize + uuidStringSize); - name = constants().mountpointMdPrefix; + name = prefix; name.resize(prefixSize + uuidStringSize); uuid_unparse(guid, name.data() + prefixSize); return name; } +std::string makeBindMdName() { + return makeUniqueName(constants().mountpointMdPrefix); +} + static bool checkReadLogsDisabledMarker(std::string_view root) { const auto markerPath = path::c_str(path::join(root, constants().readLogsDisabledMarkerName)); struct stat st; @@ -422,7 +426,7 @@ void IncrementalService::onDump(int fd) { } else { dprintf(fd, " mountId: %d\n", mnt.mountId); dprintf(fd, " root: %s\n", mnt.root.c_str()); - const auto metricsInstanceName = path::basename(ifs->root); + const auto& metricsInstanceName = ifs->metricsKey; dprintf(fd, " metrics instance name: %s\n", path::c_str(metricsInstanceName).get()); dprintf(fd, " nextStorageDirNo: %d\n", mnt.nextStorageDirNo.load()); dprintf(fd, " flags: %d\n", int(mnt.flags)); @@ -615,6 +619,7 @@ StorageId IncrementalService::createStorage(std::string_view mountPoint, return kInvalidStorageId; } + std::string metricsKey; IncFsMount::Control control; { std::lock_guard l(mMountOperationLock); @@ -630,7 +635,8 @@ StorageId IncrementalService::createStorage(std::string_view mountPoint, if (!mkdirOrLog(path::join(backing, ".incomplete"), 0777)) { return kInvalidStorageId; } - auto status = mVold->mountIncFs(backing, mountTarget, 0, mountKey, &controlParcel); + metricsKey = makeUniqueName(mountKey); + auto status = mVold->mountIncFs(backing, mountTarget, 0, metricsKey, &controlParcel); if (!status.isOk()) { LOG(ERROR) << "Vold::mountIncFs() failed: " << status.toString8(); return kInvalidStorageId; @@ -653,8 +659,8 @@ StorageId IncrementalService::createStorage(std::string_view mountPoint, const auto mountId = mountIt->first; l.unlock(); - auto ifs = - std::make_shared<IncFsMount>(std::move(mountRoot), mountId, std::move(control), *this); + auto ifs = std::make_shared<IncFsMount>(std::move(mountRoot), std::move(metricsKey), mountId, + std::move(control), *this); // Now it's the |ifs|'s responsibility to clean up after itself, and the only cleanup we need // is the removal of the |ifs|. (void)firstCleanupOnFailure.release(); @@ -1483,8 +1489,11 @@ std::unordered_set<std::string_view> IncrementalService::adoptMountedInstances() dataLoaderParams.arguments = loader.arguments(); } - auto ifs = std::make_shared<IncFsMount>(std::string(expectedRoot), mountId, - std::move(control), *this); + // Not way to obtain a real sysfs key at this point - metrics will stop working after "soft" + // reboot. + std::string metricsKey{}; + auto ifs = std::make_shared<IncFsMount>(std::string(expectedRoot), std::move(metricsKey), + mountId, std::move(control), *this); (void)cleanupFiles.release(); // ifs will take care of that now // Check if marker file present. @@ -1641,7 +1650,8 @@ bool IncrementalService::mountExistingImage(std::string_view root) { std::string mountKey(path::basename(path::dirname(mountTarget))); IncrementalFileSystemControlParcel controlParcel; - auto status = mVold->mountIncFs(backing, mountTarget, 0, mountKey, &controlParcel); + auto metricsKey = makeUniqueName(mountKey); + auto status = mVold->mountIncFs(backing, mountTarget, 0, metricsKey, &controlParcel); if (!status.isOk()) { LOG(ERROR) << "Vold::mountIncFs() failed: " << status.toString8(); return false; @@ -1654,7 +1664,8 @@ bool IncrementalService::mountExistingImage(std::string_view root) { controlParcel.blocksWritten ? controlParcel.blocksWritten->release().release() : -1; IncFsMount::Control control = mIncFs->createControl(cmd, pendingReads, logs, blocksWritten); - auto ifs = std::make_shared<IncFsMount>(std::string(root), -1, std::move(control), *this); + auto ifs = std::make_shared<IncFsMount>(std::string(root), std::move(metricsKey), -1, + std::move(control), *this); auto mount = parseFromIncfs<metadata::Mount>(mIncFs.get(), ifs->control, path::join(mountTarget, constants().infoMdName)); @@ -2455,7 +2466,7 @@ void IncrementalService::getMetrics(StorageId storageId, android::os::Persistabl const auto& kMetricsReadLogsEnabled = os::incremental::BnIncrementalService::METRICS_READ_LOGS_ENABLED(); result->putBoolean(String16(kMetricsReadLogsEnabled.c_str()), ifs->readLogsEnabled() != 0); - const auto incfsMetrics = mIncFs->getMetrics(path::basename(ifs->root)); + const auto incfsMetrics = mIncFs->getMetrics(ifs->metricsKey); if (incfsMetrics) { const auto& kMetricsTotalDelayedReads = os::incremental::BnIncrementalService::METRICS_TOTAL_DELAYED_READS(); diff --git a/services/incremental/IncrementalService.h b/services/incremental/IncrementalService.h index a8434afe29ba..5de7325b3d28 100644 --- a/services/incremental/IncrementalService.h +++ b/services/incremental/IncrementalService.h @@ -340,6 +340,7 @@ private: mutable std::mutex lock; const std::string root; + const std::string metricsKey; Control control; /*const*/ MountId mountId; int32_t flags = StorageFlags::ReadLogsAllowed; @@ -350,9 +351,10 @@ private: std::atomic<int> nextStorageDirNo{0}; const IncrementalService& incrementalService; - IncFsMount(std::string root, MountId mountId, Control control, + IncFsMount(std::string root, std::string metricsKey, MountId mountId, Control control, const IncrementalService& incrementalService) : root(std::move(root)), + metricsKey(std::move(metricsKey)), control(std::move(control)), mountId(mountId), incrementalService(incrementalService) {} diff --git a/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java b/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java index 607fb4760236..624e7dd3be4f 100644 --- a/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java @@ -1003,6 +1003,8 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean()); + verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2), + eq(true)); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1017,6 +1019,8 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean()); + verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2), + eq(false)); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1030,6 +1034,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1047,6 +1052,8 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean()); + verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2), + eq(true)); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1063,6 +1070,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1081,6 +1089,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1095,6 +1104,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1111,6 +1121,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1126,6 +1137,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1142,6 +1154,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1158,6 +1171,7 @@ public class AppStateTrackerTest { verify(l, times(2)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1172,6 +1186,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1188,6 +1203,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1203,6 +1219,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1225,6 +1242,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1240,6 +1258,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1255,6 +1274,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1270,6 +1290,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1286,6 +1307,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(eq(UID_10_1)); @@ -1301,6 +1323,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1316,6 +1339,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1331,6 +1355,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1346,6 +1371,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); diff --git a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java index 72342810c4b6..5222511cc479 100644 --- a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java @@ -2403,6 +2403,34 @@ public class AlarmManagerServiceTest { } @Test + public void opScheduleExactAlarmGranted() throws Exception { + final long durationMs = 20000L; + when(mActivityManagerInternal.getBootTimeTempAllowListDuration()).thenReturn(durationMs); + + mockExactAlarmPermissionGrant(true, false, MODE_ALLOWED); + mIAppOpsCallback.opChanged(OP_SCHEDULE_EXACT_ALARM, TEST_CALLING_UID, TEST_CALLING_PACKAGE); + + final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class); + final ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); + + verify(mMockContext).sendBroadcastAsUser(intentCaptor.capture(), eq(UserHandle.SYSTEM), + isNull(), bundleCaptor.capture()); + + // Validate the intent. + assertEquals(AlarmManager.ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED, + intentCaptor.getValue().getAction()); + assertEquals(TEST_CALLING_PACKAGE, intentCaptor.getValue().getPackage()); + + // Validate the options. + final BroadcastOptions bOptions = new BroadcastOptions(bundleCaptor.getValue()); + assertEquals(TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + bOptions.getTemporaryAppAllowlistType()); + assertEquals(durationMs, bOptions.getTemporaryAppAllowlistDuration()); + assertEquals(PowerExemptionManager.REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED, + bOptions.getTemporaryAppAllowlistReasonCode()); + } + + @Test public void removeExactAlarmsOnPermissionRevoked() { doReturn(true).when( () -> CompatChanges.isChangeEnabled(eq(AlarmManager.REQUIRE_EXACT_ALARM_PERMISSION), diff --git a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java index 3404aff976d0..f59146e70841 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java @@ -2078,7 +2078,7 @@ public class MockingOomAdjusterTests { doReturn(hasExternalProviders).when(record).hasExternalProcessHandles(); } ContentProviderConnection conn = spy(new ContentProviderConnection(record, client, - client.info.packageName)); + client.info.packageName, UserHandle.getUserId(client.uid))); record.connections.add(conn); client.mProviders.addProviderConnection(conn); return record; diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java index 6bca5e449b34..eace99f61e60 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java @@ -52,6 +52,7 @@ import android.server.wm.settings.SettingsSession; import android.support.test.uiautomator.UiDevice; import android.test.suitebuilder.annotation.LargeTest; import android.text.TextUtils; +import android.util.KeyValueListParser; import android.util.Log; import androidx.test.InstrumentationRegistry; @@ -417,6 +418,142 @@ public class ActivityManagerTest { return false; } + @LargeTest + @Test + public void testKillAppIfFasCachedIdle() throws Exception { + final long shortTimeoutMs = 5_000; + final long backgroundSettleMs = 10_000; + final PackageManager pm = mContext.getPackageManager(); + final int uid = pm.getPackageUid(TEST_APP, 0); + final MyUidImportanceListener uidListener1 = new MyUidImportanceListener(uid); + final MyUidImportanceListener uidListener2 = new MyUidImportanceListener(uid); + SettingsSession<String> amConstantsSettings = null; + DeviceConfigSession<Boolean> killForceAppStandByAndCachedIdle = null; + final ActivityManager am = mContext.getSystemService(ActivityManager.class); + final CountDownLatch[] latchHolder = new CountDownLatch[1]; + final H handler = new H(Looper.getMainLooper(), latchHolder); + final Messenger messenger = new Messenger(handler); + try { + am.addOnUidImportanceListener(uidListener1, + RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE); + am.addOnUidImportanceListener(uidListener2, RunningAppProcessInfo.IMPORTANCE_GONE); + toggleScreenOn(true); + + killForceAppStandByAndCachedIdle = new DeviceConfigSession<>( + DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + ActivityManagerConstants.KEY_KILL_FAS_CACHED_IDLE, + DeviceConfig::getBoolean, + ActivityManagerConstants.DEFAULT_KILL_FAS_CACHED_IDLE); + killForceAppStandByAndCachedIdle.set(true); + amConstantsSettings = new SettingsSession<>( + Settings.Global.getUriFor(Settings.Global.ACTIVITY_MANAGER_CONSTANTS), + Settings.Global::getString, Settings.Global::putString); + final KeyValueListParser parser = new KeyValueListParser(','); + long currentBackgroundSettleMs = + ActivityManagerConstants.DEFAULT_BACKGROUND_SETTLE_TIME; + try { + parser.setString(amConstantsSettings.get()); + currentBackgroundSettleMs = parser.getLong( + ActivityManagerConstants.KEY_BACKGROUND_SETTLE_TIME, + ActivityManagerConstants.DEFAULT_BACKGROUND_SETTLE_TIME); + } catch (IllegalArgumentException e) { + } + // Drain queue to make sure the existing UID_IDLE_MSG has been processed. + Thread.sleep(currentBackgroundSettleMs); + amConstantsSettings.set( + ActivityManagerConstants.KEY_BACKGROUND_SETTLE_TIME + "=" + backgroundSettleMs); + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND allow"); + + final Intent intent = new Intent(ACTION_FGS_STATS_TEST); + final ComponentName cn = ComponentName.unflattenFromString( + TEST_APP + "/" + TEST_FGS_CLASS); + final Bundle bundle = new Bundle(); + intent.setComponent(cn); + bundle.putBinder(EXTRA_MESSENGER, messenger.getBinder()); + intent.putExtras(bundle); + + // Start the FGS. + latchHolder[0] = new CountDownLatch(1); + mContext.startForegroundService(intent); + assertTrue("Timed out to start fg service", uidListener1.waitFor( + RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs)); + assertTrue("Timed out to get the remote messenger", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Stop the FGS, it shouldn't be killed because it's not in FAS state. + latchHolder[0] = new CountDownLatch(1); + handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null); + assertTrue("Timed out to wait for stop fg", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Set the FAS state. + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND deny"); + // Now it should've been killed. + assertTrue("Should have been killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Start the FGS. + // Temporarily allow RUN_ANY_IN_BACKGROUND to start FGS. + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND allow"); + latchHolder[0] = new CountDownLatch(1); + mContext.startForegroundService(intent); + assertTrue("Timed out to start fg service", uidListener1.waitFor( + RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs)); + assertTrue("Timed out to get the remote messenger", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND deny"); + // It shouldn't be killed since it's not cached. + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Stop the FGS, it should get killed because it's cached & uid idle & in FAS state. + latchHolder[0] = new CountDownLatch(1); + handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null); + assertTrue("Timed out to wait for stop fg", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + assertTrue("Should have been killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Disable this FAS cached idle kill feature. + killForceAppStandByAndCachedIdle.set(false); + + // Start the FGS. + // Temporarily allow RUN_ANY_IN_BACKGROUND to start FGS. + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND allow"); + latchHolder[0] = new CountDownLatch(1); + mContext.startForegroundService(intent); + assertTrue("Timed out to start fg service", uidListener1.waitFor( + RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs)); + assertTrue("Timed out to get the remote messenger", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND deny"); + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Stop the FGS, it shouldn't be killed because the feature has been turned off. + latchHolder[0] = new CountDownLatch(1); + handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null); + assertTrue("Timed out to wait for stop fg", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + } finally { + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND default"); + if (amConstantsSettings != null) { + amConstantsSettings.close(); + } + if (killForceAppStandByAndCachedIdle != null) { + killForceAppStandByAndCachedIdle.close(); + } + am.removeOnUidImportanceListener(uidListener1); + am.removeOnUidImportanceListener(uidListener2); + } + } + /** * Make sure the screen state. */ diff --git a/services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java b/services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java index 7b4803724180..5caff3d01825 100644 --- a/services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java +++ b/services/tests/servicestests/src/com/android/server/graphics/fonts/UpdatableFontDirTest.java @@ -90,6 +90,10 @@ public final class UpdatableFontDirTest { String content = FileUtils.readTextFile(file, 100, ""); return Long.parseLong(content.split(",")[1]); } + + @Override + public void tryToCreateTypeface(File file) throws IOException { + } } // FakeFsverityUtil will successfully set up fake fs-verity if the signature is GOOD_SIGNATURE. @@ -717,6 +721,10 @@ public final class UpdatableFontDirTest { public long getRevision(File file) throws IOException { return 0; } + + @Override + public void tryToCreateTypeface(File file) throws IOException { + } }, fakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier); dir.loadFontFileMap(); @@ -751,6 +759,50 @@ public final class UpdatableFontDirTest { public long getRevision(File file) throws IOException { return 0; } + + @Override + public void tryToCreateTypeface(File file) throws IOException { + } + }, fakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier); + dir.loadFontFileMap(); + + try { + dir.update(Collections.singletonList(newFontUpdateRequest("foo.ttf,1,foo", + GOOD_SIGNATURE))); + fail("Expect SystemFontException"); + } catch (FontManagerService.SystemFontException e) { + assertThat(e.getErrorCode()) + .isEqualTo(FontManager.RESULT_ERROR_INVALID_FONT_FILE); + } + assertThat(dir.getPostScriptMap()).isEmpty(); + } + + @Test + public void installFontFile_failedToCreateTypeface() throws Exception { + FakeFsverityUtil fakeFsverityUtil = new FakeFsverityUtil(); + FakeFontFileParser parser = new FakeFontFileParser(); + UpdatableFontDir dir = new UpdatableFontDir( + mUpdatableFontFilesDir, + new UpdatableFontDir.FontFileParser() { + @Override + public String getPostScriptName(File file) throws IOException { + return parser.getPostScriptName(file); + } + + @Override + public String buildFontFileName(File file) throws IOException { + return parser.buildFontFileName(file); + } + + @Override + public long getRevision(File file) throws IOException { + return parser.getRevision(file); + } + + @Override + public void tryToCreateTypeface(File file) throws IOException { + throw new IOException(); + } }, fakeFsverityUtil, mConfigFile, mCurrentTimeSupplier, mConfigSupplier); dir.loadFontFileMap(); diff --git a/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java b/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java index 8b35af80e47f..2efebbf044c9 100644 --- a/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java +++ b/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java @@ -374,7 +374,7 @@ public class JobStoreTest { .setPersisted(true) .setRequiredNetwork(new NetworkRequest.Builder() .addCapability(NET_CAPABILITY_IMS) - .addUnwantedCapability(NET_CAPABILITY_OEM_PAID) + .addForbiddenCapability(NET_CAPABILITY_OEM_PAID) .build()) .build()); } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java index 9ac755f78a06..ab545266466e 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java @@ -207,6 +207,22 @@ public class NotificationListenersTest extends UiServiceTestCase { } @Test + public void testEnsureFilters_newServiceWithMetadata_namesNotNumbers() { + ServiceInfo si = new ServiceInfo(); + si.packageName = "new"; + si.name = "comp"; + si.metaData = new Bundle(); + si.metaData.putString(NotificationListenerService.META_DATA_DEFAULT_FILTER_TYPES, + "conversations,ALERTING"); + + mListeners.ensureFilters(si, 0); + + assertThat(mListeners.getNotificationListenerFilter( + Pair.create(si.getComponentName(), 0)).getTypes()) + .isEqualTo(FLAG_FILTER_TYPE_CONVERSATIONS | FLAG_FILTER_TYPE_ALERTING); + } + + @Test public void testEnsureFilters_newServiceWithMetadata_onlyOneListed() { ServiceInfo si = new ServiceInfo(); si.packageName = "new"; @@ -237,6 +253,22 @@ public class NotificationListenersTest extends UiServiceTestCase { } @Test + public void testEnsureFilters_newServiceWithMetadata_disabledTypes_mixedText() { + ServiceInfo si = new ServiceInfo(); + si.packageName = "new"; + si.name = "comp"; + si.metaData = new Bundle(); + si.metaData.putString(NotificationListenerService.META_DATA_DISABLED_FILTER_TYPES, + "1,alerting"); + + mListeners.ensureFilters(si, 0); + + assertThat(mListeners.getNotificationListenerFilter( + Pair.create(si.getComponentName(), 0)).getTypes()) + .isEqualTo(FLAG_FILTER_TYPE_SILENT | FLAG_FILTER_TYPE_ONGOING); + } + + @Test public void testEnsureFilters_newServiceWithMetadata_metaDataDisagrees() { ServiceInfo si = new ServiceInfo(); si.packageName = "new"; diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java index 1b26352abe35..3a51ff2fb5fa 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java @@ -375,19 +375,27 @@ public class PreferencesHelperTest extends UiServiceTestCase { when(mPm.getPackageUidAsUser(eq(packageName), anyInt())).thenReturn(uid); } + private static NotificationChannel createNotificationChannel(String id, String name, + int importance) { + NotificationChannel channel = new NotificationChannel(id, name, importance); + channel.setSound(SOUND_URI, Notification.AUDIO_ATTRIBUTES_DEFAULT); + return channel; + } + @Test public void testWriteXml_onlyBackupsTargetUser() throws Exception { // Setup package notifications. String package0 = "test.package.user0"; int uid0 = 1001; setUpPackageWithUid(package0, uid0); - NotificationChannel channel0 = new NotificationChannel("id0", "name0", IMPORTANCE_HIGH); + NotificationChannel channel0 = createNotificationChannel("id0", "name0", IMPORTANCE_HIGH); assertTrue(mHelper.createNotificationChannel(package0, uid0, channel0, true, false)); String package10 = "test.package.user10"; int uid10 = 1001001; setUpPackageWithUid(package10, uid10); - NotificationChannel channel10 = new NotificationChannel("id10", "name10", IMPORTANCE_HIGH); + NotificationChannel channel10 = createNotificationChannel("id10", "name10", + IMPORTANCE_HIGH); assertTrue(mHelper.createNotificationChannel(package10, uid10, channel10, true, false)); ByteArrayOutputStream baos = writeXmlAndPurge(package10, uid10, true, 10); @@ -412,7 +420,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { String package0 = "test.package.user0"; int uid0 = 1001; setUpPackageWithUid(package0, uid0); - NotificationChannel channel0 = new NotificationChannel("id0", "name0", IMPORTANCE_HIGH); + NotificationChannel channel0 = createNotificationChannel("id0", "name0", IMPORTANCE_HIGH); assertTrue(mHelper.createNotificationChannel(package0, uid0, channel0, true, false)); ByteArrayOutputStream baos = writeXmlAndPurge(package0, uid0, true, 0); @@ -505,9 +513,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannelGroup ncg = new NotificationChannelGroup("1", "bye"); NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "hello"); NotificationChannel channel1 = - new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); - NotificationChannel channel2 = - new NotificationChannel("id2", "name2", IMPORTANCE_LOW); + createNotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); + NotificationChannel channel2 = createNotificationChannel("id2", "name2", IMPORTANCE_LOW); channel2.setDescription("descriptions for all"); channel2.setSound(SOUND_URI, mAudioAttributes); channel2.enableLights(true); @@ -516,7 +523,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { channel2.enableVibration(false); channel2.setGroup(ncg.getId()); channel2.setLightColor(Color.BLUE); - NotificationChannel channel3 = new NotificationChannel("id3", "NAM3", IMPORTANCE_HIGH); + NotificationChannel channel3 = createNotificationChannel("id3", "NAM3", IMPORTANCE_HIGH); channel3.enableVibration(true); mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg, true); @@ -623,7 +630,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { } @Test - public void testRestoreXml_withNonExistentCanonicalizedSoundUri() throws Exception { + public void testRestoreXml_withNonExistentCanonicalizedSoundUri_ignoreChannel() + throws Exception { Thread.sleep(3000); doReturn(null) .when(mTestIContentProvider).canonicalize(any(), eq(CANONICAL_SOUND_URI)); @@ -641,7 +649,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannel actualChannel = mHelper.getNotificationChannel( PKG_N_MR1, UID_N_MR1, channel.getId(), false); - assertEquals(Settings.System.DEFAULT_NOTIFICATION_URI, actualChannel.getSound()); + assertNull(actualChannel); } @@ -650,7 +658,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { * handle its restore properly. */ @Test - public void testRestoreXml_withUncanonicalizedNonLocalSoundUri() throws Exception { + public void testRestoreXml_withUncanonicalizedNonLocalSoundUri_ignoreChannel() + throws Exception { // Not a local uncanonicalized uri, simulating that it fails to exist locally doReturn(null) .when(mTestIContentProvider).canonicalize(any(), eq(SOUND_URI)); @@ -669,7 +678,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { backupWithUncanonicalizedSoundUri.getBytes(), true, UserHandle.USER_SYSTEM); NotificationChannel actualChannel = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, id, false); - assertEquals(Settings.System.DEFAULT_NOTIFICATION_URI, actualChannel.getSound()); + assertNull(actualChannel); } @Test @@ -693,11 +702,11 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannelGroup ncg = new NotificationChannelGroup("1", "bye"); NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "hello"); NotificationChannel channel1 = - new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); + createNotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); NotificationChannel channel2 = - new NotificationChannel("id2", "name2", IMPORTANCE_HIGH); + createNotificationChannel("id2", "name2", IMPORTANCE_HIGH); NotificationChannel channel3 = - new NotificationChannel("id3", "name3", IMPORTANCE_LOW); + createNotificationChannel("id3", "name3", IMPORTANCE_LOW); channel3.setGroup(ncg.getId()); mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg, true); @@ -3048,7 +3057,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { @Test public void testChannelXml_backupDefaultApp() throws Exception { NotificationChannel channel1 = - new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); + createNotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); mHelper.createNotificationChannel(PKG_O, UID_O, channel1, true, false); @@ -3329,7 +3338,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { mAppOpsManager, mStatsEventBuilderFactory); mHelper.createNotificationChannel( - PKG_P, UID_P, new NotificationChannel("id", "id", 2), true, false); + PKG_P, UID_P, createNotificationChannel("id", "id", 2), true, false); mHelper.deleteNotificationChannel(PKG_P, UID_P, "id"); NotificationChannel nc1 = mHelper.getNotificationChannel(PKG_P, UID_P, "id", true); assertTrue(DateUtils.isToday(nc1.getDeletedTimeMs())); diff --git a/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java index 2c3f52e05add..4509ff48206e 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java @@ -268,7 +268,7 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { // By default, the ime container is attached to DC as defined in DAPolicy. assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mDisplay); - assertThat(mDisplay.findAreaForToken(imeToken)).isEqualTo(imeContainer); + assertThat(mDisplay.findAreaForTokenInLayer(imeToken)).isEqualTo(imeContainer); final WindowState firstActivityWin = createWindow(null /* parent */, TYPE_APPLICATION_STARTING, mFirstActivity, @@ -290,9 +290,9 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mFirstRoot); assertThat(imeContainer.getParent().asDisplayArea().mFeatureId) .isEqualTo(FEATURE_IME_PLACEHOLDER); - assertThat(mDisplay.findAreaForToken(imeToken)).isNull(); - assertThat(mFirstRoot.findAreaForToken(imeToken)).isEqualTo(imeContainer); - assertThat(mSecondRoot.findAreaForToken(imeToken)).isNull(); + assertThat(mDisplay.findAreaForTokenInLayer(imeToken)).isNull(); + assertThat(mFirstRoot.findAreaForTokenInLayer(imeToken)).isEqualTo(imeContainer); + assertThat(mSecondRoot.findAreaForTokenInLayer(imeToken)).isNull(); // secondActivityWin should be the target doReturn(false).when(firstActivityWin).canBeImeTarget(); @@ -305,9 +305,9 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mSecondRoot); assertThat(imeContainer.getParent().asDisplayArea().mFeatureId) .isEqualTo(FEATURE_IME_PLACEHOLDER); - assertThat(mDisplay.findAreaForToken(imeToken)).isNull(); - assertThat(mFirstRoot.findAreaForToken(imeToken)).isNull(); - assertThat(mSecondRoot.findAreaForToken(imeToken)).isEqualTo(imeContainer); + assertThat(mDisplay.findAreaForTokenInLayer(imeToken)).isNull(); + assertThat(mFirstRoot.findAreaForTokenInLayer(imeToken)).isNull(); + assertThat(mSecondRoot.findAreaForTokenInLayer(imeToken)).isEqualTo(imeContainer); } @Test diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java index 5d0fe170885a..e5eba57f223d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java @@ -19,6 +19,7 @@ package com.android.server.wm; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; +import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG; import static com.google.common.truth.Truth.assertThat; @@ -38,6 +39,7 @@ import androidx.test.filters.SmallTest; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mockito; /** * Build/Install/Run: @@ -185,6 +187,41 @@ public class WindowContextListenerControllerTests extends WindowTestsBase { assertThat(mController.getContainer(mClientToken)).isEqualTo(da); } + @Test + public void testImeSwitchDialogWindowTokenRemovedOnDualDisplayContent_ListenToImeContainer() { + // Let the Display to be created with the DualDisplay policy. + final DisplayAreaPolicy.Provider policyProvider = + new DualDisplayAreaGroupPolicyTest.DualDisplayTestPolicyProvider(); + Mockito.doReturn(policyProvider).when(mWm).getDisplayAreaPolicyProvider(); + // Create a DisplayContent with dual RootDisplayArea + DualDisplayAreaGroupPolicyTest.DualDisplayContent dualDisplayContent = + new DualDisplayAreaGroupPolicyTest.DualDisplayContent + .Builder(mAtm, 1000, 1000).build(); + final DisplayArea.Tokens imeContainer = dualDisplayContent.getImeContainer(); + // Put the ImeContainer to the first sub-RootDisplayArea + dualDisplayContent.mFirstRoot.placeImeContainer(imeContainer); + + assertThat(imeContainer.getRootDisplayArea()).isEqualTo(dualDisplayContent.mFirstRoot); + + // Simulate the behavior to show IME switch dialog: its context switches to register to + // context created WindowToken. + WindowToken windowContextCreatedToken = new WindowToken.Builder(mWm, mClientToken, + TYPE_INPUT_METHOD_DIALOG) + .setDisplayContent(dualDisplayContent) + .setFromClientToken(true) + .build(); + mController.registerWindowContainerListener(mClientToken, windowContextCreatedToken, + TEST_UID, TYPE_INPUT_METHOD_DIALOG, null /* options */); + + assertThat(mController.getContainer(mClientToken)).isEqualTo(windowContextCreatedToken); + + // Remove WindowToken + windowContextCreatedToken.removeImmediately(); + + // Now context should listen to ImeContainer. + assertThat(mController.getContainer(mClientToken)).isEqualTo(imeContainer); + } + private class TestWindowTokenClient extends IWindowToken.Stub { private Configuration mConfiguration; private int mDisplayId; diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 5716a1d79040..84ea42fa7d73 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -4279,6 +4279,26 @@ public class CarrierConfigManager { public static final String KEY_RCS_FEATURE_TAG_ALLOWED_STRING_ARRAY = KEY_PREFIX + "rcs_feature_tag_allowed_string_array"; + /** + * Flag indicating whether or not carrier forbids device send the RCS request when the + * device receive the network response with the SIP code 489 BAD EVENT. + * <p> + * The default value for this key is {@code false}. + * @hide + */ + public static final String KEY_RCS_REQUEST_FORBIDDEN_BY_SIP_489_BOOL = + KEY_PREFIX + "rcs_request_forbidden_by_sip_489_bool"; + + /** + * Indicates the interval that SUBSCRIBE requests from applications will be retried at when + * the carrier network has responded to a previous request with a forbidden error. + * <p> + * The default value for this key is 20 minutes. + * @hide + */ + public static final String KEY_RCS_REQUEST_RETRY_INTERVAL_MILLIS_LONG = + KEY_PREFIX + "rcs_request_retry_interval_millis_long"; + private Ims() {} private static PersistableBundle getDefaults() { @@ -4292,6 +4312,8 @@ public class CarrierConfigManager { defaults.putBoolean(KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL, false); defaults.putBoolean(KEY_ENABLE_PRESENCE_GROUP_SUBSCRIBE_BOOL, true); defaults.putInt(KEY_NON_RCS_CAPABILITIES_CACHE_EXPIRATION_SEC_INT, 30 * 24 * 60 * 60); + defaults.putBoolean(KEY_RCS_REQUEST_FORBIDDEN_BY_SIP_489_BOOL, false); + defaults.putLong(KEY_RCS_REQUEST_RETRY_INTERVAL_MILLIS_LONG, 20 * 60 * 1000); defaults.putStringArray(KEY_RCS_FEATURE_TAG_ALLOWED_STRING_ARRAY, new String[]{ "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.msg\"", "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.largemsg\"", diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 00ddec298dcf..4cd59a24b182 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -2428,6 +2428,12 @@ interface ITelephony { String getLastUcePidfXmlShell(int subId); /** + * Remove UCE requests cannot be sent to the network status. + * Note: This is designed for a SHELL command only. + */ + boolean removeUceRequestDisallowedStatus(int subId); + + /** * Set a SignalStrengthUpdateRequest to receive notification when Signal Strength breach the * specified thresholds. */ diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt index 1f880f61d65e..4f4f06dab888 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt @@ -16,12 +16,14 @@ package com.android.server.wm.flicker.close +import android.platform.test.annotations.Postsubmit import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.dsl.FlickerBuilder import org.junit.FixMethodOrder +import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.MethodSorters import org.junit.runners.Parameterized @@ -44,6 +46,30 @@ class CloseAppHomeButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio } } + @Postsubmit + @Test + override fun statusBarLayerIsAlwaysVisible() { + super.statusBarLayerIsAlwaysVisible() + } + + @Postsubmit + @Test + override fun statusBarLayerRotatesScales() { + super.statusBarLayerRotatesScales() + } + + @Postsubmit + @Test + override fun launcherLayerReplacesApp() { + super.launcherLayerReplacesApp() + } + + @Postsubmit + @Test + override fun noUncoveredRegions() { + super.noUncoveredRegions() + } + companion object { @Parameterized.Parameters(name = "{0}") @JvmStatic diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt index 96c7c0a4ae20..e088062888fb 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.close import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import androidx.test.filters.FlakyTest @@ -82,7 +83,7 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) testSpec.navBarLayerIsAlwaysVisible(rotatesScreen = testSpec.isRotated) } - @FlakyTest + @Postsubmit @Test open fun statusBarLayerIsAlwaysVisible() { testSpec.statusBarLayerIsAlwaysVisible(rotatesScreen = testSpec.isRotated) @@ -94,7 +95,7 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) testSpec.navBarLayerRotatesAndScales(testSpec.config.startRotation, Surface.ROTATION_0) } - @FlakyTest + @Postsubmit @Test open fun statusBarLayerRotatesScales() { testSpec.statusBarLayerRotatesScales(testSpec.config.startRotation, Surface.ROTATION_0) @@ -122,13 +123,13 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) testSpec.noUncoveredRegions(testSpec.config.startRotation, Surface.ROTATION_0) } - @Presubmit + @FlakyTest(bugId = 185400889) @Test open fun launcherReplacesAppWindowAsTopWindow() { testSpec.launcherReplacesAppWindowAsTopWindow(testApp) } - @Presubmit + @Postsubmit @Test open fun launcherWindowBecomesVisible() { testSpec.launcherWindowBecomesVisible() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt index 3bd19ea74f1d..0bae8f617038 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt @@ -51,7 +51,6 @@ import org.junit.runners.Parameterized @RunWith(Parameterized::class) @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) -@FlakyTest(bugId = 185400889) class CloseImeAutoOpenWindowToAppTest(private val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() private val testApp = ImeAppAutoFocusHelper(instrumentation, testSpec.config.startRotation) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt index 3cb58b9b25d6..819d4dd09be3 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants @@ -104,7 +105,7 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete @Test fun imeAppWindowBecomesInvisible() = testSpec.imeAppWindowBecomesInvisible(testApp) - @FlakyTest + @Postsubmit @Test fun noUncoveredRegions() = testSpec.noUncoveredRegions(testSpec.config.startRotation, Surface.ROTATION_0) @@ -113,7 +114,7 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete @Test fun imeLayerBecomesInvisible() = testSpec.imeLayerBecomesInvisible() - @FlakyTest + @Postsubmit @Test fun imeAppLayerBecomesInvisible() = testSpec.imeAppLayerBecomesInvisible(testApp) @@ -123,7 +124,7 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete testSpec.navBarLayerRotatesAndScales(testSpec.config.startRotation, Surface.ROTATION_0) } - @FlakyTest + @Postsubmit @Test fun statusBarLayerRotatesScales() { testSpec.statusBarLayerRotatesScales(testSpec.config.startRotation, Surface.ROTATION_0) @@ -137,7 +138,7 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete @Test fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsAlwaysVisible() - @FlakyTest + @Postsubmit @Test fun visibleLayersShownMoreThanOneConsecutiveEntry() { testSpec.assertLayers { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt index 22d341866088..5f841b892477 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants @@ -98,7 +99,7 @@ class CloseImeWindowToHomeTest(private val testSpec: FlickerTestParameter) { } } - @FlakyTest + @Postsubmit @Test fun imeWindowBecomesInvisible() = testSpec.imeWindowBecomesInvisible() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt index bb9cd6fef4a2..85163b3cebf6 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt @@ -17,10 +17,10 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants -import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -138,7 +138,7 @@ class OpenImeWindowTest(private val testSpec: FlickerTestParameter) { } } - @FlakyTest + @Postsubmit @Test fun visibleWindowsShownMoreThanOneConsecutiveEntry() { testSpec.assertWm { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt index 55bbe3aa2b5c..a0b0b7586c01 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants @@ -97,7 +98,7 @@ class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @FlakyTest + @Postsubmit @Test fun visibleWindowsShownMoreThanOneConsecutiveEntry() { testSpec.assertWm { @@ -147,13 +148,13 @@ class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { testSpec.navBarLayerRotatesAndScales(Surface.ROTATION_0, testSpec.config.endRotation) } - @FlakyTest + @Postsubmit @Test fun statusBarLayerRotatesScales() { testSpec.statusBarLayerRotatesScales(Surface.ROTATION_0, testSpec.config.endRotation) } - @FlakyTest + @Postsubmit @Test fun visibleLayersShownMoreThanOneConsecutiveEntry() { testSpec.assertLayers { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt index d0e95566f1b5..754d9e977ef3 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt @@ -17,7 +17,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation -import android.platform.test.annotations.Presubmit +import android.platform.test.annotations.Postsubmit import android.view.WindowManagerPolicyConstants import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice @@ -52,7 +52,6 @@ import org.junit.runners.Parameterized @RunWith(Parameterized::class) @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) -@FlakyTest class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() private val testApp = SimpleAppHelper(instrumentation) @@ -97,31 +96,31 @@ class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestParame } } - @Presubmit + @FlakyTest @Test fun imeAppWindowIsAlwaysVisible() = testSpec.imeAppWindowIsAlwaysVisible(imeTestApp) - @Presubmit + @FlakyTest @Test fun imeLayerBecomesVisible() = testSpec.imeLayerBecomesVisible() - @Presubmit + @FlakyTest @Test fun imeLayerBecomesInvisible() = testSpec.imeLayerBecomesInvisible() - @Presubmit + @Postsubmit @Test fun navBarWindowIsAlwaysVisible() = testSpec.navBarWindowIsAlwaysVisible() - @Presubmit + @FlakyTest @Test fun navBarLayerIsAlwaysVisible() = testSpec.navBarLayerIsAlwaysVisible() - @Presubmit + @Postsubmit @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @Presubmit + @FlakyTest @Test fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsAlwaysVisible() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt index ad7ee3030ea8..e0179c1fb651 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt @@ -16,7 +16,7 @@ package com.android.server.wm.flicker.launch -import android.platform.test.annotations.Postsubmit +import android.platform.test.annotations.Presubmit import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory @@ -63,12 +63,12 @@ class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) : OpenAppTransitio } } - @Postsubmit + @Presubmit @Test override fun appWindowReplacesLauncherAsTopWindow() = super.appWindowReplacesLauncherAsTopWindow() - @Postsubmit + @Presubmit @Test override fun launcherWindowBecomesInvisible() { testSpec.launcherWindowBecomesInvisible() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt index 5a8162efcb07..9a9d6ff0b49a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt @@ -16,6 +16,8 @@ package com.android.server.wm.flicker.rotation +import android.platform.test.annotations.Postsubmit +import android.platform.test.annotations.Presubmit import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory @@ -57,7 +59,7 @@ class ChangeAppRotationTest( super.focusDoesNotChange() } - @FlakyTest + @Postsubmit @Test override fun noUncoveredRegions() { super.noUncoveredRegions() @@ -75,6 +77,36 @@ class ChangeAppRotationTest( } } + @Postsubmit + @Test + override fun appLayerRotates_EndingPos() { + super.appLayerRotates_EndingPos() + } + + @Postsubmit + @Test + override fun appLayerRotates_StartingPos() { + super.appLayerRotates_StartingPos() + } + + @Presubmit + @Test + override fun navBarWindowIsAlwaysVisible() { + super.navBarWindowIsAlwaysVisible() + } + + @Postsubmit + @Test + override fun statusBarLayerIsAlwaysVisible() { + super.statusBarLayerIsAlwaysVisible() + } + + @Postsubmit + @Test + override fun statusBarWindowIsAlwaysVisible() { + super.statusBarWindowIsAlwaysVisible() + } + companion object { private const val SCREENSHOT_LAYER = "RotationLayer" diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt index a353c5962582..4770c3dd245a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt @@ -16,6 +16,7 @@ package com.android.server.wm.flicker.rotation +import android.platform.test.annotations.Postsubmit import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory @@ -92,6 +93,18 @@ class SeamlessAppRotationTest( } } + @Postsubmit + @Test + override fun navBarWindowIsAlwaysVisible() { + super.navBarWindowIsAlwaysVisible() + } + + @Postsubmit + @Test + override fun visibleLayersShownMoreThanOneConsecutiveEntry() { + super.visibleLayersShownMoreThanOneConsecutiveEntry() + } + companion object { private val testFactory = FlickerTestParameterFactory.getInstance() diff --git a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java index 9b7458397cf5..1c8a1bfeb417 100644 --- a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java +++ b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java @@ -391,9 +391,11 @@ public class NetworkCapabilitiesTest { @Test public void testOemPaid() { NetworkCapabilities nc = new NetworkCapabilities(); - // By default OEM_PAID is neither in the unwanted or required lists and the network is not + // By default OEM_PAID is neither in the required or forbidden lists and the network is not // restricted. - assertFalse(nc.hasUnwantedCapability(NET_CAPABILITY_OEM_PAID)); + if (isAtLeastS()) { + assertFalse(nc.hasForbiddenCapability(NET_CAPABILITY_OEM_PAID)); + } assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PAID)); nc.maybeMarkCapabilitiesRestricted(); assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); @@ -418,9 +420,9 @@ public class NetworkCapabilitiesTest { @Test @IgnoreUpTo(Build.VERSION_CODES.R) public void testOemPrivate() { NetworkCapabilities nc = new NetworkCapabilities(); - // By default OEM_PRIVATE is neither in the unwanted or required lists and the network is + // By default OEM_PRIVATE is neither in the required or forbidden lists and the network is // not restricted. - assertFalse(nc.hasUnwantedCapability(NET_CAPABILITY_OEM_PRIVATE)); + assertFalse(nc.hasForbiddenCapability(NET_CAPABILITY_OEM_PRIVATE)); assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PRIVATE)); nc.maybeMarkCapabilitiesRestricted(); assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); @@ -442,8 +444,8 @@ public class NetworkCapabilitiesTest { assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities())); } - @Test - public void testUnwantedCapabilities() { + @Test @IgnoreUpTo(Build.VERSION_CODES.R) + public void testForbiddenCapabilities() { NetworkCapabilities network = new NetworkCapabilities(); NetworkCapabilities request = new NetworkCapabilities(); @@ -451,19 +453,19 @@ public class NetworkCapabilitiesTest { request.satisfiedByNetworkCapabilities(network)); // Requesting absence of capabilities that network doesn't have. Request should satisfy. - request.addUnwantedCapability(NET_CAPABILITY_WIFI_P2P); - request.addUnwantedCapability(NET_CAPABILITY_NOT_METERED); + request.addForbiddenCapability(NET_CAPABILITY_WIFI_P2P); + request.addForbiddenCapability(NET_CAPABILITY_NOT_METERED); assertTrue(request.satisfiedByNetworkCapabilities(network)); - assertArrayEquals(new int[] {NET_CAPABILITY_WIFI_P2P, + assertArrayEquals(new int[]{NET_CAPABILITY_WIFI_P2P, NET_CAPABILITY_NOT_METERED}, - request.getUnwantedCapabilities()); + request.getForbiddenCapabilities()); // This is a default capability, just want to make sure its there because we use it below. assertTrue(network.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); - // Verify that adding unwanted capability will effectively remove it from capability list. - request.addUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED); - assertTrue(request.hasUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED)); + // Verify that adding forbidden capability will effectively remove it from capability list. + request.addForbiddenCapability(NET_CAPABILITY_NOT_RESTRICTED); + assertTrue(request.hasForbiddenCapability(NET_CAPABILITY_NOT_RESTRICTED)); assertFalse(request.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); // Now this request won't be satisfied because network contains NOT_RESTRICTED. @@ -471,10 +473,10 @@ public class NetworkCapabilitiesTest { network.removeCapability(NET_CAPABILITY_NOT_RESTRICTED); assertTrue(request.satisfiedByNetworkCapabilities(network)); - // Verify that adding capability will effectively remove it from unwanted list + // Verify that adding capability will effectively remove it from forbidden list request.addCapability(NET_CAPABILITY_NOT_RESTRICTED); assertTrue(request.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); - assertFalse(request.hasUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED)); + assertFalse(request.hasForbiddenCapability(NET_CAPABILITY_NOT_RESTRICTED)); assertFalse(request.satisfiedByNetworkCapabilities(network)); network.addCapability(NET_CAPABILITY_NOT_RESTRICTED); @@ -513,24 +515,20 @@ public class NetworkCapabilitiesTest { assertTrue(nc1.equalsNetCapabilities(nc2)); assertEquals(nc1, nc2); - nc1.addUnwantedCapability(NET_CAPABILITY_INTERNET); - assertFalse(nc1.equalsNetCapabilities(nc2)); - nc2.addUnwantedCapability(NET_CAPABILITY_INTERNET); - assertTrue(nc1.equalsNetCapabilities(nc2)); if (isAtLeastS()) { - // Remove a required capability doesn't affect unwanted capabilities. - // This is a behaviour change from S. - nc1.removeCapability(NET_CAPABILITY_INTERNET); - assertTrue(nc1.equalsNetCapabilities(nc2)); - - nc1.removeUnwantedCapability(NET_CAPABILITY_INTERNET); + nc1.addForbiddenCapability(NET_CAPABILITY_INTERNET); assertFalse(nc1.equalsNetCapabilities(nc2)); - nc2.removeUnwantedCapability(NET_CAPABILITY_INTERNET); + nc2.addForbiddenCapability(NET_CAPABILITY_INTERNET); assertTrue(nc1.equalsNetCapabilities(nc2)); - } else { + + // Remove a required capability doesn't affect forbidden capabilities. + // This is a behaviour change from R to S. nc1.removeCapability(NET_CAPABILITY_INTERNET); + assertTrue(nc1.equalsNetCapabilities(nc2)); + + nc1.removeForbiddenCapability(NET_CAPABILITY_INTERNET); assertFalse(nc1.equalsNetCapabilities(nc2)); - nc2.removeCapability(NET_CAPABILITY_INTERNET); + nc2.removeForbiddenCapability(NET_CAPABILITY_INTERNET); assertTrue(nc1.equalsNetCapabilities(nc2)); } } @@ -582,31 +580,25 @@ public class NetworkCapabilitiesTest { NetworkCapabilities nc1 = new NetworkCapabilities(); NetworkCapabilities nc2 = new NetworkCapabilities(); - nc1.addUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL); + if (isAtLeastS()) { + nc1.addForbiddenCapability(NET_CAPABILITY_CAPTIVE_PORTAL); + } nc1.addCapability(NET_CAPABILITY_NOT_ROAMING); assertNotEquals(nc1, nc2); nc2.combineCapabilities(nc1); assertEquals(nc1, nc2); assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); - assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); - - // This will effectively move NOT_ROAMING capability from required to unwanted for nc1. - nc1.addUnwantedCapability(NET_CAPABILITY_NOT_ROAMING); + if (isAtLeastS()) { + assertTrue(nc2.hasForbiddenCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); + } if (isAtLeastS()) { - // From S, it is not allowed to have the same capability in both wanted and - // unwanted list. + // This will effectively move NOT_ROAMING capability from required to forbidden for nc1. + nc1.addForbiddenCapability(NET_CAPABILITY_NOT_ROAMING); + // It is not allowed to have the same capability in both wanted and forbidden list. assertThrows(IllegalArgumentException.class, () -> nc2.combineCapabilities(nc1)); - // Remove unwanted capability to continue other tests. - nc1.removeUnwantedCapability(NET_CAPABILITY_NOT_ROAMING); - } else { - nc2.combineCapabilities(nc1); - // We will get this capability in both requested and unwanted lists thus this request - // will never be satisfied. - assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); - assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_NOT_ROAMING)); - // For R or below, remove unwanted capability via removeCapability. - nc1.removeCapability(NET_CAPABILITY_NOT_ROAMING); + // Remove forbidden capability to continue other tests. + nc1.removeForbiddenCapability(NET_CAPABILITY_NOT_ROAMING); } nc1.setSSID(TEST_SSID); @@ -684,14 +676,11 @@ public class NetworkCapabilitiesTest { public void testSetCapabilities() { final int[] REQUIRED_CAPABILITIES = new int[] { NET_CAPABILITY_INTERNET, NET_CAPABILITY_NOT_VPN }; - final int[] UNWANTED_CAPABILITIES = new int[] { - NET_CAPABILITY_NOT_RESTRICTED, NET_CAPABILITY_NOT_METERED - }; NetworkCapabilities nc1 = new NetworkCapabilities(); NetworkCapabilities nc2 = new NetworkCapabilities(); - nc1.setCapabilities(REQUIRED_CAPABILITIES, UNWANTED_CAPABILITIES); + nc1.setCapabilities(REQUIRED_CAPABILITIES); assertArrayEquals(REQUIRED_CAPABILITIES, nc1.getCapabilities()); // Verify that setting and adding capabilities leads to the same object state. @@ -699,10 +688,25 @@ public class NetworkCapabilitiesTest { for (int cap : REQUIRED_CAPABILITIES) { nc2.addCapability(cap); } - for (int cap : UNWANTED_CAPABILITIES) { - nc2.addUnwantedCapability(cap); - } assertEquals(nc1, nc2); + + if (isAtLeastS()) { + final int[] forbiddenCapabilities = new int[]{ + NET_CAPABILITY_NOT_METERED, NET_CAPABILITY_NOT_RESTRICTED }; + + nc1.setCapabilities(REQUIRED_CAPABILITIES, forbiddenCapabilities); + assertArrayEquals(REQUIRED_CAPABILITIES, nc1.getCapabilities()); + assertArrayEquals(forbiddenCapabilities, nc1.getForbiddenCapabilities()); + + nc2.clearAll(); + for (int cap : REQUIRED_CAPABILITIES) { + nc2.addCapability(cap); + } + for (int cap : forbiddenCapabilities) { + nc2.addForbiddenCapability(cap); + } + assertEquals(nc1, nc2); + } } @Test @@ -770,23 +774,32 @@ public class NetworkCapabilitiesTest { NetworkCapabilities nc1 = new NetworkCapabilities(); NetworkCapabilities nc2 = new NetworkCapabilities(); - nc1.addUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL); + if (isAtLeastS()) { + nc1.addForbiddenCapability(NET_CAPABILITY_CAPTIVE_PORTAL); + } nc1.addCapability(NET_CAPABILITY_NOT_ROAMING); assertNotEquals(nc1, nc2); nc2.set(nc1); assertEquals(nc1, nc2); assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); - assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); + if (isAtLeastS()) { + assertTrue(nc2.hasForbiddenCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); + } - // This will effectively move NOT_ROAMING capability from required to unwanted for nc1. - nc1.addUnwantedCapability(NET_CAPABILITY_NOT_ROAMING); + if (isAtLeastS()) { + // This will effectively move NOT_ROAMING capability from required to forbidden for nc1. + nc1.addForbiddenCapability(NET_CAPABILITY_NOT_ROAMING); + } nc1.setSSID(TEST_SSID); nc2.set(nc1); assertEquals(nc1, nc2); - // Contrary to combineCapabilities, set() will have removed the NOT_ROAMING capability - // from nc2. - assertFalse(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); - assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_NOT_ROAMING)); + if (isAtLeastS()) { + // Contrary to combineCapabilities, set() will have removed the NOT_ROAMING capability + // from nc2. + assertFalse(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); + assertTrue(nc2.hasForbiddenCapability(NET_CAPABILITY_NOT_ROAMING)); + } + if (isAtLeastR()) { assertTrue(TEST_SSID.equals(nc2.getSsid())); } |