diff options
374 files changed, 5355 insertions, 2177 deletions
diff --git a/api/current.txt b/api/current.txt index 6253dfd4058c..d2f63fa81dcf 100644 --- a/api/current.txt +++ b/api/current.txt @@ -1223,8 +1223,8 @@ package android { field public static final int shadowRadius = 16843108; // 0x1010164 field public static final int shape = 16843162; // 0x101019a field public static final int shareInterpolator = 16843195; // 0x10101bb - field public static final int sharedUserId = 16842763; // 0x101000b - field public static final int sharedUserLabel = 16843361; // 0x1010261 + field @Deprecated public static final int sharedUserId = 16842763; // 0x101000b + field @Deprecated public static final int sharedUserLabel = 16843361; // 0x1010261 field public static final int shell = 16844180; // 0x1010594 field public static final int shortcutDisabledMessage = 16844075; // 0x101052b field public static final int shortcutId = 16844072; // 0x1010528 @@ -8988,8 +8988,8 @@ package android.bluetooth.le { method public android.bluetooth.le.ScanFilter.Builder setManufacturerData(int, byte[], byte[]); method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[]); method public android.bluetooth.le.ScanFilter.Builder setServiceData(android.os.ParcelUuid, byte[], byte[]); - method public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(android.os.ParcelUuid); - method public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(android.os.ParcelUuid, android.os.ParcelUuid); + method @NonNull public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(@Nullable android.os.ParcelUuid); + method @NonNull public android.bluetooth.le.ScanFilter.Builder setServiceSolicitationUuid(@Nullable android.os.ParcelUuid, @Nullable android.os.ParcelUuid); method public android.bluetooth.le.ScanFilter.Builder setServiceUuid(android.os.ParcelUuid); method public android.bluetooth.le.ScanFilter.Builder setServiceUuid(android.os.ParcelUuid, android.os.ParcelUuid); } @@ -53407,7 +53407,7 @@ package android.view.textclassifier { method @Nullable public String getCallingPackageName(); method @NonNull public java.util.List<android.view.textclassifier.ConversationActions.Message> getConversation(); method @NonNull public android.os.Bundle getExtras(); - method @Nullable public java.util.List<java.lang.String> getHints(); + method @NonNull public java.util.List<java.lang.String> getHints(); method @IntRange(from=0xffffffff) public int getMaxSuggestions(); method @NonNull public android.view.textclassifier.TextClassifier.EntityConfig getTypeConfig(); method public void writeToParcel(android.os.Parcel, int); @@ -53625,6 +53625,7 @@ package android.view.textclassifier { method public int getEventIndex(); method public int getEventType(); method @NonNull public android.os.Bundle getExtras(); + method @Nullable public android.icu.util.ULocale getLocale(); method @Nullable public String getModelName(); method @Nullable public String getResultId(); method @NonNull public float[] getScores(); @@ -53662,6 +53663,7 @@ package android.view.textclassifier { method @NonNull public T setEventContext(@Nullable android.view.textclassifier.TextClassificationContext); method @NonNull public T setEventIndex(int); method @NonNull public T setExtras(@NonNull android.os.Bundle); + method @NonNull public T setLocale(@Nullable android.icu.util.ULocale); method @NonNull public T setModelName(@Nullable String); method @NonNull public T setResultId(@Nullable String); method @NonNull public T setScores(@NonNull float...); @@ -53677,14 +53679,12 @@ package android.view.textclassifier { } public static final class TextClassifierEvent.LanguageDetectionEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable { - method @Nullable public android.icu.util.ULocale getLocale(); field @NonNull public static final android.os.Parcelable.Creator<android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent> CREATOR; } public static final class TextClassifierEvent.LanguageDetectionEvent.Builder extends android.view.textclassifier.TextClassifierEvent.Builder<android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent.Builder> { ctor public TextClassifierEvent.LanguageDetectionEvent.Builder(int); method @NonNull public android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent build(); - method @NonNull public android.view.textclassifier.TextClassifierEvent.LanguageDetectionEvent.Builder setLocale(@Nullable android.icu.util.ULocale); } public static final class TextClassifierEvent.TextLinkifyEvent extends android.view.textclassifier.TextClassifierEvent implements android.os.Parcelable { diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index 12474ce83d11..68a88162a1bb 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -156,7 +156,7 @@ message Atom { KeyValuePairsAtom key_value_pairs_atom = 83 [(allow_from_any_uid) = true]; VibratorStateChanged vibrator_state_changed = 84; DeferredJobStatsReported deferred_job_stats_reported = 85; - ThermalThrottlingStateChanged thermal_throttling = 86; + ThermalThrottlingStateChanged thermal_throttling = 86 [deprecated=true]; BiometricAcquired biometric_acquired = 87; BiometricAuthenticated biometric_authenticated = 88; BiometricErrorOccurred biometric_error_occurred = 89; @@ -270,7 +270,7 @@ message Atom { HiddenApiUsed hidden_api_used = 178 [(allow_from_any_uid) = true]; StyleUIChanged style_ui_changed = 179; PrivacyIndicatorsInteracted privacy_indicators_interacted = - 180 [(log_from_module) = "permissioncontroller"]; + 180 [(log_from_module) = "permissioncontroller"]; AppInstallOnExternalStorageReported app_install_on_external_storage_reported = 181; NetworkStackReported network_stack_reported = 182 [(log_from_module) = "network_stack"]; AppMovedStorageReported app_moved_storage_reported = 183; @@ -280,6 +280,7 @@ message Atom { BluetoothClassOfDeviceReported bluetooth_class_of_device_reported = 187; IntelligenceEventReported intelligence_event_reported = 188 [(log_from_module) = "intelligence"]; + ThermalThrottlingSeverityStateChanged thermal_throttling_severity_state_changed = 189; } // Pulled events will start at field 10000. @@ -409,6 +410,7 @@ message KeyValuePairsAtom { */ /** + * This atom is deprecated starting in Q. Please use ThermalThrottlingSeverityStateChanged. * Logs when the Thermal service HAL notifies the throttling start/stop events. * * Logged from: @@ -426,14 +428,7 @@ message ThermalThrottlingStateChanged { } optional State state = 2; - // Temperature in deci degrees celsius optional float temperature = 3; - - // Severity of throttling - optional android.os.ThrottlingSeverityEnum severity = 4; - - // Thermistor name - optional string sensor_name = 5; } /** @@ -2364,6 +2359,27 @@ message BatteryCausedShutdown { } /** + * Logs when ThermalService receives throttling events. + * + * Logged from: + * frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java + */ +message ThermalThrottlingSeverityStateChanged { + // The type of temperature being reported (CPU, GPU, SKIN, etc) + optional android.os.TemperatureTypeEnum sensor_type = 1; + + // The name of the temperature source. Eg. CPU0 + optional string sensor_name = 2; + + // Temperature in tenths of a degree C. + // For BCL, it is decimillivolt, decimilliamps, and percentage * 10. + optional int32 temperature_deci_celsius = 3; + + // Relative severity of the throttling, see enum definition. + optional android.os.ThrottlingSeverityEnum severity = 4; +} + +/** * Logs the duration of a davey (jank of >=700ms) when it occurs * * Logged from: diff --git a/cmds/statsd/src/guardrail/MemoryLeakTrackUtil.cpp b/cmds/statsd/src/guardrail/MemoryLeakTrackUtil.cpp deleted file mode 100644 index 01c75873fdf9..000000000000 --- a/cmds/statsd/src/guardrail/MemoryLeakTrackUtil.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2017, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define DEBUG false // STOPSHIP if true -#include "Log.h" - -#include <sstream> -#include "MemoryLeakTrackUtil.h" - -/* - * The code here originally resided in MediaPlayerService.cpp - */ - -// Figure out the abi based on defined macros. -#if defined(__arm__) -#define ABI_STRING "arm" -#elif defined(__aarch64__) -#define ABI_STRING "arm64" -#elif defined(__mips__) && !defined(__LP64__) -#define ABI_STRING "mips" -#elif defined(__mips__) && defined(__LP64__) -#define ABI_STRING "mips64" -#elif defined(__i386__) -#define ABI_STRING "x86" -#elif defined(__x86_64__) -#define ABI_STRING "x86_64" -#else -#error "Unsupported ABI" -#endif - -extern std::string backtrace_string(const uintptr_t* frames, size_t frame_count); - -namespace android { -namespace os { -namespace statsd { - -extern "C" void get_malloc_leak_info(uint8_t** info, size_t* overallSize, size_t* infoSize, - size_t* totalMemory, size_t* backtraceSize); - -extern "C" void free_malloc_leak_info(uint8_t* info); - -std::string dumpMemInfo(size_t limit) { - uint8_t* info; - size_t overallSize; - size_t infoSize; - size_t totalMemory; - size_t backtraceSize; - get_malloc_leak_info(&info, &overallSize, &infoSize, &totalMemory, &backtraceSize); - - size_t count; - if (info == nullptr || overallSize == 0 || infoSize == 0 || - (count = overallSize / infoSize) == 0) { - VLOG("no malloc info, libc.debug.malloc.program property should be set"); - return std::string(); - } - - std::ostringstream oss; - oss << totalMemory << " bytes in " << count << " allocations\n"; - oss << " ABI: '" ABI_STRING "'" - << "\n\n"; - if (count > limit) count = limit; - - // The memory is sorted based on total size which is useful for finding - // worst memory offenders. For diffs, sometimes it is preferable to sort - // based on the backtrace. - for (size_t i = 0; i < count; i++) { - struct AllocEntry { - size_t size; // bit 31 is set if this is zygote allocated memory - size_t allocations; - uintptr_t backtrace[]; - }; - - const AllocEntry* const e = (AllocEntry*)(info + i * infoSize); - - oss << (e->size * e->allocations) << " bytes ( " << e->size << " bytes * " << e->allocations - << " allocations )\n"; - oss << backtrace_string(e->backtrace, backtraceSize) << "\n"; - } - oss << "\n"; - free_malloc_leak_info(info); - return oss.str(); -} - -} // namespace statsd -} // namespace os -} // namespace android
\ No newline at end of file diff --git a/cmds/statsd/src/guardrail/MemoryLeakTrackUtil.h b/cmds/statsd/src/guardrail/MemoryLeakTrackUtil.h deleted file mode 100644 index 444ed92cc9bb..000000000000 --- a/cmds/statsd/src/guardrail/MemoryLeakTrackUtil.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2017, The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#pragma once - -#include <iostream> - -namespace android { -namespace os { -namespace statsd { -/* - * Dump the heap memory of the calling process, sorted by total size - * (allocation size * number of allocations). - * - * limit is the number of unique allocations to return. - */ -extern std::string dumpMemInfo(size_t limit); - -} // namespace statsd -} // namespace os -} // namespace android
\ No newline at end of file diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 86b10b90fa7c..0d22f3a8bb03 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -773,6 +773,8 @@ public class Activity extends ContextThemeWrapper private static final int LOG_AM_ON_RESTART_CALLED = 30058; private static final int LOG_AM_ON_DESTROY_CALLED = 30060; private static final int LOG_AM_ON_ACTIVITY_RESULT_CALLED = 30062; + private static final int LOG_AM_ON_TOP_RESUMED_GAINED_CALLED = 30064; + private static final int LOG_AM_ON_TOP_RESUMED_LOST_CALLED = 30065; private static class ManagedDialog { Dialog mDialog; @@ -1840,6 +1842,13 @@ public class Activity extends ContextThemeWrapper public void onTopResumedActivityChanged(boolean isTopResumedActivity) { } + final void performTopResumedActivityChanged(boolean isTopResumedActivity, String reason) { + onTopResumedActivityChanged(isTopResumedActivity); + + writeEventLog(isTopResumedActivity + ? LOG_AM_ON_TOP_RESUMED_GAINED_CALLED : LOG_AM_ON_TOP_RESUMED_LOST_CALLED, reason); + } + void setVoiceInteractor(IVoiceInteractor voiceInteractor) { if (mVoiceInteractor != null) { for (Request activeRequest: mVoiceInteractor.getActiveRequests()) { diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 474f25bd5533..9cd42a5eb9fd 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -4026,7 +4026,7 @@ public final class ActivityThread extends ClientTransactionHandler { r.persistentState = null; r.setState(ON_RESUME); - reportTopResumedActivityChanged(r, r.isTopResumedActivity); + reportTopResumedActivityChanged(r, r.isTopResumedActivity, "topWhenResuming"); } catch (Exception e) { if (!mInstrumentation.onException(r.activity, e)) { throw new RuntimeException("Unable to resume activity " @@ -4201,7 +4201,7 @@ public final class ActivityThread extends ClientTransactionHandler { r.isTopResumedActivity = onTop; if (r.getLifecycleState() == ON_RESUME) { - reportTopResumedActivityChanged(r, onTop); + reportTopResumedActivityChanged(r, onTop, "topStateChangedWhenResumed"); } else { if (DEBUG_ORDER) { Slog.d(TAG, "Won't deliver top position change in state=" + r.getLifecycleState()); @@ -4213,10 +4213,11 @@ public final class ActivityThread extends ClientTransactionHandler { * Call {@link Activity#onTopResumedActivityChanged(boolean)} if its top resumed state changed * since the last report. */ - private void reportTopResumedActivityChanged(ActivityClientRecord r, boolean onTop) { + private void reportTopResumedActivityChanged(ActivityClientRecord r, boolean onTop, + String reason) { if (r.lastReportedTopResumedState != onTop) { r.lastReportedTopResumedState = onTop; - r.activity.onTopResumedActivityChanged(onTop); + r.activity.performTopResumedActivityChanged(onTop, reason); } } @@ -4313,7 +4314,7 @@ public final class ActivityThread extends ClientTransactionHandler { // Always reporting top resumed position loss when pausing an activity. If necessary, it // will be restored in performResumeActivity(). - reportTopResumedActivityChanged(r, false /* onTop */); + reportTopResumedActivityChanged(r, false /* onTop */, "pausing"); try { r.activity.mCalled = false; @@ -5718,14 +5719,18 @@ public final class ActivityThread extends ClientTransactionHandler { if (packages == null) { break; } + + List<String> packagesHandled = new ArrayList<>(); + synchronized (mResourcesManager) { for (int i = packages.length - 1; i >= 0; i--) { - WeakReference<LoadedApk> ref = mPackages.get(packages[i]); + String packageName = packages[i]; + WeakReference<LoadedApk> ref = mPackages.get(packageName); LoadedApk pkgInfo = ref != null ? ref.get() : null; if (pkgInfo != null) { hasPkgInfo = true; } else { - ref = mResourcePackages.get(packages[i]); + ref = mResourcePackages.get(packageName); pkgInfo = ref != null ? ref.get() : null; if (pkgInfo != null) { hasPkgInfo = true; @@ -5736,8 +5741,8 @@ public final class ActivityThread extends ClientTransactionHandler { // Adjust it's internal references to the application info and // resources. if (pkgInfo != null) { + packagesHandled.add(packageName); try { - final String packageName = packages[i]; final ApplicationInfo aInfo = sPackageManager.getApplicationInfo( packageName, @@ -5769,6 +5774,13 @@ public final class ActivityThread extends ClientTransactionHandler { } } } + + try { + getPackageManager().notifyPackagesReplacedReceived( + packagesHandled.toArray(new String[0])); + } catch (RemoteException ignored) { + } + break; } } diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 0c6c77f8e36b..d0361b7e1118 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -3165,8 +3165,8 @@ public class Notification implements Parcelable /** * Gets the {@link LocusId} associated with this notification. * - * <p>Used by the device's intelligence services to correlate objects (such as - * {@link ShortcutInfo} and {@link ContentCaptureContext}) that are correlated. + * <p>Used by the Android system to correlate objects (such as + * {@link ShortcutInfo} and {@link ContentCaptureContext}). */ @Nullable public LocusId getLocusId() { @@ -3534,8 +3534,8 @@ public class Notification implements Parcelable * Sets the {@link LocusId} associated with this notification. * * <p>This method should be called when the {@link LocusId} is used in other places (such - * as {@link ShortcutInfo} and {@link ContentCaptureContext}) so the device's intelligence - * services can correlate them. + * as {@link ShortcutInfo} and {@link ContentCaptureContext}) so the Android system can + * correlate them. */ @NonNull public Builder setLocusId(@Nullable LocusId locusId) { diff --git a/core/java/android/bluetooth/le/ScanFilter.java b/core/java/android/bluetooth/le/ScanFilter.java index 78140cf65d07..07ba2c6680a9 100644 --- a/core/java/android/bluetooth/le/ScanFilter.java +++ b/core/java/android/bluetooth/le/ScanFilter.java @@ -16,6 +16,7 @@ package android.bluetooth.le; +import android.annotation.NonNull; import android.annotation.Nullable; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; @@ -586,7 +587,8 @@ public final class ScanFilter implements Parcelable { /** * Set filter on service solicitation uuid. */ - public Builder setServiceSolicitationUuid(ParcelUuid serviceSolicitationUuid) { + public @NonNull Builder setServiceSolicitationUuid( + @Nullable ParcelUuid serviceSolicitationUuid) { mServiceSolicitationUuid = serviceSolicitationUuid; return this; } @@ -601,8 +603,9 @@ public final class ScanFilter implements Parcelable { * @throws IllegalArgumentException If {@code serviceSolicitationUuid} is {@code null} but * {@code serviceSolicitationUuidMask} is not {@code null}. */ - public Builder setServiceSolicitationUuid(ParcelUuid serviceSolicitationUuid, - ParcelUuid solicitationUuidMask) { + public @NonNull Builder setServiceSolicitationUuid( + @Nullable ParcelUuid serviceSolicitationUuid, + @Nullable ParcelUuid solicitationUuidMask) { if (mServiceSolicitationUuidMask != null && mServiceSolicitationUuid == null) { throw new IllegalArgumentException( "SolicitationUuid is null while SolicitationUuidMask is not null!"); diff --git a/core/java/android/content/LocusId.java b/core/java/android/content/LocusId.java index 283cea00b192..613765fd826a 100644 --- a/core/java/android/content/LocusId.java +++ b/core/java/android/content/LocusId.java @@ -29,9 +29,8 @@ import java.io.PrintWriter; * backup / restore. * * <p>Locus is a new concept introduced on - * {@link android.os.Build.VERSION_CODES#Q Android Q} and it lets the intelligence service provided - * by the Android System to correlate state between different subsystems such as content capture, - * shortcuts, and notifications. + * {@link android.os.Build.VERSION_CODES#Q Android Q} and it lets the Android system correlate + * state between different subsystems such as content capture, shortcuts, and notifications. * * <p>For example, if your app provides an activiy representing a chat between 2 users * (say {@code A} and {@code B}, this chat state could be represented by: diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index cf704d52cba0..6ab4657d727d 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -770,4 +770,6 @@ interface IPackageManager { int getRuntimePermissionsVersion(int userId); void setRuntimePermissionsVersion(int version, int userId); + + void notifyPackagesReplacedReceived(in String[] packages); } diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 0ea5200d202a..1784d8ad3c6c 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -8447,6 +8447,20 @@ public class PackageParser { // Collect certificates if ((flags & PackageManager.GET_SIGNING_CERTIFICATES) != 0) { collectCertificates(p, apexFile, false); + // Keep legacy mechanism for handling signatures. While this is deprecated, it's + // still part of the public API and needs to be maintained + if (p.mSigningDetails.hasPastSigningCertificates()) { + // Package has included signing certificate rotation information. Return + // the oldest cert so that programmatic checks keep working even if unaware + // of key rotation. + pi.signatures = new Signature[1]; + pi.signatures[0] = p.mSigningDetails.pastSigningCertificates[0]; + } else if (p.mSigningDetails.hasSignatures()) { + // otherwise keep old behavior + int numberOfSigs = p.mSigningDetails.signatures.length; + pi.signatures = new Signature[numberOfSigs]; + System.arraycopy(p.mSigningDetails.signatures, 0, pi.signatures, 0, numberOfSigs); + } if (p.mSigningDetails != SigningDetails.UNKNOWN) { // only return a valid SigningInfo if there is signing information to report pi.signingInfo = new SigningInfo(p.mSigningDetails); diff --git a/core/java/android/content/pm/ShortcutInfo.java b/core/java/android/content/pm/ShortcutInfo.java index 1f82fa6b57e3..41be38a6e8dd 100644 --- a/core/java/android/content/pm/ShortcutInfo.java +++ b/core/java/android/content/pm/ShortcutInfo.java @@ -991,8 +991,8 @@ public final class ShortcutInfo implements Parcelable { * Sets the {@link LocusId} associated with this shortcut. * * <p>This method should be called when the {@link LocusId} is used in other places (such - * as {@link Notification} and {@link ContentCaptureContext}) so the device's intelligence - * services can correlate them. + * as {@link Notification} and {@link ContentCaptureContext}) so the Android system can + * correlate them. */ @NonNull public Builder setLocusId(@NonNull LocusId locusId) { @@ -1325,8 +1325,8 @@ public final class ShortcutInfo implements Parcelable { /** * Gets the {@link LocusId} associated with this shortcut. * - * <p>Used by the device's intelligence services to correlate objects (such as - * {@link Notification} and {@link ContentCaptureContext}) that are correlated. + * <p>Used by the Android system to correlate objects (such as + * {@link Notification} and {@link ContentCaptureContext}). */ @Nullable public LocusId getLocusId() { diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index 2906710b0655..0e10de8c4e3f 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -510,7 +510,7 @@ public class ConnectivityManager { * The absence of a connection type. * @hide */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) public static final int TYPE_NONE = -1; /** @@ -627,7 +627,7 @@ public class ConnectivityManager { * {@hide} */ @Deprecated - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) public static final int TYPE_MOBILE_FOTA = 10; /** @@ -645,7 +645,7 @@ public class ConnectivityManager { * {@hide} */ @Deprecated - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) public static final int TYPE_MOBILE_CBS = 12; /** @@ -655,7 +655,7 @@ public class ConnectivityManager { * {@hide} */ @Deprecated - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) public static final int TYPE_WIFI_P2P = 13; /** @@ -674,7 +674,7 @@ public class ConnectivityManager { * {@hide} */ @Deprecated - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) public static final int TYPE_MOBILE_EMERGENCY = 15; /** @@ -775,7 +775,7 @@ public class ConnectivityManager { */ public static final String PRIVATE_DNS_DEFAULT_MODE_FALLBACK = PRIVATE_DNS_MODE_OPPORTUNISTIC; - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) private final IConnectivityManager mService; /** * A kludge to facilitate static access where a Context pointer isn't available, like in the @@ -867,7 +867,7 @@ public class ConnectivityManager { * {@hide} */ @Deprecated - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) public static boolean isNetworkTypeMobile(int networkType) { switch (networkType) { case TYPE_MOBILE: @@ -1304,7 +1304,7 @@ public class ConnectivityManager { */ @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) public LinkProperties getLinkProperties(int networkType) { try { return mService.getLinkPropertiesForType(networkType); @@ -3042,7 +3042,7 @@ public class ConnectivityManager { */ @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) public boolean isNetworkSupported(int networkType) { try { return mService.isNetworkSupported(networkType); diff --git a/core/java/android/net/TrafficStats.java b/core/java/android/net/TrafficStats.java index 4332d8abbce3..1c6a48434adc 100644 --- a/core/java/android/net/TrafficStats.java +++ b/core/java/android/net/TrafficStats.java @@ -25,6 +25,7 @@ import android.app.backup.BackupManager; import android.app.usage.NetworkStatsManager; import android.content.Context; import android.media.MediaPlayer; +import android.os.Build; import android.os.RemoteException; import android.os.ServiceManager; import android.util.DataUnit; @@ -169,7 +170,7 @@ public class TrafficStats { private static INetworkStatsService sStatsService; - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) private synchronized static INetworkStatsService getStatsService() { if (sStatsService == null) { sStatsService = INetworkStatsService.Stub.asInterface( @@ -979,7 +980,7 @@ public class TrafficStats { * Interfaces are never removed from this list, so counters should always be * monotonic. */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 130143562) private static String[] getMobileIfaces() { try { return getStatsService().getMobileIfaces(); diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java index a51a871e7780..232869d7aefc 100644 --- a/core/java/android/os/GraphicsEnvironment.java +++ b/core/java/android/os/GraphicsEnvironment.java @@ -453,14 +453,22 @@ public class GraphicsEnvironment { final boolean appIsProfileable = isProfileable(context); final boolean deviceIsDebuggable = getCanLoadSystemLibraries() == 1; if (appIsDebuggable || appIsProfileable || deviceIsDebuggable) { - - String debugPackage = - coreSettings.getString(Settings.Global.GLOBAL_SETTINGS_ANGLE_DEBUG_PACKAGE); + String debugPackage; + + if (coreSettings != null) { + debugPackage = + coreSettings.getString(Settings.Global.GLOBAL_SETTINGS_ANGLE_DEBUG_PACKAGE); + } else { + ContentResolver contentResolver = context.getContentResolver(); + debugPackage = Settings.Global.getString(contentResolver, + Settings.Global.GLOBAL_SETTINGS_ANGLE_DEBUG_PACKAGE); + } if ((debugPackage != null) && (!debugPackage.isEmpty())) { return debugPackage; } } + return ""; } diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java index 6c498c736854..9215de14c21f 100644 --- a/core/java/android/provider/DeviceConfig.java +++ b/core/java/android/provider/DeviceConfig.java @@ -267,6 +267,13 @@ public final class DeviceConfig { public static final String NAMESPACE_CONTACTS_PROVIDER = "contacts_provider"; /** + * Namespace for settings ui related features + * + * @hide + */ + public static final String NAMESPACE_SETTINGS_UI = "settings_ui"; + + /** * List of namespaces which can be read without READ_DEVICE_CONFIG permission * * @hide diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 83dc39e94d7a..ac59101d4090 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -12666,6 +12666,45 @@ public final class Settings { public static final String DYNAMIC_POWER_SAVINGS_ENABLED = "dynamic_power_savings_enabled"; /** + * A long value indicating how much longer the system battery is estimated to last in + * millis. See {@link #BATTERY_ESTIMATES_LAST_UPDATE_TIME} for the last time this value + * was updated. + * + * @hide + */ + public static final String TIME_REMAINING_ESTIMATE_MILLIS = + "time_remaining_estimate_millis"; + + /** + * A boolean indicating whether {@link #TIME_REMAINING_ESTIMATE_MILLIS} is based customized + * to the devices usage or using global models. See + * {@link #BATTERY_ESTIMATES_LAST_UPDATE_TIME} for the last time this value was updated. + * + * @hide + */ + public static final String TIME_REMAINING_ESTIMATE_BASED_ON_USAGE = + "time_remaining_estimate_based_on_usage"; + + /** + * A long value indicating how long the system battery takes to deplete from 100% to 0% on + * average based on historical drain rates. See {@link #BATTERY_ESTIMATES_LAST_UPDATE_TIME} + * for the last time this value was updated. + * + * @hide + */ + public static final String AVERAGE_TIME_TO_DISCHARGE = "average_time_to_discharge"; + + /** + * A long indicating the epoch time in milliseconds when + * {@link #TIME_REMAINING_ESTIMATE_MILLIS}, {@link #TIME_REMAINING_ESTIMATE_BASED_ON_USAGE}, + * and {@link #AVERAGE_TIME_TO_DISCHARGE} were last updated. + * + * @hide + */ + public static final String BATTERY_ESTIMATES_LAST_UPDATE_TIME = + "battery_estimates_last_update_time"; + + /** * The max value for {@link #LOW_POWER_MODE_TRIGGER_LEVEL}. If this setting is not set * or the value is 0, the default max will be used. * @@ -13531,6 +13570,28 @@ public final class Settings { private static final Validator AWARE_ALLOWED_VALIDATOR = BOOLEAN_VALIDATOR; /** + * Overrides internal R.integer.config_longPressOnPowerBehavior. + * Allowable values detailed in frameworks/base/core/res/res/values/config.xml. + * Used by PhoneWindowManager. + * @hide + */ + public static final String POWER_BUTTON_LONG_PRESS = + "power_button_long_press"; + private static final Validator POWER_BUTTON_LONG_PRESS_VALIDATOR = + new SettingsValidators.InclusiveIntegerRangeValidator(0, 5); + + /** + * Overrides internal R.integer.config_veryLongPressOnPowerBehavior. + * Allowable values detailed in frameworks/base/core/res/res/values/config.xml. + * Used by PhoneWindowManager. + * @hide + */ + public static final String POWER_BUTTON_VERY_LONG_PRESS = + "power_button_very_long_press"; + private static final Validator POWER_BUTTON_VERY_LONG_PRESS_VALIDATOR = + new SettingsValidators.InclusiveIntegerRangeValidator(0, 1); + + /** * Settings to backup. This is here so that it's in the same place as the settings * keys and easy to update. * @@ -13643,6 +13704,8 @@ public final class Settings { WIFI_PNO_RECENCY_SORTING_ENABLED_VALIDATOR); VALIDATORS.put(WIFI_LINK_PROBING_ENABLED, WIFI_LINK_PROBING_ENABLED_VALIDATOR); VALIDATORS.put(AWARE_ALLOWED, AWARE_ALLOWED_VALIDATOR); + VALIDATORS.put(POWER_BUTTON_LONG_PRESS, POWER_BUTTON_LONG_PRESS_VALIDATOR); + VALIDATORS.put(POWER_BUTTON_VERY_LONG_PRESS, POWER_BUTTON_VERY_LONG_PRESS_VALIDATOR); } /** @@ -14648,6 +14711,7 @@ public final class Settings { */ public static final String TEXT_CLASSIFIER_ACTION_MODEL_PARAMS = "text_classifier_action_model_params"; + } /** diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java index f2aaeaddef97..e8b0d92c2fd2 100644 --- a/core/java/android/util/FeatureFlagUtils.java +++ b/core/java/android/util/FeatureFlagUtils.java @@ -53,7 +53,6 @@ public class FeatureFlagUtils { DEFAULT_FLAGS.put("settings_audio_switcher", "true"); DEFAULT_FLAGS.put("settings_mobile_network_v2", "true"); DEFAULT_FLAGS.put("settings_network_and_internet_v2", "true"); - DEFAULT_FLAGS.put("settings_slice_injection", "true"); DEFAULT_FLAGS.put("settings_systemui_theme", "true"); DEFAULT_FLAGS.put(DYNAMIC_SYSTEM, "false"); DEFAULT_FLAGS.put(SEAMLESS_TRANSFER, "false"); diff --git a/core/java/android/util/SparseSetArray.java b/core/java/android/util/SparseSetArray.java index 680e85fa2ba8..c1873d76f46f 100644 --- a/core/java/android/util/SparseSetArray.java +++ b/core/java/android/util/SparseSetArray.java @@ -44,6 +44,13 @@ public class SparseSetArray<T> { } /** + * Removes all mappings from this SparseSetArray. + */ + public void clear() { + mData.clear(); + } + + /** * @return whether a value exists at index n. */ public boolean contains(int n, T value) { diff --git a/core/java/android/view/contentcapture/ContentCaptureContext.java b/core/java/android/view/contentcapture/ContentCaptureContext.java index 94e548fa0eeb..1692051924f4 100644 --- a/core/java/android/view/contentcapture/ContentCaptureContext.java +++ b/core/java/android/view/contentcapture/ContentCaptureContext.java @@ -261,6 +261,7 @@ public final class ContentCaptureContext implements Parcelable { * example). * <li>A unique identifier of the application state (for example, a conversation between * 2 users in a chat app). + * </ul> * * <p>See {@link ContentCaptureManager} for more info about the content capture context. * diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java index 26454c055932..a9770731dbc7 100644 --- a/core/java/android/view/contentcapture/ContentCaptureManager.java +++ b/core/java/android/view/contentcapture/ContentCaptureManager.java @@ -29,7 +29,6 @@ import android.annotation.UiThread; import android.content.ComponentName; import android.content.ContentCaptureOptions; import android.content.Context; -import android.graphics.Canvas; import android.os.Handler; import android.os.IBinder; import android.os.Looper; @@ -51,61 +50,61 @@ import java.util.ArrayList; import java.util.Set; /** - * <p>The {@link ContentCaptureManager} provides additional ways for for apps to - * integrate with the content capture subsystem. + * Content capture is mechanism used to let apps notify the Android system of events associated with + * views. * - * <p>Content capture provides real-time, continuous capture of application activity, display and - * events to an intelligence service that is provided by the Android system. The intelligence - * service then uses that info to mediate and speed user journey through different apps. For - * example, when the user receives a restaurant address in a chat app and switchs to a map app - * to search for that restaurant, the intelligence service could offer an autofill dialog to - * let the user automatically select its address. - * - * <p>Content capture was designed with two major concerns in mind: privacy and performance. - * - * <ul> - * <li><b>Privacy:</b> the intelligence service is a trusted component provided that is provided - * by the device manufacturer and that cannot be changed by the user (although the user can - * globaly disable content capture using the Android Settings app). This service can only use the - * data for in-device machine learning, which is enforced both by process isolation and - * <a href="https://source.android.com/compatibility/cdd">CDD requirements</a>. - * <li><b>Performance:</b> content capture is highly optimized to minimize its impact in the app - * jankiness and overall device system health. For example, its only enabled on apps (or even - * specific activities from an app) that were explicitly whitelisted by the intelligence service, - * and it buffers the events so they are sent in a batch to the service (see - * {@link #isContentCaptureEnabled()} for other cases when its disabled). - * </ul> - * - * <p>In fact, before using this manager, the app developer should check if it's available. Example: - * <code> + * <p>Before using this manager, you should check if it's available. Example: + * <pre><code> * ContentCaptureManager mgr = context.getSystemService(ContentCaptureManager.class); * if (mgr != null && mgr.isContentCaptureEnabled()) { * // ... * } - * </code> + * </code></pre> * - * <p>App developers usually don't need to explicitly interact with content capture, except when the - * app: + * <p>To support content capture, you must notifiy the Android system of the following events: * * <ul> - * <li>Can define a contextual {@link android.content.LocusId} to identify unique state (such as a - * conversation between 2 chat users). - * <li>Can have multiple view hierarchies with different contextual meaning (for example, a - * browser app with multiple tabs, each representing a different URL). - * <li>Contains custom views (that extend View directly and are not provided by the standard - * Android SDK. - * <li>Contains views that provide their own virtual hierarchy (like a web browser that render the - * HTML elements using a Canvas). + * <li>When a visible view is laid out, call + * {@link ContentCaptureSession#notifyViewAppeared(ViewStructure)}. + * <li>When a view becomes invisible or is removed from the view hierarchy, call + * {@link ContentCaptureSession#notifyViewDisappeared(android.view.autofill.AutofillId)}. + * <li>When the view represents text and the text value changed, call {@link + * ContentCaptureSession#notifyViewTextChanged(android.view.autofill.AutofillId, CharSequence)}. * </ul> * + * <p>You can get a blank content capture structure using + * {@link ContentCaptureSession#newViewStructure(View)}, then populate its relevant fields. + * Here's an example of the relevant methods for an {@code EditText}-like view: + * + * <pre><code> + * public class MyEditText extends View { + * + * private void populateContentCaptureStructure(@NonNull ViewStructure structure) { + * structure.setText(getText(), getSelectionStart(), getSelectionEnd()); + * structure.setHint(getHint()); + * structure.setInputType(getInputType()); + * // set other properties like setTextIdEntry(), setTextLines(), setTextStyle(), + * // setMinTextEms(), setMaxTextEms(), setMaxTextLength() + * } + * + * private void onTextChanged() { + * if (isLaidOut() && isTextEditable()) { + * ContentCaptureManager mgr = mContext.getSystemService(ContentCaptureManager.class); + * if (cm != null && cm.isContentCaptureEnabled()) { + * ContentCaptureSession session = getContentCaptureSession(); + * if (session != null) { + * session.notifyViewTextChanged(getAutofillId(), getText()); + * } + * } + * } + * </code></pre> + * * <p>The main integration point with content capture is the {@link ContentCaptureSession}. A "main" - * session is automatically created by the Android System when content capture is enabled for the - * activity and its used by the standard Android views to notify the content capture service of - * events such as views being added, views been removed, and text changed by user input. The session - * could have a {@link ContentCaptureContext} to provide more contextual info about it, such as - * the locus associated with the view hierarchy (see {@link android.content.LocusId} for more info - * about locus). By default, the main session doesn't have a {@code ContentCaptureContext}, but you - * can change it after its created. Example: + * session is automatically created by the Android system when content capture is enabled for the + * activity. The session could have a {@link ContentCaptureContext} to provide more contextual info + * about it, such as the locus associated with the view hierarchy + * (see {@link android.content.LocusId} for more info about locus). By default, the main session + * doesn't have a {@code ContentCaptureContext}, but you can change it after its created. Example: * * <pre><code> * protected void onCreate(Bundle savedInstanceState) { @@ -145,54 +144,6 @@ import java.util.Set; * } * </code></pre> * - * <p>If your activity has custom views (i.e., views that extend {@link View} directly and provide - * just one logical view, not a virtual tree hiearchy) and it provides content that's relevant for - * content capture (as of {@link android.os.Build.VERSION_CODES#Q Android Q}, the only relevant - * content is text), then your view implementation should: - * - * <ul> - * <li>Set it as important for content capture. - * <li>Fill {@link ViewStructure} used for content capture. - * <li>Notify the {@link ContentCaptureSession} when the text is changed by user input. - * </ul> - * - * <p>Here's an example of the relevant methods for an {@code EditText}-like view: - * - * <pre><code> - * public class MyEditText extends View { - * - * public MyEditText(...) { - * if (getImportantForContentCapture() == IMPORTANT_FOR_CONTENT_CAPTURE_AUTO) { - * setImportantForContentCapture(IMPORTANT_FOR_CONTENT_CAPTURE_YES); - * } - * } - * - * public void onProvideContentCaptureStructure(@NonNull ViewStructure structure, int flags) { - * super.onProvideContentCaptureStructure(structure, flags); - * - * structure.setText(getText(), getSelectionStart(), getSelectionEnd()); - * structure.setHint(getHint()); - * structure.setInputType(getInputType()); - * // set other properties like setTextIdEntry(), setTextLines(), setTextStyle(), - * // setMinTextEms(), setMaxTextEms(), setMaxTextLength() - * } - * - * private void onTextChanged() { - * if (isLaidOut() && isImportantForContentCapture() && isTextEditable()) { - * ContentCaptureManager mgr = mContext.getSystemService(ContentCaptureManager.class); - * if (cm != null && cm.isContentCaptureEnabled()) { - * ContentCaptureSession session = getContentCaptureSession(); - * if (session != null) { - * session.notifyViewTextChanged(getAutofillId(), getText()); - * } - * } - * } - * </code></pre> - * - * <p>If your view provides its own virtual hierarchy (for example, if it's a browser that draws - * the HTML using {@link Canvas} or native libraries in a different render process), then the view - * is also responsible to notify the session when the virtual elements appear and disappear - - * see {@link ContentCaptureSession#newViewStructure(View)} for more info. */ @SystemService(Context.CONTENT_CAPTURE_MANAGER_SERVICE) public final class ContentCaptureManager { @@ -473,17 +424,6 @@ public final class ContentCaptureManager { /** * Checks whether content capture is enabled for this activity. - * - * <p>There are many reasons it could be disabled, such as: - * <ul> - * <li>App itself disabled content capture through {@link #setContentCaptureEnabled(boolean)}. - * <li>Intelligence service did not whitelist content capture for this activity's package. - * <li>Intelligence service did not whitelist content capture for this specific activity. - * <li>Intelligence service disabled content capture globally. - * <li>User disabled content capture globally through the Android Settings app. - * <li>Device manufacturer (OEM) disabled content capture globally. - * <li>Transient errors, such as intelligence service package being updated. - * </ul> */ public boolean isContentCaptureEnabled() { if (mOptions.lite) return false; @@ -503,9 +443,9 @@ public final class ContentCaptureManager { * Gets the list of conditions for when content capture should be allowed. * * <p>This method is typically used by web browsers so they don't generate unnecessary content - * capture events for websites the content capture service is not interested on. + * capture events for some websites. * - * @return list of conditions, or {@code null} if the service didn't set any restriction + * @return list of conditions, or {@code null} if there isn't any restriction * (in which case content capture events should always be generated). If the list is empty, * then it should not generate any event at all. */ diff --git a/core/java/android/view/contentcapture/ContentCaptureSession.java b/core/java/android/view/contentcapture/ContentCaptureSession.java index 17a1fb405321..210dea1894bf 100644 --- a/core/java/android/view/contentcapture/ContentCaptureSession.java +++ b/core/java/android/view/contentcapture/ContentCaptureSession.java @@ -41,8 +41,7 @@ import java.util.ArrayList; import java.util.Random; /** - * Session used to notify a system-provided Content Capture service about events associated with - * views. + * Session used to notify the Android system about events associated with views. */ public abstract class ContentCaptureSession implements AutoCloseable { @@ -306,7 +305,7 @@ public abstract class ContentCaptureSession implements AutoCloseable { } /** - * Destroys this session, flushing out all pending notifications to the service. + * Destroys this session, flushing out all pending notifications. * * <p>Once destroyed, any new notification will be dropped. */ @@ -354,7 +353,7 @@ public abstract class ContentCaptureSession implements AutoCloseable { } /** - * Notifies the Content Capture Service that a node has been added to the view structure. + * Notifies the Android system that a node has been added to the view structure. * * @param node node that has been added. */ @@ -372,7 +371,7 @@ public abstract class ContentCaptureSession implements AutoCloseable { abstract void internalNotifyViewAppeared(@NonNull ViewNode.ViewStructureImpl node); /** - * Notifies the Content Capture Service that a node has been removed from the view structure. + * Notifies the Android system that a node has been removed from the view structure. * * @param id id of the node that has been removed. */ @@ -386,7 +385,7 @@ public abstract class ContentCaptureSession implements AutoCloseable { abstract void internalNotifyViewDisappeared(@NonNull AutofillId id); /** - * Notifies the Content Capture Service that many nodes has been removed from a virtual view + * Notifies the Android system that many nodes has been removed from a virtual view * structure. * * <p>Should only be called by views that handle their own virtual view hierarchy. @@ -412,7 +411,7 @@ public abstract class ContentCaptureSession implements AutoCloseable { } /** - * Notifies the Intelligence Service that the value of a text node has been changed. + * Notifies the Android system that the value of a text node has been changed. * * @param id of the node. * @param text new text. diff --git a/core/java/android/view/textclassifier/ConversationActions.java b/core/java/android/view/textclassifier/ConversationActions.java index f2fa67d58839..aeb99b896b11 100644 --- a/core/java/android/view/textclassifier/ConversationActions.java +++ b/core/java/android/view/textclassifier/ConversationActions.java @@ -401,7 +401,7 @@ public final class ConversationActions implements Parcelable { } /** Returns an immutable list of hints */ - @Nullable + @NonNull @Hint public List<String> getHints() { return mHints; diff --git a/core/java/android/view/textclassifier/TextClassifierEvent.java b/core/java/android/view/textclassifier/TextClassifierEvent.java index d3d61a7460c7..7b623e9b6391 100644 --- a/core/java/android/view/textclassifier/TextClassifierEvent.java +++ b/core/java/android/view/textclassifier/TextClassifierEvent.java @@ -35,8 +35,8 @@ import java.util.Arrays; * something of note that relates to a feature powered by the TextClassifier. The TextClassifier may * log these events or use them to improve future responses to queries. * <p> - * Each categories of the events have their own subclass. Events of each types has an associated - * set of related properties. You can find the specification of them in the subclasses. + * Each category of events has its their own subclass. Events of each type have an associated + * set of related properties. You can find their specification in the subclasses. */ public abstract class TextClassifierEvent implements Parcelable { @@ -146,6 +146,8 @@ public abstract class TextClassifierEvent implements Parcelable { @Nullable private final String mModelName; private final int[] mActionIndices; + @Nullable + private final ULocale mLocale; private final Bundle mExtras; private TextClassifierEvent(Builder builder) { @@ -158,6 +160,7 @@ public abstract class TextClassifierEvent implements Parcelable { mScores = builder.mScores; mModelName = builder.mModelName; mActionIndices = builder.mActionIndices; + mLocale = builder.mLocale; mExtras = builder.mExtras == null ? Bundle.EMPTY : builder.mExtras; } @@ -173,6 +176,8 @@ public abstract class TextClassifierEvent implements Parcelable { in.readFloatArray(mScores); mModelName = in.readString(); mActionIndices = in.createIntArray(); + final String languageTag = in.readString(); + mLocale = languageTag == null ? null : ULocale.forLanguageTag(languageTag); mExtras = in.readBundle(); } @@ -220,6 +225,7 @@ public abstract class TextClassifierEvent implements Parcelable { dest.writeFloatArray(mScores); dest.writeString(mModelName); dest.writeIntArray(mActionIndices); + dest.writeString(mLocale == null ? null : mLocale.toLanguageTag()); dest.writeBundle(mExtras); } @@ -318,6 +324,14 @@ public abstract class TextClassifierEvent implements Parcelable { } /** + * Returns the detected locale. + */ + @Nullable + public ULocale getLocale() { + return mLocale; + } + + /** * Returns a bundle containing non-structured extra information about this event. * * <p><b>NOTE: </b>Do not modify this bundle. @@ -365,6 +379,8 @@ public abstract class TextClassifierEvent implements Parcelable { private String mModelName; private int[] mActionIndices = new int[0]; @Nullable + private ULocale mLocale; + @Nullable private Bundle mExtras; /** @@ -473,6 +489,15 @@ public abstract class TextClassifierEvent implements Parcelable { } /** + * Sets the detected locale. + */ + @NonNull + public T setLocale(@Nullable ULocale locale) { + mLocale = locale; + return self(); + } + + /** * Sets a bundle containing non-structured extra information about the event. * * <p><b>NOTE: </b>Prefer to set only immutable values on the bundle otherwise, avoid @@ -858,26 +883,12 @@ public abstract class TextClassifierEvent implements Parcelable { } }; - @Nullable - private final ULocale mLocale; - private LanguageDetectionEvent(Parcel in) { super(in); - final String languageTag = in.readString(); - mLocale = languageTag == null ? null : ULocale.forLanguageTag(languageTag); } private LanguageDetectionEvent(LanguageDetectionEvent.Builder builder) { super(builder); - mLocale = builder.mLocale; - } - - /** - * Returns the detected locale. - */ - @Nullable - public ULocale getLocale() { - return mLocale; } /** @@ -885,8 +896,6 @@ public abstract class TextClassifierEvent implements Parcelable { */ public static final class Builder extends TextClassifierEvent.Builder<LanguageDetectionEvent.Builder> { - @Nullable - private ULocale mLocale; /** * Creates a builder for building {@link TextSelectionEvent}s. @@ -897,15 +906,6 @@ public abstract class TextClassifierEvent implements Parcelable { super(TextClassifierEvent.CATEGORY_LANGUAGE_DETECTION, eventType); } - /** - * Sets the detected locale. - */ - @NonNull - public Builder setLocale(@Nullable ULocale locale) { - mLocale = locale; - return this; - } - @Override Builder self() { return this; @@ -919,12 +919,6 @@ public abstract class TextClassifierEvent implements Parcelable { return new LanguageDetectionEvent(this); } } - - @Override - public void writeToParcel(Parcel dest, int flags) { - super.writeToParcel(dest, flags); - dest.writeString(mLocale == null ? null : mLocale.toLanguageTag()); - } } /** diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 59e867ff9dd6..be66de22cdcf 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -200,7 +200,6 @@ public class ChooserActivity extends ResolverActivity { private ChooserListAdapter mChooserListAdapter; private ChooserRowAdapter mChooserRowAdapter; - private Drawable mChooserRowLayer; private int mChooserRowServiceSpacing; /** {@link ChooserActivity#getBaseScore} */ @@ -219,10 +218,13 @@ public class ChooserActivity extends ResolverActivity { private static final int SHORTCUT_MANAGER_SHARE_TARGET_RESULT_COMPLETED = 4; private static final int LIST_VIEW_UPDATE_MESSAGE = 5; + private static final int MAX_LOG_RANK_POSITION = 12; + @VisibleForTesting public static final int LIST_VIEW_UPDATE_INTERVAL_IN_MILLIS = 250; private static final int MAX_EXTRA_INITIAL_INTENTS = 2; + private static final int MAX_EXTRA_CHOOSER_TARGETS = 2; private boolean mListViewDataChanged = false; @@ -411,8 +413,9 @@ public class ChooserActivity extends ResolverActivity { pa = intent.getParcelableArrayExtra(Intent.EXTRA_CHOOSER_TARGETS); if (pa != null) { - ChooserTarget[] targets = new ChooserTarget[pa.length]; - for (int i = 0; i < pa.length; i++) { + int count = Math.min(pa.length, MAX_EXTRA_CHOOSER_TARGETS); + ChooserTarget[] targets = new ChooserTarget[count]; + for (int i = 0; i < count; i++) { if (!(pa[i] instanceof ChooserTarget)) { Log.w(TAG, "Chooser target #" + i + " not a ChooserTarget: " + pa[i]); targets = null; @@ -466,7 +469,6 @@ public class ChooserActivity extends ResolverActivity { .registerPredictionUpdates(this.getMainExecutor(), mAppPredictorCallback); } - mChooserRowLayer = getResources().getDrawable(R.drawable.chooser_row_layer_list, null); mChooserRowServiceSpacing = getResources() .getDimensionPixelSize(R.dimen.chooser_service_spacing); @@ -1015,6 +1017,7 @@ public class ChooserActivity extends ResolverActivity { // Lower values mean the ranking was better. int cat = 0; int value = which; + int directTargetAlsoRanked = -1; HashedStringCache.HashResult directTargetHashed = null; switch (mChooserListAdapter.getPositionTargetType(which)) { case ChooserListAdapter.TARGET_CALLER: @@ -1023,7 +1026,6 @@ public class ChooserActivity extends ResolverActivity { break; case ChooserListAdapter.TARGET_SERVICE: cat = MetricsEvent.ACTION_ACTIVITY_CHOOSER_PICKED_SERVICE_TARGET; - value -= mChooserListAdapter.getCallerTargetCount(); // Log the package name + target name to answer the question if most users // share to mostly the same person or to a bunch of different people. ChooserTarget target = @@ -1034,6 +1036,11 @@ public class ChooserActivity extends ResolverActivity { target.getComponentName().getPackageName() + target.getTitle().toString(), mMaxHashSaltDays); + directTargetAlsoRanked = getRankedPosition((SelectableTargetInfo) targetInfo); + + if (mCallerChooserTargets != null) { + value -= mCallerChooserTargets.length; + } break; case ChooserListAdapter.TARGET_STANDARD: cat = MetricsEvent.ACTION_ACTIVITY_CHOOSER_PICKED_STANDARD_TARGET; @@ -1056,6 +1063,8 @@ public class ChooserActivity extends ResolverActivity { targetLogMaker.addTaggedData( MetricsEvent.FIELD_HASHED_TARGET_SALT_GEN, directTargetHashed.saltGeneration); + targetLogMaker.addTaggedData(MetricsEvent.FIELD_RANKED_POSITION, + directTargetAlsoRanked); } getMetricsLogger().write(targetLogMaker); MetricsLogger.action(this, cat, value); @@ -1074,6 +1083,21 @@ public class ChooserActivity extends ResolverActivity { } } + private int getRankedPosition(SelectableTargetInfo targetInfo) { + String targetPackageName = + targetInfo.getChooserTarget().getComponentName().getPackageName(); + int maxRankedResults = Math.min(mChooserListAdapter.mDisplayList.size(), + MAX_LOG_RANK_POSITION); + + for (int i = 0; i < maxRankedResults; i++) { + if (mChooserListAdapter.mDisplayList.get(i) + .getResolveInfo().activityInfo.packageName.equals(targetPackageName)) { + return i; + } + } + return -1; + } + void queryTargetServices(ChooserListAdapter adapter) { final PackageManager pm = getPackageManager(); ShortcutManager sm = (ShortcutManager) getSystemService(ShortcutManager.class); @@ -1931,6 +1955,7 @@ public class ChooserActivity extends ResolverActivity { int offset = 0; int rowsToShow = mChooserRowAdapter.getContentPreviewRowCount() + + mChooserRowAdapter.getProfileRowCount() + mChooserRowAdapter.getServiceTargetRowCount() + mChooserRowAdapter.getCallerAndRankedTargetRowCount(); @@ -1950,7 +1975,7 @@ public class ChooserActivity extends ResolverActivity { } int lastHeight = 0; - rowsToShow = Math.max(3, rowsToShow); + rowsToShow = Math.min(4, rowsToShow); for (int i = 0; i < Math.min(rowsToShow, mAdapterView.getChildCount()); i++) { lastHeight = mAdapterView.getChildAt(i).getHeight(); offset += lastHeight; @@ -2426,6 +2451,7 @@ public class ChooserActivity extends ResolverActivity { private static final int VIEW_TYPE_DIRECT_SHARE = 0; private static final int VIEW_TYPE_NORMAL = 1; private static final int VIEW_TYPE_CONTENT_PREVIEW = 2; + private static final int VIEW_TYPE_PROFILE = 3; private static final int MAX_TARGETS_PER_ROW_PORTRAIT = 4; private static final int MAX_TARGETS_PER_ROW_LANDSCAPE = 8; @@ -2481,9 +2507,9 @@ public class ChooserActivity extends ResolverActivity { @Override public int getCount() { - return (int) ( getContentPreviewRowCount() + + getProfileRowCount() + getServiceTargetRowCount() + getCallerAndRankedTargetRowCount() + Math.ceil( @@ -2504,6 +2530,10 @@ public class ChooserActivity extends ResolverActivity { return 1; } + public int getProfileRowCount() { + return mChooserListAdapter.getOtherProfile() == null ? 0 : 1; + } + public int getCallerAndRankedTargetRowCount() { return (int) Math.ceil( ((float) mChooserListAdapter.getCallerTargetCount() @@ -2539,6 +2569,10 @@ public class ChooserActivity extends ResolverActivity { return createContentPreviewView(convertView, parent); } + if (viewType == VIEW_TYPE_PROFILE) { + return createProfileView(convertView, parent); + } + if (convertView == null) { holder = createViewHolder(viewType, parent); } else { @@ -2556,6 +2590,10 @@ public class ChooserActivity extends ResolverActivity { return VIEW_TYPE_CONTENT_PREVIEW; } + if (getProfileRowCount() == 1 && position == getContentPreviewRowCount()) { + return VIEW_TYPE_PROFILE; + } + final int start = getFirstRowPosition(position); final int startType = mChooserListAdapter.getPositionTargetType(start); @@ -2568,7 +2606,7 @@ public class ChooserActivity extends ResolverActivity { @Override public int getViewTypeCount() { - return 3; + return 4; } private ViewGroup createContentPreviewView(View convertView, ViewGroup parent) { @@ -2584,6 +2622,17 @@ public class ChooserActivity extends ResolverActivity { (ViewGroup) convertView, parent); } + private View createProfileView(View convertView, ViewGroup parent) { + View profileRow = convertView != null ? convertView : mLayoutInflater.inflate( + R.layout.chooser_profile_row, parent, false); + profileRow.setBackground( + getResources().getDrawable(R.drawable.chooser_row_layer_list, null)); + mProfileView = profileRow.findViewById(R.id.profile_button); + mProfileView.setOnClickListener(ChooserActivity.this::onProfileClick); + bindProfileView(); + return profileRow; + } + private RowViewHolder loadViewsIntoRow(RowViewHolder holder) { final int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); final int exactSpec = MeasureSpec.makeMeasureSpec(mChooserTargetWidth, @@ -2702,8 +2751,10 @@ public class ChooserActivity extends ResolverActivity { final ViewGroup row = holder.getViewGroup(); - if (startType != lastStartType || rowPosition == getContentPreviewRowCount()) { - row.setBackground(mChooserRowLayer); + if (startType != lastStartType + || rowPosition == getContentPreviewRowCount() + getProfileRowCount()) { + row.setBackground( + getResources().getDrawable(R.drawable.chooser_row_layer_list, null)); } else { row.setBackground(null); } @@ -2753,7 +2804,7 @@ public class ChooserActivity extends ResolverActivity { } int getFirstRowPosition(int row) { - row -= getContentPreviewRowCount(); + row -= getContentPreviewRowCount() + getProfileRowCount(); final int serviceCount = mChooserListAdapter.getServiceTargetCount(); final int serviceRows = (int) Math.ceil((float) serviceCount diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index ad1e767f011a..2849f57d6fc5 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -108,7 +108,7 @@ public class ResolverActivity extends Activity { private Button mAlwaysButton; private Button mOnceButton; private Button mSettingsButton; - private View mProfileView; + protected View mProfileView; private int mIconDpi; private int mLastSelected = AbsListView.INVALID_POSITION; private boolean mResolvingHome = false; @@ -142,9 +142,7 @@ public class ResolverActivity extends Activity { private final PackageMonitor mPackageMonitor = new PackageMonitor() { @Override public void onSomePackagesChanged() { mAdapter.handlePackagesChanged(); - if (mProfileView != null) { - bindProfileView(); - } + bindProfileView(); } @Override @@ -336,21 +334,7 @@ public class ResolverActivity extends Activity { mProfileView = findViewById(R.id.profile_button); if (mProfileView != null) { - mProfileView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - final DisplayResolveInfo dri = mAdapter.getOtherProfile(); - if (dri == null) { - return; - } - - // Do not show the profile switch message anymore. - mProfileSwitchMessageId = -1; - - onTargetSelected(dri, false); - finish(); - } - }); + mProfileView.setOnClickListener(this::onProfileClick); bindProfileView(); } @@ -367,6 +351,19 @@ public class ResolverActivity extends Activity { + (categories != null ? Arrays.toString(categories.toArray()) : "")); } + protected void onProfileClick(View v) { + final DisplayResolveInfo dri = mAdapter.getOtherProfile(); + if (dri == null) { + return; + } + + // Do not show the profile switch message anymore. + mProfileSwitchMessageId = -1; + + onTargetSelected(dri, false); + finish(); + } + @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); @@ -445,7 +442,11 @@ public class ResolverActivity extends Activity { return R.layout.resolver_list; } - void bindProfileView() { + protected void bindProfileView() { + if (mProfileView == null) { + return; + } + final DisplayResolveInfo dri = mAdapter.getOtherProfile(); if (dri != null) { mProfileView.setVisibility(View.VISIBLE); @@ -709,9 +710,7 @@ public class ResolverActivity extends Activity { mRegistered = true; } mAdapter.handlePackagesChanged(); - if (mProfileView != null) { - bindProfileView(); - } + bindProfileView(); } @Override @@ -1737,9 +1736,7 @@ public class ResolverActivity extends Activity { @Override protected void onPostExecute(List<ResolvedComponentInfo> sortedComponents) { processSortedList(sortedComponents); - if (mProfileView != null) { - bindProfileView(); - } + bindProfileView(); notifyDataSetChanged(); } }; @@ -2148,7 +2145,7 @@ public class ResolverActivity extends Activity { @Override protected void onPostExecute(Drawable d) { - if (mProfileView != null && mAdapter.getOtherProfile() == mDisplayResolveInfo) { + if (mAdapter.getOtherProfile() == mDisplayResolveInfo) { bindProfileView(); } else { mDisplayResolveInfo.setDisplayIcon(d); diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java index 495a5fbb6665..6d0a8646b3a7 100644 --- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java +++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java @@ -82,6 +82,12 @@ public final class SystemUiDeviceConfigFlags { public static final String SSIN_MAX_NUM_ACTIONS = "ssin_max_num_actions"; /** + * (int) The amount of time (ms) before smart suggestions are clickable, since the suggestions + * were added. + */ + public static final String SSIN_ONCLICK_INIT_DELAY = "ssin_onclick_init_delay"; + + /** * The default component of * {@link android.service.notification.NotificationAssistantService}. */ diff --git a/core/java/com/android/internal/content/FileSystemProvider.java b/core/java/com/android/internal/content/FileSystemProvider.java index a7244a744abf..76826d3ce787 100644 --- a/core/java/com/android/internal/content/FileSystemProvider.java +++ b/core/java/com/android/internal/content/FileSystemProvider.java @@ -19,7 +19,6 @@ package com.android.internal.content; import android.annotation.CallSuper; import android.annotation.Nullable; import android.content.ContentResolver; -import android.content.ContentValues; import android.content.Intent; import android.content.res.AssetFileDescriptor; import android.database.Cursor; @@ -266,17 +265,7 @@ public abstract class FileSystemProvider extends DocumentsProvider { if (visibleFolder != null) { assert (visibleFolder.isDirectory()); - final long token = Binder.clearCallingIdentity(); - - try { - final ContentResolver resolver = getContext().getContentResolver(); - final Uri uri = MediaStore.Files.getDirectoryUri("external"); - ContentValues values = new ContentValues(); - values.put(MediaStore.Files.FileColumns.DATA, visibleFolder.getAbsolutePath()); - resolver.insert(uri, values); - } finally { - Binder.restoreCallingIdentity(token); - } + MediaStore.scanFile(getContext(), visibleFolder); } } diff --git a/core/java/com/android/internal/statusbar/IStatusBarService.aidl b/core/java/com/android/internal/statusbar/IStatusBarService.aidl index 5fee2c9bbdd3..8f8e4d8dc108 100644 --- a/core/java/com/android/internal/statusbar/IStatusBarService.aidl +++ b/core/java/com/android/internal/statusbar/IStatusBarService.aidl @@ -48,8 +48,7 @@ interface IStatusBarService void setIconVisibility(String slot, boolean visible); @UnsupportedAppUsage void removeIcon(String slot); - // TODO(b/117478341): support back button change when IME is showing on a external display. - void setImeWindowStatus(in IBinder token, int vis, int backDisposition, + void setImeWindowStatus(int displayId, in IBinder token, int vis, int backDisposition, boolean showImeSwitcher); void expandSettingsPanel(String subPanel); diff --git a/core/java/com/android/internal/util/ContrastColorUtil.java b/core/java/com/android/internal/util/ContrastColorUtil.java index d037d4b42eed..bf088e0a2755 100644 --- a/core/java/com/android/internal/util/ContrastColorUtil.java +++ b/core/java/com/android/internal/util/ContrastColorUtil.java @@ -455,7 +455,7 @@ public class ContrastColorUtil { * Resolves {@param color} to an actual color if it is {@link Notification#COLOR_DEFAULT} */ public static int resolveColor(Context context, int color, boolean defaultBackgroundIsDark) { - if (color == Notification.COLOR_DEFAULT || defaultBackgroundIsDark) { + if (color == Notification.COLOR_DEFAULT) { int res = defaultBackgroundIsDark ? com.android.internal.R.color.notification_default_color_dark : com.android.internal.R.color.notification_default_color_light; diff --git a/core/jni/android_ddm_DdmHandleNativeHeap.cpp b/core/jni/android_ddm_DdmHandleNativeHeap.cpp index e22f581e14e2..076e99dd1fba 100644 --- a/core/jni/android_ddm_DdmHandleNativeHeap.cpp +++ b/core/jni/android_ddm_DdmHandleNativeHeap.cpp @@ -22,6 +22,9 @@ #include <jni.h> #include "core_jni_helpers.h" +#include <android-base/logging.h> +#include <bionic_malloc.h> + #include <utils/Log.h> #include <utils/String8.h> @@ -30,11 +33,6 @@ #include <sys/types.h> #include <sys/stat.h> -extern "C" void get_malloc_leak_info(uint8_t** info, size_t* overallSize, - size_t* infoSize, size_t* totalMemory, size_t* backtraceSize); - -extern "C" void free_malloc_leak_info(uint8_t* info); - #define DDMS_HEADER_SIGNATURE 0x812345dd #define DDMS_VERSION 2 @@ -78,9 +76,16 @@ static jbyteArray DdmHandleNativeHeap_getLeakInfo(JNIEnv* env, jobject) { ReadFile("/proc/self/maps", maps); header.mapSize = maps.size(); - uint8_t* allocBytes; - get_malloc_leak_info(&allocBytes, &header.allocSize, &header.allocInfoSize, - &header.totalMemory, &header.backtraceSize); + android_mallopt_leak_info_t leak_info; + if (!android_mallopt(M_GET_MALLOC_LEAK_INFO, &leak_info, sizeof(leak_info))) { + PLOG(ERROR) << "*** Failed to get malloc leak info"; + return nullptr; + } + + header.allocSize = leak_info.overall_size; + header.allocInfoSize = leak_info.info_size; + header.totalMemory = leak_info.total_memory; + header.backtraceSize = leak_info.backtrace_size; ALOGD("*** mapSize: %zu allocSize: %zu allocInfoSize: %zu totalMemory: %zu", header.mapSize, header.allocSize, header.allocInfoSize, header.totalMemory); @@ -98,10 +103,10 @@ static jbyteArray DdmHandleNativeHeap_getLeakInfo(JNIEnv* env, jobject) { env->SetByteArrayRegion(array, sizeof(header), maps.size(), reinterpret_cast<const jbyte*>(maps.string())); env->SetByteArrayRegion(array, sizeof(header) + maps.size(), - header.allocSize, reinterpret_cast<jbyte*>(allocBytes)); + header.allocSize, reinterpret_cast<jbyte*>(leak_info.buffer)); } - free_malloc_leak_info(allocBytes); + android_mallopt(M_FREE_MALLOC_LEAK_INFO, &leak_info, sizeof(leak_info)); return array; } diff --git a/core/jni/android_hardware_camera2_DngCreator.cpp b/core/jni/android_hardware_camera2_DngCreator.cpp index 1c247cbb7743..7052ed613591 100644 --- a/core/jni/android_hardware_camera2_DngCreator.cpp +++ b/core/jni/android_hardware_camera2_DngCreator.cpp @@ -1008,9 +1008,11 @@ static inline bool unDistortWithinPreCorrArray( double x, double y, const std::array<float, 6>& distortion, const float cx, const float cy, const float f, - int preCorrW, int preCorrH) { + const int preCorrW, const int preCorrH, const int xMin, const int yMin) { undistort(x, y, distortion, cx, cy, f); - if (x < 0.0 || y < 0.0 || x > preCorrW - 1 || y > preCorrH - 1) { + int xMax = xMin + preCorrW - 1; + int yMax = yMin + preCorrH - 1; + if (x < xMin || y < yMin || x > xMax || y > yMax) { return false; } return true; @@ -1019,40 +1021,48 @@ static inline bool unDistortWithinPreCorrArray( static inline bool boxWithinPrecorrectionArray( int left, int top, int right, int bottom, const std::array<float, 6>& distortion, - const float& cx, const float& cy, const float& f, - const int& preCorrW, const int& preCorrH){ + const float cx, const float cy, const float f, + const int preCorrW, const int preCorrH, const int xMin, const int yMin){ // Top row - if (!unDistortWithinPreCorrArray(left, top, distortion, cx, cy, f, preCorrW, preCorrH)) { + if (!unDistortWithinPreCorrArray(left, top, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { return false; } - if (!unDistortWithinPreCorrArray(cx, top, distortion, cx, cy, f, preCorrW, preCorrH)) { + if (!unDistortWithinPreCorrArray(cx, top, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { return false; } - if (!unDistortWithinPreCorrArray(right, top, distortion, cx, cy, f, preCorrW, preCorrH)) { + if (!unDistortWithinPreCorrArray(right, top, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { return false; } // Middle row - if (!unDistortWithinPreCorrArray(left, cy, distortion, cx, cy, f, preCorrW, preCorrH)) { + if (!unDistortWithinPreCorrArray(left, cy, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { return false; } - if (!unDistortWithinPreCorrArray(right, cy, distortion, cx, cy, f, preCorrW, preCorrH)) { + if (!unDistortWithinPreCorrArray(right, cy, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { return false; } // Bottom row - if (!unDistortWithinPreCorrArray(left, bottom, distortion, cx, cy, f, preCorrW, preCorrH)) { + if (!unDistortWithinPreCorrArray(left, bottom, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { return false; } - if (!unDistortWithinPreCorrArray(cx, bottom, distortion, cx, cy, f, preCorrW, preCorrH)) { + if (!unDistortWithinPreCorrArray(cx, bottom, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { return false; } - if (!unDistortWithinPreCorrArray(right, bottom, distortion, cx, cy, f, preCorrW, preCorrH)) { + if (!unDistortWithinPreCorrArray(right, bottom, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { return false; } return true; @@ -1062,7 +1072,8 @@ static inline bool scaledBoxWithinPrecorrectionArray( double scale/*must be <= 1.0*/, const std::array<float, 6>& distortion, const float cx, const float cy, const float f, - const int preCorrW, const int preCorrH){ + const int preCorrW, const int preCorrH, + const int xMin, const int yMin){ double left = cx * (1.0 - scale); double right = (preCorrW - 1) * scale + cx * (1.0 - scale); @@ -1070,14 +1081,14 @@ static inline bool scaledBoxWithinPrecorrectionArray( double bottom = (preCorrH - 1) * scale + cy * (1.0 - scale); return boxWithinPrecorrectionArray(left, top, right, bottom, - distortion, cx, cy, f, preCorrW, preCorrH); + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin); } static status_t findPostCorrectionScale( double stepSize, double minScale, const std::array<float, 6>& distortion, const float cx, const float cy, const float f, - const int preCorrW, const int preCorrH, + const int preCorrW, const int preCorrH, const int xMin, const int yMin, /*out*/ double* outScale) { if (outScale == nullptr) { ALOGE("%s: outScale must not be null", __FUNCTION__); @@ -1086,7 +1097,7 @@ static status_t findPostCorrectionScale( for (double scale = 1.0; scale > minScale; scale -= stepSize) { if (scaledBoxWithinPrecorrectionArray( - scale, distortion, cx, cy, f, preCorrW, preCorrH)) { + scale, distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin)) { *outScale = scale; return OK; } @@ -1100,16 +1111,18 @@ static status_t findPostCorrectionScale( // are sampled within the precorrection array static void normalizeLensDistortion( /*inout*/std::array<float, 6>& distortion, - float cx, float cy, float f, int preCorrW, int preCorrH) { - ALOGV("%s: distortion [%f, %f, %f, %f, %f, %f], (cx,cy) (%f, %f), f %f, (W,H) (%d, %d)", + float cx, float cy, float f, int preCorrW, int preCorrH, int xMin = 0, int yMin = 0) { + ALOGV("%s: distortion [%f, %f, %f, %f, %f, %f], (cx,cy) (%f, %f), f %f, (W,H) (%d, %d)" + ", (xmin, ymin, xmax, ymax) (%d, %d, %d, %d)", __FUNCTION__, distortion[0], distortion[1], distortion[2], distortion[3], distortion[4], distortion[5], - cx, cy, f, preCorrW, preCorrH); + cx, cy, f, preCorrW, preCorrH, + xMin, yMin, xMin + preCorrW - 1, yMin + preCorrH - 1); // Only update distortion coeffients if we can find a good bounding box double scale = 1.0; if (OK == findPostCorrectionScale(0.002, 0.5, - distortion, cx, cy, f, preCorrW, preCorrH, + distortion, cx, cy, f, preCorrW, preCorrH, xMin, yMin, /*out*/&scale)) { ALOGV("%s: scaling distortion coefficients by %f", __FUNCTION__, scale); // The formula: @@ -1216,6 +1229,8 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image sp<TiffWriter> writer = new TiffWriter(); + uint32_t preXMin = 0; + uint32_t preYMin = 0; uint32_t preWidth = 0; uint32_t preHeight = 0; uint8_t colorFilter = 0; @@ -1225,6 +1240,8 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image camera_metadata_entry entry = characteristics.find(ANDROID_SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE); BAIL_IF_EMPTY_RET_NULL_SP(entry, env, TAG_IMAGEWIDTH, writer); + preXMin = static_cast<uint32_t>(entry.data.i32[0]); + preYMin = static_cast<uint32_t>(entry.data.i32[1]); preWidth = static_cast<uint32_t>(entry.data.i32[2]); preHeight = static_cast<uint32_t>(entry.data.i32[3]); @@ -1966,9 +1983,16 @@ static sp<TiffWriter> DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image distortion[i+1] = entry3.data.f[i]; } - // TODO b/118690688: deal with the case where RAW size != preCorrSize if (preWidth == imageWidth && preHeight == imageHeight) { normalizeLensDistortion(distortion, cx, cy, f, preWidth, preHeight); + } else { + // image size == pixel array size (contains optical black pixels) + // cx/cy is defined in preCorrArray so adding the offset + // Also changes default xmin/ymin so that pixels are only + // sampled within preCorrection array + normalizeLensDistortion( + distortion, cx + preXMin, cy + preYMin, f, preWidth, preHeight, + preXMin, preYMin); } float m_x = std::fmaxf(preWidth-1 - cx, cx); diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index 195fe58f0beb..69a7c4d80532 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -33,6 +33,8 @@ #include <string> #include <vector> +#include <android-base/logging.h> +#include <bionic_malloc.h> #include <debuggerd/client.h> #include <log/log.h> #include <utils/misc.h> @@ -663,9 +665,6 @@ static bool openFile(JNIEnv* env, jobject fileDescriptor, UniqueFile& fp) return true; } -/* pulled out of bionic */ -extern "C" void write_malloc_leak_info(FILE* fp); - /* * Dump the native heap, writing human-readable output to the specified * file descriptor. @@ -681,8 +680,11 @@ static void android_os_Debug_dumpNativeHeap(JNIEnv* env, jobject, ALOGD("Native heap dump starting...\n"); // Formatting of the native heap dump is handled by malloc debug itself. // See https://android.googlesource.com/platform/bionic/+/master/libc/malloc_debug/README.md#backtrace-heap-dump-format - write_malloc_leak_info(fp.get()); - ALOGD("Native heap dump complete.\n"); + if (android_mallopt(M_WRITE_MALLOC_LEAK_INFO_TO_FILE, fp.get(), sizeof(FILE*))) { + ALOGD("Native heap dump complete.\n"); + } else { + PLOG(ERROR) << "Failed to write native heap dump to file"; + } } /* diff --git a/core/proto/android/server/jobscheduler.proto b/core/proto/android/server/jobscheduler.proto index 1e0b0d84e04d..dc2e6d5d2d41 100644 --- a/core/proto/android/server/jobscheduler.proto +++ b/core/proto/android/server/jobscheduler.proto @@ -478,6 +478,54 @@ message StateControllerProto { } repeated TrackedJob tracked_jobs = 4; + message ExecutionStats { + option (.android.msg_privacy).dest = DEST_AUTOMATIC; + + optional JobStatusDumpProto.Bucket standby_bucket = 1; + + // The time after which this record should be considered invalid (out of date), in the + // elapsed realtime timebase. + optional int64 expiration_time_elapsed = 2; + optional int64 window_size_ms = 3; + + /** The total amount of time the app ran in its respective bucket window size. */ + optional int64 execution_time_in_window_ms = 4; + optional int32 bg_job_count_in_window = 5; + + /** + * The total amount of time the app ran in the last + * {@link QuotaController#MAX_PERIOD_MS}. + */ + optional int64 execution_time_in_max_period_ms = 6; + optional int32 bg_job_count_in_max_period = 7; + + /** + * The time after which the sum of all the app's sessions plus + * ConstantsProto.QuotaController.in_quota_buffer_ms equals the quota. This is only + * valid if + * execution_time_in_window_ms >= + * ConstantsProto.QuotaController.allowed_time_per_period_ms + * or + * execution_time_in_max_period_ms >= + * ConstantsProto.QuotaController.max_execution_time_ms. + */ + optional int64 quota_cutoff_time_elapsed = 8; + + /** + * The time after which job_count_in_allowed_time should be considered invalid, in the + * elapsed realtime timebase. + */ + optional int64 job_count_expiration_time_elapsed = 9; + + /** + * The number of jobs that ran in at least the last + * ConstantsProto.QuotaController.allowed_time_per_period_ms. + * It may contain a few stale entries since cleanup won't happen exactly every + * ConstantsProto.QuotaController.allowed_time_per_period_ms. + */ + optional int32 job_count_in_allowed_time = 10; + } + message Package { option (.android.msg_privacy).dest = DEST_AUTOMATIC; @@ -517,6 +565,8 @@ message StateControllerProto { optional Timer timer = 2; repeated TimingSession saved_sessions = 3; + + repeated ExecutionStats execution_stats = 4; } repeated PackageStats package_stats = 5; } diff --git a/core/res/res/layout/chooser_grid.xml b/core/res/res/layout/chooser_grid.xml index 68c62a6ebf3e..138e24e36753 100644 --- a/core/res/res/layout/chooser_grid.xml +++ b/core/res/res/layout/chooser_grid.xml @@ -41,21 +41,6 @@ android:layout_centerHorizontal="true" android:layout_alignParentTop="true" /> - <TextView android:id="@+id/profile_button" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_marginEnd="8dp" - android:paddingStart="8dp" - android:paddingEnd="8dp" - android:visibility="gone" - style="?attr/borderlessButtonStyle" - android:textAppearance="?attr/textAppearanceButton" - android:textColor="?attr/colorAccent" - android:gravity="center_vertical" - android:layout_below="@id/drag" - android:layout_alignParentRight="true" - android:singleLine="true"/> - <TextView android:id="@+id/title" android:layout_height="wrap_content" android:layout_width="wrap_content" @@ -67,7 +52,7 @@ android:paddingBottom="@dimen/chooser_view_spacing" android:paddingLeft="24dp" android:paddingRight="24dp" - android:layout_below="@id/profile_button" + android:layout_below="@id/drag" android:layout_centerHorizontal="true"/> </RelativeLayout> diff --git a/core/res/res/layout/chooser_profile_row.xml b/core/res/res/layout/chooser_profile_row.xml new file mode 100644 index 000000000000..1a24a073a122 --- /dev/null +++ b/core/res/res/layout/chooser_profile_row.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2019, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center"> + <TextView + android:id="@+id/profile_button" + android:layout_width="wrap_content" + android:layout_height="48dp" + style="?attr/borderlessButtonStyle" + android:textAppearance="?attr/textAppearanceButton" + android:textColor="?attr/colorAccent" + android:singleLine="true"/> +</LinearLayout> + diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 38ee208012e9..cc7d7ea93f87 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -290,7 +290,7 @@ <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"SMS-boodskappe te stuur en te bekyk"</string> <string name="permgrouprequest_sms" msgid="7168124215838204719">"Laat <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toe om SMS\'e te stuur en te bekyk?"</string> - <string name="permgrouplab_storage" msgid="1971118770546336966">"Stoor"</string> + <string name="permgrouplab_storage" msgid="1971118770546336966">"Berging"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"toegang te verkry tot foto\'s, media en lêers op jou toestel"</string> <string name="permgrouprequest_storage" msgid="7885942926944299560">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot jou foto\'s, media en lêers op jou toestel?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofoon"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 81681abb8ac0..93edf6d6f477 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -289,7 +289,7 @@ <string name="managed_profile_label" msgid="8947929265267690522">"التبديل إلى الملف الشخصي للعمل"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"جهات الاتصال"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"الوصول إلى جهات اتصالك"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالدخول إلى جهات الاتصال؟"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى جهات الاتصال؟"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"الموقع الجغرافي"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"الوصول إلى موقع هذا الجهاز"</string> <string name="permgrouprequest_location" msgid="3788275734953323491">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى الموقع الجغرافي لهذا الجهاز؟"</string> @@ -316,7 +316,7 @@ <string name="permgrouprequest_camera" msgid="1299833592069671756">"هل تريد السماح لخدمة <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالتقاط صور وتسجيل فيديو؟"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"سجلّ المكالمات"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"قراءة سجلّ المكالمات الهاتفية والكتابة إليه"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالدخول إلى سجلات مكالماتك الهاتفية؟"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى سجلّ مكالماتك الهاتفية؟"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"الهاتف"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"إجراء مكالمات هاتفية وإدارتها"</string> <string name="permgrouprequest_phone" msgid="9166979577750581037">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بإجراء المكالمات الهاتفية وإدارتها؟"</string> @@ -839,7 +839,7 @@ <string name="lockscreen_transport_stop_description" msgid="5907083260651210034">"إيقاف"</string> <string name="lockscreen_transport_rew_description" msgid="6944412838651990410">"إرجاع"</string> <string name="lockscreen_transport_ffw_description" msgid="42987149870928985">"تقديم سريع"</string> - <string name="emergency_calls_only" msgid="6733978304386365407">"مكالمات طوارئ فقط"</string> + <string name="emergency_calls_only" msgid="6733978304386365407">"مكالمات الطوارئ فقط"</string> <string name="lockscreen_network_locked_message" msgid="143389224986028501">"الشبكة مؤمّنة"</string> <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"شريحة SIM مؤمّنة بكود PUK."</string> <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"راجع دليل المستخدم أو اتصل بخدمة العملاء."</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 3d09ee3eef66..d35c9f11b967 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -293,9 +293,9 @@ <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"šalje i pregleda SMS poruke"</string> <string name="permgrouprequest_sms" msgid="7168124215838204719">"Želite li da omogućite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> šalje i pregleda SMS-ove?"</string> - <string name="permgrouplab_storage" msgid="1971118770546336966">"Memorija"</string> + <string name="permgrouplab_storage" msgid="1971118770546336966">"Memorijski prostor"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"pristupa slikama, medijima i datotekama na uređaju"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Želite li da omogućite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>pristupa slikama, medijskim datotekama i datotekama na uređaju?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Želite li da omogućite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> pristupa slikama, medijskim datotekama i datotekama na uređaju?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"snima zvuk"</string> <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Želite li da omogućite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> snima zvuk?"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 2ab14e9fc5b7..c0ec4b408dcb 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -1328,7 +1328,7 @@ <string name="wifi_connect_alert_message" msgid="6451273376815958922">"Праграма %1$s хоча падлучыцца да сеткі Wi-Fi %2$s"</string> <string name="wifi_connect_default_application" msgid="7143109390475484319">"Праграма"</string> <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi Direct"</string> - <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Пачаць работу Wi-Fi Direct. Гэта адключыць кліента або кропку доступу Wi-Fi."</string> + <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Пачаць работу Wi-Fi Direct. Гэта адключыць кліента або хот-спот Wi-Fi."</string> <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Немагчыма запусціць Wi-Fi Direct."</string> <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct уключаны"</string> <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Дакраніцеся, каб убачыць налады"</string> @@ -1511,7 +1511,7 @@ <string name="submit" msgid="1602335572089911941">"Перадаць"</string> <string name="car_mode_disable_notification_title" msgid="5704265646471239078">"Праграма для ваджэння ўключана"</string> <string name="car_mode_disable_notification_message" msgid="7647248420931129377">"Націсніце, каб выйсці з праграмы для ваджэння."</string> - <string name="tethered_notification_title" msgid="3146694234398202601">"USB-мадэм або кропка доступу Wi-Fi актыўныя"</string> + <string name="tethered_notification_title" msgid="3146694234398202601">"USB-мадэм або хот-спот Wi-Fi актыўныя"</string> <string name="tethered_notification_message" msgid="2113628520792055377">"Дакраніцеся, каб наладзіць."</string> <string name="disable_tether_notification_title" msgid="7526977944111313195">"Рэжым мадэма адключаны"</string> <string name="disable_tether_notification_message" msgid="2913366428516852495">"Звярніцеся да адміністратара па падрабязную інфармацыю"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 9bfc2119654e..2bdc2f61fbc8 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -292,7 +292,7 @@ <string name="permgrouprequest_sms" msgid="7168124215838204719">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à envoyer et à afficher des messages texte?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Stockage"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"accéder aux photos, aux contenus multimédias et aux fichiers sur votre appareil"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à accéder aux photos, aux médias et aux fichiers de votre appareil?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder aux photos, aux médias et aux fichiers de votre appareil?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Microphone"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"enregistrer des fichiers audio"</string> <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b&gt à enregistrer l\'audio?"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index d248f198a4bf..d3d3c94bd7cb 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -277,10 +277,10 @@ <string name="managed_profile_label" msgid="8947929265267690522">"Passer au profil pro"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"Contacts"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"accéder à vos contacts"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Permettre à <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> d\'accéder à vos contacts ?"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Autoriser l\'appli <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder à vos contacts ?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Localisation"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"accéder à la position de l\'appareil"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"Permettre à l\'application <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> d\'accéder à la position de cet appareil ?"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"Autoriser l\'appli <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder à la position de cet appareil ?"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"L\'application n\'a accès à la position de l\'appareil que lorsqu\'elle est ouverte"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder <b>en permanence</b> à la position de cet appareil ?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"L\'application peut actuellement accéder à la position uniquement pendant que vous l\'utilisez"</string> @@ -292,22 +292,22 @@ <string name="permgrouprequest_sms" msgid="7168124215838204719">"Permettre à <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> d\'envoyer et d\'afficher des SMS ?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Stockage"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"accéder aux photos, contenus multimédias et fichiers sur votre appareil"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder aux photos, contenus multimédias et fichiers sur votre appareil ?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Autoriser l\'appli <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder aux photos, contenus multimédias et fichiers sur votre appareil ?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Microphone"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"enregistrer des fichiers audio"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Permettre à <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> d\'enregistrer des contenus audio ?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Autoriser l\'appli <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à enregistrer des contenus audio ?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"données d\'activité physique"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"accéder aux données d\'activité physique"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Autoriser <xliff:g id="APP_NAME">%1$s</xliff:g> à accéder aux données relatives à votre activité physique ?"</string> <string name="permgrouplab_camera" msgid="4820372495894586615">"Appareil photo"</string> <string name="permgroupdesc_camera" msgid="3250611594678347720">"prendre des photos et enregistrer des vidéos"</string> - <string name="permgrouprequest_camera" msgid="1299833592069671756">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à prendre des photos et enregistrer des vidéos ?"</string> + <string name="permgrouprequest_camera" msgid="1299833592069671756">"Autoriser l\'appli <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à prendre des photos et enregistrer des vidéos ?"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"Journaux d\'appels"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"Lire et écrire les journaux d\'appels du téléphone"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Permettre à <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> d\'accéder aux journaux d\'appels de votre téléphone ?"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Autoriser l\'appli <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder aux journaux d\'appels de votre téléphone ?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Téléphone"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"effectuer et gérer des appels téléphoniques"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"Permettre à <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> de passer et gérer des appels téléphoniques ?"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"Autoriser l\'appli <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à passer et gérer des appels téléphoniques ?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"Capteurs corporels"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"accéder aux données des capteurs relatives à vos signes vitaux"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Permettre à <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> d\'accéder aux données des capteurs relatives à vos signes vitaux ?"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index b90a9ac6eef1..67ef4b3a96f9 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -141,10 +141,8 @@ <string name="wfcSpnFormat_wifi_calling_wo_hyphen" msgid="1336669776254502831">"वाई-फ़ाई कॉलिंग"</string> <string name="wfcSpnFormat_vowifi" msgid="1765176406171272629">"VoWifi"</string> <string name="wifi_calling_off_summary" msgid="8720659586041656098">"बंद"</string> - <!-- no translation found for wfc_mode_wifi_preferred_summary (7335489823608689868) --> - <skip /> - <!-- no translation found for wfc_mode_cellular_preferred_summary (7081742743152286290) --> - <skip /> + <string name="wfc_mode_wifi_preferred_summary" msgid="7335489823608689868">"वाई-फ़ाई के ज़रिए कॉल करें"</string> + <string name="wfc_mode_cellular_preferred_summary" msgid="7081742743152286290">"मोबाइल नेटवर्क के ज़रिए कॉल"</string> <string name="wfc_mode_wifi_only_summary" msgid="2379919155237869320">"केवल वाई-फ़ाई"</string> <string name="cfTemplateNotForwarded" msgid="1683685883841272560">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: अग्रेषित नहीं किया गया"</string> <string name="cfTemplateForwarded" msgid="1302922117498590521">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: <xliff:g id="DIALING_NUMBER">{1}</xliff:g>"</string> @@ -230,8 +228,7 @@ <string name="global_action_bug_report" msgid="7934010578922304799">"गड़बड़ी की रिपोर्ट"</string> <string name="global_action_logout" msgid="935179188218826050">"सत्र खत्म करें"</string> <string name="global_action_screenshot" msgid="8329831278085426283">"स्क्रीनशॉट"</string> - <!-- no translation found for bugreport_title (5981047024855257269) --> - <skip /> + <string name="bugreport_title" msgid="5981047024855257269">"बग रिपोर्ट"</string> <string name="bugreport_message" msgid="398447048750350456">"इससे ईमेल भेजने के लिए, आपके डिवाइस की मौजूदा स्थिति से जुड़ी जानकारी इकट्ठा की जाएगी. गड़बड़ी की रिपोर्ट बनना शुरू होने से लेकर भेजने के लिए तैयार होने तक कुछ समय लगेगा; कृपया इंतज़ार करें."</string> <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"सहभागी रिपोर्ट"</string> <string name="bugreport_option_interactive_summary" msgid="229299488536107968">"ज़्यादातर परिस्थितियों में इसका उपयोग करें. यह आपको रिपोर्ट की प्रगति ट्रैक करने देता है, समस्या के बारे में ज़्यादा विवरण डालने देता है और स्क्रीनशॉट लेने देता है. यह आपको ऐसे कम उपयोग किए गए अनुभाग मिटाने दे सकता है जिनकी रिपोर्ट करने में ज़्यादा समय लगता है."</string> @@ -284,12 +281,9 @@ <string name="permgrouplab_location" msgid="7275582855722310164">"जगह"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"इस डिवाइस की जगह तक पहुंचने दें"</string> <string name="permgrouprequest_location" msgid="3788275734953323491">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को इस डिवाइस की \'जगह की जानकारी\' एक्सेस करने की अनुमति देना चाहते हैं?"</string> - <!-- no translation found for permgrouprequestdetail_location (1347189607421252902) --> - <skip /> - <!-- no translation found for permgroupbackgroundrequest_location (5039063878675613235) --> - <skip /> - <!-- no translation found for permgroupbackgroundrequestdetail_location (4597006851453417387) --> - <skip /> + <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ऐप्लिकेशन, डिवाइस की जगह की जानकारी सिर्फ़ तभी देख पाएगा जब आप इसका इस्तेमाल कर रहे हों"</string> + <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"क्या आप <xliff:g id="APP_NAME">%1$s</xliff:g> को हमेशा के लिए जगह की जानकारी एक्सेस करने की अनुमति देना चाहते हैं?"</string> + <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"इस समय ऐप्लिकेशन, डिवाइस की \'जगह की जानकारी\' सिर्फ़ तभी देख पाएगा जब आप इसका इस्तेमाल कर रहे हों"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"कैलेंडर"</string> <string name="permgroupdesc_calendar" msgid="3889615280211184106">"अपने कैलेंडर को ऐक्सेस करने"</string> <string name="permgrouprequest_calendar" msgid="289900767793189421">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को अपना कैलेंडर देखने की अनुमति देना चाहते हैं?"</string> @@ -302,12 +296,9 @@ <string name="permgrouplab_microphone" msgid="171539900250043464">"माइक्रोफ़ोन"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"ऑडियो रिकॉर्ड करें"</string> <string name="permgrouprequest_microphone" msgid="9167492350681916038">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को ऑडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?"</string> - <!-- no translation found for permgrouplab_activityRecognition (1565108047054378642) --> - <skip /> - <!-- no translation found for permgroupdesc_activityRecognition (6949472038320473478) --> - <skip /> - <!-- no translation found for permgrouprequest_activityRecognition (7626438016904799383) --> - <skip /> + <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"शारीरिक गतिविधि"</string> + <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"शारीरिक गतिविधि की जानकारी पा सकता है"</string> + <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को अपनी शारीरिक गतिविधि की जानकारी पाने की अनुमति देना चाहते हैं?"</string> <string name="permgrouplab_camera" msgid="4820372495894586615">"कैमरा"</string> <string name="permgroupdesc_camera" msgid="3250611594678347720">"चित्र लेने और वीडियो रिकॉर्ड करने"</string> <string name="permgrouprequest_camera" msgid="1299833592069671756">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> को फ़ोटो खींचने और वीडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?"</string> @@ -512,10 +503,8 @@ <string name="permdesc_nfc" msgid="7120611819401789907">"ऐप्स को नियर फ़ील्ड कम्यूनिकेशन (NFC) टैग, कार्ड, और रीडर के साथ संचार करने देता है."</string> <string name="permlab_disableKeyguard" msgid="3598496301486439258">"अपना स्क्रीन लॉक अक्षम करें"</string> <string name="permdesc_disableKeyguard" msgid="6034203065077122992">"ऐप्स को कीलॉक और कोई भी संबद्ध पासवर्ड सुरक्षा अक्षम करने देता है. उदाहरण के लिए, इनकमिंग फ़ोन कॉल प्राप्त करते समय फ़ोन, कीलॉक को अक्षम कर देता है, फिर कॉल खत्म होने पर कीलॉक को फिर से सक्षम कर देता है."</string> - <!-- no translation found for permlab_requestPasswordComplexity (202650535669249674) --> - <skip /> - <!-- no translation found for permdesc_requestPasswordComplexity (4730994229754212347) --> - <skip /> + <string name="permlab_requestPasswordComplexity" msgid="202650535669249674">"जानें कि स्क्रीन लॉक कितना मुश्किल बनाया गया है"</string> + <string name="permdesc_requestPasswordComplexity" msgid="4730994229754212347">"यह मंज़ूरी मिलने के बाद ऐप्लिकेशन जान पाता है कि स्क्रीन लॉक कितना मुश्किल (बहुत ज़्यादा, मध्यम, कम या बिल्कुल नहीं) है. इस स्तर से यह पता चलता है कि स्क्रीन लॉक कितना लंबा या किस तरह का है. ऐप्लिकेशन उपयोगकर्ताओं को यह सुझाव भी दे सकता है कि वे स्क्रीन लॉक को एक तय लेवल तक अपडेट करें. लेकिन उपयोगकर्ता इसे बेझिझक अनदेखा करके छोड़ सकते हैं. ध्यान दें कि स्क्रीन लॉक को सादे टेक्स्ट में सेव नहीं किया जाता है इसलिए ऐप्लिकेशन को सटीक पासवर्ड पता नहीं होता है."</string> <string name="permlab_useBiometric" msgid="8837753668509919318">"बायोमीट्रिक हार्डवेयर इस्तेमाल करने दें"</string> <string name="permdesc_useBiometric" msgid="8389855232721612926">"पुष्टि के लिए, ऐप्लिकेशन को बायोमीट्रिक हार्डवेयर इस्तेमाल करने की मंज़ूरी दें"</string> <string name="permlab_manageFingerprint" msgid="5640858826254575638">"उंगली की छाप के लिए हार्डवेयर को प्रबंधित करें"</string> @@ -564,55 +553,36 @@ <string name="permdesc_manageFace" msgid="8919637120670185330">"ऐप्लिकेशन को चेहरे के टेम्पलेट इस्तेमाल के तरीके जोड़ने और मिटाने की मंज़ूरी मिलती है."</string> <string name="permlab_useFaceAuthentication" msgid="8996134460546804535">"चेहरे की पुष्टि करने वाला हार्डवेयर इस्तेमाल करें"</string> <string name="permdesc_useFaceAuthentication" msgid="5011118722951833089">"ऐप्लिकेशन को चेहरे की पुष्टि करने वाले हार्डवेयर का इस्तेमाल करने की मंज़ूरी मिलती है"</string> - <!-- no translation found for face_acquired_insufficient (2767330364802375742) --> - <skip /> - <!-- no translation found for face_acquired_too_bright (5005650874582450967) --> - <skip /> - <!-- no translation found for face_acquired_too_dark (1966194696381394616) --> - <skip /> - <!-- no translation found for face_acquired_too_close (1401011882624272753) --> - <skip /> - <!-- no translation found for face_acquired_too_far (1210969240069012510) --> - <skip /> - <!-- no translation found for face_acquired_too_high (3362395713403348013) --> - <skip /> - <!-- no translation found for face_acquired_too_low (488983581737550912) --> - <skip /> - <!-- no translation found for face_acquired_too_right (3667075962661863218) --> - <skip /> - <!-- no translation found for face_acquired_too_left (3148242963894703424) --> - <skip /> - <!-- no translation found for face_acquired_poor_gaze (8471716624377228327) --> - <skip /> - <!-- no translation found for face_acquired_not_detected (4885504661626728809) --> - <skip /> - <!-- no translation found for face_acquired_too_much_motion (3149332171102108851) --> - <skip /> + <string name="face_acquired_insufficient" msgid="2767330364802375742">"चेहरे से जुड़ा सटीक डेटा कैप्चर नहीं किया जा सका. फिर से कोशिश करें."</string> + <string name="face_acquired_too_bright" msgid="5005650874582450967">"बहुत रोशनी है. हल्की रोशनी आज़माएं."</string> + <string name="face_acquired_too_dark" msgid="1966194696381394616">"बहुत अंधेरा है. बेहतर रोशनी में आज़माएं."</string> + <string name="face_acquired_too_close" msgid="1401011882624272753">"फ़ोन को दूर ले जाएं."</string> + <string name="face_acquired_too_far" msgid="1210969240069012510">"फ़ोन को नज़दीक ले जाएं."</string> + <string name="face_acquired_too_high" msgid="3362395713403348013">"फ़ोन को और ऊपर ले जाएं."</string> + <string name="face_acquired_too_low" msgid="488983581737550912">"फ़ोन को थोड़ा नीचे ले जाएं."</string> + <string name="face_acquired_too_right" msgid="3667075962661863218">"फ़ोन को बाईं ओर घुमाएं."</string> + <string name="face_acquired_too_left" msgid="3148242963894703424">"फ़ोन को दाईं ओर घुमाएं."</string> + <string name="face_acquired_poor_gaze" msgid="8471716624377228327">"खुली आंखों से स्क्रीन देखें."</string> + <string name="face_acquired_not_detected" msgid="4885504661626728809">"आपका चेहरा नहीं दिखाई दे रहा. फ़ोन की तरफ़ देखें."</string> + <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"डिवाइस बहुत ज़्यादा हिल रहा है. फ़ोन को बिना हिलाएं पकड़ें."</string> <string name="face_acquired_recalibrate" msgid="8077949502893707539">"कृपया फिर से अपने चेहरे की पहचान कराएं."</string> - <!-- no translation found for face_acquired_too_different (7663983770123789694) --> - <skip /> + <string name="face_acquired_too_different" msgid="7663983770123789694">"अब चेहरे की पहचान नहीं कर पा रहा. फिर से कोशिश करें."</string> <string name="face_acquired_too_similar" msgid="1508776858407646460">"चेहरा काफ़ी मिलता-जुलता है, कृपया अपना पोज़ बदलें."</string> - <!-- no translation found for face_acquired_pan_too_extreme (1852495480382773759) --> - <skip /> - <!-- no translation found for face_acquired_tilt_too_extreme (1290820400317982049) --> - <skip /> + <string name="face_acquired_pan_too_extreme" msgid="1852495480382773759">"कृपया स्क्रीन की तरफ़ सीधा देखें."</string> + <string name="face_acquired_tilt_too_extreme" msgid="1290820400317982049">"कृपया स्क्रीन की तरफ़ सीधा देखें."</string> <string name="face_acquired_roll_too_extreme" msgid="1444829237745898619">"कृपया अपना सिर सीधा करें, दाएं-बाएं न झुकाएं"</string> - <!-- no translation found for face_acquired_obscured (5747521031647744553) --> - <skip /> - <!-- no translation found for face_acquired_sensor_dirty (364493868630891300) --> - <skip /> + <string name="face_acquired_obscured" msgid="5747521031647744553">"अपने सिर और फ़ोन के बीच की दूरी हटाएं."</string> + <string name="face_acquired_sensor_dirty" msgid="364493868630891300">"कृपया कैमरा साफ़ करें."</string> <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="396883585636963908">"चेहरा नहीं पहचान पा रहे. हार्डवेयर उपलब्ध नहीं है."</string> - <!-- no translation found for face_error_timeout (2605673935810019129) --> - <skip /> + <string name="face_error_timeout" msgid="2605673935810019129">"चेहरे की पहचान का समय खत्म हुआ. फिर से कोशिश करें."</string> <string name="face_error_no_space" msgid="2712120617457553825">"चेहरे का नया डेटा सेव नहीं हो सकता. कोई पुराना डेटा मिटाएं."</string> <string name="face_error_canceled" msgid="2768146728600802422">"चेहरा पहचानने की कार्रवाई रद्द की गई"</string> <string name="face_error_user_canceled" msgid="9003022830076496163">"उपयोगकर्ता ने \'चेहरे की पहचान\' रद्द कर दी."</string> <string name="face_error_lockout" msgid="3407426963155388504">"कई बार कोशिश की गई. बाद में कोशिश करें."</string> <string name="face_error_lockout_permanent" msgid="3485837851962070925">"कई बार कोशिश की जा चुकी है. \'चेहरे की पहचान\' बंद कर दी गई."</string> - <!-- no translation found for face_error_unable_to_process (4940944939691171539) --> - <skip /> + <string name="face_error_unable_to_process" msgid="4940944939691171539">"चेहरा नहीं पहचान पा रहे. फिर से कोशिश करें."</string> <string name="face_error_not_enrolled" msgid="2600952202843125796">"आपने डिवाइस पर \'चेहरे की पहचान\' सेट नहीं की है."</string> <string name="face_error_hw_not_present" msgid="1317845121210260372">"इस डिवाइस पर \'चेहरे की पहचान\' सुविधा काम नहीं करती."</string> <string name="face_name_template" msgid="7004562145809595384">"चेहरा <xliff:g id="FACEID">%d</xliff:g>"</string> @@ -1232,12 +1202,10 @@ <string name="new_app_action" msgid="6694851182870774403">"<xliff:g id="NEW_APP">%1$s</xliff:g> खोलें"</string> <string name="new_app_description" msgid="5894852887817332322">"<xliff:g id="OLD_APP">%1$s</xliff:g> बिना सेव किए बंद हो जाएगा"</string> <string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> मेमोरी सीमा को पार कर गई है"</string> - <!-- no translation found for dump_heap_ready_notification (1162196579925048701) --> - <skip /> + <string name="dump_heap_ready_notification" msgid="1162196579925048701">"<xliff:g id="PROC">%1$s</xliff:g> हीप डंप तैयार है"</string> <string name="dump_heap_notification_detail" msgid="3993078784053054141">"हीप डंप (Java™ प्रोसेस मेमोरी का स्नैपशॉट) ले लिया गया है. शेयर करने के लिए टैप करें."</string> <string name="dump_heap_title" msgid="5864292264307651673">"हीप डंप शेयर करें?"</string> - <!-- no translation found for dump_heap_text (8546022920319781701) --> - <skip /> + <string name="dump_heap_text" msgid="8546022920319781701">"<xliff:g id="PROC">%1$s</xliff:g> प्रक्रिया अपनी <xliff:g id="SIZE">%2$s</xliff:g> की मेमोरी सीमा पार कर चुकी है. एक हीप डंप इसके डेवलपर के साथ शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी निजी जानकारी भी शामिल हो सकती है जिसका एक्सेस ऐप्लिकेशन के पास हो."</string> <string name="dump_heap_system_text" msgid="3236094872980706024">"<xliff:g id="PROC">%1$s</xliff:g> प्रक्रिया अपनी <xliff:g id="SIZE">%2$s</xliff:g> की मेमोरी सीमा पार कर चुकी है. एक हीप डंप शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी संवेदनशील निजी जानकारी भी शामिल हो सकती है जिसका एक्सेस प्रोसेस के पास हो. इसमें आपके टाइप किए गए शब्दों का डेटा भी शामिल है."</string> <string name="dump_heap_ready_text" msgid="1778041771455343067">"<xliff:g id="PROC">%1$s</xliff:g> प्रक्रिया का हीप डंप शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी संवेदनशील निजी जानकारी शामिल हो सकती है जिसका एक्सेस प्रोसेस के पास हो. इसमें आपके टाइप किए गए शब्दों का डेटा भी शामिल है."</string> <string name="sendText" msgid="5209874571959469142">"मैसेज करने के लिए कोई कार्रवाई चुनें"</string> @@ -1278,10 +1246,8 @@ <string name="wifi_available_content_failed_to_connect" msgid="3377406637062802645">"सभी नेटवर्क देखने के लिए यहां पर टैप करें"</string> <string name="wifi_available_action_connect" msgid="2635699628459488788">"कनेक्ट करें"</string> <string name="wifi_available_action_all_networks" msgid="4368435796357931006">"सभी नेटवर्क"</string> - <!-- no translation found for wifi_suggestion_title (9099832833531486167) --> - <skip /> - <!-- no translation found for wifi_suggestion_content (5883181205841582873) --> - <skip /> + <string name="wifi_suggestion_title" msgid="9099832833531486167">"वाई-फ़ाई नेटवर्क से कनेक्ट करना चाहते हैं?"</string> + <string name="wifi_suggestion_content" msgid="5883181205841582873">"<xliff:g id="NAME">%s</xliff:g> का सुझाया हुआ"</string> <string name="wifi_suggestion_action_allow_app" msgid="3689946344485394085">"हां"</string> <string name="wifi_suggestion_action_disallow_app" msgid="7977918905605931385">"नहीं"</string> <string name="wifi_wakeup_onboarding_title" msgid="228772560195634292">"वाई-फ़ाई अपने आप चालू हो जाएगा"</string> @@ -1293,14 +1259,11 @@ <string name="network_available_sign_in" msgid="1848877297365446605">"नेटवर्क में साइन इन करें"</string> <!-- no translation found for network_available_sign_in_detailed (8000081941447976118) --> <skip /> - <!-- no translation found for wifi_no_internet (5198100389964214865) --> - <skip /> + <string name="wifi_no_internet" msgid="5198100389964214865">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> का इंटरनेट नहीं चल रहा है"</string> <string name="wifi_no_internet_detailed" msgid="8083079241212301741">"विकल्पों के लिए टैप करें"</string> <string name="captive_portal_logged_in_detailed" msgid="8489345381637456021">"जुड़ गया है"</string> - <!-- no translation found for network_partial_connectivity (7774883385494762741) --> - <skip /> - <!-- no translation found for network_partial_connectivity_detailed (1959697814165325217) --> - <skip /> + <string name="network_partial_connectivity" msgid="7774883385494762741">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> की कनेक्टिविटी सीमित है"</string> + <string name="network_partial_connectivity_detailed" msgid="1959697814165325217">"फिर भी कनेक्ट करने के लिए टैप करें"</string> <string name="wifi_softap_config_change" msgid="8475911871165857607">"आपकी हॉटस्पॉट सेटिंग के हिसाब से बदलाव हो गए हैं"</string> <string name="wifi_softap_config_change_summary" msgid="7601233252456548891">"आपका हॉटस्पॉट बैंड बदल गया है."</string> <string name="wifi_softap_config_change_detailed" msgid="8022936822860678033">"यह डिवाइस सिर्फ़ 5 गीगाहर्ट्ज़ की आपकी पसंद की सेटिंग पर काम नहीं करता, लेकिन जब भी 5 गीगाहर्ट्ज़ बैंड मौजूद होगा, डिवाइस उसका इस्तेमाल करने लगेगा."</string> @@ -1385,10 +1348,8 @@ <string name="adb_active_notification_title" msgid="6729044778949189918">"डीबग करने के लिए एडीबी कनेक्ट किया गया"</string> <string name="adb_active_notification_message" msgid="7463062450474107752">"यूएसबी को डीबग करने की सुविधा बंद करने के लिए टैप करें"</string> <string name="adb_active_notification_message" product="tv" msgid="8470296818270110396">"USB डीबग करना अक्षम करने के लिए चुनें."</string> - <!-- no translation found for test_harness_mode_notification_title (2216359742631914387) --> - <skip /> - <!-- no translation found for test_harness_mode_notification_message (1343197173054407119) --> - <skip /> + <string name="test_harness_mode_notification_title" msgid="2216359742631914387">"टेस्ट हार्नेस मोड चालू किया गया"</string> + <string name="test_harness_mode_notification_message" msgid="1343197173054407119">"टेस्ट हार्नेस मोड बंद करने के लिए फ़ैक्ट्री रीसेट करें."</string> <string name="usb_contaminant_detected_title" msgid="7136400633704058349">"यूएसबी पोर्ट में तरल चीज़ या कचरा है"</string> <string name="usb_contaminant_detected_message" msgid="832337061059487250">"यूएसबी पोर्ट अपने आप बंद हो गया है. ज़्यादा जानने के लिए टैप करें."</string> <string name="usb_contaminant_not_detected_title" msgid="4202417484434906086">"यूएसबी पोर्ट का इस्तेमाल करना सुरक्षित है"</string> @@ -1835,10 +1796,8 @@ <string name="package_updated_device_owner" msgid="1847154566357862089">"आपके व्यवस्थापक ने अपडेट किया है"</string> <string name="package_deleted_device_owner" msgid="2307122077550236438">"आपके व्यवस्थापक ने हटा दिया है"</string> <string name="confirm_battery_saver" msgid="639106420541753635">"ठीक है"</string> - <!-- no translation found for battery_saver_description_with_learn_more (2108984221113106294) --> - <skip /> - <!-- no translation found for battery_saver_description (6413346684861241431) --> - <skip /> + <string name="battery_saver_description_with_learn_more" msgid="2108984221113106294">"बैटरी सेवर बंद हो जाता है या बैटरी लाइफ़ बढ़ाने के लिए बैकग्राउंड गतिविधि, कुछ विजुअल इफ़ेक्ट और ज़्यादा बैटरी इस्तेमाल करने वाली सुविधाओं पर पाबंदी लग जाती है. "<annotation id="url">"ज़्यादा जानें"</annotation></string> + <string name="battery_saver_description" msgid="6413346684861241431">"बैटरी सेवर बंद हो जाता है या बैटरी लाइफ़ बढ़ाने के लिए बैकग्राउंड गतिविधि, कुछ विजुअल इफ़ेक्ट और ज़्यादा बैटरी इस्तेमाल करने वाली सुविधाओं पर पाबंदी लग जाती है."</string> <string name="data_saver_description" msgid="6015391409098303235">"डेटा खर्च, कम करने के लिए डेटा सेवर कुछ ऐप्लिकेशन को बैकग्राउंड में डेटा भेजने या डेटा पाने से रोकता है. आप फ़िलहाल जिस ऐप्लिकेशन का इस्तेमाल कर रहे हैं वह डेटा तक पहुंच सकता है लेकिन ऐसा कभी-कभी ही हो पाएगा. उदाहरण के लिए, इमेज तब तक दिखाई नहीं देंगी जब तक कि आप उन्हें टैप नहीं करते."</string> <string name="data_saver_enable_title" msgid="4674073932722787417">"डेटा बचाने की सेटिंग चालू करें?"</string> <string name="data_saver_enable_button" msgid="7147735965247211818">"चालू करें"</string> @@ -2033,22 +1992,14 @@ <string name="dynamic_mode_notification_channel_name" msgid="2348803891571320452">"रूटीन मोड जानकारी की सूचना"</string> <string name="dynamic_mode_notification_title" msgid="508815255807182035">"बैटरी आम तौर पर जितने समय चलती है, उससे पहले खत्म हो सकती है"</string> <string name="dynamic_mode_notification_summary" msgid="2541166298550402690">"बैटरी लाइफ़ बढ़ाने के लिए \'बैटरी सेवर\' चालू हो गया है"</string> - <!-- no translation found for battery_saver_notification_channel_name (2083316159716201806) --> - <skip /> - <!-- no translation found for battery_saver_sticky_disabled_notification_title (6376147579378764641) --> - <skip /> - <!-- no translation found for battery_saver_sticky_disabled_notification_summary (8090192609249817945) --> - <skip /> - <!-- no translation found for battery_saver_charged_notification_title (2960978289873161288) --> - <skip /> - <!-- no translation found for battery_saver_charged_notification_title (7555713825806482451) --> - <skip /> - <!-- no translation found for battery_saver_charged_notification_title (5954873381559605660) --> - <skip /> - <!-- no translation found for battery_saver_off_notification_summary (1374222493681267143) --> - <skip /> - <!-- no translation found for battery_saver_off_alternative_notification_summary (4340727818546508436) --> - <skip /> + <string name="battery_saver_notification_channel_name" msgid="2083316159716201806">"बैटरी सेवर"</string> + <string name="battery_saver_sticky_disabled_notification_title" msgid="6376147579378764641">"जब तक कि बैटरी फिर से कम नहीं हो जाती, तब तक बैटरी सेवर फिर से चालू नहीं होगा"</string> + <string name="battery_saver_sticky_disabled_notification_summary" msgid="8090192609249817945">"बैटरी ज़रूरत भर की चार्ज हो गई है. जब तक कि बैटरी फिर से कम नहीं हो जाती, तब तक बैटरी सेवर फिर से चालू नहीं होगा."</string> + <string name="battery_saver_charged_notification_title" product="default" msgid="2960978289873161288">"फ़ोन <xliff:g id="CHARGE_LEVEL">%1$s</xliff:g> चार्ज हो गया"</string> + <string name="battery_saver_charged_notification_title" product="tablet" msgid="7555713825806482451">"टैबलेट <xliff:g id="CHARGE_LEVEL">%1$s</xliff:g> प्रतिशत चार्ज हो गया है"</string> + <string name="battery_saver_charged_notification_title" product="device" msgid="5954873381559605660">"डिवाइस <xliff:g id="CHARGE_LEVEL">%1$s</xliff:g> चार्ज हो गया"</string> + <string name="battery_saver_off_notification_summary" msgid="1374222493681267143">"बैटरी सेवर बंद है. सुविधाओं पर अब पाबंदी नहीं है."</string> + <string name="battery_saver_off_alternative_notification_summary" msgid="4340727818546508436">"बैटरी सेवर बंद कर दिया गया है. सुविधाओं पर अब पाबंदी नहीं है."</string> <string name="mime_type_folder" msgid="7111951698626315204">"फ़ोल्डर"</string> <string name="mime_type_apk" msgid="5518003630972506900">"Android ऐप्लिकेशन"</string> <string name="mime_type_generic" msgid="6833871596845900027">"फ़ाइल"</string> @@ -2072,6 +2023,5 @@ <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> फ़ाइलें</item> <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> फ़ाइलें</item> </plurals> - <!-- no translation found for chooser_no_direct_share_targets (997970693708458895) --> - <skip /> + <string name="chooser_no_direct_share_targets" msgid="997970693708458895">"सीधे शेयर नहीं किया जा सकता"</string> </resources> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 46283d517965..e2c00a683329 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -277,40 +277,40 @@ <string name="managed_profile_label" msgid="8947929265267690522">"Բացել աշխատանքային պրոֆիլը"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"Կոնտակտներ"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"օգտագործել ձեր կոնտակտները"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել ձեր կոնտակտները:"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել ձեր կոնտակտները"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Տեղորոշում"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"տեղորոշել այս սարքը"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել այս սարքի տեղադրության տվյալները:"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"Թույլատրե՞լ, որ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-ն օգտագործի այս սարքի տեղադրության տվյալները"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Տեղադրության տվյալները հասանելի կլինեն հավելվածին, միայն երբ այն օգտագործելիս լինեք"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"<b>Միշտ</b> հասանելի դարձնե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին ձեր սարքի տեղադրությունը"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Տեղադրության տվյալները հասանելի կլինեն հավելվածին, միայն երբ այն օգտագործելիս լինեք"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"Օրացույց"</string> <string name="permgroupdesc_calendar" msgid="3889615280211184106">"օգտագործել օրացույցը"</string> - <string name="permgrouprequest_calendar" msgid="289900767793189421">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել ձեր օրացույցը:"</string> + <string name="permgrouprequest_calendar" msgid="289900767793189421">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել ձեր օրացույցը:"</string> <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"ուղարկել և դիտել SMS-ները"</string> - <string name="permgrouprequest_sms" msgid="7168124215838204719">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին ուղարկել և դիտել SMS հաղորդագրություններ:"</string> + <string name="permgrouprequest_sms" msgid="7168124215838204719">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին ուղարկել և դիտել SMS հաղորդագրություններ:"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Տարածք"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"օգտագործել լուսանկարները, մեդիա ֆայլերը և ձեր սարքում պահվող մյուս ֆայլերը"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել սարքում պահված լուսանկարները, մուլտիմեդիան և ֆայլերը"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել սարքում պահված լուսանկարները, մուլտիմեդիան և ֆայլերը"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Խոսափող"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"ձայնագրել"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին կատարել ձայնագրություն:"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին ձայնագրել"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"Ֆիզիկական ակտիվություն"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"հասանելիություն ֆիզիկական ակտիվությանը"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Հասանելի դարձնե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին ձեր ֆիզիկական ակտիվության տվյալները:"</string> <string name="permgrouplab_camera" msgid="4820372495894586615">"Տեսախցիկ"</string> <string name="permgroupdesc_camera" msgid="3250611594678347720">"լուսանկարել և տեսագրել"</string> - <string name="permgrouprequest_camera" msgid="1299833592069671756">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին լուսանկարել և տեսանկարել:"</string> + <string name="permgrouprequest_camera" msgid="1299833592069671756">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին լուսանկարել և տեսագրել"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"Զանգերի մատյան"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"հեռախոսազանգերի մատյանի դիտում և գրանցում"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել ձեր հեռախոսազանգերի մատյանները:"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին օգտագործել ձեր հեռախոսազանգերի մատյանները"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Հեռախոս"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"կատարել զանգեր և կառավարել զանգերը"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին կատարել հեռախոսազանգեր և կառավարել դրանք:"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին կատարել հեռախոսազանգեր և կառավարել դրանք"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"Մարմնի տվիչներ"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"օգտագործել սենսորների տվյալները ձեր օրգանիզմի վիճակի մասին"</string> - <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Թույլ տա՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին սենսորից ստանալ ձեր կենսագործունեության հիմնական տվյալները:"</string> + <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Թույլատրե՞լ <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> հավելվածին սենսորից ստանալ ձեր կենսագործունեության հիմնական տվյալները:"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Առբերել պատուհանի բովանդակությունը"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Վերլուծել գործող պատուհանի բովանդակությունը"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Միացնել Հպման միջոցով հետազոտումը"</string> @@ -1876,8 +1876,8 @@ <string name="default_notification_channel_label" msgid="5929663562028088222">"Չդասակարգված"</string> <string name="importance_from_user" msgid="7318955817386549931">"Դուք սահմանել եք այս ծանուցումների կարևորությունը:"</string> <string name="importance_from_person" msgid="9160133597262938296">"Կարևոր է, քանի որ որոշակի մարդիկ են ներգրավված:"</string> - <string name="user_creation_account_exists" msgid="1942606193570143289">"Թույլ տա՞լ <xliff:g id="APP">%1$s</xliff:g> հավելվածին <xliff:g id="ACCOUNT">%2$s</xliff:g> հաշվով նոր Օգտատեր ստեղծել:"</string> - <string name="user_creation_adding" msgid="4482658054622099197">"Թույլ տա՞լ <xliff:g id="APP">%1$s</xliff:g> հավելվածին <xliff:g id="ACCOUNT">%2$s</xliff:g> հաշվով նոր Օգտատեր ստեղծել (նման հաշվով Օգտատեր արդեն գոյություն ունի):"</string> + <string name="user_creation_account_exists" msgid="1942606193570143289">"Թույլատրե՞լ <xliff:g id="APP">%1$s</xliff:g> հավելվածին <xliff:g id="ACCOUNT">%2$s</xliff:g> հաշվով նոր Օգտատեր ստեղծել:"</string> + <string name="user_creation_adding" msgid="4482658054622099197">"Թույլատրե՞լ <xliff:g id="APP">%1$s</xliff:g> հավելվածին <xliff:g id="ACCOUNT">%2$s</xliff:g> հաշվով նոր Օգտատեր ստեղծել (նման հաշվով Օգտատեր արդեն գոյություն ունի):"</string> <string name="language_selection_title" msgid="2680677278159281088">"Ավելացնել լեզու"</string> <string name="country_selection_title" msgid="2954859441620215513">"Նախընտրելի տարածաշրջան"</string> <string name="search_language_hint" msgid="7042102592055108574">"Մուտքագրեք լեզուն"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 06221509a786..bebb79c71175 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -292,7 +292,7 @@ <string name="permgrouprequest_sms" msgid="7168124215838204719">"Consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di inviare e visualizzare SMS?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Archiviazione"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"accedere a foto, contenuti multimediali e file sul dispositivo"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Consentire a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere a foto, contenuti multimediali e file memorizzati sul dispositivo?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere a foto, contenuti multimediali e file memorizzati sul dispositivo?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfono"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"registrare audio"</string> <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di registrare audio?"</string> @@ -301,7 +301,7 @@ <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Vuoi consentire a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere alla tua attività fisica?"</string> <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotocamera"</string> <string name="permgroupdesc_camera" msgid="3250611594678347720">"scattare foto e registrare video"</string> - <string name="permgrouprequest_camera" msgid="1299833592069671756">"Consentire a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di scattare foto e registrare video?"</string> + <string name="permgrouprequest_camera" msgid="1299833592069671756">"Consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di scattare foto e registrare video?"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"Registri chiamate"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"leggere e scrivere il registro chiamate del telefono"</string> <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere ai registri chiamate del tuo telefono?"</string> @@ -1303,7 +1303,7 @@ <string name="sms_control_title" msgid="7296612781128917719">"Invio SMS"</string> <string name="sms_control_message" msgid="3867899169651496433">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> sta inviando molti SMS. Vuoi consentire all\'applicazione di continuare a inviare messaggi?"</string> <string name="sms_control_yes" msgid="3663725993855816807">"Consenti"</string> - <string name="sms_control_no" msgid="625438561395534982">"Nega"</string> + <string name="sms_control_no" msgid="625438561395534982">"Rifiuta"</string> <string name="sms_short_code_confirm_message" msgid="1645436466285310855">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> vorrebbe inviare un messaggio a <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b>."</string> <string name="sms_short_code_details" msgid="5873295990846059400"><b>"Potrebbero essere effettuati addebiti"</b>" sull\'account del tuo gestore di telefonia mobile."</string> <string name="sms_premium_short_code_details" msgid="7869234868023975"><b>"Verranno effettuati addebiti sull\'account del tuo gestore di telefonia mobile."</b></string> @@ -1438,7 +1438,7 @@ <string name="grant_credentials_permission_message_footer" msgid="3125211343379376561">"Accettare la richiesta?"</string> <string name="grant_permissions_header_text" msgid="6874497408201826708">"Richiesta di accesso"</string> <string name="allow" msgid="7225948811296386551">"Consenti"</string> - <string name="deny" msgid="2081879885755434506">"Nega"</string> + <string name="deny" msgid="2081879885755434506">"Rifiuta"</string> <string name="permission_request_notification_title" msgid="6486759795926237907">"Autorizzazione richiesta"</string> <string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"Autorizzazione richiesta\nper l\'account <xliff:g id="ACCOUNT">%s</xliff:g>."</string> <string name="forward_intent_to_owner" msgid="1207197447013960896">"Stai utilizzando l\'app al di fuori del tuo profilo di lavoro"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index b6eba2f925c0..cc1ab7e18465 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -277,40 +277,40 @@ <string name="managed_profile_label" msgid="8947929265267690522">"仕事用プロファイルに切り替える"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"連絡先"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"連絡先へのアクセス"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"連絡先へのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"連絡先へのアクセスを「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"位置情報"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"このデバイスの位置情報へのアクセス"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"このデバイスの位置情報へのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> - <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"このアプリは、ユーザーがアプリを使用している場合のみ位置情報にアクセスできます"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"このデバイスの位置情報へのアクセスを「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> + <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"このアプリは、ユーザーがアプリを使用している間のみ位置情報にアクセスできます"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"このデバイスの位置情報に<b>常に</b>?アクセスすることを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可します"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"現在、アプリは、ユーザーがアプリを使用している場合のみ位置情報にアクセスできます"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"カレンダー"</string> <string name="permgroupdesc_calendar" msgid="3889615280211184106">"カレンダーへのアクセス"</string> - <string name="permgrouprequest_calendar" msgid="289900767793189421">"カレンダーへのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouprequest_calendar" msgid="289900767793189421">"カレンダーへのアクセスを「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"SMSメッセージの送信と表示"</string> - <string name="permgrouprequest_sms" msgid="7168124215838204719">"SMS メッセージの送信と表示を <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouprequest_sms" msgid="7168124215838204719">"SMS メッセージの送信と表示を「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"ストレージ"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"デバイス内の写真、メディア、ファイルへのアクセス"</string> <string name="permgrouprequest_storage" msgid="7885942926944299560">"デバイス内の写真、メディア、ファイルへのアクセスを「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"マイク"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"音声の録音"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"音声の録音を <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"音声の録音を「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"運動データ"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"運動データにアクセス"</string> - <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"運動データへのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"運動データへのアクセスを「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_camera" msgid="4820372495894586615">"カメラ"</string> <string name="permgroupdesc_camera" msgid="3250611594678347720">"写真と動画の撮影"</string> <string name="permgrouprequest_camera" msgid="1299833592069671756">"写真と動画の撮影を「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"通話履歴"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"通話履歴の読み取りと書き込み"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"通話履歴へのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"通話履歴へのアクセスを「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"電話"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"電話の発信と管理"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"電話の発信と管理を <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"電話の発信と管理を「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"ボディセンサー"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"バイタルサインに関するセンサーデータへのアクセス"</string> - <string name="permgrouprequest_sensors" msgid="6349806962814556786">"バイタルサインに関するセンサーデータへのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouprequest_sensors" msgid="6349806962814556786">"バイタルサインに関するセンサーデータへのアクセスを「<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>」に許可しますか?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ウィンドウコンテンツの取得"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ユーザーがアクセスしているウィンドウのコンテンツを検査します。"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"タッチガイドの有効化"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index c203b4caee0a..34d218e87bd6 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -199,7 +199,7 @@ <string name="turn_on_radio" msgid="3912793092339962371">"უსადენო კავშირის ჩართვა"</string> <string name="turn_off_radio" msgid="8198784949987062346">"უსადენო ინტერნეტის გამორთვა"</string> <string name="screen_lock" msgid="799094655496098153">"ეკრანის დაბლოკვა"</string> - <string name="power_off" msgid="4266614107412865048">"გამორთვა"</string> + <string name="power_off" msgid="4266614107412865048">"გამორთვ."</string> <string name="silent_mode_silent" msgid="319298163018473078">"მრეკავი გათიშულია"</string> <string name="silent_mode_vibrate" msgid="7072043388581551395">"ვიბრაციის რეჟიმი"</string> <string name="silent_mode_ring" msgid="8592241816194074353">"ზარი ჩართულია"</string> @@ -223,7 +223,7 @@ <string name="global_actions" product="tv" msgid="7240386462508182976">"ტელევიზორის პარამეტრები"</string> <string name="global_actions" product="default" msgid="2406416831541615258">"ტელეფონის პარამეტრები"</string> <string name="global_action_lock" msgid="2844945191792119712">"ეკრანის დაბლოკვა"</string> - <string name="global_action_power_off" msgid="4471879440839879722">"კვების გამორთვა"</string> + <string name="global_action_power_off" msgid="4471879440839879722">"გამორთვ."</string> <string name="global_action_emergency" msgid="7112311161137421166">"საგანგებო სამსახურები"</string> <string name="global_action_bug_report" msgid="7934010578922304799">"ხარვეზის შესახებ ანგარიში"</string> <string name="global_action_logout" msgid="935179188218826050">"სესიის დასრულება"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 5f65ce448cac..b8bebe4bdae0 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -295,7 +295,7 @@ <string name="permgrouprequest_storage" msgid="7885942926944299560">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасына құрылғыдағы суреттерге, медиафайлдарға және басқа файлдарға кіруге рұқсат берілсін бе?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Микрофон"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"аудио жазу"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасына аудиомазмұн жазуға рұқсат берілсін бе?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасына дыбыс жазуға рұқсат берілсін бе?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"Физикалық әрекет"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"физикалық әрекет дерегін алу"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> қолданбасына физикалық әрекет дерегін алуға рұқсат етілсін бе?"</string> @@ -560,10 +560,8 @@ <string name="face_acquired_too_far" msgid="1210969240069012510">"Телефонды жақынырақ ұстаңыз."</string> <string name="face_acquired_too_high" msgid="3362395713403348013">"Телефонды жоғарырақ ұстаңыз."</string> <string name="face_acquired_too_low" msgid="488983581737550912">"Телефонды төменірек ұстаңыз."</string> - <!-- no translation found for face_acquired_too_right (3667075962661863218) --> - <skip /> - <!-- no translation found for face_acquired_too_left (3148242963894703424) --> - <skip /> + <string name="face_acquired_too_right" msgid="3667075962661863218">"Телефонды солға жылжытыңыз."</string> + <string name="face_acquired_too_left" msgid="3148242963894703424">"Телефонды оңға жылжытыңыз."</string> <string name="face_acquired_poor_gaze" msgid="8471716624377228327">"Экранға көзіңізді ашып қараңыз."</string> <string name="face_acquired_not_detected" msgid="4885504661626728809">"Бетіңіз көрінбейді. Телефонға қараңыз."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"Қозғалыс тым көп. Телефонды қозғалтпаңыз."</string> @@ -829,7 +827,7 @@ <string name="lockscreen_transport_stop_description" msgid="5907083260651210034">"Тоқтату"</string> <string name="lockscreen_transport_rew_description" msgid="6944412838651990410">"Кері айналдыру"</string> <string name="lockscreen_transport_ffw_description" msgid="42987149870928985">"Жылдам алға айналдыру"</string> - <string name="emergency_calls_only" msgid="6733978304386365407">"Төтенше қоңыраулар ғана"</string> + <string name="emergency_calls_only" msgid="6733978304386365407">"Құтқару қызметіне ғана қоңырау шалынады"</string> <string name="lockscreen_network_locked_message" msgid="143389224986028501">"Желі бекітілген"</string> <string name="lockscreen_sim_puk_locked_message" msgid="7441797339976230">"SIM картасы PUK арқылы бекітілген."</string> <string name="lockscreen_sim_puk_locked_instructions" msgid="8127916255245181063">"Пайдаланушы нұсқаулығын қараңыз немесе тұтынушыларды қолдау орталығына хабарласыңыз."</string> @@ -1466,7 +1464,7 @@ <string name="vpn_lockdown_config" msgid="8151951501116759194">"Желіні не VPN параметрлерін өзгерту"</string> <string name="upload_file" msgid="2897957172366730416">"Файлды таңдау"</string> <string name="no_file_chosen" msgid="6363648562170759465">"Ешқандай файл таңдалмаған"</string> - <string name="reset" msgid="2448168080964209908">"Қайта реттеу"</string> + <string name="reset" msgid="2448168080964209908">"Бастапқы күйге қайтару"</string> <string name="submit" msgid="1602335572089911941">"Жіберу"</string> <string name="car_mode_disable_notification_title" msgid="5704265646471239078">"Көлік жүргізу қолданбасы қосулы"</string> <string name="car_mode_disable_notification_message" msgid="7647248420931129377">"Көлік жүргізу қолданбасынан шығу үшін түртіңіз."</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 53fbac50b8b9..c5c5bf78f8c9 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -281,8 +281,8 @@ <string name="permgrouplab_location" msgid="7275582855722310164">"Жайгашкан жер"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"түзмөктүн жайгашкан жерин аныктоого"</string> <string name="permgrouprequest_location" msgid="3788275734953323491">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосу бул түзмөктүн кайда жүргөнүн көрүп турганга уруксат бересизби?"</string> - <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Сиз бул колдонмону пайдаланып жатканда гана ал жайгашкан жериңизди көрө алат"</string> - <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосуна бул түзмөктүн жайгашкан жерине <b>дайыма</b> кирүүгө уруксат бересизби?"</string> + <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Колдонмону колдонуп жаткан маалда гана, ал сиздин кайда жүргөнүңүздү билип турат."</string> + <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> колдонмосу бул түзмөктүн жүргөн жерин <b>ар дайым</b> билип турсунбу?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Колдонмону пайдаланып жаткан учурда гана ал жайгашкан жерди көрө алат"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"Жылнаама"</string> <string name="permgroupdesc_calendar" msgid="3889615280211184106">"жылнаамаңызды пайдалануу"</string> @@ -1319,7 +1319,7 @@ <string name="sim_done_button" msgid="827949989369963775">"Даяр"</string> <string name="sim_added_title" msgid="3719670512889674693">"SIM-карта кошулду"</string> <string name="sim_added_message" msgid="6599945301141050216">"Мобилдик түйүнкгө жетки алуу үчүн, түзмөгүңүздү өчүрүп кайра жандырыңыз."</string> - <string name="sim_restart_button" msgid="4722407842815232347">"Кайра баштоо"</string> + <string name="sim_restart_button" msgid="4722407842815232347">"Өчүрүп күйгүзүү"</string> <string name="install_carrier_app_notification_title" msgid="9056007111024059888">"Мобилдик кызматты жандыруу"</string> <string name="install_carrier_app_notification_text" msgid="3346681446158696001">"Жаңы SIM-картаны жандыруу үчүн байланыш операторунун колдонмосун жүктөп алыңыз"</string> <string name="install_carrier_app_notification_text_app_name" msgid="1196505084835248137">"Жаңы SIM-картаны жандыруу үчүн <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 7e0c866df7e2..acfdac8f05f3 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -560,10 +560,8 @@ <string name="face_acquired_too_far" msgid="1210969240069012510">"ຍ້າຍໂທລະສັບເຂົ້າໄປໃກ້ຂຶ້ນ."</string> <string name="face_acquired_too_high" msgid="3362395713403348013">"ຍົກໂທລະສັບໃຫ້ສູງຂຶ້ນ."</string> <string name="face_acquired_too_low" msgid="488983581737550912">"ເລື່ອນໂທລະສັບຕ່ຳລົງ."</string> - <!-- no translation found for face_acquired_too_right (3667075962661863218) --> - <skip /> - <!-- no translation found for face_acquired_too_left (3148242963894703424) --> - <skip /> + <string name="face_acquired_too_right" msgid="3667075962661863218">"ຍ້າຍໂທລະສັບໄປທາງຊ້າຍ."</string> + <string name="face_acquired_too_left" msgid="3148242963894703424">"ຍ້າຍໂທລະສັບໄປທາງຂວາ."</string> <string name="face_acquired_poor_gaze" msgid="8471716624377228327">"ກະລຸນາເບິ່ງໜ້າຈໍພ້ອມກັບເປີດຕາທ່ານ."</string> <string name="face_acquired_not_detected" msgid="4885504661626728809">"ບໍ່ສາມາດເບິ່ງເຫັນໜ້າຂອງທ່ານໄດ້. ກະລຸນາເບິ່ງໂທລະສັບ."</string> <string name="face_acquired_too_much_motion" msgid="3149332171102108851">"ເຄື່ອນໄຫວຫຼາຍເກີນໄປ. ກະລຸນາຖືໂທລະສັບໄວ້ຊື່ໆ."</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index d1685d93240a..6b465cc17c1d 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -304,7 +304,7 @@ <string name="permgrouprequest_camera" msgid="1299833592069671756">"Дали да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да фотографира и да снима видео?"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"Евиденција на повици"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"чита и пишува евиденција на повици во телефонот"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Дали да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> до евиденцијата на повици на телефонот?"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Дали да се дозволи пристап на <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> до евиденцијата на повици?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Телефон"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"упатува и управува со телефонски повици"</string> <string name="permgrouprequest_phone" msgid="9166979577750581037">"Дали да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да повикува и да управува со телефонските повици?"</string> diff --git a/core/res/res/values-night/colors.xml b/core/res/res/values-night/colors.xml index 37e452d72c9a..6aca49b673a3 100644 --- a/core/res/res/values-night/colors.xml +++ b/core/res/res/values-night/colors.xml @@ -22,7 +22,7 @@ <color name="notification_primary_text_color_dark">#ddffffff</color> <!-- The secondary text color if the text is on top of a dark background. --> - <color name="notification_secondary_text_color_dark">#ddffffff</color> + <color name="notification_secondary_text_color_dark">#b2ffffff</color> <color name="notification_default_color_dark">#ddffffff</color> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 5f4d343f2591..0c435694a207 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -278,9 +278,9 @@ <string name="permgrouplab_contacts" msgid="3657758145679177612">"ଯୋଗାଯୋଗ"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"ଆପଣଙ୍କ ଯୋଗାଯୋଗ ଆକ୍ସେସ୍ କରେ"</string> <string name="permgrouprequest_contacts" msgid="6032805601881764300">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ ଆପଣଙ୍କ ଯୋଗାଯୋଗଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string> - <string name="permgrouplab_location" msgid="7275582855722310164">"ଲୋକେଶନ୍"</string> - <string name="permgroupdesc_location" msgid="1346617465127855033">"ଏହି ଡିଭାଇସ୍ର ଲୋକେଶନ୍ ଆକ୍ସେସ୍ କରେ"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ ଏହି ଡିଭାଇସ୍ର ଲୋକେଶନ୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string> + <string name="permgrouplab_location" msgid="7275582855722310164">"ଲୋକେସନ୍"</string> + <string name="permgroupdesc_location" msgid="1346617465127855033">"ଏହି ଡିଭାଇସ୍ର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରେ"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ ଏହି ଡିଭାଇସ୍ର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଅନୁମତି ଦେବେ କି?"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"ଆପଣ ଆପ୍ ବ୍ୟବହାର କରୁଥିବା ବେଳେ କେବଳ ଲୋକେସନ୍କୁ ଆପ୍ର ଆକ୍ସେସ୍ ରହିବ।"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>କୁ ଏହି ଡିଭାଇସ୍ର ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବାକୁ <b>ସର୍ବଦା</b> ଅନୁମତି ଦେବେ କି?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"ବର୍ତ୍ତମାନ ଆପଣ କେବଳ ଆପ୍ ବ୍ୟବହାର କରୁଥିବା ବେଳେ ଆପ୍ ଆପଣଙ୍କ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିପାରିବ"</string> @@ -390,7 +390,7 @@ <string name="permlab_readContacts" msgid="8348481131899886131">"ଆପଣଙ୍କ ଯୋଗାଯୋଗ ପଢ଼ନ୍ତୁ"</string> <string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"ଜଣେ ନିର୍ଦ୍ଦିଷ୍ଟ ବ୍ୟକ୍ତିଙ୍କ ସହ ଆପଣ କେତେଥର କଲ୍, ଇମେଲ୍, ତଥା ଯୋଗାଯୋଗ କରିଛନ୍ତି, ତାହାର ନିୟମିତତା ସମେତ ଆପଣଙ୍କ ଟାବଲେଟ୍ରେ ଷ୍ଟୋର୍ ହୋଇଥିବା ଯୋଗାଯୋଗ ବିଷୟରେ ଡାଟା ପଢ଼ିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଏହ ଅନୁମତି ଦ୍ୱାରା ଆପଣଙ୍କ କଲ୍ ଲଗ୍ ସେଭ୍ କରିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ ତଥା ହାନୀକାରକ ଆପ୍ ଆପଣଙ୍କ ଅଜ୍ଞାତରେ କଲ୍ ଲଗ୍ ଡାଟା ଶେୟାର କରିପାରନ୍ତି।"</string> <string name="permdesc_readContacts" product="tv" msgid="1839238344654834087">"ଜଣେ ନିର୍ଦ୍ଦିଷ୍ଟ ବ୍ୟକ୍ତିଙ୍କ ସହ ଆପଣ କେତେଥର କଲ୍, ଇମେଲ୍, ତଥା ଯୋଗାଯୋଗ କରିଛନ୍ତି, ତାହାର ନିୟମିତତା ସମେତ ଆପଣଙ୍କ ଟିଭିରେ ଷ୍ଟୋର୍ ହୋଇଥିବା ଯୋଗାଯୋଗ ବିଷୟରେ ଡାଟା ପଢ଼ିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଏହାର ଅନୁମତି ଦ୍ୱାରା ଆଙ୍ଙକକ କଲ୍ ଲଗ୍ ସେଭ୍ କରିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ ତଥା ହାନୀକାରକ ଆପ୍ ଆପଣଙ୍କ ଅଜ୍ଞାତରେ କଲ୍ ଲଗ୍ ଡାଟା ଶେୟାର କରିପାରନ୍ତି।"</string> - <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"ଜଣେ ନିର୍ଦ୍ଦିଷ୍ଟ ବ୍ୟକ୍ତିଙ୍କ ସହ ଆପଣ କେତେ ବ୍ୟବଧାନରେ କଲ୍, ଇମେଲ ତଥା ଯୋଗାଯୋଗ କରିଛନ୍ତି, ସେସବୁ ଅନ୍ତର୍ଭୁକ୍ତ କରି ଆପଣଙ୍କ ଫୋନ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଯୋଗାଯୋଗ ବିଷୟରେ ଡାଟା ପଢିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଏହି ଅନୁମତି ଦ୍ୱାରା ଆପ୍ଟି ଆପଣଙ୍କ ଯୋଗାଯୋଗ ଡାଟା ସେଭ୍ କରିପାରିବ ଏବଂ ହାନୀକାରକ ଆପ୍ ଆପଣଙ୍କ ବିନା ଜ୍ଞାତସାରରେ ଯୋଗାଯୋଗ ଡାଟା ଶେୟାର୍ କରିପାରନ୍ତି।"</string> + <string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"ଜଣେ ନିର୍ଦ୍ଦିଷ୍ଟ ବ୍ୟକ୍ତିଙ୍କ ସହ ଆପଣ କେତେ ବ୍ୟବଧାନରେ କଲ୍, ଇମେଲ ତଥା ଯୋଗାଯୋଗ କରିଛନ୍ତି, ସେସବୁ ଅନ୍ତର୍ଭୁକ୍ତ କରି ଆପଣଙ୍କ ଫୋନ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଯୋଗାଯୋଗ ବିଷୟରେ ଡାଟା ପଢିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଏହି ଅନୁମତି ଦ୍ୱାରା ଆପ୍ଟି ଆପଣଙ୍କ ଯୋଗାଯୋଗ ଡାଟା ସେଭ୍ କରିପାରିବ ଏବଂ ହାନୀକାରକ ଆପ୍ ଆପଣଙ୍କ ବିନା ଜ୍ଞାତସାରରେ ଯୋଗାଯୋଗ ଡାଟା ସେୟାର୍ କରିପାରନ୍ତି।"</string> <string name="permlab_writeContacts" msgid="5107492086416793544">"ନିଜ ଯୋଗାଯୋଗ ସଂଶୋଧନ କରନ୍ତୁ"</string> <string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"ଜଣେ ନିର୍ଦ୍ଦିଷ୍ଟ ଯୋଗାଯୋଗଙ୍କ ସହ ଆପଣ କେତେ ବ୍ୟବଧାନରେ କଲ୍, ଇମେଲ ତଥା ଯୋଗାଯୋଗ କରିଛନ୍ତି, ସେସବୁ ଅନ୍ତର୍ଭୁକ୍ତ କରି ଆପଣଙ୍କ ଟାବଲେଟ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଯୋଗାଯୋଗ ବିଷୟକ ଡାଟା ବଦଳାଇବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଏହି ଅନୁମତି ଦ୍ୱାରା ଆପ୍ଟି ଯୋଗାଯୋଗ ଡାଟା ଡିଲିଟ୍ କରିପାରେ।"</string> <string name="permdesc_writeContacts" product="tv" msgid="5438230957000018959">"ଜଣେ ନିର୍ଦ୍ଦିଷ୍ଟ ଯୋଗାଯୋଗଙ୍କ ସହ ଆପଣ କେତେ ବ୍ୟବଧାନରେ କଲ୍, ଇମେଲ ତଥା ଯୋଗାଯୋଗ କରିଛନ୍ତି, ସେସବୁକୁ ଅନ୍ତର୍ଭୁକ୍ତ କରି ଆପଣଙ୍କ ଟିଭିରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ଯୋଗାଯୋଗ ବିଷୟରେ ଡାଟା ବଦଳାଇବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଏହି ଅନୁମତି ଦ୍ୱାରା ଆପ୍ଟି ଯୋଗାଯୋଗ ଡାଟା ଡିଲିଟ୍ କରିପାରେ।"</string> @@ -404,17 +404,17 @@ <string name="permlab_bodySensors" msgid="4683341291818520277">"ବଡୀ ସେନ୍ସର୍ ଆକ୍ସେସ୍ କରେ (ଯେପରିକି ହୃଦ୍ ହାର ମନିଟର୍)"</string> <string name="permdesc_bodySensors" product="default" msgid="4380015021754180431">"ଆପ୍କୁ ସେନ୍ସର୍ ଡେଟା ପର୍ଯ୍ୟନ୍ତ ପହଞ୍ଚିବାକୁ ଦେଇଥାଏ, ଯାହା ଆପଣଙ୍କ ଶାରୀରିକ ସ୍ଥିତିର ନିରୀକ୍ଷଣ କରିଥାଏ, ଯେପରିକି ଆପଣଙ୍କ ହୃଦୟ ସ୍ତର।"</string> <string name="permlab_readCalendar" msgid="6716116972752441641">"କ୍ୟାଲେଣ୍ଡର୍ ଇଭେଣ୍ଟ ଏବଂ ବିବରଣୀ ପଢ଼େ"</string> - <string name="permdesc_readCalendar" product="tablet" msgid="4993979255403945892">"ଆପଣଙ୍କ ଟାବଲେଟ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟ ଏହି ଆପ୍ ପଢ଼ିପାରେ ଏବଂ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର ଡାଟା ଶେୟାର୍ କରିପାରେ କିମ୍ବା ସେଭ୍ କରିପାରେ।"</string> - <string name="permdesc_readCalendar" product="tv" msgid="8837931557573064315">"ଆପଣଙ୍କ ଟିଭିରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟ ଏହି ଆପ୍ ପଢ଼ିପାରେ ଏବଂ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର ଡାଟା ଶେୟାର୍ କରିପାରେ କିମ୍ବା ସେଭ୍ କରିପାରେ।"</string> - <string name="permdesc_readCalendar" product="default" msgid="4373978642145196715">"ଆପଣଙ୍କ ଫୋନ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟ ଏହି ଆପ୍ ପଢ଼ିପାରେ ଏବଂ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର ଡାଟା ଶେୟାର୍ କରିପାରେ କିମ୍ବା ସେଭ୍ କରିପାରେ।"</string> + <string name="permdesc_readCalendar" product="tablet" msgid="4993979255403945892">"ଆପଣଙ୍କ ଟାବଲେଟ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟ ଏହି ଆପ୍ ପଢ଼ିପାରେ ଏବଂ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର ଡାଟା ସେୟାର୍ କରିପାରେ କିମ୍ବା ସେଭ୍ କରିପାରେ।"</string> + <string name="permdesc_readCalendar" product="tv" msgid="8837931557573064315">"ଆପଣଙ୍କ ଟିଭିରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟ ଏହି ଆପ୍ ପଢ଼ିପାରେ ଏବଂ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର ଡାଟା ସେୟାର୍ କରିପାରେ କିମ୍ବା ସେଭ୍ କରିପାରେ।"</string> + <string name="permdesc_readCalendar" product="default" msgid="4373978642145196715">"ଆପଣଙ୍କ ଫୋନ୍ରେ ଷ୍ଟୋର୍ କରାଯାଇଥିବା ସମସ୍ତ କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟ ଏହି ଆପ୍ ପଢ଼ିପାରେ ଏବଂ ଆପଣଙ୍କ କ୍ୟାଲେଣ୍ଡର ଡାଟା ସେୟାର୍ କରିପାରେ କିମ୍ବା ସେଭ୍ କରିପାରେ।"</string> <string name="permlab_writeCalendar" msgid="8438874755193825647">"କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟରେ ଯୋଡ଼ନ୍ତୁ କିମ୍ବା ସଂଶୋଧନ କରନ୍ତୁ ଏବଂ ମାଲିକଙ୍କ ଅଜାଣତରେ ଅତିଥିମାନଙ୍କୁ ଇମେଲ୍ ପଠାନ୍ତୁ।"</string> <string name="permdesc_writeCalendar" product="tablet" msgid="1675270619903625982">"ଏହି ଆପ୍ ଆପଣଙ୍କ ଟାବଲେଟ୍ରେ କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟ ଯୋଡ଼ିପାରେ, ବାହାର କରିପାରେ କିମ୍ବା ବଦଳାଇପାରେ। ଏହି ଆପ୍ ଏପରି ମେସେଜ୍ ପଠାଇପାରେ, ଯାହା କ୍ୟାଲେଣ୍ଡର ମାଲିକଙ୍କଠାରୁ ଆସିଥିବା ପରି ଜଣାପଡ଼େ କିମ୍ବା ମାଲିକଙ୍କୁ ନଜଣାଇ ଇଭେଣ୍ଟରେ ପରିବର୍ତ୍ତନ କରିପାରେ।"</string> <string name="permdesc_writeCalendar" product="tv" msgid="9017809326268135866">"ଏହି ଆପ୍ ଆପଣଙ୍କ ଟିଭିରେ କ୍ୟାଲେଣ୍ଡର ଇଭେଣ୍ଟ ଯୋଡ଼ିପାରେ, ବାହାର କରିପାରେ କିମ୍ବା ବଦଳାଇପାରେ। ଏହି ଆପ୍ ଏପରି ମେସେଜ୍ ପଠାଇପାରେ, ଯାହା କ୍ୟାଲେଣ୍ଡର ମାଲିକଙ୍କଠାରୁ ଆସିଥିବା ପରି ଜଣାପଡ଼େ କିମ୍ବା ମାଲିକଙ୍କୁ ନଜଣାଇ ଇଭେଣ୍ଟରେ ପରିବର୍ତ୍ତନ କରିପାରେ।"</string> <string name="permdesc_writeCalendar" product="default" msgid="7592791790516943173">"ଏହି ଆପ୍, ଆପଣଙ୍କ ଫୋନ୍ରେ କ୍ୟାଲେଣ୍ଡର୍ ଇଭେଣ୍ଟଗୁଡ଼ିକୁ ଯୋଡ଼ିପାରେ, ବାହାର କରିପାରେ କିମ୍ବା ବଦଳାଇପାରେ। କ୍ୟାଲେଣ୍ଡର୍ ମାଲିକଙ୍କ ପାଖରୁ ଆସିଥିବା ପରି ଜଣାପଡ଼ିବା ମେସେଜ୍କୁ ଏହି ଆପ୍ ପଠାଇପାରେ କିମ୍ବା ମାଲିକଙ୍କୁ ନଜଣାଇ ଇଭେଣ୍ଟ ବଦଳାଇପାରେ।"</string> - <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"ଅତିରିକ୍ତ ଲୋକେଶନ୍ ପ୍ରଦାନକାରୀ କମାଣ୍ଡକୁ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> - <string name="permdesc_accessLocationExtraCommands" msgid="6078307221056649927">"ଅତିରିକ୍ତ ଲୋକେଶନ୍ ପ୍ରଦାନକାରୀ କମାଣ୍ଡ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। GPS କିମ୍ବା ଅନ୍ୟ ଲୋକେଶନ୍ ସୋର୍ସଗୁଡିକରେ ଆପ୍ଟି ପ୍ରଭାବ ପକାଇପାରେ।"</string> + <string name="permlab_accessLocationExtraCommands" msgid="2836308076720553837">"ଅତିରିକ୍ତ ଲୋକେସନ୍ ପ୍ରଦାନକାରୀ କମାଣ୍ଡକୁ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> + <string name="permdesc_accessLocationExtraCommands" msgid="6078307221056649927">"ଅତିରିକ୍ତ ଲୋକେସନ୍ ପ୍ରଦାନକାରୀ କମାଣ୍ଡ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। GPS କିମ୍ବା ଅନ୍ୟ ଲୋକେସନ୍ ସୋର୍ସଗୁଡିକରେ ଆପ୍ଟି ପ୍ରଭାବ ପକାଇପାରେ।"</string> <string name="permlab_accessFineLocation" msgid="6265109654698562427">"କେବଳ ସମ୍ମୁଖଭାଗରେ ସଠିକ୍ ଲୋକେଶନ୍ର ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> - <string name="permdesc_accessFineLocation" msgid="3520508381065331098">"ଏହି ଆପ୍ ଯେତେବେଳେ ସମ୍ମୁଖଭାଗରେ ଥିବାବେଳେ ଆପଣଙ୍କର ସଠିକ୍ ଲୋକେଶନ୍ ପ୍ରାପ୍ତ କରିପାରିବ। ଏହି ଲୋକେଶନ୍ ସେବାଗୁଡ଼ିକ ନିଶ୍ଚିତରୂପେ ଅନ୍ ରହିବା ଦରକାର ଏବଂ ଆପ୍ର ବ୍ୟବହାର ପାଇଁ ଫୋନ୍ରେ ଉପଲବ୍ଧ ଥିବା ଦରକାର। ଏହା ବ୍ୟାଟେରୀ ଅଧିକା ଖର୍ଚ୍ଚ କରିପାରେ।"</string> + <string name="permdesc_accessFineLocation" msgid="3520508381065331098">"ଏହି ଆପ୍ ଯେତେବେଳେ ସମ୍ମୁଖଭାଗରେ ଥିବାବେଳେ ଆପଣଙ୍କର ସଠିକ୍ ଲୋକେସନ୍ ପ୍ରାପ୍ତ କରିପାରିବ। ଏହି ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକ ନିଶ୍ଚିତରୂପେ ଅନ୍ ରହିବା ଦରକାର ଏବଂ ଆପ୍ର ବ୍ୟବହାର ପାଇଁ ଫୋନ୍ରେ ଉପଲବ୍ଧ ଥିବା ଦରକାର। ଏହା ବ୍ୟାଟେରୀ ଅଧିକା ଖର୍ଚ୍ଚ କରିପାରେ।"</string> <string name="permlab_accessCoarseLocation" msgid="3707180371693213469">"କେବଳ ସମ୍ମୁଖଭାଗରେ ହାରାହାରି ଲୋକେସନ୍ (ନେଟ୍ୱର୍କ-ଆଧାରିତ)ର ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> <string name="permdesc_accessCoarseLocation" product="tablet" msgid="8594719010575779120">"ସେଲ୍ ଟାୱାର ଓ ୱାଇ-ଫାଇ ନେଟ୍ୱର୍କ ପରି ଉତ୍ସକୁ ଆଧାର କରି ଏହି ଆପ୍ ଆପଣଙ୍କ ଲୋକେସନ୍ ପ୍ରାପ୍ତ କରିପାରିବ। ଏହି ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକର ବ୍ୟବହାର କରିବାକୁ ସେଗୁଡ଼ିକ ଚାଲୁ କରାଯିବା ଏବଂ ଆପଣଙ୍କ ଟାବ୍ଲେଟ୍ରେ ଉପଲବ୍ଧ ଥିବା ଜରୁରୀ ଅଟେ।"</string> <string name="permdesc_accessCoarseLocation" product="tv" msgid="3027871910200890806">"ସେଲ୍ ଟାୱାର ଓ ୱାଇ-ଫାଇ ନେଟ୍ୱର୍କ ପରି ଉତ୍ସକୁ ଆଧାର କରି ଏହି ଆପ୍ ଆପଣଙ୍କ ଲୋକେସନ୍ ପ୍ରାପ୍ତ କରିପାରିବ। ଏହି ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକର ବ୍ୟବହାର କରିବାକୁ ସେଗୁଡ଼ିକ ଚାଲୁ କରାଯିବା ଏବଂ ଆପଣଙ୍କ ଟିଭିରେ ଉପଲବ୍ଧ ଥିବା ଜରୁରୀ ଅଟେ।"</string> @@ -485,9 +485,9 @@ <string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"କେବଳ ଆପଣଙ୍କ ଟାବ୍ଲେଟ୍ ନୁହେଁ, ବରଂ ମଲ୍ଟିକାଷ୍ଟ ଠିକଣାଗୁଡ଼ିକ ବ୍ୟବହାର କରି ଏକ ୱାଇ-ଫାଇ ନେଟ୍ୱର୍କରେ ଥିବା ସମସ୍ତ ଡିଭାଇସ୍କୁ ପଠାଯିବା ପ୍ୟାକେଟ୍ଗୁଡ଼ିକ ପ୍ରାପ୍ତ କରିବାକୁ ଆପ୍ଟି ଅନୁମତି ଦେଇଥାଏ। ଅଣ-ମଲ୍ଟିକାଷ୍ଟ ମୋଡ୍ ତୁଳନାରେ ଏହା ଅଧିକ ପାୱାର୍ ବ୍ୟବହାର କରେ।"</string> <string name="permdesc_changeWifiMulticastState" product="tv" msgid="9031975661145014160">"କେବଳ ଆପଣଙ୍କ ଟିଭି ନୁହେଁ, ମଲ୍ଟିକାଷ୍ଟ ଠିକଣା ବ୍ୟବହାର କରି ଏକ ୱାଇ-ଫାଇ ନେଟ୍ୱର୍କରେ ସମସ୍ତ ଡିଭାଇସ୍କୁ ପଠାଯାଇଥିବା ପ୍ୟାକେଟ୍ ପ୍ରାପ୍ତ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। ଅଣ-ମଲ୍ଟିକାଷ୍ଟ ମୋଡ୍ ତୁଳନାରେ ଏହା ଅଧିକ ପାୱାର୍ ବ୍ୟବହାର କରେ।"</string> <string name="permdesc_changeWifiMulticastState" product="default" msgid="6851949706025349926">"କେବଳ ଆପଣଙ୍କ ଫୋନ୍ ନୁହେଁ, ବରଂ ମଲ୍ଟିକାଷ୍ଟ ଠିକଣାଗୁଡ଼ିକ ବ୍ୟବହାର କରି ଏକ ୱାଇ-ଫାଇ ନେଟ୍ୱର୍କରେ ଥିବା ସମସ୍ତ ଡିଭାଇସ୍କୁ ପଠାଯିବା ପ୍ୟାକେଟ୍ଗୁଡ଼ିକ ପ୍ରାପ୍ତ କରିବାକୁ ଆପ୍ଟି ଅନୁମତି ଦେଇଥାଏ। ଅଣ-ମଲ୍ଟିକାଷ୍ଟ ମୋଡ୍ ତୁଳନାରେ ଏହା ଅଧିକ ପାୱାର୍ ବ୍ୟବହାର କରେ।"</string> - <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ବ୍ଲୁ-ଟୂଥ୍ ସେଟିଙ୍ଗ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> + <string name="permlab_bluetoothAdmin" msgid="6006967373935926659">"ବ୍ଲୁଟୂଥ୍ ସେଟିଙ୍ଗ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string> <string name="permdesc_bluetoothAdmin" product="tablet" msgid="6921177471748882137">"ସ୍ଥାନୀୟ ବ୍ଲୁ-ଟୁଥ, ଟାବଲେଟ୍କୁ କନଫିଗର୍ କରିବାକୁ ଏବଂ ରିମୋର୍ଟ ଡିଭାଇସ୍କୁ ଚିହ୍ନାଇବା ତଥା ସେଗୁଡ଼ିକୁ ପେୟାର୍ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ।"</string> - <string name="permdesc_bluetoothAdmin" product="tv" msgid="3373125682645601429">"ଆପ୍କୁ ସ୍ଥାନୀୟ ବ୍ଲୁ-ଟୂଥ୍ TVକୁ କନଫିଗର୍ କରିବାକୁ ଦେଇଥାଏ ଏବଂ ରିମୋର୍ଟ ଡିଭାଇସ୍କୁ ଚିହ୍ନାଇ ସେମାନଙ୍କୁ ଯୋଡ଼ିଥାଏ।"</string> + <string name="permdesc_bluetoothAdmin" product="tv" msgid="3373125682645601429">"ଆପ୍କୁ ସ୍ଥାନୀୟ ବ୍ଲୁଟୂଥ୍ TVକୁ କନଫିଗର୍ କରିବାକୁ ଦେଇଥାଏ ଏବଂ ରିମୋର୍ଟ ଡିଭାଇସ୍କୁ ଚିହ୍ନାଇ ସେମାନଙ୍କୁ ଯୋଡ଼ିଥାଏ।"</string> <string name="permdesc_bluetoothAdmin" product="default" msgid="8931682159331542137">"ସ୍ଥାନୀୟ ବ୍ଲୁ-ଟୁଥ, ଫୋନ୍କୁ କନଫିଗର୍ କରିବାକୁ ଏବଂ ରିମୋର୍ଟ ଡିଭାଇସ୍କୁ ଚିହ୍ନାଇବା ତଥା ସେଗୁଡ଼ିକୁ ପେୟାର୍ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ।"</string> <string name="permlab_accessWimaxState" msgid="4195907010610205703">"WiMAX ସହିତ ସଂଯୋଗ ଏବଂ ଏଥିରୁ ବିଚ୍ଛିନ୍ନ କରନ୍ତୁ"</string> <string name="permdesc_accessWimaxState" msgid="6360102877261978887">"WiMAX ସକ୍ଷମ କି ନାହିଁ ସ୍ଥିର କରିବାକୁ ଏବଂ ସଂଯୁକ୍ତ ଥିବା କୌଣସି WiMAX ନେଟ୍ୱର୍କ ବିଷୟରେ ସୂଚନା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ ।"</string> @@ -495,7 +495,7 @@ <string name="permdesc_changeWimaxState" product="tablet" msgid="3156456504084201805">"WiMAX ନେଟ୍ୱର୍କରୁ ଟାବଲେଟ୍ ସଂଯୋଗ କରିବାକୁ ଏବଂ ବିଚ୍ଛିନ୍ନ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ।"</string> <string name="permdesc_changeWimaxState" product="tv" msgid="6022307083934827718">"ଟିଭିକୁ ସଂଯୋଗ କରିବାକୁ ତଥା WiMAX ନେଟ୍ୱର୍କରୁ ଟିଭିକୁ ବିଚ୍ଛିନ୍ନ କରିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ।"</string> <string name="permdesc_changeWimaxState" product="default" msgid="697025043004923798">"WiMAX ନେଟ୍ୱର୍କରୁ ଫୋନ୍ ସଂଯୋଗ କରିବାକୁ ଏବଂ ବିଚ୍ଛିନ୍ନ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ।"</string> - <string name="permlab_bluetooth" msgid="6127769336339276828">"ବ୍ଲୁ-ଟୂଥ୍ ଡିଭାଇସ୍ ଦେଖନ୍ତୁ"</string> + <string name="permlab_bluetooth" msgid="6127769336339276828">"ବ୍ଲୁଟୂଥ୍ ଡିଭାଇସ୍ ଦେଖନ୍ତୁ"</string> <string name="permdesc_bluetooth" product="tablet" msgid="3480722181852438628">"ଟାବଲେଟ୍ରେ ଥିବା ବ୍ଲୁ-ଟୁଥ୍ର କନଫିଗରେଶନ୍ ଦେଖିବାକୁ ଏବଂ ପେୟାର୍ କରାଯାଇଥିବା ଡିଭାଇସ୍ ସହିତ ସଂଯୋଗ ସ୍ୱୀକାର କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ।"</string> <string name="permdesc_bluetooth" product="tv" msgid="3974124940101104206">"ଟିଭିରେ ବ୍ଲୁ-ଟୁଥ୍ର କନଫିଗରେଶନ୍ ଦେଖିବାକୁ ଏବଂ ପେୟାର୍ ହୋଇଥିବା ଡିଭାଇସ୍ ସହ ସଂଯୋଗ ତିଆରି ତଥା ସ୍ୱୀକାର କରିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ।"</string> <string name="permdesc_bluetooth" product="default" msgid="3207106324452312739">"ଫୋନ୍ରେ ଥିବା ବ୍ଲୁ-ଟୁଥ୍ର କନଫିଗରେଶନ୍ ଦେଖିବାକୁ ଏବଂ ପେୟାର୍ କରାଯାଇଥିବା ଡିଭାଇସ୍ ସହିତ ସଂଯୋଗ ସ୍ୱୀକାର କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ।"</string> @@ -937,7 +937,7 @@ <string name="permlab_addVoicemail" msgid="5525660026090959044">"ଭଏସ୍ମେଲ୍ ଯୋଡ଼ନ୍ତୁ"</string> <string name="permdesc_addVoicemail" msgid="6604508651428252437">"ଆପଣଙ୍କ ଭଏସମେଲ୍ ଇନ୍ବକ୍ସରେ ମେସେଜ୍ ଯୋଡ଼ିବାକୁ ଆପ୍କୁ ଅନୁମତି ଦିଏ।"</string> <string name="permlab_writeGeolocationPermissions" msgid="5962224158955273932">"ବ୍ରାଉଜରର ଭୌଗଳିକ ଅନୁମତି ସଂଶୋଧନ କରନ୍ତୁ"</string> - <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"ଆପ୍କୁ, ବ୍ରାଉଜର୍ର ଭୌଗଳିକ ଅନୁମତି ବଦଳାଇବାକୁ ଦେଇଥାଏ। ହାନୀକାରକ ଆପ୍ ଆର୍ବିଟେରୀ ୱେବ୍ ସାଇଟଗୁଡ଼ିକୁ ଲୋକେଶନ୍ ସୂଚନା ପଠାଇବା ପାଇଁ ଏହା ବ୍ୟବହାର କରିପାରନ୍ତି।"</string> + <string name="permdesc_writeGeolocationPermissions" msgid="1083743234522638747">"ଆପ୍କୁ, ବ୍ରାଉଜର୍ର ଭୌଗଳିକ ଅନୁମତି ବଦଳାଇବାକୁ ଦେଇଥାଏ। ହାନୀକାରକ ଆପ୍ ଆର୍ବିଟେରୀ ୱେବ୍ ସାଇଟଗୁଡ଼ିକୁ ଲୋକେସନ୍ ସୂଚନା ପଠାଇବା ପାଇଁ ଏହା ବ୍ୟବହାର କରିପାରନ୍ତି।"</string> <string name="save_password_message" msgid="767344687139195790">"ବ୍ରାଉଜର୍ ଏହି ପାସୱର୍ଡକୁ ମନେରଖୁ ବୋଲି ଆପଣ ଚାହୁଁଛନ୍ତି କି?"</string> <string name="save_password_notnow" msgid="6389675316706699758">"ବର୍ତ୍ତମାନ ନୁହେଁଁ"</string> <string name="save_password_remember" msgid="6491879678996749466">"ମନେରଖନ୍ତୁ"</string> @@ -1131,8 +1131,8 @@ <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$sରେ ସଂଶୋଧନ କରନ୍ତୁ"</string> <string name="whichEditApplicationLabel" msgid="7183524181625290300">"ଏଡିଟ୍ କରନ୍ତୁ"</string> <string name="whichSendApplication" msgid="5803792421724377602">"ସେୟାର୍ କରନ୍ତୁ"</string> - <string name="whichSendApplicationNamed" msgid="2799370240005424391">"%1$s ସହିତ ଶେୟାର୍ କରନ୍ତୁ"</string> - <string name="whichSendApplicationLabel" msgid="4579076294675975354">"ଶେୟାର୍ କରନ୍ତୁ"</string> + <string name="whichSendApplicationNamed" msgid="2799370240005424391">"%1$s ସହିତ ସେୟାର୍ କରନ୍ତୁ"</string> + <string name="whichSendApplicationLabel" msgid="4579076294675975354">"ସେୟାର୍ କରନ୍ତୁ"</string> <string name="whichSendToApplication" msgid="8272422260066642057">"ଏହା ଜରିଆରେ ପଠାନ୍ତୁ"</string> <string name="whichSendToApplicationNamed" msgid="7768387871529295325">"%1$s ଜରିଆରେ ପଠାନ୍ତୁ"</string> <string name="whichSendToApplicationLabel" msgid="8878962419005813500">"ପଠାନ୍ତୁ"</string> @@ -1203,22 +1203,22 @@ <string name="new_app_description" msgid="5894852887817332322">"<xliff:g id="OLD_APP">%1$s</xliff:g> ସେଭ୍ ନହୋଇ ବନ୍ଦ ହୋଇଯିବ"</string> <string name="dump_heap_notification" msgid="2618183274836056542">"<xliff:g id="PROC">%1$s</xliff:g> ଧାର୍ଯ୍ୟ ମେମୋରୀରୁ ବାହାରକୁ ଗଲା"</string> <string name="dump_heap_ready_notification" msgid="1162196579925048701">"<xliff:g id="PROC">%1$s</xliff:g> ହିପ୍ ଡମ୍ପ ପ୍ରସ୍ତୁତ"</string> - <string name="dump_heap_notification_detail" msgid="3993078784053054141">"’ହୀପ୍ ଡମ୍ପ’ ସଂଗ୍ରହ କରାଯାଇସାରିଛି। ଶେୟାର୍ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string> - <string name="dump_heap_title" msgid="5864292264307651673">"ହିପ୍ ଡମ୍ପ ଶେୟାର୍ କରିବେ?"</string> + <string name="dump_heap_notification_detail" msgid="3993078784053054141">"’ହୀପ୍ ଡମ୍ପ’ ସଂଗ୍ରହ କରାଯାଇସାରିଛି। ସେୟାର୍ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string> + <string name="dump_heap_title" msgid="5864292264307651673">"ହିପ୍ ଡମ୍ପ ସେୟାର୍ କରିବେ?"</string> <string name="dump_heap_text" msgid="8546022920319781701">"<xliff:g id="PROC">%1$s</xliff:g> ପ୍ରକ୍ରିୟା ଏହାର ମେମୋରୀ ସୀମା <xliff:g id="SIZE">%2$s</xliff:g>କୁ ଅତିକ୍ରମ କରିଛି। ଏହାର ଡେଭଲପର୍ଙ୍କ ସହ ସେୟାର୍ କରିବାକୁ ଆପଣଙ୍କ ପାଇଁ ଏକ ହିପ୍ ଡମ୍ପ ଉପଲବ୍ଧ ଅଛି। ସାବଧାନ: ଏହି ଆପ୍ଲିକେସନ୍ରେ ଆକ୍ସେସ୍ ରହିଥିବା ଆପଣଙ୍କର ଯେକୌଣସି ବ୍ୟକ୍ତିଗତ ସୂଚନା ଏହି ହିପ୍ ଡମ୍ପରେ ରହିପାରେ।"</string> <string name="dump_heap_system_text" msgid="3236094872980706024">"<xliff:g id="PROC">%1$s</xliff:g> ପ୍ରକ୍ରିୟା ଏହାର ମେମୋରୀ ସୀମା <xliff:g id="SIZE">%2$s</xliff:g>କୁ ଅତିକ୍ରମ କରିଛି। ସେୟାର୍ କରିବାକୁ ଆପଣଙ୍କ ପାଇଁ ଏକ ହିପ୍ ଡମ୍ପ ଉପଲବ୍ଧ ଅଛି। ସାବଧାନ: ଏହି ପ୍ରକ୍ରିୟାର ଆକ୍ସେସ୍ ରହିଥିବା ଆପଣଙ୍କର କୌଣସି ବ୍ୟକ୍ତିଗତ ସମ୍ବେଦନଶୀଳ ସୂଚନା ଏହି ହିପ୍ ଡମ୍ପରେ ରହିପାରେ, ଯେଉଁଥିରେ ଆପଣ ଟାଇପ୍ କରିଥିବା କିଛି ଡାଟା ବି ସାମିଲ୍ ହୋଇପାରେ, ଯେଉଁଥିରେ ଆପଣ ଟାଇପ୍ କରିଥିବା କିଛି ଡାଟା ବି ସାମିଲ୍ ହୋଇପାରେ।"</string> <string name="dump_heap_ready_text" msgid="1778041771455343067">"ଆପଣ ପାଇଁ ସେୟାର୍ କରିବାକୁ <xliff:g id="PROC">%1$s</xliff:g> ପ୍ରକ୍ରିୟାର ଏକ ହିପ୍ ଡମ୍ପ ଉପଲବ୍ଧ ଅଛି। ସାବଧାନ: ଏହି ପ୍ରକ୍ରିୟାର ଆକ୍ସେସ୍ ରହିଥିବା ଆପଣଙ୍କର କୌଣସି ବ୍ୟକ୍ତିଗତ ସମ୍ବେଦନଶୀଳ ସୂଚନା ଏହି ହିପ୍ ଡମ୍ପରେ ରହିପାରେ, ଯେଉଁଥିରେ ଆପଣ ଟାଇପ୍ କରିଥିବା କିଛି ଡାଟା ବି ସାମିଲ୍ ହୋଇପାରେ।"</string> <string name="sendText" msgid="5209874571959469142">"ଟେକ୍ସଟ୍ ପାଇଁ ଏକ କାର୍ଯ୍ୟ ବାଛନ୍ତୁ"</string> <string name="volume_ringtone" msgid="6885421406845734650">"ରିଙ୍ଗର୍ ଭଲ୍ୟୁମ୍"</string> <string name="volume_music" msgid="5421651157138628171">"ମିଡିଆ ଭଲ୍ୟୁମ୍"</string> - <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"ବ୍ଲୁ-ଟୂଥ୍ ମାଧ୍ୟମରେ ଚାଲୁଛି"</string> + <string name="volume_music_hint_playing_through_bluetooth" msgid="9165984379394601533">"ବ୍ଲୁଟୂଥ୍ ମାଧ୍ୟମରେ ଚାଲୁଛି"</string> <string name="volume_music_hint_silent_ringtone_selected" msgid="8310739960973156272">"ରିଙ୍ଗଟୋନ୍କୁ ନିରବ ଭାବେ ସେଟ୍ କରାଯାଇଛି"</string> <string name="volume_call" msgid="3941680041282788711">"ଇନ୍-କଲ୍ ଭଲ୍ୟୁମ୍"</string> - <string name="volume_bluetooth_call" msgid="2002891926351151534">"ବ୍ଲୁ-ଟୂଥ୍ ଇନ୍-କଲ୍ ଭଲ୍ୟୁମ୍"</string> + <string name="volume_bluetooth_call" msgid="2002891926351151534">"ବ୍ଲୁଟୂଥ୍ ଇନ୍-କଲ୍ ଭଲ୍ୟୁମ୍"</string> <string name="volume_alarm" msgid="1985191616042689100">"ଆଲାର୍ମର ଭଲ୍ୟୁମ୍"</string> <string name="volume_notification" msgid="2422265656744276715">"ବିଜ୍ଞପ୍ତି ଭଲ୍ୟୁମ୍"</string> <string name="volume_unknown" msgid="1400219669770445902">"ଭଲ୍ୟୁମ୍"</string> - <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"ବ୍ଲୁ-ଟୂଥ୍ ଭଲ୍ୟୁମ୍"</string> + <string name="volume_icon_description_bluetooth" msgid="6538894177255964340">"ବ୍ଲୁଟୂଥ୍ ଭଲ୍ୟୁମ୍"</string> <string name="volume_icon_description_ringer" msgid="3326003847006162496">"ରିଙ୍ଗଟୋନ୍ ଭଲ୍ୟୁମ୍"</string> <string name="volume_icon_description_incall" msgid="8890073218154543397">"କଲ୍ ଭଲ୍ୟୁମ୍"</string> <string name="volume_icon_description_media" msgid="4217311719665194215">"ମିଡିଆ ଭଲ୍ୟୁମ୍"</string> @@ -1273,7 +1273,7 @@ <string-array name="network_switch_type_name"> <item msgid="3979506840912951943">"ମୋବାଇଲ୍ ଡାଟା"</item> <item msgid="75483255295529161">"ୱାଇ-ଫାଇ"</item> - <item msgid="6862614801537202646">"ବ୍ଲୁ-ଟୂଥ୍"</item> + <item msgid="6862614801537202646">"ବ୍ଲୁଟୂଥ୍"</item> <item msgid="5447331121797802871">"ଇଥରନେଟ୍"</item> <item msgid="8257233890381651999">"VPN"</item> </string-array> @@ -1355,10 +1355,10 @@ <string name="usb_contaminant_not_detected_title" msgid="4202417484434906086">"USB ପୋର୍ଟ ବ୍ୟବହାର କରିବା ପାଇଁ ସୁରକ୍ଷିତ ଅଟେ"</string> <string name="usb_contaminant_not_detected_message" msgid="2415791798244545292">"ଫୋନ୍ ଆଉ ତରଳ ପଦାର୍ଥ କିମ୍ବା ଧୂଳିର ଚିହ୍ନଟ କରୁନାହିଁ।"</string> <string name="taking_remote_bugreport_notification_title" msgid="6742483073875060934">"ବଗ୍ ରିପୋର୍ଟ ନିଆଯାଉଛି…"</string> - <string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ବଗ୍ ରିପୋର୍ଟ ଶେୟାର୍ କରିବେ?"</string> - <string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ବଗ୍ ରିପୋର୍ଟ ଶେୟାର୍ କରାଯାଉଛି…"</string> + <string name="share_remote_bugreport_notification_title" msgid="4987095013583691873">"ବଗ୍ ରିପୋର୍ଟ ସେୟାର୍ କରିବେ?"</string> + <string name="sharing_remote_bugreport_notification_title" msgid="7572089031496651372">"ବଗ୍ ରିପୋର୍ଟ ସେୟାର୍ କରାଯାଉଛି…"</string> <string name="share_remote_bugreport_notification_message_finished" msgid="6029609949340992866">"ଏହି ଡିଭାଇସ୍ର ସମସ୍ୟା ସମାଧାନ କରିବା ପାଇଁ ଆପଣଙ୍କର ଆଡମିନ୍ ଏକ ବଗ୍ ରିପୋର୍ଟ ମାଗିଛନ୍ତି। ଆପ୍ ଓ ଡାଟା ଶେୟର୍ କରାଯାଇପାରେ।"</string> - <string name="share_remote_bugreport_action" msgid="6249476773913384948">"ଶେୟାର୍ କରନ୍ତୁ"</string> + <string name="share_remote_bugreport_action" msgid="6249476773913384948">"ସେୟାର୍ କରନ୍ତୁ"</string> <string name="decline_remote_bugreport_action" msgid="6230987241608770062">"ପ୍ରତ୍ୟାଖ୍ୟାନ କରନ୍ତୁ"</string> <!-- no translation found for select_input_method (4653387336791222978) --> <skip /> @@ -1483,13 +1483,13 @@ </plurals> <string name="action_mode_done" msgid="7217581640461922289">"ହୋଇଗଲା"</string> <string name="progress_erasing" msgid="2569962663843586562">"ସେୟାର୍ ହୋଇଥିବା ଷ୍ଟୋରେଜ୍ ଲିଭାଉଛି…"</string> - <string name="share" msgid="1778686618230011964">"ଶେୟାର୍"</string> + <string name="share" msgid="1778686618230011964">"ସେୟାର୍"</string> <string name="find" msgid="4808270900322985960">"ଖୋଜନ୍ତୁ"</string> <string name="websearch" msgid="4337157977400211589">"ୱେବ୍ ସର୍ଚ୍ଚ"</string> <string name="find_next" msgid="5742124618942193978">"ପରବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ"</string> <string name="find_previous" msgid="2196723669388360506">"ପୂର୍ବବର୍ତ୍ତୀ ଖୋଜନ୍ତୁ"</string> - <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g>ଙ୍କଠାରୁ ଲୋକେଶନ୍ ଅନୁରୋଧ ଆସିଛି"</string> - <string name="gpsNotifTitle" msgid="5446858717157416839">"ଲୋକେଶନ୍ ଅନୁରୋଧ"</string> + <string name="gpsNotifTicker" msgid="5622683912616496172">"<xliff:g id="NAME">%s</xliff:g>ଙ୍କଠାରୁ ଲୋକେସନ୍ ଅନୁରୋଧ ଆସିଛି"</string> + <string name="gpsNotifTitle" msgid="5446858717157416839">"ଲୋକେସନ୍ ଅନୁରୋଧ"</string> <string name="gpsNotifMessage" msgid="1374718023224000702">"<xliff:g id="NAME">%1$s</xliff:g> (<xliff:g id="SERVICE">%2$s</xliff:g>)ଙ୍କ ଦ୍ୱାରା ଅନୁରୋଧ କରାଯାଇଛି"</string> <string name="gpsVerifYes" msgid="2346566072867213563">"ହଁ"</string> <string name="gpsVerifNo" msgid="1146564937346454865">"ନା"</string> @@ -1528,8 +1528,8 @@ <string name="keyboardview_keycode_enter" msgid="2985864015076059467">"ଏଣ୍ଟର୍"</string> <string name="activitychooserview_choose_application" msgid="2125168057199941199">"ଗୋଟିଏ ଆପ୍ ବାଛନ୍ତୁ"</string> <string name="activitychooserview_choose_application_error" msgid="8624618365481126668">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ଲଞ୍ଚ କରାଯାଇପାରିଲା ନାହିଁ"</string> - <string name="shareactionprovider_share_with" msgid="806688056141131819">"ଏହାଙ୍କ ସହ ଶେୟାର୍ କରନ୍ତୁ"</string> - <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ସହ ଶେୟାର୍ କରନ୍ତୁ"</string> + <string name="shareactionprovider_share_with" msgid="806688056141131819">"ଏହାଙ୍କ ସହ ସେୟାର୍ କରନ୍ତୁ"</string> + <string name="shareactionprovider_share_with_application" msgid="5627411384638389738">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> ସହ ସେୟାର୍ କରନ୍ତୁ"</string> <string name="content_description_sliding_handle" msgid="415975056159262248">"ହ୍ୟାଣ୍ଡେଲ୍ ସ୍ଲାଇଡ୍ କରାଯାଉଛି। ସ୍ପର୍ଶ କରି ଧରିରଖନ୍ତୁ।"</string> <string name="description_target_unlock_tablet" msgid="3833195335629795055">"ଅନଲକ୍ କରିବାକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ।"</string> <string name="action_bar_home_description" msgid="5293600496601490216">"ହୋମ୍ ପେଜ୍କୁ ନେଭିଗେଟ୍ କରନ୍ତୁ"</string> @@ -1537,7 +1537,7 @@ <string name="action_menu_overflow_description" msgid="2295659037509008453">"ଅଧିକ ବିକଳ୍ପ"</string> <string name="action_bar_home_description_format" msgid="7965984360903693903">"%1$s, %2$s"</string> <string name="action_bar_home_subtitle_description_format" msgid="6985546530471780727">"%1$s, %2$s, %3$s"</string> - <string name="storage_internal" msgid="3570990907910199483">"ଶେୟାର୍ କରାଯାଇଥିବା ଇଣ୍ଟର୍ନଲ୍ ଷ୍ଟୋରେଜ୍"</string> + <string name="storage_internal" msgid="3570990907910199483">"ସେୟାର୍ କରାଯାଇଥିବା ଇଣ୍ଟର୍ନଲ୍ ଷ୍ଟୋରେଜ୍"</string> <string name="storage_sd_card" msgid="3282948861378286745">"SD କାର୍ଡ"</string> <string name="storage_sd_card_label" msgid="6347111320774379257">"<xliff:g id="MANUFACTURER">%s</xliff:g> SD କାର୍ଡ"</string> <string name="storage_usb_drive" msgid="6261899683292244209">"USB ଡ୍ରାଇଭ୍"</string> @@ -1573,7 +1573,7 @@ <string name="sha1_fingerprint" msgid="7930330235269404581">"SHA-1 ଆଙ୍ଗୁଠି ଚିହ୍ନ:"</string> <string name="activity_chooser_view_see_all" msgid="4292569383976636200">"ସମସ୍ତ ଦେଖନ୍ତୁ"</string> <string name="activity_chooser_view_dialog_title_default" msgid="4710013864974040615">"ଗତିବିଧି ଚୟନ କରନ୍ତୁ"</string> - <string name="share_action_provider_share_with" msgid="5247684435979149216">"ଏହାଙ୍କ ସହ ଶେୟାର୍ କରନ୍ତୁ"</string> + <string name="share_action_provider_share_with" msgid="5247684435979149216">"ଏହାଙ୍କ ସହ ସେୟାର୍ କରନ୍ତୁ"</string> <string name="sending" msgid="3245653681008218030">"ପଠାଯାଉଛି…"</string> <string name="launchBrowserDefault" msgid="2057951947297614725">"ବ୍ରାଉଜର୍ ଲଞ୍ଚ କରିବେ?"</string> <string name="SetupCallDefault" msgid="5834948469253758575">"କଲ୍ ସ୍ୱୀକାର କରିବେ?"</string> @@ -1589,7 +1589,7 @@ <string name="default_audio_route_name_headphones" msgid="8119971843803439110">"ହେଡଫୋନ୍"</string> <string name="default_audio_route_name_usb" msgid="1234984851352637769">"USB"</string> <string name="default_audio_route_category_name" msgid="3722811174003886946">"ସିଷ୍ଟମ୍"</string> - <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"ବ୍ଲୁ-ଟୂଥ୍ ଅଡିଓ"</string> + <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"ବ୍ଲୁଟୂଥ୍ ଅଡିଓ"</string> <string name="wireless_display_route_description" msgid="9070346425023979651">"ୱେୟାର୍ଲେସ୍ ଡିସ୍ପ୍ଲେ"</string> <string name="media_route_button_content_description" msgid="591703006349356016">"କାଷ୍ଟ କରନ୍ତୁ"</string> <string name="media_route_chooser_title" msgid="1751618554539087622">"ଡିଭାଇସ୍ ସଂଯୋଗ କରନ୍ତୁ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 7a949af73e2e..caf7eb67b8df 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -296,7 +296,7 @@ <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"wysyłanie i wyświetlanie SMS‑ów"</string> <string name="permgrouprequest_sms" msgid="7168124215838204719">"Zezwolić aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na wysyłanie i wyświetlanie SMS-ów?"</string> - <string name="permgrouplab_storage" msgid="1971118770546336966">"Pamięć wewnętrzna"</string> + <string name="permgrouplab_storage" msgid="1971118770546336966">"Pamięć"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"dostęp do zdjęć, multimediów i plików na Twoim urządzeniu"</string> <string name="permgrouprequest_storage" msgid="7885942926944299560">"Zezwolić aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na dostęp do zdjęć, multimediów i plików na urządzeniu?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 0edec5847ac2..3129e122e86c 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -277,10 +277,10 @@ <string name="managed_profile_label" msgid="8947929265267690522">"Alternar para o perfil de trabalho"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"Contatos"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"acesse seus contatos"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse seus contatos?"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse seus contatos?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Local"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"acesse o local do dispositivo"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse a localização deste dispositivo?"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse o local deste dispositivo?"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"O app só terá acesso ao local enquanto estiver sendo usado"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Permitir que o <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse o local do dispositivo <b>o tempo todo</b>?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"No momento, o app só pode acessar o local enquanto estiver sendo usado"</string> @@ -292,10 +292,10 @@ <string name="permgrouprequest_sms" msgid="7168124215838204719">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse e envie mensagens SMS?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Armazenamento"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"acesse fotos, mídia e arquivos do dispositivo"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse fotos, mídia e arquivos no seu dispositivo?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse fotos, mídia e arquivos no seu dispositivo?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfone"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"grave áudio"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> grave áudio?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> grave áudio?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"Atividade física"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"acessar sua atividade física"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse sua atividade física?"</string> @@ -307,7 +307,7 @@ <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse seu registro de chamadas telefônicas?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Telefone"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"faça e gerencie chamadas telefônicas"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> gerencie e faça chamadas telefônicas?"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> gerencie e faça chamadas telefônicas?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"Sensores corporais"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"acesse dados do sensor sobre seus sinais vitais"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse os dados do sensor sobre seus sinais vitais?"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 0edec5847ac2..3129e122e86c 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -277,10 +277,10 @@ <string name="managed_profile_label" msgid="8947929265267690522">"Alternar para o perfil de trabalho"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"Contatos"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"acesse seus contatos"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse seus contatos?"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse seus contatos?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Local"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"acesse o local do dispositivo"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse a localização deste dispositivo?"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse o local deste dispositivo?"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"O app só terá acesso ao local enquanto estiver sendo usado"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Permitir que o <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse o local do dispositivo <b>o tempo todo</b>?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"No momento, o app só pode acessar o local enquanto estiver sendo usado"</string> @@ -292,10 +292,10 @@ <string name="permgrouprequest_sms" msgid="7168124215838204719">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse e envie mensagens SMS?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Armazenamento"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"acesse fotos, mídia e arquivos do dispositivo"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse fotos, mídia e arquivos no seu dispositivo?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse fotos, mídia e arquivos no seu dispositivo?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Microfone"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"grave áudio"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> grave áudio?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> grave áudio?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"Atividade física"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"acessar sua atividade física"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse sua atividade física?"</string> @@ -307,7 +307,7 @@ <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse seu registro de chamadas telefônicas?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Telefone"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"faça e gerencie chamadas telefônicas"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> gerencie e faça chamadas telefônicas?"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> gerencie e faça chamadas telefônicas?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"Sensores corporais"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"acesse dados do sensor sobre seus sinais vitais"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse os dados do sensor sobre seus sinais vitais?"</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 6b38498564b9..f28d334f3c12 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -199,7 +199,7 @@ <string name="turn_on_radio" msgid="3912793092339962371">"නොරැහන් සක්රිය කරන්න"</string> <string name="turn_off_radio" msgid="8198784949987062346">"නොරැහැන් අක්රිය කරන්න"</string> <string name="screen_lock" msgid="799094655496098153">"තිර අගුල"</string> - <string name="power_off" msgid="4266614107412865048">"බල රහිත කරන්න"</string> + <string name="power_off" msgid="4266614107412865048">"බල රහිත"</string> <string name="silent_mode_silent" msgid="319298163018473078">"හඬ නඟනය අක්රියයි"</string> <string name="silent_mode_vibrate" msgid="7072043388581551395">"හඬ නඟනය කම්පනය"</string> <string name="silent_mode_ring" msgid="8592241816194074353">"හඬ නඟනය සක්රීයයි"</string> @@ -223,7 +223,7 @@ <string name="global_actions" product="tv" msgid="7240386462508182976">"රූපවාහිනී විකල්ප"</string> <string name="global_actions" product="default" msgid="2406416831541615258">"දුරකථන විකල්ප"</string> <string name="global_action_lock" msgid="2844945191792119712">"තිර අගුල"</string> - <string name="global_action_power_off" msgid="4471879440839879722">"බල රහිත කරන්න"</string> + <string name="global_action_power_off" msgid="4471879440839879722">"බල රහිත"</string> <string name="global_action_emergency" msgid="7112311161137421166">"හදිසි"</string> <string name="global_action_bug_report" msgid="7934010578922304799">"දෝෂ වර්තාව"</string> <string name="global_action_logout" msgid="935179188218826050">"සැසිය අවසන් කරන්න"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index fc0c24ee40c9..412eef4f86b3 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -228,10 +228,10 @@ <string name="global_actions" product="default" msgid="2406416831541615258">"Možnosti telefónu"</string> <string name="global_action_lock" msgid="2844945191792119712">"Zámka obrazovky"</string> <string name="global_action_power_off" msgid="4471879440839879722">"Vypnúť"</string> - <string name="global_action_emergency" msgid="7112311161137421166">"Tiesňové volanie"</string> + <string name="global_action_emergency" msgid="7112311161137421166">"Tieseň"</string> <string name="global_action_bug_report" msgid="7934010578922304799">"Hlásenie o chybách"</string> <string name="global_action_logout" msgid="935179188218826050">"Ukončiť reláciu"</string> - <string name="global_action_screenshot" msgid="8329831278085426283">"Snímka obrazovky"</string> + <string name="global_action_screenshot" msgid="8329831278085426283">"Snímka"</string> <string name="bugreport_title" msgid="5981047024855257269">"Hlásenie chyby"</string> <string name="bugreport_message" msgid="398447048750350456">"Týmto zhromaždíte informácie o aktuálnom stave zariadenia. Informácie je potom možné odoslať e-mailom, chvíľu však potrvá, kým bude hlásenie chyby pripravené na odoslanie. Prosíme vás preto o trpezlivosť."</string> <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Interaktívne nahlásenie"</string> @@ -1507,7 +1507,7 @@ <string name="vpn_lockdown_config" msgid="8151951501116759194">"Zmeniť sieť alebo nastavenia VPN"</string> <string name="upload_file" msgid="2897957172366730416">"Zvoliť súbor"</string> <string name="no_file_chosen" msgid="6363648562170759465">"Nie je vybratý žiadny súbor"</string> - <string name="reset" msgid="2448168080964209908">"Obnoviť"</string> + <string name="reset" msgid="2448168080964209908">"Resetovať"</string> <string name="submit" msgid="1602335572089911941">"Odoslať"</string> <string name="car_mode_disable_notification_title" msgid="5704265646471239078">"Aplikácia na šoférovanie je spustená"</string> <string name="car_mode_disable_notification_message" msgid="7647248420931129377">"Klepnutím ukončíte aplikáciu na šoférovanie"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index fb6aa5837a41..f7c3168027ee 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -283,40 +283,40 @@ <string name="managed_profile_label" msgid="8947929265267690522">"Preklopi na delovni profil"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"Stiki"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"dostop do stikov"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do stikov?"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dostop do stikov?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Lokacija"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"dostop do lokacije te naprave"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do lokacije te naprave?"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dostop do lokacije te naprave?"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikacija bo imela dostop do lokacije samo, ko aplikacijo uporabljate"</string> - <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti, da <b>ves čas</b> dostopa do lokacije te naprave?"</string> + <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>, da <b>ves čas</b> dostopa do lokacije te naprave?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Trenutno lahko aplikacija dostopa do lokacije samo, ko aplikacijo uporabljate"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"Koledar"</string> <string name="permgroupdesc_calendar" msgid="3889615280211184106">"dostop do koledarja"</string> - <string name="permgrouprequest_calendar" msgid="289900767793189421">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do koledarja?"</string> + <string name="permgrouprequest_calendar" msgid="289900767793189421">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dostop do koledarja?"</string> <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"pošiljanje in ogled sporočil SMS"</string> - <string name="permgrouprequest_sms" msgid="7168124215838204719">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti pošiljanje in ogled sporočil SMS?"</string> + <string name="permgrouprequest_sms" msgid="7168124215838204719">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> pošiljanje in ogled sporočil SMS?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Shramba"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"dostop do fotografij, predstavnosti in datotek v napravi"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do fotografij, predstavnosti in datotek v svoji napravi?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dostop do fotografij, predstavnosti in datotek v svoji napravi?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"snemanje zvoka"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti snemanje zvoka?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> snemanje zvoka?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"Telesna dejavnost"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"dostop do vaše telesne dejavnosti"</string> - <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do svoje telesne dejavnosti?"</string> + <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dostop do svoje telesne dejavnosti?"</string> <string name="permgrouplab_camera" msgid="4820372495894586615">"Fotoaparat"</string> <string name="permgroupdesc_camera" msgid="3250611594678347720">"fotografiranje in snemanje videoposnetkov"</string> - <string name="permgrouprequest_camera" msgid="1299833592069671756">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti fotografiranje in snemanje videoposnetkov?"</string> + <string name="permgrouprequest_camera" msgid="1299833592069671756">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> fotografiranje in snemanje videoposnetkov?"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"Dnevniki klicev"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"branje in zapisovanje dnevnika klicev v telefonu"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do dnevnikov klicev v telefonu?"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dostop do dnevnikov klicev v telefonu?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Telefon"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"opravljanje in upravljanje telefonskih klicev"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti opravljanje in upravljanje telefonskih klicev?"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> opravljanje in upravljanje telefonskih klicev?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"Tipala telesnih funkcij"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"dostop do podatkov tipala o vaših vitalnih znakih"</string> - <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do podatkov tipala o vitalnih znakih?"</string> + <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Dovolite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> dostop do podatkov tipala o vitalnih znakih?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pridobiti vsebino okna"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Preverjanje vsebine okna, ki ga uporabljate."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vklopiti raziskovanje z dotikom"</string> @@ -1970,7 +1970,7 @@ <string name="profile_encrypted_message" msgid="6964994232310195874">"Dotaknite se za odkl. del. pr."</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Vzpostavljena povezava z napravo <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> <string name="usb_mtp_launch_notification_description" msgid="8541876176425411358">"Dotaknite se, če si želite ogledati datoteke"</string> - <string name="app_info" msgid="6856026610594615344">"Podatki o aplikaciji"</string> + <string name="app_info" msgid="6856026610594615344">"Podatki o aplikacijah"</string> <string name="negative_duration" msgid="5688706061127375131">"−<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="demo_starting_message" msgid="5268556852031489931">"Začenjanje predstavitve …"</string> <string name="demo_restarting_message" msgid="952118052531642451">"Ponastavljanje naprave …"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 07a94cb8194a..e0d29bc7f701 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -282,7 +282,7 @@ <string name="permgroupdesc_location" msgid="1346617465127855033">"qaset te vendndodhja e kësaj pajisjeje"</string> <string name="permgrouprequest_location" msgid="3788275734953323491">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të ketë qasje te vendndodhja e kësaj pajisjeje?"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Aplikacioni do të ketë qasje te vendndodhja vetëm kur po e përdor aplikacionin"</string> - <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Dëshiron të lejosh që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të qaset te vendndodhja e kësaj pajisjeje <b>gjatë të gjithë kohës</b>?"</string> + <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të qaset te vendndodhja e kësaj pajisjeje <b>gjatë të gjithë kohës</b>?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Aplikacioni aktualisht mund të qaset te vendndodhja vetëm kur ti e përdor aplikacionin"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"Kalendari"</string> <string name="permgroupdesc_calendar" msgid="3889615280211184106">"qasje te kalendari yt"</string> @@ -292,7 +292,7 @@ <string name="permgrouprequest_sms" msgid="7168124215838204719">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të dërgojë dhe të shikojë mesazhet SMS?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Hapësira e ruajtjes"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"qasjen te fotografitë, përmbajtjet audio-vizuale dhe skedarët në pajisje"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Të lejohet apl. <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> që të ketë qasje te fotografitë, media dhe skedarët në pajisjen tënde?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të ketë qasje te fotografitë, media dhe skedarët në pajisjen tënde?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofoni"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"regjistro audio"</string> <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të regjistrojë audio?"</string> @@ -304,7 +304,7 @@ <string name="permgrouprequest_camera" msgid="1299833592069671756">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të nxjerrë fotografi dhe të regjistrojë video?"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"Evidencat e telefonatave"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"lexo dhe shkruaj evidencën e telefonatave"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Dëshiron të lejosh që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të ketë qasje në evidencat e tua të telefonatave?"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"Të <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të ketë qasje në evidencat e tua të telefonatave?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Telefoni"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"kryej dhe menaxho telefonata"</string> <string name="permgrouprequest_phone" msgid="9166979577750581037">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të kryejë dhe të menaxhojë telefonata?"</string> @@ -1877,8 +1877,8 @@ <string name="default_notification_channel_label" msgid="5929663562028088222">"E pakategorizuara"</string> <string name="importance_from_user" msgid="7318955817386549931">"Ke caktuar rëndësinë e këtyre njoftimeve."</string> <string name="importance_from_person" msgid="9160133597262938296">"Është i rëndësishëm për shkak të personave të përfshirë."</string> - <string name="user_creation_account_exists" msgid="1942606193570143289">"Dëshiron të lejosh <xliff:g id="APP">%1$s</xliff:g> që të krijojë një përdorues të ri me <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string> - <string name="user_creation_adding" msgid="4482658054622099197">"Dëshiron të lejosh <xliff:g id="APP">%1$s</xliff:g> që të krijojë një përdorues të ri me <xliff:g id="ACCOUNT">%2$s</xliff:g> (një përdorues me këtë llogari ekziston tashmë) ?"</string> + <string name="user_creation_account_exists" msgid="1942606193570143289">"Të lejohet <xliff:g id="APP">%1$s</xliff:g> që të krijojë një përdorues të ri me <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string> + <string name="user_creation_adding" msgid="4482658054622099197">"Të lejohet <xliff:g id="APP">%1$s</xliff:g> që të krijojë një përdorues të ri me <xliff:g id="ACCOUNT">%2$s</xliff:g> (një përdorues me këtë llogari ekziston tashmë) ?"</string> <string name="language_selection_title" msgid="2680677278159281088">"Shto një gjuhë"</string> <string name="country_selection_title" msgid="2954859441620215513">"Preferenca e rajonit"</string> <string name="search_language_hint" msgid="7042102592055108574">"Shkruaj emrin e gjuhës"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 44e7a85f1dbb..454cc9cafe1f 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -293,9 +293,9 @@ <string name="permgrouplab_sms" msgid="228308803364967808">"SMS"</string> <string name="permgroupdesc_sms" msgid="4656988620100940350">"шаље и прегледа SMS поруке"</string> <string name="permgrouprequest_sms" msgid="7168124215838204719">"Желите ли да омогућите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> шаље и прегледа SMS-ове?"</string> - <string name="permgrouplab_storage" msgid="1971118770546336966">"Меморија"</string> + <string name="permgrouplab_storage" msgid="1971118770546336966">"Меморијски простор"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"приступа сликама, медијима и датотекама на уређају"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"Желите ли да омогућите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>приступа сликама, медијским датотекама и датотекама на уређају?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"Желите ли да омогућите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> приступа сликама, медијским датотекама и датотекама на уређају?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Микрофон"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"снима звук"</string> <string name="permgrouprequest_microphone" msgid="9167492350681916038">"Желите ли да омогућите да <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> снима звук?"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 9a45c2629f4c..9702f62b57e4 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -196,7 +196,7 @@ <string name="power_dialog" product="tv" msgid="6153888706430556356">"Chaguo za runinga"</string> <string name="power_dialog" product="default" msgid="1319919075463988638">"Machaguo ya simu"</string> <string name="silent_mode" msgid="7167703389802618663">"Hali ya kimya"</string> - <string name="turn_on_radio" msgid="3912793092339962371">"Washa mtandao-hewa"</string> + <string name="turn_on_radio" msgid="3912793092339962371">"Washa mtandaopepe"</string> <string name="turn_off_radio" msgid="8198784949987062346">"Zima pasiwaya"</string> <string name="screen_lock" msgid="799094655496098153">"Funga skrini"</string> <string name="power_off" msgid="4266614107412865048">"Zima"</string> @@ -227,7 +227,7 @@ <string name="global_action_emergency" msgid="7112311161137421166">"Dharura"</string> <string name="global_action_bug_report" msgid="7934010578922304799">"Ripoti ya hitilafu"</string> <string name="global_action_logout" msgid="935179188218826050">"Maliza kipindi"</string> - <string name="global_action_screenshot" msgid="8329831278085426283">"Picha ya skrini"</string> + <string name="global_action_screenshot" msgid="8329831278085426283">"Pichaskrini"</string> <string name="bugreport_title" msgid="5981047024855257269">"Ripoti ya hitilafu"</string> <string name="bugreport_message" msgid="398447048750350456">"Hii itakusanya maelezo kuhusu hali ya kifaa chako kwa sasa, na itume kama barua pepe. Itachukua muda mfupi tangu ripoti ya hitilafu ianze kuzalishwa hadi iwe tayari kutumwa; vumilia."</string> <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Ripoti ya kushirikiana"</string> @@ -1278,13 +1278,13 @@ <item msgid="8257233890381651999">"VPN"</item> </string-array> <string name="network_switch_type_name_unknown" msgid="4552612897806660656">"aina ya mtandao isiyojulikana"</string> - <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Haikuweza kuunganisha kwa Mtandao-Hewa"</string> + <string name="wifi_watchdog_network_disabled" msgid="7904214231651546347">"Imeshindwa kuunganisha Wi-Fi"</string> <string name="wifi_watchdog_network_disabled_detailed" msgid="4917472096696322767">" inao muunganisho duni wa wavuti."</string> <string name="wifi_connect_alert_title" msgid="8455846016001810172">"Ungepenga kuruhusu muunganisho?"</string> <string name="wifi_connect_alert_message" msgid="6451273376815958922">"Programu ya %1$s ingependa kuunganisha kwenye Mtandao wa Wifi wa %2$s"</string> <string name="wifi_connect_default_application" msgid="7143109390475484319">"Programu"</string> <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"Wi-Fi Moja kwa Moja"</string> - <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Anzisha Wi-Fi Moja kwa Moja. Hii itazima mteja/mtandao-hewa wa Wi-Fi."</string> + <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"Anzisha Wi-Fi Moja kwa Moja. Hii itazima kiteja cha Wi-Fi/mtandaopepe."</string> <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"Haikuweza kuanzisha Wi-Fi Moja kwa Moja."</string> <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Moja kwa Moja imewashwa"</string> <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"Gusa ili uweke mipangilio"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 320579416974..c923a3d8682a 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1970,7 +1970,7 @@ <string name="profile_encrypted_message" msgid="6964994232310195874">"Торкніться, щоб розблокувати"</string> <string name="usb_mtp_launch_notification_title" msgid="8359219638312208932">"Під’єднано до пристрою <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> <string name="usb_mtp_launch_notification_description" msgid="8541876176425411358">"Торкніться, щоб переглянути файли"</string> - <string name="app_info" msgid="6856026610594615344">"Про додаток"</string> + <string name="app_info" msgid="6856026610594615344">"Про додатки"</string> <string name="negative_duration" msgid="5688706061127375131">"-<xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="demo_starting_message" msgid="5268556852031489931">"Запуск демонстрації…"</string> <string name="demo_restarting_message" msgid="952118052531642451">"Скидання налаштувань пристрою…"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index c22715fbd504..cc5c49233871 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -277,10 +277,10 @@ <string name="managed_profile_label" msgid="8947929265267690522">"Ishchi profilga almashtirish"</string> <string name="permgrouplab_contacts" msgid="3657758145679177612">"Kontaktlar"</string> <string name="permgroupdesc_contacts" msgid="6951499528303668046">"kontaktlarga kirish"</string> - <string name="permgrouprequest_contacts" msgid="6032805601881764300">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun kontaktlaringizga ruxsat berilsinmi?"</string> + <string name="permgrouprequest_contacts" msgid="6032805601881764300">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun kontaktlaringizga kirish ruxsati berilsinmi?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"Joylashuv"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"shu qurilmaning joylashuvi haqidagi axborotga kirish"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun bu qurilmaning joylashuvi haqidagi axborotdan foydalanishga ruxsat berilsinmi?"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun bu qurilmaning joylashuvi haqidagi axborotdan foydalanish ruxsati berilsinmi?"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Bu ilovadan foydalanilayotdangina u joylashuv axborotidan foydalana oladi"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun bu qurilmaning joylashuvi haqidagi axborotdan <b>doim</b> foydalanish ruxsati berilsinmi?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Ilova hozirda joylashuv axborotidan faqat ilova ishlatilayotgandagina foydalana oladi"</string> @@ -292,22 +292,22 @@ <string name="permgrouprequest_sms" msgid="7168124215838204719">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun SMS xabarlarni yuborish va ko‘rishga ruxsat berilsinmi?"</string> <string name="permgrouplab_storage" msgid="1971118770546336966">"Xotira"</string> <string name="permgroupdesc_storage" msgid="637758554581589203">"qurilmangizdagi surat, multimedia va fayllarga kirish"</string> - <string name="permgrouprequest_storage" msgid="7885942926944299560">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ilovasiga qurilmangizdagi surat, multimedia va fayllarga kirish uchun ruxsat berilsinmi?"</string> + <string name="permgrouprequest_storage" msgid="7885942926944299560">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun qurilmangizdagi suratlar, multimedia va fayllarga kirish ruxsati berilsinmi?"</string> <string name="permgrouplab_microphone" msgid="171539900250043464">"Mikrofon"</string> <string name="permgroupdesc_microphone" msgid="4988812113943554584">"ovoz yozib olish"</string> - <string name="permgrouprequest_microphone" msgid="9167492350681916038">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun audio yozib olishga ruxsat berilsinmi?"</string> + <string name="permgrouprequest_microphone" msgid="9167492350681916038">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun audio yozib olish ruxsati berilsinmi?"</string> <string name="permgrouplab_activityRecognition" msgid="1565108047054378642">"Jismoniy harakatlar"</string> <string name="permgroupdesc_activityRecognition" msgid="6949472038320473478">"jismoniy harakatlar axborotiga ruxsat"</string> <string name="permgrouprequest_activityRecognition" msgid="7626438016904799383">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ilovasiga jismoniy harakatlaringiz axboroti uchun ruxsat berilsinmi?"</string> <string name="permgrouplab_camera" msgid="4820372495894586615">"Kamera"</string> <string name="permgroupdesc_camera" msgid="3250611594678347720">"suratga olish va video yozib olish"</string> - <string name="permgrouprequest_camera" msgid="1299833592069671756">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun surat va videoga olishga ruxsat berilsinmi?"</string> + <string name="permgrouprequest_camera" msgid="1299833592069671756">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun surat va videoga olish ruxsati berilsinmi?"</string> <string name="permgrouplab_calllog" msgid="8798646184930388160">"Chaqiruvlar jurnali"</string> <string name="permgroupdesc_calllog" msgid="3006237336748283775">"telefon chaqiruvlari jurnalini o‘qish va unga yozish"</string> - <string name="permgrouprequest_calllog" msgid="8487355309583773267">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun telefon chaqiruvlari tarixiga kirishga ruxsat berilsinmi?"</string> + <string name="permgrouprequest_calllog" msgid="8487355309583773267">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun telefoningizdagi chaqiruvlar tarixiga kirish ruxsati berilsinmi?"</string> <string name="permgrouplab_phone" msgid="5229115638567440675">"Telefon"</string> <string name="permgroupdesc_phone" msgid="6234224354060641055">"telefon qo‘ng‘iroqlarini amalga oshirish va boshqarish"</string> - <string name="permgrouprequest_phone" msgid="9166979577750581037">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun telefon chaqiruvlarini amalga oshirish va boshqarishga ruxsat berilsinmi?"</string> + <string name="permgrouprequest_phone" msgid="9166979577750581037">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun telefon chaqiruvlarini amalga oshirish va boshqarish ruxsati berilsinmi?"</string> <string name="permgrouplab_sensors" msgid="4838614103153567532">"Tana sezgichlari"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"organizm holati haqidagi sezgich ma’lumotlariga kirish"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun organizm holati haqidagi sezgichlar axborotlariga ruxsat berilsinmi?"</string> @@ -812,7 +812,7 @@ <string name="lockscreen_password_wrong" msgid="5737815393253165301">"Qaytadan urining"</string> <string name="lockscreen_storage_locked" msgid="9167551160010625200">"Barcha funksiya va ma’lumotlar uchun qulfdan chiqaring"</string> <string name="faceunlock_multiple_failures" msgid="754137583022792429">"Yuzni tanitib qulfni ochishga urinish miqdoridan oshib ketdi"</string> - <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM karta yo‘q"</string> + <string name="lockscreen_missing_sim_message_short" msgid="5099439277819215399">"SIM karta solinmagan"</string> <string name="lockscreen_missing_sim_message" product="tablet" msgid="151659196095791474">"Planshetingizda SIM karta yo‘q."</string> <string name="lockscreen_missing_sim_message" product="tv" msgid="1943633865476989599">"Televizorda SIM karta yo‘q."</string> <string name="lockscreen_missing_sim_message" product="default" msgid="2186920585695169078">"Telefoningizda SIM karta yo‘q."</string> @@ -898,7 +898,7 @@ <string name="factorytest_failed" msgid="5410270329114212041">"Ishlab chiqarish sinovi amalga oshmadi"</string> <string name="factorytest_not_system" msgid="4435201656767276723">"The FACTORY_TEST amali faqatgina /system/app ichiga o‘rnatilgan paketlar bilan ishlay oladi."</string> <string name="factorytest_no_action" msgid="872991874799998561">"FACTORY_TEST amalini bajarish uchun birorta ham paket topilmadi."</string> - <string name="factorytest_reboot" msgid="6320168203050791643">"O‘chirib yoqish"</string> + <string name="factorytest_reboot" msgid="6320168203050791643">"Qayta ishga tushirish"</string> <string name="js_dialog_title" msgid="1987483977834603872">"\"<xliff:g id="TITLE">%s</xliff:g>\"dagi sahifa buni xabar qilmoqda:"</string> <string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string> <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"Tasdiqlash"</string> @@ -1319,7 +1319,7 @@ <string name="sim_done_button" msgid="827949989369963775">"Tayyor"</string> <string name="sim_added_title" msgid="3719670512889674693">"SIM karta qo‘shildi"</string> <string name="sim_added_message" msgid="6599945301141050216">"Uyali tarmoqqa ulanish uchun qurilmangizni o‘chirib-yoqing."</string> - <string name="sim_restart_button" msgid="4722407842815232347">"O‘chirib yoqish"</string> + <string name="sim_restart_button" msgid="4722407842815232347">"Qayta ishga tushirish"</string> <string name="install_carrier_app_notification_title" msgid="9056007111024059888">"Mobil xizmatni faollashtirish"</string> <string name="install_carrier_app_notification_text" msgid="3346681446158696001">"Yangi SIM kartani faollashtirish uchun aloqa operatori ilovasini yuklab oling"</string> <string name="install_carrier_app_notification_text_app_name" msgid="1196505084835248137">"Yangi SIM kartani faollashtirish uchun <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasini yuklab oling"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index ef9351fe94a7..14d0e28b676e 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -227,7 +227,7 @@ <string name="global_action_emergency" msgid="7112311161137421166">"Khẩn cấp"</string> <string name="global_action_bug_report" msgid="7934010578922304799">"Báo cáo lỗi"</string> <string name="global_action_logout" msgid="935179188218826050">"Kết thúc phiên"</string> - <string name="global_action_screenshot" msgid="8329831278085426283">"Chụp ảnh màn hình"</string> + <string name="global_action_screenshot" msgid="8329831278085426283">"Chụp màn hình"</string> <string name="bugreport_title" msgid="5981047024855257269">"Báo cáo lỗi"</string> <string name="bugreport_message" msgid="398447048750350456">"Báo cáo này sẽ thu thập thông tin về tình trạng thiết bị hiện tại của bạn, để gửi dưới dạng thông báo qua email. Sẽ mất một chút thời gian kể từ khi bắt đầu báo cáo lỗi cho tới khi báo cáo sẵn sàng để gửi; xin vui lòng kiên nhẫn."</string> <string name="bugreport_option_interactive_title" msgid="8635056131768862479">"Báo cáo tương tác"</string> @@ -281,7 +281,7 @@ <string name="permgrouplab_location" msgid="7275582855722310164">"Vị trí"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"truy cập vị trí của thiết bị này"</string> <string name="permgrouprequest_location" msgid="3788275734953323491">"Cho phép <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> truy cập vào vị trí của thiết bị này?"</string> - <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Ứng dụng này sẽ chỉ có quyền truy cập vào vị trí trong khi bạn sử dụng"</string> + <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"Ứng dụng này sẽ chỉ có quyền truy cập vào vị trí khi bạn đang sử dụng ứng dụng này"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"Bạn muốn cho phép <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> truy cập vào vị trí của thiết bị này <b>trong mọi trường hợp</b>?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"Hiện tại, ứng dụng này chỉ có thể truy cập vào vị trí trong khi bạn dùng"</string> <string name="permgrouplab_calendar" msgid="5863508437783683902">"Lịch"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 8863caba3ca8..7f478fb8db91 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -280,7 +280,7 @@ <string name="permgrouprequest_contacts" msgid="6032805601881764300">"允许<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>访问您的通讯录吗?"</string> <string name="permgrouplab_location" msgid="7275582855722310164">"位置信息"</string> <string name="permgroupdesc_location" msgid="1346617465127855033">"获取此设备的位置信息"</string> - <string name="permgrouprequest_location" msgid="3788275734953323491">"要允许<xliff:g id="APP_NAME">%1$s</xliff:g>获取此设备的位置信息吗?"</string> + <string name="permgrouprequest_location" msgid="3788275734953323491">"允许“<xliff:g id="APP_NAME">%1$s</xliff:g>”获取此设备的位置信息吗?"</string> <string name="permgrouprequestdetail_location" msgid="1347189607421252902">"只有当您使用该应用时,该应用才有权访问位置信息"</string> <string name="permgroupbackgroundrequest_location" msgid="5039063878675613235">"要<b>一律允许</b>允许<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>访问此设备的位置信息吗?"</string> <string name="permgroupbackgroundrequestdetail_location" msgid="4597006851453417387">"目前只有当您使用该应用时,该应用才能访问位置信息"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 3422c2fb725a..cdb150ef6503 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -401,7 +401,7 @@ <string name="permdesc_writeCallLog" product="tablet" msgid="6661806062274119245">"允許應用程式修改平板電腦的通話記錄,包括來電和已撥電話相關資料。惡意應用程式可能會藉此刪除或修改您的通話記錄。"</string> <string name="permdesc_writeCallLog" product="tv" msgid="4225034892248398019">"允許應用程式修改電視的通話記錄,包括來電和撥出電話的相關資料。惡意應用程式可能會藉此清除或修改您的通話記錄。"</string> <string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"允許應用程式修改手機的通話記錄,包括來電和已撥電話相關資料。惡意應用程式可能會藉此刪除或修改您的通話記錄。"</string> - <string name="permlab_bodySensors" msgid="4683341291818520277">"存取身體感應器 (例如心跳監測器)"</string> + <string name="permlab_bodySensors" msgid="4683341291818520277">"存取人體感應器 (例如心跳監測器)"</string> <string name="permdesc_bodySensors" product="default" msgid="4380015021754180431">"允許應用程式存取感應器所收集的資料 (這類感應器可監測您的體能狀態,例如您的心率)。"</string> <string name="permlab_readCalendar" msgid="6716116972752441641">"讀取日曆活動和詳情"</string> <string name="permdesc_readCalendar" product="tablet" msgid="4993979255403945892">"此應用程式可以讀取所有儲存在您的平板電腦的日曆活動,並分享或儲存您的日曆資料。"</string> @@ -1919,8 +1919,8 @@ <string name="app_category_productivity" msgid="3742083261781538852">"生產力應用程式"</string> <string name="device_storage_monitor_notification_channel" msgid="3295871267414816228">"裝置儲存空間"</string> <string name="adb_debugging_notification_channel_tv" msgid="5537766997350092316">"USB 偵錯"</string> - <string name="time_picker_hour_label" msgid="2979075098868106450">"小時"</string> - <string name="time_picker_minute_label" msgid="5168864173796598399">"分鐘"</string> + <string name="time_picker_hour_label" msgid="2979075098868106450">"時"</string> + <string name="time_picker_minute_label" msgid="5168864173796598399">"分"</string> <string name="time_picker_header_text" msgid="143536825321922567">"設定時間"</string> <string name="time_picker_input_error" msgid="7574999942502513765">"請輸入有效的時間"</string> <string name="time_picker_prompt_label" msgid="7588093983899966783">"輸入時間"</string> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index bbc784a10db3..26a9f570a6d2 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -346,13 +346,21 @@ By setting this value on two or more packages, each of these packages will be given a single shared user ID, so they can for example run in the same process. Note that for them to actually get the same - user ID, they must also be signed with the same signature. --> + user ID, they must also be signed with the same signature. + @deprecated Shared user id's cause non-deterministic behaviour within the + package manager. As such, it's use is discouraged, deprecated, and will + be removed altogether in a future version of Android. Instead, proper + communication mechanisms such as services and providers should be used + to facilitate interoperability between shared components. --> <attr name="sharedUserId" format="string" /> <!-- Specify a label for the shared user UID of this package. This is only used if you have also used android:sharedUserId. This must be a reference to a string resource; it can not be an explicit - string. --> + string. + @deprecated There is no replacement for this attribute. + {@link android.R.attr#sharedUserId} has been deprecated making + this attribute unnecessary. --> <attr name="sharedUserLabel" format="reference" /> <!-- Internal version code. This is the number used to determine whether diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 9c4717b4497e..21a8f4c7ff89 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -572,6 +572,15 @@ <!-- Integer size limit, in KB, for a single WifiLogger ringbuffer, in verbose logging mode --> <integer translatable="false" name="config_wifi_logger_ring_buffer_verbose_size_limit_kb">1024</integer> + <!-- Array indicating wifi fatal firmware alert error code list from driver --> + <integer-array translatable="false" name="config_wifi_fatal_firmware_alert_error_code_list"> + <!-- Example: + <item>0</item> + <item>1</item> + <item>2</item> + --> + </integer-array> + <!-- Boolean indicating whether or not wifi should turn off when emergency call is made --> <bool translatable="false" name="config_wifi_turn_off_during_emergency_call">false</bool> @@ -1098,6 +1107,7 @@ 2 - Power off (with confirmation) 3 - Power off (without confirmation) 4 - Go to voice assist + 5 - Go to assistant (Settings.Secure.ASSISTANT) --> <integer name="config_longPressOnPowerBehavior">1</integer> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index a6a0c6e50a85..186b84ceb255 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -381,6 +381,7 @@ <java-symbol type="bool" name="config_wifi_revert_country_code_on_cellular_loss" /> <java-symbol type="integer" name="config_wifi_logger_ring_buffer_default_size_limit_kb" /> <java-symbol type="integer" name="config_wifi_logger_ring_buffer_verbose_size_limit_kb" /> + <java-symbol type="array" name="config_wifi_fatal_firmware_alert_error_code_list" /> <java-symbol type="bool" name="config_wifi_turn_off_during_emergency_call" /> <java-symbol type="bool" name="config_supportMicNearUltrasound" /> <java-symbol type="bool" name="config_supportSpeakerNearUltrasound" /> @@ -2794,6 +2795,7 @@ <java-symbol type="drawable" name="scroll_indicator_material" /> <java-symbol type="layout" name="chooser_row" /> + <java-symbol type="layout" name="chooser_profile_row" /> <java-symbol type="color" name="chooser_row_divider" /> <java-symbol type="layout" name="chooser_row_direct_share" /> <java-symbol type="bool" name="config_supportDoubleTapWake" /> diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java index 0e94abc0dcac..a853121bac4e 100644 --- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java +++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java @@ -130,8 +130,10 @@ public class SettingsBackupTest { Settings.Global.AUTOFILL_MAX_PARTITIONS_SIZE, Settings.Global.AUTOFILL_MAX_VISIBLE_DATASETS, Settings.Global.AUTOMATIC_POWER_SAVE_MODE, + Settings.Global.AVERAGE_TIME_TO_DISCHARGE, Settings.Global.BACKGROUND_ACTIVITY_STARTS_ENABLED, Settings.Global.BATTERY_CHARGING_STATE_UPDATE_DELAY, + Settings.Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME, Settings.Global.BROADCAST_BG_CONSTANTS, Settings.Global.BROADCAST_FG_CONSTANTS, Settings.Global.BROADCAST_OFFLOAD_CONSTANTS, @@ -462,6 +464,8 @@ public class SettingsBackupTest { Settings.Global.TEXT_CLASSIFIER_ACTION_MODEL_PARAMS, Settings.Global.THEATER_MODE_ON, Settings.Global.TIME_ONLY_MODE_CONSTANTS, + Settings.Global.TIME_REMAINING_ESTIMATE_MILLIS, + Settings.Global.TIME_REMAINING_ESTIMATE_BASED_ON_USAGE, Settings.Global.TRANSITION_ANIMATION_SCALE, Settings.Global.TRUSTED_SOUND, Settings.Global.TZINFO_UPDATE_CONTENT_URL, @@ -573,7 +577,10 @@ public class SettingsBackupTest { Settings.Global.RADIO_BUG_WAKELOCK_TIMEOUT_COUNT_THRESHOLD, Settings.Global.RADIO_BUG_SYSTEM_ERROR_COUNT_THRESHOLD, Settings.Global.ENABLED_SUBSCRIPTION_FOR_SLOT, - Settings.Global.MODEM_STACK_ENABLED_FOR_SLOT); + Settings.Global.MODEM_STACK_ENABLED_FOR_SLOT, + Settings.Global.POWER_BUTTON_LONG_PRESS, + Settings.Global.POWER_BUTTON_VERY_LONG_PRESS); + private static final Set<String> BACKUP_BLACKLISTED_SECURE_SETTINGS = newHashSet( Settings.Secure.ACCESSIBILITY_SOFT_KEYBOARD_MODE, diff --git a/core/tests/coretests/src/android/util/HashedStringCacheTest.java b/core/tests/coretests/src/android/util/HashedStringCacheTest.java index 333db246d637..229247353a52 100644 --- a/core/tests/coretests/src/android/util/HashedStringCacheTest.java +++ b/core/tests/coretests/src/android/util/HashedStringCacheTest.java @@ -80,6 +80,17 @@ public class HashedStringCacheTest { assertThat(cachedResult2.hashedString, is(cachedResult.hashedString)); } + + @Test + public void testThatMultipleInputResultInDifferentHash() { + HashedStringCache cache = HashedStringCache.getInstance(); + HashedStringCache.HashResult cachedResult = + cache.hashString(mContext, TAG, TEST_STRING, 7); + HashedStringCache.HashResult cachedResult2 = + cache.hashString(mContext, TAG, "different_test", 7); + assertThat(cachedResult2.hashedString, is(not(cachedResult.hashedString))); + } + @Test public void testThatZeroDaysResultsInNewHash() { HashedStringCache cache = HashedStringCache.getInstance(); diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java index ac039dddb66c..767ec0e38a86 100644 --- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java +++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java @@ -18,6 +18,7 @@ package com.android.internal.app; import static androidx.test.espresso.Espresso.onView; import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; import static androidx.test.espresso.assertion.ViewAssertions.matches; import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; import static androidx.test.espresso.matcher.ViewMatchers.withId; @@ -62,9 +63,6 @@ import com.android.internal.app.ResolverActivity.ResolvedComponentInfo; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import java.util.Arrays; -import java.util.Collection; -import java.util.function.Function; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -74,7 +72,10 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mockito; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; import java.util.List; +import java.util.function.Function; /** * Chooser activity instrumentation tests @@ -245,7 +246,7 @@ public class ChooserActivityTest { waitForIdle(); assertThat(activity.getAdapter().getCount(), is(2)); - onView(withId(R.id.profile_button)).check(matches(not(isDisplayed()))); + onView(withId(R.id.profile_button)).check(doesNotExist()); ResolveInfo[] chosen = new ResolveInfo[1]; sOverrides.onSafelyStartCallback = targetInfo -> { @@ -770,8 +771,6 @@ public class ChooserActivityTest { } // This test is too long and too slow and should not be taken as an example for future tests. - // This is necessary because it tests that multiple calls result in the same result but - // normally a test this long should be broken into smaller tests testing individual components. @Test public void testDirectTargetSelectionLogging() throws InterruptedException { Intent sendIntent = createSendTextIntent(); @@ -785,7 +784,7 @@ public class ChooserActivityTest { MetricsLogger mockLogger = sOverrides.metricsLogger; ArgumentCaptor<LogMaker> logMakerCaptor = ArgumentCaptor.forClass(LogMaker.class); // Create direct share target - List<ChooserTarget> serviceTargets = createDirectShareTargets(1); + List<ChooserTarget> serviceTargets = createDirectShareTargets(1, ""); ResolveInfo ri = ResolverDataProvider.createResolveInfo(3, 0); // Start activity @@ -808,7 +807,7 @@ public class ChooserActivityTest { // TODO: restructure the tests b/129870719 Thread.sleep(ChooserActivity.LIST_VIEW_UPDATE_INTERVAL_IN_MILLIS); - assertThat("Chooser should have 3 targets (2apps, 1 direct)", + assertThat("Chooser should have 3 targets (2 apps, 1 direct)", activity.getAdapter().getCount(), is(3)); assertThat("Chooser should have exactly one selectable direct target", activity.getAdapter().getSelectableServiceTargetCount(), is(1)); @@ -832,20 +831,97 @@ public class ChooserActivityTest { .getAllValues().get(2).getTaggedData(MetricsEvent.FIELD_HASHED_TARGET_NAME); assertThat("Hash is not predictable but must be obfuscated", hashedName, is(not(name))); + assertThat("The packages shouldn't match for app target and direct target", logMakerCaptor + .getAllValues().get(2).getTaggedData(MetricsEvent.FIELD_RANKED_POSITION), is(-1)); + } - // Running the same again to check if the hashed name is the same as before. + // This test is too long and too slow and should not be taken as an example for future tests. + @Test + public void testDirectTargetLoggingWithRankedAppTarget() throws InterruptedException { + Intent sendIntent = createSendTextIntent(); + // We need app targets for direct targets to get displayed + List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2); + when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(), + Mockito.anyBoolean(), + Mockito.isA(List.class))).thenReturn(resolvedComponentInfos); - Intent sendIntent2 = createSendTextIntent(); + // Set up resources + MetricsLogger mockLogger = sOverrides.metricsLogger; + ArgumentCaptor<LogMaker> logMakerCaptor = ArgumentCaptor.forClass(LogMaker.class); + // Create direct share target + List<ChooserTarget> serviceTargets = createDirectShareTargets(1, + resolvedComponentInfos.get(0).getResolveInfoAt(0).activityInfo.packageName); + ResolveInfo ri = ResolverDataProvider.createResolveInfo(3, 0); // Start activity - final ChooserWrapperActivity activity2 = mActivityRule - .launchActivity(Intent.createChooser(sendIntent2, null)); + final ChooserWrapperActivity activity = mActivityRule + .launchActivity(Intent.createChooser(sendIntent, null)); + + // Insert the direct share target + InstrumentationRegistry.getInstrumentation().runOnMainSync( + () -> activity.getAdapter().addServiceResults( + activity.createTestDisplayResolveInfo(sendIntent, + ri, + "testLabel", + "testInfo", + sendIntent), + serviceTargets, + false) + ); + // Thread.sleep shouldn't be a thing in an integration test but it's + // necessary here because of the way the code is structured + // TODO: restructure the tests b/129870719 + Thread.sleep(ChooserActivity.LIST_VIEW_UPDATE_INTERVAL_IN_MILLIS); + + assertThat("Chooser should have 3 targets (2 apps, 1 direct)", + activity.getAdapter().getCount(), is(3)); + assertThat("Chooser should have exactly one selectable direct target", + activity.getAdapter().getSelectableServiceTargetCount(), is(1)); + assertThat("The resolver info must match the resolver info used to create the target", + activity.getAdapter().getItem(0).getResolveInfo(), is(ri)); + + // Click on the direct target + String name = serviceTargets.get(0).getTitle().toString(); + onView(withText(name)) + .perform(click()); waitForIdle(); + // Currently we're seeing 3 invocations + // 1. ChooserActivity.onCreate() + // 2. ChooserActivity$ChooserRowAdapter.createContentPreviewView() + // 3. ChooserActivity.startSelected -- which is the one we're after + verify(mockLogger, Mockito.times(3)).write(logMakerCaptor.capture()); + assertThat(logMakerCaptor.getAllValues().get(2).getCategory(), + is(MetricsEvent.ACTION_ACTIVITY_CHOOSER_PICKED_SERVICE_TARGET)); + assertThat("The packages should match for app target and direct target", logMakerCaptor + .getAllValues().get(2).getTaggedData(MetricsEvent.FIELD_RANKED_POSITION), is(0)); + } + + // This test is too long and too slow and should not be taken as an example for future tests. + @Test + public void testDirectTargetLoggingWithAppTargetNotRanked() throws InterruptedException { + Intent sendIntent = createSendTextIntent(); + // We need app targets for direct targets to get displayed + List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(15); + when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(), + Mockito.anyBoolean(), + Mockito.isA(List.class))).thenReturn(resolvedComponentInfos); + + // Set up resources + MetricsLogger mockLogger = sOverrides.metricsLogger; + ArgumentCaptor<LogMaker> logMakerCaptor = ArgumentCaptor.forClass(LogMaker.class); + // Create direct share target + List<ChooserTarget> serviceTargets = createDirectShareTargets(1, + resolvedComponentInfos.get(14).getResolveInfoAt(0).activityInfo.packageName); + ResolveInfo ri = ResolverDataProvider.createResolveInfo(16, 0); + + // Start activity + final ChooserWrapperActivity activity = mActivityRule + .launchActivity(Intent.createChooser(sendIntent, null)); // Insert the direct share target InstrumentationRegistry.getInstrumentation().runOnMainSync( - () -> activity2.getAdapter().addServiceResults( - activity2.createTestDisplayResolveInfo(sendIntent, + () -> activity.getAdapter().addServiceResults( + activity.createTestDisplayResolveInfo(sendIntent, ri, "testLabel", "testInfo", @@ -858,29 +934,28 @@ public class ChooserActivityTest { // TODO: restructure the tests b/129870719 Thread.sleep(ChooserActivity.LIST_VIEW_UPDATE_INTERVAL_IN_MILLIS); - assertThat("Chooser should have 3 targets (2apps, 1 direct)", - activity2.getAdapter().getCount(), is(3)); + assertThat("Chooser should have 20 targets (4 apps, 1 direct, 15 A-Z)", + activity.getAdapter().getCount(), is(20)); assertThat("Chooser should have exactly one selectable direct target", - activity2.getAdapter().getSelectableServiceTargetCount(), is(1)); + activity.getAdapter().getSelectableServiceTargetCount(), is(1)); assertThat("The resolver info must match the resolver info used to create the target", - activity2.getAdapter().getItem(0).getResolveInfo(), is(ri)); + activity.getAdapter().getItem(0).getResolveInfo(), is(ri)); // Click on the direct target + String name = serviceTargets.get(0).getTitle().toString(); onView(withText(name)) .perform(click()); waitForIdle(); - // Currently we're seeing 6 invocations (3 from above, doubled up) - // 4. ChooserActivity.onCreate() - // 5. ChooserActivity$ChooserRowAdapter.createContentPreviewView() - // 6. ChooserActivity.startSelected -- which is the one we're after - verify(mockLogger, Mockito.times(6)).write(logMakerCaptor.capture()); - assertThat(logMakerCaptor.getAllValues().get(5).getCategory(), + // Currently we're seeing 3 invocations + // 1. ChooserActivity.onCreate() + // 2. ChooserActivity$ChooserRowAdapter.createContentPreviewView() + // 3. ChooserActivity.startSelected -- which is the one we're after + verify(mockLogger, Mockito.times(3)).write(logMakerCaptor.capture()); + assertThat(logMakerCaptor.getAllValues().get(2).getCategory(), is(MetricsEvent.ACTION_ACTIVITY_CHOOSER_PICKED_SERVICE_TARGET)); - String hashedName2 = (String) logMakerCaptor - .getAllValues().get(5).getTaggedData(MetricsEvent.FIELD_HASHED_TARGET_NAME); - assertThat("Hashing the same name should result in the same hashed value", - hashedName2, is(hashedName)); + assertThat("The packages shouldn't match for app target and direct target", logMakerCaptor + .getAllValues().get(2).getTaggedData(MetricsEvent.FIELD_RANKED_POSITION), is(-1)); } private Intent createSendTextIntent() { @@ -946,12 +1021,17 @@ public class ChooserActivityTest { return infoList; } - private List<ChooserTarget> createDirectShareTargets(int numberOfResults) { + private List<ChooserTarget> createDirectShareTargets(int numberOfResults, String packageName) { Icon icon = Icon.createWithBitmap(createBitmap()); String testTitle = "testTitle"; List<ChooserTarget> targets = new ArrayList<>(); for (int i = 0; i < numberOfResults; i++) { - ComponentName componentName = ResolverDataProvider.createComponentName(i); + ComponentName componentName; + if (packageName.isEmpty()) { + componentName = ResolverDataProvider.createComponentName(i); + } else { + componentName = new ComponentName(packageName, packageName + ".class"); + } ChooserTarget tempTarget = new ChooserTarget( testTitle + i, icon, diff --git a/keystore/java/android/security/keystore/KeymasterUtils.java b/keystore/java/android/security/keystore/KeymasterUtils.java index 52896b59ddaf..79e48cdfdd8e 100644 --- a/keystore/java/android/security/keystore/KeymasterUtils.java +++ b/keystore/java/android/security/keystore/KeymasterUtils.java @@ -16,6 +16,7 @@ package android.security.keystore; +import android.content.pm.PackageManager; import android.hardware.face.FaceManager; import android.hardware.fingerprint.FingerprintManager; import android.security.GateKeeper; @@ -122,12 +123,20 @@ public abstract class KeymasterUtils { } if (spec.getUserAuthenticationValidityDurationSeconds() == -1) { + PackageManager pm = KeyStore.getApplicationContext().getPackageManager(); // Every use of this key needs to be authorized by the user. This currently means // fingerprint or face auth. - FingerprintManager fingerprintManager = - KeyStore.getApplicationContext().getSystemService(FingerprintManager.class); - FaceManager faceManager = - KeyStore.getApplicationContext().getSystemService(FaceManager.class); + FingerprintManager fingerprintManager = null; + FaceManager faceManager = null; + + if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { + fingerprintManager = KeyStore.getApplicationContext() + .getSystemService(FingerprintManager.class); + } + if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) { + faceManager = KeyStore.getApplicationContext().getSystemService(FaceManager.class); + } + // TODO: Restore USE_FINGERPRINT permission check in // FingerprintManager.getAuthenticatorId once the ID is no longer needed here. final long fingerprintOnlySid = diff --git a/libs/hwui/renderthread/CacheManager.cpp b/libs/hwui/renderthread/CacheManager.cpp index a31081c9a451..7cb241d22668 100644 --- a/libs/hwui/renderthread/CacheManager.cpp +++ b/libs/hwui/renderthread/CacheManager.cpp @@ -43,7 +43,21 @@ namespace renderthread { #define SURFACE_SIZE_MULTIPLIER (12.0f * 4.0f) #define BACKGROUND_RETENTION_PERCENTAGE (0.5f) -CacheManager::CacheManager(const DisplayInfo& display) : mMaxSurfaceArea(display.w * display.h) { +CacheManager::CacheManager(const DisplayInfo& display) + : mMaxSurfaceArea(display.w * display.h) + , mMaxResourceBytes(mMaxSurfaceArea * SURFACE_SIZE_MULTIPLIER) + , mBackgroundResourceBytes(mMaxResourceBytes * BACKGROUND_RETENTION_PERCENTAGE) + // This sets the maximum size for a single texture atlas in the GPU font cache. If + // necessary, the cache can allocate additional textures that are counted against the + // total cache limits provided to Skia. + , mMaxGpuFontAtlasBytes(GrNextSizePow2(mMaxSurfaceArea)) + // This sets the maximum size of the CPU font cache to be at least the same size as the + // total number of GPU font caches (i.e. 4 separate GPU atlases). + , mMaxCpuFontCacheBytes(std::max(mMaxGpuFontAtlasBytes*4, SkGraphics::GetFontCacheLimit())) + , mBackgroundCpuFontCacheBytes(mMaxCpuFontCacheBytes * BACKGROUND_RETENTION_PERCENTAGE) { + + SkGraphics::SetFontCacheLimit(mMaxCpuFontCacheBytes); + mVectorDrawableAtlas = new skiapipeline::VectorDrawableAtlas( mMaxSurfaceArea / 2, skiapipeline::VectorDrawableAtlas::StorageMode::disallowSharedSurface); @@ -57,7 +71,7 @@ void CacheManager::reset(sk_sp<GrContext> context) { if (context) { mGrContext = std::move(context); mGrContext->getResourceCacheLimits(&mMaxResources, nullptr); - updateContextCacheSizes(); + mGrContext->setResourceCacheLimits(mMaxResources, mMaxResourceBytes); } } @@ -69,13 +83,6 @@ void CacheManager::destroy() { skiapipeline::VectorDrawableAtlas::StorageMode::disallowSharedSurface); } -void CacheManager::updateContextCacheSizes() { - mMaxResourceBytes = mMaxSurfaceArea * SURFACE_SIZE_MULTIPLIER; - mBackgroundResourceBytes = mMaxResourceBytes * BACKGROUND_RETENTION_PERCENTAGE; - - mGrContext->setResourceCacheLimits(mMaxResources, mMaxResourceBytes); -} - class CommonPoolExecutor : public SkExecutor { public: virtual void add(std::function<void(void)> func) override { CommonPool::post(std::move(func)); } @@ -86,12 +93,7 @@ static CommonPoolExecutor sDefaultExecutor; void CacheManager::configureContext(GrContextOptions* contextOptions, const void* identity, ssize_t size) { contextOptions->fAllowPathMaskCaching = true; - - // This sets the maximum size for a single texture atlas in the GPU font cache. If necessary, - // the cache can allocate additional textures that are counted against the total cache limits - // provided to Skia. - contextOptions->fGlyphCacheTextureMaximumBytes = GrNextSizePow2(mMaxSurfaceArea); - + contextOptions->fGlyphCacheTextureMaximumBytes = mMaxGpuFontAtlasBytes; contextOptions->fExecutor = &sDefaultExecutor; auto& cache = skiapipeline::ShaderCache::get(); @@ -111,6 +113,7 @@ void CacheManager::trimMemory(TrimMemoryMode mode) { case TrimMemoryMode::Complete: mVectorDrawableAtlas = new skiapipeline::VectorDrawableAtlas(mMaxSurfaceArea / 2); mGrContext->freeGpuResources(); + SkGraphics::PurgeAllCaches(); break; case TrimMemoryMode::UiHidden: // Here we purge all the unlocked scratch resources and then toggle the resources cache @@ -119,6 +122,8 @@ void CacheManager::trimMemory(TrimMemoryMode mode) { mGrContext->purgeUnlockedResources(true); mGrContext->setResourceCacheLimits(mMaxResources, mBackgroundResourceBytes); mGrContext->setResourceCacheLimits(mMaxResources, mMaxResourceBytes); + SkGraphics::SetFontCacheLimit(mBackgroundCpuFontCacheBytes); + SkGraphics::SetFontCacheLimit(mMaxCpuFontCacheBytes); break; } } diff --git a/libs/hwui/renderthread/CacheManager.h b/libs/hwui/renderthread/CacheManager.h index b0286e8cde25..9a5a00fcf762 100644 --- a/libs/hwui/renderthread/CacheManager.h +++ b/libs/hwui/renderthread/CacheManager.h @@ -59,14 +59,17 @@ private: void reset(sk_sp<GrContext> grContext); void destroy(); - void updateContextCacheSizes(); const size_t mMaxSurfaceArea; sk_sp<GrContext> mGrContext; int mMaxResources = 0; - size_t mMaxResourceBytes = 0; - size_t mBackgroundResourceBytes = 0; + const size_t mMaxResourceBytes; + const size_t mBackgroundResourceBytes; + + const size_t mMaxGpuFontAtlasBytes; + const size_t mMaxCpuFontCacheBytes; + const size_t mBackgroundCpuFontCacheBytes; struct PipelineProps { const void* pipelineKey = nullptr; diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java index efebfc2a4a1e..a7f8933bf44e 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java @@ -16,11 +16,15 @@ package com.android.systemui.statusbar.car; +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.car.drivingstate.CarDrivingStateEvent; import android.graphics.PixelFormat; +import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.util.Log; import android.view.GestureDetector; @@ -55,6 +59,7 @@ import com.android.systemui.plugins.qs.QS; import com.android.systemui.qs.car.CarQSFragment; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; +import com.android.systemui.statusbar.FlingAnimationUtils; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.car.hvac.HvacController; import com.android.systemui.statusbar.car.hvac.TemperatureView; @@ -74,6 +79,15 @@ import java.util.Map; public class CarStatusBar extends StatusBar implements CarBatteryController.BatteryViewHandler { private static final String TAG = "CarStatusBar"; + // used to calculate how fast to open or close the window + private static final float DEFAULT_FLING_VELOCITY = 0; + // max time a fling animation takes + private static final float FLING_ANIMATION_MAX_TIME = 0.5f; + // acceleration rate for the fling animation + private static final float FLING_SPEED_UP_FACTOR = 0.6f; + + private float mOpeningVelocity = DEFAULT_FLING_VELOCITY; + private float mClosingVelocity = DEFAULT_FLING_VELOCITY; private TaskStackListenerImpl mTaskStackListener; @@ -100,6 +114,7 @@ public class CarStatusBar extends StatusBar implements private boolean mDeviceIsProvisioned = true; private HvacController mHvacController; private DrivingStateHelper mDrivingStateHelper; + private static FlingAnimationUtils sFlingAnimationUtils; private SwitchToGuestTimer mSwitchToGuestTimer; // The container for the notifications. @@ -113,6 +128,27 @@ public class CarStatusBar extends StatusBar implements // it's open. private View.OnTouchListener mNavBarNotificationTouchListener; + // Percentage from top of the screen after which the notification shade will open. This value + // will be used while opening the notification shade. + private int mSettleOpenPercentage; + // Percentage from top of the screen below which the notification shade will close. This + // value will be used while closing the notification shade. + private int mSettleClosePercentage; + // Percentage of notification shade open from top of the screen. + private int mPercentageFromBottom; + // If notification shade is animation to close or to open. + private boolean mIsNotificationAnimating; + + // Tracks when the notification shade is being scrolled. This refers to the glass pane being + // scrolled not the recycler view. + private boolean mIsTracking; + private float mFirstTouchDownOnGlassPane; + + // If the notification card inside the recycler view is being swiped. + private boolean mIsNotificationCardSwiping; + // If notification shade is being swiped vertically to close. + private boolean mIsSwipingVerticallyToClose; + @Override public void start() { // get the provisioned state before calling the parent class since it's that flow that @@ -125,6 +161,12 @@ public class CarStatusBar extends StatusBar implements mActivityManagerWrapper.registerTaskStackListener(mTaskStackListener); mNotificationPanel.setScrollingEnabled(true); + mSettleOpenPercentage = mContext.getResources().getInteger( + R.integer.notification_settle_open_percentage); + mSettleClosePercentage = mContext.getResources().getInteger( + R.integer.notification_settle_close_percentage); + sFlingAnimationUtils = new FlingAnimationUtils(mContext, + FLING_ANIMATION_MAX_TIME, FLING_SPEED_UP_FACTOR); createBatteryController(); mCarBatteryController.startListening(); @@ -313,14 +355,46 @@ public class CarStatusBar extends StatusBar implements } }); mNavBarNotificationTouchListener = - (v, event) -> navBarCloseNotificationGestureDetector.onTouchEvent(event); + (v, event) -> { + boolean consumed = navBarCloseNotificationGestureDetector.onTouchEvent(event); + if (consumed) { + return true; + } + if (event.getActionMasked() == MotionEvent.ACTION_UP + && mNotificationView.getVisibility() == View.VISIBLE) { + if (mSettleClosePercentage < mPercentageFromBottom) { + animateNotificationPanel( + DEFAULT_FLING_VELOCITY, false); + } else { + animateNotificationPanel(DEFAULT_FLING_VELOCITY, + true); + } + } + return true; + }; // The following are the ui elements that the user would call the status bar. // This will set the status bar so it they can make call backs. CarNavigationBarView topBar = mStatusBarWindow.findViewById(R.id.car_top_bar); topBar.setStatusBar(this); - topBar.setStatusBarWindowTouchListener((v1, event1) -> - openGestureDetector.onTouchEvent(event1)); + topBar.setStatusBarWindowTouchListener((v1, event1) -> { + + boolean consumed = openGestureDetector.onTouchEvent(event1); + if (consumed) { + return true; + } + if (event1.getActionMasked() == MotionEvent.ACTION_UP + && mNotificationView.getVisibility() == View.VISIBLE) { + if (mSettleOpenPercentage > mPercentageFromBottom) { + animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); + } else { + animateNotificationPanel( + DEFAULT_FLING_VELOCITY, false); + } + } + return true; + } + ); NotificationClickHandlerFactory clickHandlerFactory = new NotificationClickHandlerFactory( mBarService, @@ -347,7 +421,10 @@ public class CarStatusBar extends StatusBar implements mNotificationListAtBottomAtTimeOfTouch = false; } if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { + mFirstTouchDownOnGlassPane = event.getRawX(); mNotificationListAtBottomAtTimeOfTouch = mNotificationListAtBottom; + // Reset the tracker when there is a touch down on the glass pane. + mIsTracking = false; // Pass the down event to gesture detector so that it knows where the touch event // started. closeGestureDetector.onTouchEvent(event); @@ -364,23 +441,56 @@ public class CarStatusBar extends StatusBar implements return; } mNotificationListAtBottom = false; + mIsSwipingVerticallyToClose = false; mNotificationListAtBottomAtTimeOfTouch = false; } }); mNotificationList.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { + mIsNotificationCardSwiping = Math.abs(mFirstTouchDownOnGlassPane - event.getRawX()) + > SWIPE_MAX_OFF_PATH; + if (mNotificationListAtBottomAtTimeOfTouch && mNotificationListAtBottom) { + // We need to save the state here as if notification card is swiping we will + // change the mNotificationListAtBottomAtTimeOfTouch. This is to protect + // closing the notification shade while the notification card is being swiped. + mIsSwipingVerticallyToClose = true; + } + + // If the card is swiping we should not allow the notification shade to close. + // Hence setting mNotificationListAtBottomAtTimeOfTouch to false will stop that + // for us. We are also checking for mIsTracking because while swiping the + // notification shade to close if the user goes a bit horizontal while swiping + // upwards then also this should close. + if (mIsNotificationCardSwiping && !mIsTracking) { + mNotificationListAtBottomAtTimeOfTouch = false; + } + boolean handled = false; if (mNotificationListAtBottomAtTimeOfTouch && mNotificationListAtBottom) { handled = closeGestureDetector.onTouchEvent(event); } + boolean isTracking = mIsTracking; + Rect rect = mNotificationList.getClipBounds(); + float clippedHeight = rect.bottom; + if (!handled && event.getActionMasked() == MotionEvent.ACTION_UP + && mIsSwipingVerticallyToClose) { + if (mSettleClosePercentage < mPercentageFromBottom && isTracking) { + animateNotificationPanel(DEFAULT_FLING_VELOCITY, false); + } else if (clippedHeight != mNotificationView.getHeight() && isTracking) { + // this can be caused when user is at the end of the list and trying to + // fling to top of the list by scrolling down. + animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); + } + } + // Updating the mNotificationListAtBottomAtTimeOfTouch state has to be done after // the event has been passed to the closeGestureDetector above, such that the // closeGestureDetector sees the up event before the state has changed. if (event.getActionMasked() == MotionEvent.ACTION_UP) { mNotificationListAtBottomAtTimeOfTouch = false; } - return handled; + return handled || isTracking; } }); @@ -401,7 +511,9 @@ public class CarStatusBar extends StatusBar implements mNotificationList.scrollToPosition(0); mStatusBarWindowController.setPanelVisible(true); mNotificationView.setVisibility(View.VISIBLE); - // let the status bar know that the panel is open + + animateNotificationPanel(mOpeningVelocity, false); + setPanelExpanded(true); } @@ -415,12 +527,66 @@ public class CarStatusBar extends StatusBar implements mStatusBarWindowController.setStatusBarFocusable(false); mStatusBarWindow.cancelExpandHelper(); mStatusBarView.collapsePanel(true /* animate */, delayed, speedUpFactor); - mStatusBarWindowController.setPanelVisible(false); - mNotificationView.setVisibility(View.INVISIBLE); - // let the status bar know that the panel is cloased + + animateNotificationPanel(mClosingVelocity, true); + + if (!mIsTracking) { + mStatusBarWindowController.setPanelVisible(false); + mNotificationView.setVisibility(View.INVISIBLE); + } + setPanelExpanded(false); } + /** + * Animates the notification shade from one position to other. This is used to either open or + * close the notification shade completely with a velocity. If the animation is to close the + * notification shade this method also makes the view invisible after animation ends. + */ + private void animateNotificationPanel(float velocity, boolean isClosing) { + Rect rect = mNotificationList.getClipBounds(); + if (rect == null) { + return; + } + float from = rect.bottom; + float to = 0; + if (!isClosing) { + to = mNotificationView.getHeight(); + } + if (mIsNotificationAnimating) { + return; + } + mIsNotificationAnimating = true; + mIsTracking = true; + ValueAnimator animator = ValueAnimator.ofFloat(from, to); + animator.addUpdateListener( + animation -> { + float animatedValue = (Float) animation.getAnimatedValue(); + setNotificationViewClipBounds((int) animatedValue); + }); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + mIsNotificationAnimating = false; + mIsTracking = false; + mOpeningVelocity = DEFAULT_FLING_VELOCITY; + mClosingVelocity = DEFAULT_FLING_VELOCITY; + if (isClosing) { + mStatusBarWindowController.setPanelVisible(false); + mNotificationView.setVisibility(View.INVISIBLE); + mNotificationList.setClipBounds(null); + // let the status bar know that the panel is closed + setPanelExpanded(false); + } else { + // let the status bar know that the panel is open + setPanelExpanded(true); + } + } + }); + sFlingAnimationUtils.apply(animator, from, to, Math.abs(velocity)); + animator.start(); + } @Override protected QS createDefaultQSFragment() { @@ -576,7 +742,7 @@ public class CarStatusBar extends StatusBar implements @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - //When executing dump() funciton simultaneously, we need to serialize them + //When executing dump() function simultaneously, we need to serialize them //to get mStackScroller's position correctly. synchronized (mQueueLock) { pw.println(" mStackScroller: " + viewInfo(mStackScroller)); @@ -760,38 +926,80 @@ public class CarStatusBar extends StatusBar implements } /** Returns true if the current user makes it through the setup wizard, false otherwise. */ - public boolean getIsUserSetup(){ + private boolean getIsUserSetup() { return mUserSetup; } + private void setNotificationViewClipBounds(int height) { + Rect clipBounds = new Rect(); + clipBounds.set(0, 0, mNotificationView.getWidth(), height); + // Sets the clip region on the notification list view. + mNotificationList.setClipBounds(clipBounds); + + if (mNotificationView.getHeight() > 0) { + // Calculates the alpha value for the background based on how much of the notification + // shade is visible to the user. When the notification shade is completely open then + // alpha value will be 1. + float alpha = (float) height / mNotificationView.getHeight(); + Drawable background = mNotificationView.getBackground(); + + background.setAlpha((int) (alpha * 255)); + } + } + + private void calculatePercentageFromBottom(float height) { + if (mNotificationView.getHeight() > 0) { + mPercentageFromBottom = (int) Math.abs( + height / mNotificationView.getHeight() * 100); + } + } - // TODO: add settle down/up logic private static final int SWIPE_UP_MIN_DISTANCE = 75; private static final int SWIPE_DOWN_MIN_DISTANCE = 25; private static final int SWIPE_MAX_OFF_PATH = 75; private static final int SWIPE_THRESHOLD_VELOCITY = 200; + // Only responsible for open hooks. Since once the panel opens it covers all elements // there is no need to merge with close. private abstract class OpenNotificationGestureListener extends GestureDetector.SimpleOnGestureListener { @Override + public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, + float distanceY) { + + if (mNotificationView.getVisibility() == View.INVISIBLE) { + // when the on-scroll is called for the first time to open. + mNotificationList.scrollToPosition(0); + } + mStatusBarWindowController.setPanelVisible(true); + mNotificationView.setVisibility(View.VISIBLE); + + // clips the view for the notification shade when the user scrolls to open. + setNotificationViewClipBounds((int) event2.getRawY()); + + // Initially the scroll starts with height being zero. This checks protects from divide + // by zero error. + calculatePercentageFromBottom(event2.getRawY()); + + mIsTracking = true; + return true; + } + + + @Override public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { - if (Math.abs(event1.getX() - event2.getX()) > SWIPE_MAX_OFF_PATH - || Math.abs(velocityY) < SWIPE_THRESHOLD_VELOCITY) { - // swipe was not vertical or was not fast enough - return false; - } - boolean isDown = velocityY > 0; - float distanceDelta = Math.abs(event1.getY() - event2.getY()); - if (isDown && distanceDelta > SWIPE_DOWN_MIN_DISTANCE) { + if (velocityY > SWIPE_THRESHOLD_VELOCITY) { + mOpeningVelocity = velocityY; openNotification(); return true; } + animateNotificationPanel(DEFAULT_FLING_VELOCITY, true); return false; } + protected abstract void openNotification(); } @@ -800,35 +1008,84 @@ public class CarStatusBar extends StatusBar implements GestureDetector.SimpleOnGestureListener { @Override + public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, + float distanceY) { + if (!mNotificationListAtBottomAtTimeOfTouch) { + return false; + } + float actualNotificationHeight = + mNotificationView.getHeight() - (event1.getRawY() - event2.getRawY()); + if (actualNotificationHeight > mNotificationView.getHeight()) { + actualNotificationHeight = mNotificationView.getHeight(); + } + if (mNotificationView.getHeight() > 0) { + mPercentageFromBottom = (int) Math.abs( + actualNotificationHeight / mNotificationView.getHeight() * 100); + boolean isUp = distanceY > 0; + + // This check is to figure out if onScroll was called while swiping the card at + // bottom of the list. At that time we should not allow notification shade to + // close. We are also checking for the upwards swipe gesture here because it is + // possible if a user is closing the notification shade and while swiping starts + // to open again but does not fling. At that time we should allow the + // notification shade to close fully or else it would stuck in between. + if (Math.abs(mNotificationView.getHeight() - actualNotificationHeight) + > SWIPE_DOWN_MIN_DISTANCE && isUp) { + setNotificationViewClipBounds((int) actualNotificationHeight); + mIsTracking = true; + } else if (!isUp) { + setNotificationViewClipBounds((int) actualNotificationHeight); + } + } + // if we return true the the items in RV won't be scrollable. + return false; + } + + + @Override public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { + if (Math.abs(event1.getX() - event2.getX()) > SWIPE_MAX_OFF_PATH || Math.abs(velocityY) < SWIPE_THRESHOLD_VELOCITY) { // swipe was not vertical or was not fast enough return false; } boolean isUp = velocityY < 0; - float distanceDelta = Math.abs(event1.getY() - event2.getY()); - if (isUp && distanceDelta > SWIPE_UP_MIN_DISTANCE) { + if (isUp) { close(); return true; + } else { + // we should close the shade + animateNotificationPanel(velocityY, false); } return false; } + protected abstract void close(); } - // to be installed on the nav bars + // To be installed on the nav bars. private abstract class NavBarCloseNotificationGestureListener extends CloseNotificationGestureListener { @Override public boolean onSingleTapUp(MotionEvent e) { + mClosingVelocity = DEFAULT_FLING_VELOCITY; close(); return super.onSingleTapUp(e); } @Override + public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX, + float distanceY) { + calculatePercentageFromBottom(event2.getRawY()); + setNotificationViewClipBounds((int) event2.getRawY()); + return true; + } + + @Override public void onLongPress(MotionEvent e) { + mClosingVelocity = DEFAULT_FLING_VELOCITY; close(); super.onLongPress(e); } diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/BootCompletedReceiver.java index ea7b378eb607..ea7b378eb607 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/BootCompletedReceiver.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/BootCompletedReceiver.java diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java index 43d7d8fd0ac4..43d7d8fd0ac4 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/DynamicSystemInstallationService.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java index b0e28a029436..b0e28a029436 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/InstallationAsyncTask.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/VerificationActivity.java index b1c09381823b..b1c09381823b 100644 --- a/packages/DynamicSystemInstallationService/src/com/android/dynandroid/VerificationActivity.java +++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/VerificationActivity.java diff --git a/packages/NetworkStack/src/android/net/util/NetworkStackUtils.java b/packages/NetworkStack/src/android/net/util/NetworkStackUtils.java index 822678717092..97e81862f85e 100644 --- a/packages/NetworkStack/src/android/net/util/NetworkStackUtils.java +++ b/packages/NetworkStack/src/android/net/util/NetworkStackUtils.java @@ -35,6 +35,34 @@ public class NetworkStackUtils { // TODO: Refer to DeviceConfig definition. public static final String NAMESPACE_CONNECTIVITY = "connectivity"; + /** + * A list of captive portal detection specifications used in addition to the fallback URLs. + * Each spec has the format url@@/@@statusCodeRegex@@/@@contentRegex. Specs are separated + * by "@@,@@". + */ + public static final String CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS = + "captive_portal_fallback_probe_specs"; + + /** + * A comma separated list of URLs used for captive portal detection in addition to the + * fallback HTTP url associated with the CAPTIVE_PORTAL_FALLBACK_URL settings. + */ + public static final String CAPTIVE_PORTAL_OTHER_FALLBACK_URLS = + "captive_portal_other_fallback_urls"; + + /** + * Which User-Agent string to use in the header of the captive portal detection probes. + * The User-Agent field is unset when this setting has no value (HttpUrlConnection default). + */ + public static final String CAPTIVE_PORTAL_USER_AGENT = "captive_portal_user_agent"; + + /** + * Whether to use HTTPS for network validation. This is enabled by default and the setting + * needs to be set to 0 to disable it. This setting is a misnomer because captive portals + * don't actually use HTTPS, but it's consistent with the other settings. + */ + public static final String CAPTIVE_PORTAL_USE_HTTPS = "captive_portal_use_https"; + static { System.loadLibrary("networkstackutilsjni"); } diff --git a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java index 27d420328017..093235e66214 100644 --- a/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java +++ b/packages/NetworkStack/src/com/android/server/connectivity/NetworkMonitor.java @@ -43,6 +43,10 @@ import static android.net.util.DataStallUtils.DEFAULT_DATA_STALL_EVALUATION_TYPE import static android.net.util.DataStallUtils.DEFAULT_DATA_STALL_MIN_EVALUATE_TIME_MS; import static android.net.util.DataStallUtils.DEFAULT_DATA_STALL_VALID_DNS_TIME_THRESHOLD_MS; import static android.net.util.DataStallUtils.DEFAULT_DNS_LOG_SIZE; +import static android.net.util.NetworkStackUtils.CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS; +import static android.net.util.NetworkStackUtils.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS; +import static android.net.util.NetworkStackUtils.CAPTIVE_PORTAL_USER_AGENT; +import static android.net.util.NetworkStackUtils.CAPTIVE_PORTAL_USE_HTTPS; import static android.net.util.NetworkStackUtils.NAMESPACE_CONNECTIVITY; import static android.net.util.NetworkStackUtils.isEmpty; @@ -1171,7 +1175,8 @@ public class NetworkMonitor extends StateMachine { } private boolean getUseHttpsValidation() { - return mDependencies.getSetting(mContext, Settings.Global.CAPTIVE_PORTAL_USE_HTTPS, 1) == 1; + return mDependencies.getDeviceConfigPropertyInt(NAMESPACE_CONNECTIVITY, + CAPTIVE_PORTAL_USE_HTTPS, 1) == 1; } private String getCaptivePortalServerHttpsUrl() { @@ -1224,8 +1229,8 @@ public class NetworkMonitor extends StateMachine { final URL[] settingProviderUrls; if (!TextUtils.isEmpty(firstUrl)) { - final String otherUrls = mDependencies.getSetting(mContext, - Settings.Global.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS, ""); + final String otherUrls = mDependencies.getDeviceConfigProperty( + NAMESPACE_CONNECTIVITY, CAPTIVE_PORTAL_OTHER_FALLBACK_URLS, ""); // otherUrls may be empty, but .split() ignores trailing empty strings final String separator = ","; final String[] urls = (firstUrl + separator + otherUrls).split(separator); @@ -1245,8 +1250,9 @@ public class NetworkMonitor extends StateMachine { private CaptivePortalProbeSpec[] makeCaptivePortalFallbackProbeSpecs() { try { - final String settingsValue = mDependencies.getSetting( - mContext, Settings.Global.CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS, null); + final String settingsValue = mDependencies.getDeviceConfigProperty( + NAMESPACE_CONNECTIVITY, CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS, null); + final CaptivePortalProbeSpec[] emptySpecs = new CaptivePortalProbeSpec[0]; final CaptivePortalProbeSpec[] providerValue = TextUtils.isEmpty(settingsValue) ? emptySpecs @@ -1340,8 +1346,8 @@ public class NetworkMonitor extends StateMachine { } private String getCaptivePortalUserAgent() { - return mDependencies.getSetting(mContext, - Settings.Global.CAPTIVE_PORTAL_USER_AGENT, DEFAULT_USER_AGENT); + return mDependencies.getDeviceConfigProperty(NAMESPACE_CONNECTIVITY, + CAPTIVE_PORTAL_USER_AGENT, DEFAULT_USER_AGENT); } private URL nextFallbackUrl() { diff --git a/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java b/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java index 910bdc7e600f..594f2cae996d 100644 --- a/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java +++ b/packages/NetworkStack/tests/src/com/android/server/connectivity/NetworkMonitorTest.java @@ -26,6 +26,9 @@ import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_EVALUATION_TYPE; import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_MIN_EVALUATE_INTERVAL; import static android.net.util.DataStallUtils.CONFIG_DATA_STALL_VALID_DNS_TIME_THRESHOLD; import static android.net.util.DataStallUtils.DATA_STALL_EVALUATION_TYPE_DNS; +import static android.net.util.NetworkStackUtils.CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS; +import static android.net.util.NetworkStackUtils.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS; +import static android.net.util.NetworkStackUtils.CAPTIVE_PORTAL_USE_HTTPS; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; @@ -160,7 +163,7 @@ public class NetworkMonitorTest { when(mDependencies.getRandom()).thenReturn(mRandom); when(mDependencies.getSetting(any(), eq(Settings.Global.CAPTIVE_PORTAL_MODE), anyInt())) .thenReturn(Settings.Global.CAPTIVE_PORTAL_MODE_PROMPT); - when(mDependencies.getSetting(any(), eq(Settings.Global.CAPTIVE_PORTAL_USE_HTTPS), + when(mDependencies.getDeviceConfigPropertyInt(any(), eq(CAPTIVE_PORTAL_USE_HTTPS), anyInt())).thenReturn(1); when(mDependencies.getSetting(any(), eq(Settings.Global.CAPTIVE_PORTAL_HTTP_URL), any())) .thenReturn(TEST_HTTP_URL); @@ -683,13 +686,13 @@ public class NetworkMonitorTest { } private void setOtherFallbackUrls(String urls) { - when(mDependencies.getSetting(any(), - eq(Settings.Global.CAPTIVE_PORTAL_OTHER_FALLBACK_URLS), any())).thenReturn(urls); + when(mDependencies.getDeviceConfigProperty(any(), + eq(CAPTIVE_PORTAL_OTHER_FALLBACK_URLS), any())).thenReturn(urls); } private void setFallbackSpecs(String specs) { - when(mDependencies.getSetting(any(), - eq(Settings.Global.CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS), any())).thenReturn(specs); + when(mDependencies.getDeviceConfigProperty(any(), + eq(CAPTIVE_PORTAL_FALLBACK_PROBE_SPECS), any())).thenReturn(specs); } private void setCaptivePortalMode(int mode) { diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 9f8b6932d494..162e95f87675 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -83,8 +83,8 @@ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Перадача файлаў"</string> <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Прылада ўводу"</string> <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Доступ у інтэрнэт"</string> - <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Абагуленне кантактаў"</string> - <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Выкарыстоўваць для абагулення кантактаў"</string> + <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Абагульванне кантактаў"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Выкарыстоўваць для абагульвання кантактаў"</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Прадастаўленне доступу да Інтэрнэту"</string> <string name="bluetooth_profile_map" msgid="1019763341565580450">"Тэкставыя паведамленні"</string> <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Доступ да SIM-карты"</string> @@ -462,6 +462,6 @@ <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"Працягласць"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"Заўсёды пытацца"</string> <string name="zen_mode_forever" msgid="2704305038191592967">"Пакуль не выключыце"</string> - <string name="time_unit_just_now" msgid="6363336622778342422">"Зараз"</string> + <string name="time_unit_just_now" msgid="6363336622778342422">"Толькі што"</string> <string name="media_transfer_this_device_name" msgid="1636276898262571213">"Гэта прылада"</string> </resources> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index 4058b17ae782..888a58b5abbe 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -83,7 +83,7 @@ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transferència de fitxers"</string> <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Dispositiu d\'entrada"</string> <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Accés a Internet"</string> - <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Compartir contactes"</string> + <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Compartició de contactes"</string> <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"S\'utilitza per compartir contactes."</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Connexió compartida a Internet"</string> <string name="bluetooth_profile_map" msgid="1019763341565580450">"Missatges de text"</string> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index 5a1e43cd6239..6afb47771f22 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -87,7 +87,7 @@ <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Brug til deling af kontakter"</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Deling af internetforbindelse"</string> <string name="bluetooth_profile_map" msgid="1019763341565580450">"Sms-beskeder"</string> - <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM-adgang"</string> + <string name="bluetooth_profile_sap" msgid="5764222021851283125">"Adgang til SIM-kort"</string> <string name="bluetooth_profile_a2dp_high_quality" msgid="5444517801472820055">"HD-lyd: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="8510588052415438887">"HD-lyd"</string> <string name="bluetooth_profile_hearing_aid" msgid="6680721080542444257">"Høreapparater"</string> @@ -418,7 +418,7 @@ <item msgid="8934126114226089439">"50 %"</item> <item msgid="1286113608943010849">"100 %"</item> </string-array> - <string name="charge_length_format" msgid="8978516217024434156">"<xliff:g id="ID_1">%1$s</xliff:g> siden"</string> + <string name="charge_length_format" msgid="8978516217024434156">"For <xliff:g id="ID_1">%1$s</xliff:g> siden"</string> <string name="remaining_length_format" msgid="7886337596669190587">"<xliff:g id="ID_1">%1$s</xliff:g> tilbage"</string> <string name="screen_zoom_summary_small" msgid="5867245310241621570">"Lille"</string> <string name="screen_zoom_summary_default" msgid="2247006805614056507">"Standard"</string> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index b2970ed15c40..b68322d50c21 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -330,7 +330,7 @@ <string name="force_allow_on_external" msgid="3215759785081916381">"Forzar permitir aplicaciones de forma externa"</string> <string name="force_allow_on_external_summary" msgid="3640752408258034689">"Hacer que cualquier aplicación se pueda escribir en un dispositivo de almacenamiento externo, independientemente de los valores definidos"</string> <string name="force_resizable_activities" msgid="8615764378147824985">"Forzar el ajuste de tamaño de las actividades"</string> - <string name="force_resizable_activities_summary" msgid="6667493494706124459">"Permitir que se pueda ajustar el tamaño de todas las actividades para el modo multiventana, independientemente de los valores definidos."</string> + <string name="force_resizable_activities_summary" msgid="6667493494706124459">"Hacer que el tamaño de todas las actividades se pueda ajustar para el modo multiventana, independientemente de los valores definidos"</string> <string name="enable_freeform_support" msgid="1461893351278940416">"Habilitar ventanas de forma libre"</string> <string name="enable_freeform_support_summary" msgid="8247310463288834487">"Habilitar la opción para utilizar ventanas de forma libre experimentales"</string> <string name="local_backup_password_title" msgid="3860471654439418822">"Contraseña para copias de ordenador"</string> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 4a793b3c37cb..d7c8266073a7 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -83,7 +83,7 @@ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Transfert de fichier"</string> <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Périphérique d\'entrée"</string> <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Accès Internet"</string> - <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Partage de contact"</string> + <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Partage de contacts"</string> <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Utiliser pour le partage de contacts"</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Partage de connexion Internet"</string> <string name="bluetooth_profile_map" msgid="1019763341565580450">"Messages texte"</string> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 8ddd4cd24b86..416c948beab2 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -42,8 +42,7 @@ <string name="available_via_passpoint" msgid="1617440946846329613">"%1$s के द्वारा उपलब्ध"</string> <string name="tap_to_sign_up" msgid="6449724763052579434">"साइन अप करने के लिए टैप करें"</string> <string name="wifi_connected_no_internet" msgid="8202906332837777829">"कनेक्ट हो गया है, लेकिन इंटरनेट नहीं है"</string> - <!-- no translation found for wifi_limited_connection (7717855024753201527) --> - <skip /> + <string name="wifi_limited_connection" msgid="7717855024753201527">"सीमित कनेक्शन"</string> <string name="wifi_status_no_internet" msgid="5784710974669608361">"इंटरनेट कनेक्शन नहीं है"</string> <string name="wifi_status_sign_in_required" msgid="123517180404752756">"साइन इन करना ज़रूरी है"</string> <string name="wifi_ap_unable_to_handle_new_sta" msgid="5348824313514404541">"एक्सेस पॉइंट फ़िलहाल भरा हुआ है"</string> @@ -75,11 +74,9 @@ <string name="bluetooth_connected_no_a2dp_battery_level" msgid="3908466636369853652">"जुड़ गया (मीडिया ऑडियो को छोड़कर), बैटरी का लेवल <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string> <string name="bluetooth_connected_no_headset_no_a2dp_battery_level" msgid="1163440823807659316">"जुड़ गया (फ़ोन या मीडिया ऑडियो को छोड़कर), बैटरी का लेवल <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g><xliff:g id="ACTIVE_DEVICE">%2$s</xliff:g>"</string> <string name="bluetooth_active_battery_level" msgid="3149689299296462009">"चालू, <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी"</string> - <!-- no translation found for bluetooth_active_battery_level_untethered (6662649951391456747) --> - <skip /> + <string name="bluetooth_active_battery_level_untethered" msgid="6662649951391456747">"चालू, L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बैटरी, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बैटरी"</string> <string name="bluetooth_battery_level" msgid="1447164613319663655">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> बैटरी"</string> - <!-- no translation found for bluetooth_battery_level_untethered (5974406100211667177) --> - <skip /> + <string name="bluetooth_battery_level_untethered" msgid="5974406100211667177">"L: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> बैटरी, R: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> बैटरी"</string> <string name="bluetooth_active_no_battery_level" msgid="8380223546730241956">"चालू"</string> <string name="bluetooth_profile_a2dp" msgid="2031475486179830674">"मीडिया ऑडियो"</string> <string name="bluetooth_profile_headset" msgid="7815495680863246034">"फ़ोन कॉल"</string> @@ -390,8 +387,7 @@ <string name="power_discharge_by" msgid="6453537733650125582">"बैटरी करीब <xliff:g id="TIME">%1$s</xliff:g> चलेगी (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="107616694963545745">"बैटरी करीब <xliff:g id="TIME">%1$s</xliff:g> चलेगी"</string> <string name="power_discharge_by_only_short" msgid="1372817269546888804">"<xliff:g id="TIME">%1$s</xliff:g> तक"</string> - <!-- no translation found for power_suggestion_extend_battery (4401408879069551485) --> - <skip /> + <string name="power_suggestion_extend_battery" msgid="4401408879069551485">"बैटरी लाइफ़ <xliff:g id="TIME">%1$s</xliff:g> तक के लिए बढाएं"</string> <string name="power_remaining_less_than_duration_only" msgid="5996752448813295329">"<xliff:g id="THRESHOLD">%1$s</xliff:g> से कम समय बचा है"</string> <string name="power_remaining_less_than_duration" msgid="5751885147712659423">"<xliff:g id="THRESHOLD">%1$s</xliff:g> से कम बैटरी बची है (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_remaining_more_than_subtext" msgid="3176771815132876675">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> से ज़्यादा चलने लायक बैटरी बची है (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -465,6 +461,5 @@ <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"हर बार पूछें"</string> <string name="zen_mode_forever" msgid="2704305038191592967">"जब तक आप इसे बंद नहीं करते"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"अभी-अभी"</string> - <!-- no translation found for media_transfer_this_device_name (1636276898262571213) --> - <skip /> + <string name="media_transfer_this_device_name" msgid="1636276898262571213">"यह डिवाइस"</string> </resources> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 9fb369596c5d..93169aee26bc 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -82,7 +82,7 @@ <string name="bluetooth_profile_headset" msgid="7815495680863246034">"Հեռախոսազանգեր"</string> <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Ֆայլերի փոխանցում"</string> <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Ներմուծման սարք"</string> - <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Ինտերնետի մուտք"</string> + <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Ինտերնետի հասանելիություն"</string> <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Կոնտակտի համօգտագործում"</string> <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Օգտագործել կոնտակտի համօգտագործման համար"</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Ինտերնետ կապի տարածում"</string> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index 8eafcfc12e36..143b565770d2 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -83,7 +83,7 @@ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ການໂອນຍ້າຍໄຟລ໌"</string> <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ອຸປະກອນປ້ອນຂໍ້ມູນ"</string> <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ການເຂົ້າເຖິງອິນເຕີເນັດ"</string> - <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"ການແບ່ງປັນລາຍຊື່ຜູ່ຕິດຕໍ່"</string> + <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"ການແບ່ງປັນລາຍຊື່ຜູ້ຕິດຕໍ່"</string> <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"ໃຊ້ສຳລັບການແບ່ງປັນລາຍຊື່ຜູ່ຕິດຕໍ່"</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ການແບ່ງປັນການເຊື່ອມຕໍ່ອິນເຕີເນັດ"</string> <string name="bluetooth_profile_map" msgid="1019763341565580450">"ຂໍ້ຄວາມ"</string> diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml index 22ff50661fc9..7b8632794a6f 100644 --- a/packages/SettingsLib/res/values-mk/arrays.xml +++ b/packages/SettingsLib/res/values-mk/arrays.xml @@ -259,6 +259,6 @@ <item msgid="2086000968159047375">"ПТП (Протокол за трансфер на слика)"</item> <item msgid="7398830860950841822">"РНДИС (USB за етернет)"</item> <item msgid="1718924214939774352">"Аудиоизвор"</item> - <item msgid="8126315616613006284">"МИДИ"</item> + <item msgid="8126315616613006284">"MIDI"</item> </string-array> </resources> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index 197efe5becdd..20110e902926 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -83,11 +83,11 @@ <string name="bluetooth_profile_opp" msgid="9168139293654233697">"ଫାଇଲ୍ ଟ୍ରାନ୍ସଫର୍"</string> <string name="bluetooth_profile_hid" msgid="3680729023366986480">"ଇନ୍ପୁଟ୍ ଡିଭାଇସ୍"</string> <string name="bluetooth_profile_pan" msgid="3391606497945147673">"ଇଣ୍ଟର୍ନେଟ୍ ଆକ୍ସେସ୍"</string> - <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"ଯୋଗାଯୋଗ ଶେୟାରିଙ୍ଗ"</string> - <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"ଯୋଗାଯୋଗ ଶେୟାର୍ କରିବା ପାଇଁ ବ୍ୟବହାର କରନ୍ତୁ"</string> + <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"ଯୋଗାଯୋଗ ସେୟାରିଙ୍ଗ୍"</string> + <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"ଯୋଗାଯୋଗ ସେୟାର୍ କରିବା ପାଇଁ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"ଇଣ୍ଟର୍ନେଟ୍ ସଂଯୋଗ ଶେୟାରିଙ୍ଗ"</string> <string name="bluetooth_profile_map" msgid="1019763341565580450">"ଟେକ୍ସଟ୍ ମେସେଜ୍"</string> - <string name="bluetooth_profile_sap" msgid="5764222021851283125">"ସିମ୍ ଆକ୍ସେସ୍"</string> + <string name="bluetooth_profile_sap" msgid="5764222021851283125">"SIM ଆକ୍ସେସ୍"</string> <string name="bluetooth_profile_a2dp_high_quality" msgid="5444517801472820055">"HD ଅଡିଓ: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="8510588052415438887">"HD ଅଡିଓ"</string> <string name="bluetooth_profile_hearing_aid" msgid="6680721080542444257">"ଶ୍ରବଣ ଯନ୍ତ୍ର"</string> @@ -100,7 +100,7 @@ <string name="bluetooth_opp_profile_summary_not_connected" msgid="1267091356089086285">"ଫାଇଲ୍ ଟ୍ରାନ୍ସଫର୍ ସର୍ଭର୍ ସହ ସଂଯୁକ୍ତ ହୋଇନାହିଁ"</string> <string name="bluetooth_hid_profile_summary_connected" msgid="3381760054215168689">"ଇନ୍ପୁଟ୍ ଡିଇଭାସ୍ ସହ ସଂଯୁକ୍ତ"</string> <string name="bluetooth_pan_user_profile_summary_connected" msgid="6436258151814414028">"ଆଭ୍ୟନ୍ତରୀଣ ଆକ୍ସେସ୍ ପାଇଁ ଡିଭାଇସ୍ ସହିତ ସଂଯୁକ୍ତ"</string> - <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1322694224800769308">"ଡିଭାଇସ୍ ସହ ସ୍ଥାନୀୟ ଇଣ୍ଟରନେଟ୍ ସଂଯୋଗ ଶେୟାର୍ କରାଯାଉଛି"</string> + <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1322694224800769308">"ଡିଭାଇସ୍ ସହ ସ୍ଥାନୀୟ ଇଣ୍ଟରନେଟ୍ ସଂଯୋଗ ସେୟାର୍ କରାଯାଉଛି"</string> <string name="bluetooth_pan_profile_summary_use_for" msgid="5736111170225304239">"ଇଣ୍ଟର୍ନେଟ୍ ଆକ୍ସେସ୍ ପାଇଁ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="bluetooth_map_profile_summary_use_for" msgid="5154200119919927434">"ମାନଚିତ୍ର ପାଇଁ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="bluetooth_sap_profile_summary_use_for" msgid="7085362712786907993">"SIM ଆକସେସ୍ ପାଇଁ ବ୍ୟବହାର କରନ୍ତୁ"</string> @@ -123,7 +123,7 @@ <string name="bluetooth_talkback_imaging" msgid="551146170554589119">"ଇମେଜିଙ୍ଗ"</string> <string name="bluetooth_talkback_headphone" msgid="26580326066627664">"ହେଡ୍ଫୋନ୍"</string> <string name="bluetooth_talkback_input_peripheral" msgid="5165842622743212268">"ଇନ୍ପୁଟ୍ ଉପକରଣ"</string> - <string name="bluetooth_talkback_bluetooth" msgid="5615463912185280812">"ବ୍ଲୁ-ଟୂଥ୍"</string> + <string name="bluetooth_talkback_bluetooth" msgid="5615463912185280812">"ବ୍ଲୁଟୂଥ୍"</string> <string name="bluetooth_hearingaid_left_pairing_message" msgid="7378813500862148102">"ବାମ ଶ୍ରବଣ ଯନ୍ତ୍ର ପେୟାର୍ କରାଯାଉଛି…"</string> <string name="bluetooth_hearingaid_right_pairing_message" msgid="1550373802309160891">"ଡାହାଣ ଶ୍ରବଣ ଯନ୍ତ୍ର ପେୟାର୍ କରାଯାଉଛି…"</string> <string name="bluetooth_hearingaid_left_battery_level" msgid="8797811465352097562">"ବାମ - <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> ବ୍ୟାଟେରୀ"</string> @@ -207,7 +207,7 @@ <string name="bugreport_in_power_summary" msgid="1778455732762984579">"ତ୍ରୁଟି ରିପୋର୍ଟ ଦେବାପାଇଁ ପାୱର୍ ମେନୁରେ ଏକ ବଟନ୍ ଦେଖନ୍ତୁ"</string> <string name="keep_screen_on" msgid="1146389631208760344">"ଜାଗ୍ରତ ରଖନ୍ତୁ"</string> <string name="keep_screen_on_summary" msgid="2173114350754293009">"ଚାର୍ଜ ହେବାବେଳେ ସ୍କ୍ରୀନ୍ ଆଦୌ ବନ୍ଦ ହେବନାହିଁ"</string> - <string name="bt_hci_snoop_log" msgid="3340699311158865670">"ବ୍ଲୁ-ଟୂଥ୍ HCI ସ୍ନୁପ୍ ଲଗ୍ ସକ୍ଷମ କରନ୍ତୁ"</string> + <string name="bt_hci_snoop_log" msgid="3340699311158865670">"ବ୍ଲୁଟୂଥ୍ HCI ସ୍ନୁପ୍ ଲଗ୍ ସକ୍ଷମ କରନ୍ତୁ"</string> <string name="bt_hci_snoop_log_summary" msgid="8857606786588106495">"ବ୍ଲୁଟୁଥ୍ ପ୍ୟାକେଟ୍ କ୍ୟାପଚର୍ କରନ୍ତୁ (ଏହି ସେଟିଂ ବଦଳାଇବା ପରେ ବ୍ଲୁଟୁଥ୍କୁ ଟୋଗଲ୍ କରନ୍ତୁ)"</string> <string name="oem_unlock_enable" msgid="6040763321967327691">"OEM ଅନଲକ୍ କରିବା"</string> <string name="oem_unlock_enable_summary" msgid="4720281828891618376">"bootloaderକୁ ଅନ୍ଲକ୍ ହେବାର ଅନୁମତି ଦିଅନ୍ତୁ"</string> @@ -215,25 +215,25 @@ <string name="confirm_enable_oem_unlock_text" msgid="5517144575601647022">"ଚେତାବନୀ: ଏହି ସେଟିଙ୍ଗ ଚାଲୁ ଥିବାବେଳେ ଡିଭାଇସ୍ର ସୁରକ୍ଷା ବୈଶିଷ୍ଟ୍ୟ କାମ କରିବ ନାହିଁ"</string> <string name="mock_location_app" msgid="7966220972812881854">"ମକ୍ ଲୋକେସନ୍ ଆପ୍ର ଚୟନ କରନ୍ତୁ"</string> <string name="mock_location_app_not_set" msgid="809543285495344223">"କୌଣସି ନକଲି ଲୋକେଶନ ଆପ୍ ସେଟ୍ କରାଯାଇନାହିଁ"</string> - <string name="mock_location_app_set" msgid="8966420655295102685">"ନକଲି ଲୋକେଶନ୍ ଆପ୍: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> + <string name="mock_location_app_set" msgid="8966420655295102685">"ନକଲି ଲୋକେସନ୍ ଆପ୍: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="7044075693643009662">"ନେଟ୍ୱର୍କିଙ୍ଗ"</string> <string name="wifi_display_certification" msgid="8611569543791307533">"ୱାୟରଲେସ୍ ଡିସ୍ପ୍ଲେ ସର୍ଟିଫିକେଶନ୍"</string> <string name="wifi_verbose_logging" msgid="4203729756047242344">"ୱାଇ-ଫାଇ ଭର୍ବୋସ୍ ଲଗିଙ୍ଗ ସକ୍ଷମ କରନ୍ତୁ"</string> <string name="mobile_data_always_on" msgid="8774857027458200434">"ମୋବାଇଲ୍ ଡାଟା ସର୍ବଦା ସକ୍ରିୟ"</string> <string name="tethering_hardware_offload" msgid="7470077827090325814">"ଟିଥରିଙ୍ଗ ହାର୍ଡୱେର ବେଗ"</string> - <string name="bluetooth_show_devices_without_names" msgid="4708446092962060176">"ବ୍ଲୁ-ଟୂଥ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକୁ ନାମ ବିନା ଦେଖନ୍ତୁ"</string> + <string name="bluetooth_show_devices_without_names" msgid="4708446092962060176">"ବ୍ଲୁଟୂଥ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକୁ ନାମ ବିନା ଦେଖନ୍ତୁ"</string> <string name="bluetooth_disable_absolute_volume" msgid="2660673801947898809">"ପୂର୍ଣ୍ଣ ଭଲ୍ୟୁମ୍ ଅକ୍ଷମ କରନ୍ତୁ"</string> <string name="bluetooth_select_avrcp_version_string" msgid="3750059931120293633">"ବ୍ଲୁଟୂଥ୍ AVRCP ଭର୍ସନ୍"</string> - <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7277329668298705702">"ବ୍ଲୁ-ଟୂଥ୍ AVRCP ଭର୍ସନ୍"</string> + <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7277329668298705702">"ବ୍ଲୁଟୂଥ୍ AVRCP ଭର୍ସନ୍"</string> <string name="bluetooth_select_a2dp_codec_type" msgid="90597356942154882">"ବ୍ଲୁଟୁଥ୍ ଅଡିଓ କୋଡେକ୍"</string> - <string name="bluetooth_select_a2dp_codec_type_dialog_title" msgid="8436224899475822557">"ବ୍ଲୁ-ଟୂଥ୍ ଅଡିଓ କୋଡେକ୍\nସିଲେକ୍ସନ୍କୁ ଗତିଶୀଳ କରନ୍ତୁ"</string> + <string name="bluetooth_select_a2dp_codec_type_dialog_title" msgid="8436224899475822557">"ବ୍ଲୁଟୂଥ୍ ଅଡିଓ କୋଡେକ୍\nସିଲେକ୍ସନ୍କୁ ଗତିଶୀଳ କରନ୍ତୁ"</string> <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="4788245703824623062">"ବ୍ଲୁଟୂଥ୍ ଅଡିଓ ସାମ୍ପଲ୍ ରେଟ୍"</string> - <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="8010380028880963535">"ବ୍ଲୁ-ଟୂଥ୍ ଅଡିଓ କୋଡେକ୍\nସିଲେକ୍ସନ୍କୁ ଗତିଶୀଳ କରନ୍ତୁ: ସାମ୍ପଲ୍ ରେଟ୍"</string> - <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="2099645202720164141">"ନମୁନା ପିଛା ବ୍ଲୁ-ଟୂଥ୍ ଅଡିଓ ବିଟ୍ସ"</string> - <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="8063859754619484760">"ବ୍ଲୁ-ଟୂଥ୍ ଅଡିଓ କୋଡେକ୍\nସିଲେକ୍ସନ୍କୁ ଗତିଶୀଳ କରନ୍ତୁ: ନମୁନା ପିଛା ବିଟ୍ସ"</string> - <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="884855779449390540">"ବ୍ଲୁ-ଟୂଥ୍ ଅଡିଓ ଚ୍ୟାନେଲ୍ ମୋଡ୍"</string> - <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="7234956835280563341">"ବ୍ଲୁ-ଟୂଥ୍ ଅଡିଓ କୋଡେକ୍\nସିଲେକ୍ସନ୍କୁ ଗତିଶୀଳ କରନ୍ତୁ: ଚ୍ୟାନେଲ୍ ମୋଡ୍"</string> - <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3619694372407843405">"ବ୍ଲୁ-ଟୂଥ୍ ଅଡିଓ LDAC କୋଡେକ୍: ପ୍ଲେବ୍ୟାକ୍ ଗୁଣବତ୍ତା"</string> + <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="8010380028880963535">"ବ୍ଲୁଟୂଥ୍ ଅଡିଓ କୋଡେକ୍\nସିଲେକ୍ସନ୍କୁ ଗତିଶୀଳ କରନ୍ତୁ: ସାମ୍ପଲ୍ ରେଟ୍"</string> + <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="2099645202720164141">"ନମୁନା ପିଛା ବ୍ଲୁଟୂଥ୍ ଅଡିଓ ବିଟ୍ସ"</string> + <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="8063859754619484760">"ବ୍ଲୁଟୂଥ୍ ଅଡିଓ କୋଡେକ୍\nସିଲେକ୍ସନ୍କୁ ଗତିଶୀଳ କରନ୍ତୁ: ନମୁନା ପିଛା ବିଟ୍ସ"</string> + <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="884855779449390540">"ବ୍ଲୁଟୂଥ୍ ଅଡିଓ ଚ୍ୟାନେଲ୍ ମୋଡ୍"</string> + <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="7234956835280563341">"ବ୍ଲୁଟୂଥ୍ ଅଡିଓ କୋଡେକ୍\nସିଲେକ୍ସନ୍କୁ ଗତିଶୀଳ କରନ୍ତୁ: ଚ୍ୟାନେଲ୍ ମୋଡ୍"</string> + <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3619694372407843405">"ବ୍ଲୁଟୂଥ୍ ଅଡିଓ LDAC କୋଡେକ୍: ପ୍ଲେବ୍ୟାକ୍ ଗୁଣବତ୍ତା"</string> <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="6893955536658137179">"ବ୍ଲୁ-ଟୁଥ୍ ଅଡିଓ LDAC\nକୋଡେକ୍ ଚୟନକୁ ଗତିଶୀଳ କରନ୍ତୁ: ପ୍ଲେବ୍ୟାକ୍ କ୍ୱାଲିଟୀ"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="5347862512596240506">"ଷ୍ଟ୍ରିମ୍ କରୁଛି: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="3700456559305263922">"ବ୍ୟକ୍ତିଗତ DNS"</string> @@ -268,7 +268,7 @@ <string name="verify_apps_over_usb_title" msgid="4177086489869041953">"USB ଜରିଆରେ ଆପ୍ଗୁଡ଼ିକୁ ଯାଞ୍ଚ କରନ୍ତୁ"</string> <string name="verify_apps_over_usb_summary" msgid="9164096969924529200">"ADB/ADT ମାଧ୍ୟମରେ ଇନଷ୍ଟଲ ହୋଇଥିବା ଆପ୍ଗୁଡ଼ିକ ହାନିକାରକ କାର୍ଯ୍ୟକଳାପ କରୁଛି କି ନାହିଁ ଯାଞ୍ଚ କରନ୍ତୁ।"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="2351196058115755520">"(କେବଳ MAC ଠିକଣା ଥାଇ) ନାମ ବିନା ବ୍ଲୁଟୂଥ ଡିଭାଇସଗୁଡ଼ିକ ପ୍ରଦର୍ଶିତ ହେବ"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"ରିମୋଟ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକରେ ଯଦି ଅସ୍ୱୀକାର୍ଯ୍ୟ ଭାବେ ଉଚ୍ଚ ଭଲ୍ୟୁମ୍ କିମ୍ବା ନିୟନ୍ତ୍ରଣର ଅଭାବ ପରି ଭଲ୍ୟୁମ୍ ସମସ୍ୟା ଥାଏ, ବ୍ଲୁ-ଟୂଥ୍ ପୂର୍ଣ୍ଣ ଭଲ୍ୟୁମ୍ ଫିଚର୍ ଅକ୍ଷମ କରିଥାଏ।"</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="6031284410786545957">"ରିମୋଟ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକରେ ଯଦି ଅସ୍ୱୀକାର୍ଯ୍ୟ ଭାବେ ଉଚ୍ଚ ଭଲ୍ୟୁମ୍ କିମ୍ବା ନିୟନ୍ତ୍ରଣର ଅଭାବ ପରି ଭଲ୍ୟୁମ୍ ସମସ୍ୟା ଥାଏ, ବ୍ଲୁଟୂଥ୍ ପୂର୍ଣ୍ଣ ଭଲ୍ୟୁମ୍ ଫିଚର୍ ଅକ୍ଷମ କରିଥାଏ।"</string> <string name="enable_terminal_title" msgid="95572094356054120">"ସ୍ଥାନୀୟ ଟର୍ମିନାଲ୍"</string> <string name="enable_terminal_summary" msgid="67667852659359206">"ସ୍ଥାନୀୟ ଶେଲ୍କୁ ଆକସେସ୍ ଦେଉଥିବା ଟର୍ମିନଲ୍ ଆପ୍କୁ ସକ୍ଷମ କରନ୍ତୁ"</string> <string name="hdcp_checking_title" msgid="8605478913544273282">"HDCP ଯାଞ୍ଚ କରୁଛି"</string> @@ -288,7 +288,7 @@ <string name="debug_monitoring_category" msgid="7640508148375798343">"ମନିଟରିଙ୍ଗ"</string> <string name="strict_mode" msgid="1938795874357830695">"କଡ଼ା ମୋଡ୍ ସକ୍ଷମ କରାଯାଇଛି"</string> <string name="strict_mode_summary" msgid="142834318897332338">"ମୁଖ୍ୟ ଥ୍ରେଡ୍ରେ ଆପ୍ ଦୀର୍ଘ ସମୟ କାର୍ଯ୍ୟ କଲେ ସ୍କ୍ରୀନ୍ ଫ୍ଲାଶ୍ କରନ୍ତୁ"</string> - <string name="pointer_location" msgid="6084434787496938001">"ପଏଣ୍ଟର୍ ଲୋକେଶନ୍"</string> + <string name="pointer_location" msgid="6084434787496938001">"ପଏଣ୍ଟର୍ ଲୋକେସନ୍"</string> <string name="pointer_location_summary" msgid="840819275172753713">"ଏବେର ଟଚ୍ ଡାଟା ଦେଖାଉଥିବା ସ୍କ୍ରୀନ୍ ଓଭର୍ଲେ"</string> <string name="show_touches" msgid="2642976305235070316">"ଟାପ୍ ଦେଖାନ୍ତୁ"</string> <string name="show_touches_summary" msgid="6101183132903926324">"ଟାପ୍ ପାଇଁ ଭିଜୁଆଲ୍ ମତାମତ ଦେଖାନ୍ତୁ"</string> diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml index 855be6f3d2df..ceeab30450ab 100644 --- a/packages/SettingsLib/res/values-pt-rBR/arrays.xml +++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml @@ -259,6 +259,6 @@ <item msgid="2086000968159047375">"PTP (protocolo de transferência de imagens)"</item> <item msgid="7398830860950841822">"RNDIS (Ethernet USB)"</item> <item msgid="1718924214939774352">"Fonte de áudio"</item> - <item msgid="8126315616613006284">"MIDI"</item> + <item msgid="8126315616613006284">"MIDI (som)"</item> </string-array> </resources> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index 395aee9df117..78686491c476 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -206,7 +206,7 @@ <string name="bugreport_in_power" msgid="7923901846375587241">"Atalho para relatório do bug"</string> <string name="bugreport_in_power_summary" msgid="1778455732762984579">"Mostrar um botão para gerar relatórios de bugs no menu do botão liga/desliga"</string> <string name="keep_screen_on" msgid="1146389631208760344">"Permanecer ativo"</string> - <string name="keep_screen_on_summary" msgid="2173114350754293009">"A tela nunca entrará em suspensão enquanto estiver carregando."</string> + <string name="keep_screen_on_summary" msgid="2173114350754293009">"A tela nunca entrará em suspensão enquanto estiver carregando"</string> <string name="bt_hci_snoop_log" msgid="3340699311158865670">"Ativar registro de rastreamento Bluetooth HCI"</string> <string name="bt_hci_snoop_log_summary" msgid="8857606786588106495">"Capturar pacotes de Bluetooth. Ative o Bluetooth depois de alterar essa configuração."</string> <string name="oem_unlock_enable" msgid="6040763321967327691">"Desbloqueio de OEM"</string> diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml index 855be6f3d2df..ceeab30450ab 100644 --- a/packages/SettingsLib/res/values-pt/arrays.xml +++ b/packages/SettingsLib/res/values-pt/arrays.xml @@ -259,6 +259,6 @@ <item msgid="2086000968159047375">"PTP (protocolo de transferência de imagens)"</item> <item msgid="7398830860950841822">"RNDIS (Ethernet USB)"</item> <item msgid="1718924214939774352">"Fonte de áudio"</item> - <item msgid="8126315616613006284">"MIDI"</item> + <item msgid="8126315616613006284">"MIDI (som)"</item> </string-array> </resources> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 395aee9df117..78686491c476 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -206,7 +206,7 @@ <string name="bugreport_in_power" msgid="7923901846375587241">"Atalho para relatório do bug"</string> <string name="bugreport_in_power_summary" msgid="1778455732762984579">"Mostrar um botão para gerar relatórios de bugs no menu do botão liga/desliga"</string> <string name="keep_screen_on" msgid="1146389631208760344">"Permanecer ativo"</string> - <string name="keep_screen_on_summary" msgid="2173114350754293009">"A tela nunca entrará em suspensão enquanto estiver carregando."</string> + <string name="keep_screen_on_summary" msgid="2173114350754293009">"A tela nunca entrará em suspensão enquanto estiver carregando"</string> <string name="bt_hci_snoop_log" msgid="3340699311158865670">"Ativar registro de rastreamento Bluetooth HCI"</string> <string name="bt_hci_snoop_log_summary" msgid="8857606786588106495">"Capturar pacotes de Bluetooth. Ative o Bluetooth depois de alterar essa configuração."</string> <string name="oem_unlock_enable" msgid="6040763321967327691">"Desbloqueio de OEM"</string> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index 3b3e71beae3a..37221c6c2ec4 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -82,7 +82,7 @@ <string name="bluetooth_profile_headset" msgid="7815495680863246034">"Telefonické hovory"</string> <string name="bluetooth_profile_opp" msgid="9168139293654233697">"Prenos súborov"</string> <string name="bluetooth_profile_hid" msgid="3680729023366986480">"Vstupné zariadenie"</string> - <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Prístup na Internet"</string> + <string name="bluetooth_profile_pan" msgid="3391606497945147673">"Prístup na internet"</string> <string name="bluetooth_profile_pbap" msgid="5372051906968576809">"Zdieľanie kontaktov"</string> <string name="bluetooth_profile_pbap_summary" msgid="6605229608108852198">"Použiť na zdieľanie kontaktov"</string> <string name="bluetooth_profile_pan_nap" msgid="8429049285027482959">"Zdieľanie pripojenia na Internet"</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java index fb5c16b92930..e19ac815b939 100644 --- a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java @@ -37,7 +37,8 @@ public class BatterySaverUtils { /** * When set to "true" the notification will be a generic confirm message instead of asking the * user if they want to turn on battery saver. If set to false the dialog will specifically - * talk about turning on battery saver and provide a button for taking the action. + * talk about battery saver without giving the option of turning it on. The only button visible + * will be a generic confirmation button to acknowledge the dialog. */ public static final String EXTRA_CONFIRM_TEXT_ONLY = "extra_confirm_only"; /** diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/Estimate.kt b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/Estimate.kt new file mode 100644 index 000000000000..ae8e1e2a60c0 --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/Estimate.kt @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.settingslib.fuelgauge + +import android.content.Context +import android.provider.Settings +import java.time.Duration +import java.time.Instant + +const val AVERAGE_TIME_TO_DISCHARGE_UNKNOWN = -1 +const val ESTIMATE_MILLIS_UNKNOWN = -1 + +class Estimate( + val estimateMillis: Long, + val isBasedOnUsage: Boolean, + val averageDischargeTime: Long +) { + companion object { + /** + * Returns the cached estimate if it is available and fresh. Will return null if estimate is + * unavailable or older than 2 minutes. + * + * @param context A valid context + * @return An [Estimate] object with the latest battery estimates. + */ + @JvmStatic + fun getCachedEstimateIfAvailable(context: Context): Estimate? { + // if time > 2 min return null or the estimate otherwise + val resolver = context.contentResolver + val lastUpdateTime = Instant.ofEpochMilli( + Settings.Global.getLong( + resolver, Settings.Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME, -1)) + return if (Duration.between(lastUpdateTime, + Instant.now()).compareTo(Duration.ofMinutes(2)) > 0) { + null + } else Estimate( + Settings.Global.getLong(resolver, + Settings.Global.TIME_REMAINING_ESTIMATE_MILLIS, + ESTIMATE_MILLIS_UNKNOWN.toLong()), + Settings.Global.getInt(resolver, + Settings.Global.TIME_REMAINING_ESTIMATE_BASED_ON_USAGE, 0) == 1, + Settings.Global.getLong(resolver, Settings.Global.AVERAGE_TIME_TO_DISCHARGE, + AVERAGE_TIME_TO_DISCHARGE_UNKNOWN.toLong())) + } + + /** + * Stores an estimate to the cache along with a timestamp. Can be obtained via + * [.getCachedEstimateIfAvailable]. + * + * @param context A valid context + * @param estimate the [Estimate] object to store + */ + @JvmStatic + fun storeCachedEstimate(context: Context, estimate: Estimate) { + // store the estimate and update the timestamp + val resolver = context.contentResolver + Settings.Global.putLong(resolver, Settings.Global.TIME_REMAINING_ESTIMATE_MILLIS, + estimate.estimateMillis) + Settings.Global.putInt(resolver, Settings.Global.TIME_REMAINING_ESTIMATE_BASED_ON_USAGE, + if (estimate.isBasedOnUsage) 1 else 0) + Settings.Global.putLong(resolver, Settings.Global.AVERAGE_TIME_TO_DISCHARGE, + estimate.averageDischargeTime) + Settings.Global.putLong(resolver, Settings.Global.BATTERY_ESTIMATES_LAST_UPDATE_TIME, + System.currentTimeMillis()) + } + } +} diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml index 9637cc201bad..a2181196e96e 100644 --- a/packages/SystemUI/res-keyguard/values-af/strings.xml +++ b/packages/SystemUI/res-keyguard/values-af/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Verkeerde PIN-kode."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ongeldige kaart."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Volgelaai"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai draadloos"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans vinnig"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans stadig"</string> diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml index d64bcf644c04..b3111799d8e6 100644 --- a/packages/SystemUI/res-keyguard/values-am/strings.xml +++ b/packages/SystemUI/res-keyguard/values-am/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ትክክል ያልሆነ ፒን ኮድ።"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ልክ ያልሆነ ካርድ።"</string> <string name="keyguard_charged" msgid="3316115607283493413">"ሙሉ በሙሉ ኃይል ተሞልቷል"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • በገመድ አልባ ኃይል በመሙላት ላይ"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ኃይል በመሙላት ላይ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • በፍጥነት ኃይልን በመሙላት ላይ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • በዝግታ ኃይልን በመሙላት ላይ"</string> diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml index 0c27b8a89766..8eb4007b703e 100644 --- a/packages/SystemUI/res-keyguard/values-ar/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"رمز رقم التعريف الشخصي غير صحيح."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"بطاقة غير صالحة."</string> <string name="keyguard_charged" msgid="3316115607283493413">"تم شحن البطارية بالكامل"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن لاسلكيًا"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن سريعًا"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن ببطء"</string> diff --git a/packages/SystemUI/res-keyguard/values-as/strings.xml b/packages/SystemUI/res-keyguard/values-as/strings.xml index 59382420cba2..3003527591f9 100644 --- a/packages/SystemUI/res-keyguard/values-as/strings.xml +++ b/packages/SystemUI/res-keyguard/values-as/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ভুল পিন ক\'ড।"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ব্যৱহাৰৰ অযোগ্য ছিম কাৰ্ড"</string> <string name="keyguard_charged" msgid="3316115607283493413">"পূৰ্ণৰূপে চ্চাৰ্জ হৈছে"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • বেঁতাৰৰ জৰিয়তে চ্চাৰ্জ কৰি থকা হৈছে"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • চ্চার্জ কৰি থকা হৈছে"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • দ্ৰুত গতিৰে চ্চাৰ্জ কৰি থকা হৈছে"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • লাহে লাহে চ্চাৰ্জ কৰি থকা হৈছে"</string> diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml index 19cf402b0989..8b61c2c9e70a 100644 --- a/packages/SystemUI/res-keyguard/values-az/strings.xml +++ b/packages/SystemUI/res-keyguard/values-az/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Yanlış PIN kod."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Yanlış Kart."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Tam dolub"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Simsiz Şəkildə Batareya Yığır"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Enerji yığır"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sürətlə enerji yığır"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Yavaş enerji yığır"</string> diff --git a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml index 9b8b697b387b..d27105f30aff 100644 --- a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN kôd je netačan."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Nevažeća kartica."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Napunjena je u potpunosti"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Bežično punjenje"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Puni se"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Brzo se puni"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sporo se puni"</string> diff --git a/packages/SystemUI/res-keyguard/values-be/strings.xml b/packages/SystemUI/res-keyguard/values-be/strings.xml index e1ee01f2c9e2..3d3524f1f148 100644 --- a/packages/SystemUI/res-keyguard/values-be/strings.xml +++ b/packages/SystemUI/res-keyguard/values-be/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Няправільны PIN-код."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Несапраўдная картка."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Акумулятар поўнасцю зараджаны"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе бесправадная зарадка"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе зарадка"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе хуткая зарадка"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе павольная зарадка"</string> diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml index 706eb7f08600..54bab374c094 100644 --- a/packages/SystemUI/res-keyguard/values-bg/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Неправилен ПИН код."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Картата е невалидна."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Напълно заредено"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се безжично"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се бързо"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се бавно"</string> diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml index 9a09a1cfd904..cee9f4dfdd72 100644 --- a/packages/SystemUI/res-keyguard/values-bn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ভুল পিন কোড দেওয়া হয়েছে।"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ভুল কার্ড।"</string> <string name="keyguard_charged" msgid="3316115607283493413">"সম্পূর্ণ চার্জ আছে"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ওয়্যারলেস পদ্ধতিতে চার্জ করা হচ্ছে"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • চার্জ হচ্ছে"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • দ্রুত চার্জ হচ্ছে"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ধীরে চার্জ হচ্ছে"</string> diff --git a/packages/SystemUI/res-keyguard/values-bs/strings.xml b/packages/SystemUI/res-keyguard/values-bs/strings.xml index ef28b1dc797d..daa36483b9a4 100644 --- a/packages/SystemUI/res-keyguard/values-bs/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bs/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Pogrešan PIN."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Nevažeća kartica."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Potpuno napunjen"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Bežično punjenje"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Brzo punjenje"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sporo punjenje"</string> diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml index a0b8cdcdd8eb..36c989ecec63 100644 --- a/packages/SystemUI/res-keyguard/values-ca/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"El codi PIN no és correcte."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"La targeta no és vàlida."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Completament carregada"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant sense fils"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant ràpidament"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant lentament"</string> diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml index c38b495b1dfe..ed7c90fb892f 100644 --- a/packages/SystemUI/res-keyguard/values-cs/strings.xml +++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Nesprávný kód PIN."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Neplatná karta."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Plně nabito"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Bezdrátové nabíjení"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíjení"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Rychlé nabíjení"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pomalé nabíjení"</string> diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml index 304d4de070f2..6875c755c12a 100644 --- a/packages/SystemUI/res-keyguard/values-da/strings.xml +++ b/packages/SystemUI/res-keyguard/values-da/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Forkert pinkode."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ugyldigt kort."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fuldt opladet"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Trådløs opladning"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader hurtigt"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader langsomt"</string> diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml index ef171cf675d1..25488cab237f 100644 --- a/packages/SystemUI/res-keyguard/values-de/strings.xml +++ b/packages/SystemUI/res-keyguard/values-de/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Falscher PIN-Code."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ungültige Karte."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Vollständig aufgeladen"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kabelloses Laden"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird geladen"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird schnell geladen"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird langsam geladen"</string> diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml index e2c3fba3a507..15f3e3a70dfe 100644 --- a/packages/SystemUI/res-keyguard/values-el/strings.xml +++ b/packages/SystemUI/res-keyguard/values-el/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Λανθασμένος κωδικός PIN."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Μη έγκυρη κάρτα."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Πλήρως φορτισμένη"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ασύρματη φόρτιση"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Φόρτιση"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Γρήγορη φόρτιση"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Αργή φόρτιση"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml index af8eaa5885ff..6ae4def2bc27 100644 --- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Incorrect PIN code."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Invalid card."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fully charged"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wirelessly Charging"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml index ee700503362e..00a0c1e19898 100644 --- a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Incorrect PIN code."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Invalid card."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fully charged"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wirelessly Charging"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml index af8eaa5885ff..6ae4def2bc27 100644 --- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Incorrect PIN code."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Invalid card."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fully charged"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wirelessly Charging"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml index af8eaa5885ff..6ae4def2bc27 100644 --- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Incorrect PIN code."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Invalid card."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fully charged"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wirelessly Charging"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml index fa314e786bcb..13e87fa5269a 100644 --- a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml @@ -34,7 +34,7 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Incorrect PIN code."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Invalid Card."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fully charged"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wirelessly Charging"</string> + <string name="keyguard_plugged_in_wireless" msgid="8404159927155454732">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging wirelessly"</string> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml index b646fcbfbe72..597889871d25 100644 --- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Código PIN incorrecto"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Tarjeta no válida"</string> <string name="keyguard_charged" msgid="3316115607283493413">"Carga completa"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga inalámbrica"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rápidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml index 754a1cdf9ed7..d6a59bd66c5c 100644 --- a/packages/SystemUI/res-keyguard/values-es/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"El código PIN es incorrecto."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Tarjeta no válida."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Carga completa"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando sin cables"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rápidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml index 5c1db4e64994..f1678d7f8cba 100644 --- a/packages/SystemUI/res-keyguard/values-et/strings.xml +++ b/packages/SystemUI/res-keyguard/values-et/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Vale PIN-kood."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Kehtetu kaart."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Täielikult laetud"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Juhtmeta laadimine"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laadimine"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kiirlaadimine"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Aeglane laadimine"</string> diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml index d72a1a3bac12..d6d6264f8439 100644 --- a/packages/SystemUI/res-keyguard/values-eu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN kode hori ez da zuzena."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Txartelak ez du balio."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Erabat kargatuta"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hari gabe kargatzen"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kargatzen"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Bizkor kargatzen"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mantso kargatzen"</string> diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml index 580ca78429a3..56405dfd53bd 100644 --- a/packages/SystemUI/res-keyguard/values-fa/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"کد پین اشتباه است."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"کارت نامعتبر"</string> <string name="keyguard_charged" msgid="3316115607283493413">"شارژ کامل است"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • درحال شارژ شدن بهصورت بیسیم"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • درحال شارژ شدن"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • درحال شارژ سریع"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • درحال شارژ آهسته"</string> diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml index fe299f6823f3..071f9c44b08d 100644 --- a/packages/SystemUI/res-keyguard/values-fi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Väärä PIN-koodi"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Virheellinen kortti"</string> <string name="keyguard_charged" msgid="3316115607283493413">"Täyteen ladattu"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan langattomasti"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan nopeasti"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan hitaasti"</string> diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml index 65e0f3ad8766..5ac1f49467c3 100644 --- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"NIP erroné."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Cette carte n\'est pas valide."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Complètement chargé"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • En recharge sans fil"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"En recharge : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"En recharge rapide : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"En recharge lente : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml index db85aaa48fd8..293a9e783620 100644 --- a/packages/SystemUI/res-keyguard/values-fr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Le code est incorrect."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Carte non valide."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Complètement chargée"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge sans fil"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge…"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge rapide…"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge lente…"</string> diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml index d384950f60d1..64466177ef62 100644 --- a/packages/SystemUI/res-keyguard/values-gl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Código PIN incorrecto"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"A tarxeta non é válida."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Batería totalmente cargada"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando sen fíos"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rapidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml index 79524286d310..c2b0e445279c 100644 --- a/packages/SystemUI/res-keyguard/values-gu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ખોટો પિન કોડ."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"અમાન્ય કાર્ડ."</string> <string name="keyguard_charged" msgid="3316115607283493413">"સંપૂર્ણપણે ચાર્જ થયેલ"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • વાયરલેસથી ચાર્જ થઈ રહ્યું છે"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ચાર્જિંગ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ઝડપથી ચાર્જિંગ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ધીમેથી ચાર્જિંગ"</string> diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml index 8948e9ef9be5..f64257d18586 100644 --- a/packages/SystemUI/res-keyguard/values-hi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"गलत पिन कोड."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"गलत कार्ड."</string> <string name="keyguard_charged" msgid="3316115607283493413">"पूरी तरह चार्ज हो गया"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • वायरलेस तरीके से चार्ज हो रहा है"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज हो रहा है"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • तेज़ चार्ज हो रहा है"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • धीरे चार्ज हो रहा है"</string> diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml index f149b40ee067..04de8d84e3af 100644 --- a/packages/SystemUI/res-keyguard/values-hr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN kôd nije točan."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Nevažeća kartica."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Potpuno napunjena baterija"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • bežično punjenje"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • punjenje"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • brzo punjenje"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • sporo punjenje"</string> diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml index 4462901101e0..3fbf772b36c0 100644 --- a/packages/SystemUI/res-keyguard/values-hu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Helytelen PIN-kód."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Érvénytelen kártya."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Teljesen feltöltve"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Vezeték nélküli töltés folyamatban"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Töltés"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Gyors töltés"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lassú töltés"</string> diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml index 09ade055b0e3..95f42feea65d 100644 --- a/packages/SystemUI/res-keyguard/values-hy/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN կոդը սխալ է։"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Սխալ քարտ"</string> <string name="keyguard_charged" msgid="3316115607283493413">"Ամբողջությամբ լիցքավորված է"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Անլար լիցքավորում"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Լիցքավորում"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Արագ լիցքավորում"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Դանդաղ լիցքավորում"</string> diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml index 86f994c2a464..0ccc1d107db8 100644 --- a/packages/SystemUI/res-keyguard/values-in/strings.xml +++ b/packages/SystemUI/res-keyguard/values-in/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Kode PIN salah."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Kartu Tidak Valid"</string> <string name="keyguard_charged" msgid="3316115607283493413">"Terisi penuh"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi Daya Secara Nirkabel"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya dengan cepat"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya dengan lambat"</string> diff --git a/packages/SystemUI/res-keyguard/values-is/strings.xml b/packages/SystemUI/res-keyguard/values-is/strings.xml index 3c615c12bc43..9d8f11b77add 100644 --- a/packages/SystemUI/res-keyguard/values-is/strings.xml +++ b/packages/SystemUI/res-keyguard/values-is/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Rangt PIN-númer."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ógilt kort."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fullhlaðin"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Þráðlaus hleðsla"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Í hleðslu"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hröð hleðsla"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hæg hleðsla"</string> diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml index 36f9cca6d7e1..dcc9b6c15fc3 100644 --- a/packages/SystemUI/res-keyguard/values-it/strings.xml +++ b/packages/SystemUI/res-keyguard/values-it/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Codice PIN errato."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Scheda non valida."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Completamente carica"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • In ricarica wireless"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • In carica"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica veloce"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica lenta"</string> diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml index f499f43ff5e8..2c753cb7315b 100644 --- a/packages/SystemUI/res-keyguard/values-iw/strings.xml +++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"קוד הגישה שגוי"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"כרטיס לא חוקי."</string> <string name="keyguard_charged" msgid="3316115607283493413">"טעונה במלואה"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה אלחוטית"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה מהירה"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה איטית"</string> diff --git a/packages/SystemUI/res-keyguard/values-ja/strings.xml b/packages/SystemUI/res-keyguard/values-ja/strings.xml index 8b361966fe6e..3aeb0dcbfe19 100644 --- a/packages/SystemUI/res-keyguard/values-ja/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ja/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN コードが無効です。"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"無効なカードです。"</string> <string name="keyguard_charged" msgid="3316115607283493413">"充電完了"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ワイヤレス充電中"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電中"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 急速充電中"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 低速充電中"</string> diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml index 2663ec67a642..12278b2eea5b 100644 --- a/packages/SystemUI/res-keyguard/values-ka/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN-კოდი არასწორია."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ბარათი არასწორია."</string> <string name="keyguard_charged" msgid="3316115607283493413">"ბოლომდე დატენილი"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • იტენება უსადენოდ"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • იტენება"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • სწრაფად იტენება"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ნელა იტენება"</string> diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml index e649dd956701..3521c235e45e 100644 --- a/packages/SystemUI/res-keyguard/values-kk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN коды қате"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Жарамсыз карта."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Толық зарядталды"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Сымсыз зарядтау"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядталуда"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Жылдам зарядталуда"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Баяу зарядталуда"</string> diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml index c78e0bb6a8e6..2db19cd650ab 100644 --- a/packages/SystemUI/res-keyguard/values-km/strings.xml +++ b/packages/SystemUI/res-keyguard/values-km/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"កូដ PIN មិនត្រឹមត្រូវទេ។"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"បណ្ណមិនត្រឹមត្រូវទេ។"</string> <string name="keyguard_charged" msgid="3316115607283493413">"បានសាកថ្មពេញ"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្មឥតខ្សែ"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្ម"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្មយ៉ាងឆាប់រហ័ស"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្មយឺត"</string> diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml index 8bb047ce467c..897577c3f16a 100644 --- a/packages/SystemUI/res-keyguard/values-kn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ತಪ್ಪಾದ ಪಿನ್ ಕೋಡ್."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ಅಮಾನ್ಯ ಕಾರ್ಡ್."</string> <string name="keyguard_charged" msgid="3316115607283493413">"ಪೂರ್ಣವಾಗಿ ಚಾರ್ಜ್ ಆಗಿದೆ"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ವೈರ್ಲೆಸ್ ಆಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ವೇಗವಾಗಿ ಚಾರ್ಜ್ಮಾಡಲಾಗುತ್ತಿದೆ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ನಿಧಾನವಾಗಿ ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml index 7d6538be5064..c7ce0f276108 100644 --- a/packages/SystemUI/res-keyguard/values-ko/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"잘못된 PIN 코드입니다."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"유효하지 않은 카드"</string> <string name="keyguard_charged" msgid="3316115607283493413">"충전 완료"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 무선 충전 중"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 충전 중"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 고속 충전 중"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 저속 충전 중"</string> diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml index cffc2f6973b2..b05092f36850 100644 --- a/packages/SystemUI/res-keyguard/values-ky/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN-код туура эмес."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"SIM-карта жараксыз."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Толук кубатталды"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зымсыз кубатталууда"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Кубатталууда"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Тез кубатталууда"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Жай кубатталууда"</string> diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml index b0678ce0073c..a03fbeb3abc5 100644 --- a/packages/SystemUI/res-keyguard/values-lo/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ລະຫັດ PIN ບໍ່ຖືກຕ້ອງ."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ບັດບໍ່ຖືກຕ້ອງ."</string> <string name="keyguard_charged" msgid="3316115607283493413">"ສາກເຕັມແລ້ວ"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກແບບໄຮ້ສາຍ"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກແບບດ່ວນ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກແບບຊ້າ"</string> diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml index ea4d1a77e09a..c5445edeef40 100644 --- a/packages/SystemUI/res-keyguard/values-lt/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Netinkamas PIN kodas."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Netinkama kortelė."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Visiškai įkrautas"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Įkraunama be laidų"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Įkraunama"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Greitai įkraunama"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lėtai įkraunama"</string> diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml index 2512ae211206..c849fca8da77 100644 --- a/packages/SystemUI/res-keyguard/values-lv/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN kods nav pareizs."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Nederīga karte."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Pilnībā uzlādēts"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek bezvadu uzlāde"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek uzlāde"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek ātrā uzlāde"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek lēnā uzlāde"</string> diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml index 1d08adecf6cb..d0d2cfb86684 100644 --- a/packages/SystemUI/res-keyguard/values-mk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Погрешен PIN-код."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Неважечка картичка."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Целосно полна"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Безжично полнење"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Се полни"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Брзо полнење"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Бавно полнење"</string> diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml index aec0c63e0689..3a99fd84d2b6 100644 --- a/packages/SystemUI/res-keyguard/values-ml/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"പിൻ കോഡ് തെറ്റാണ്."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"അസാധുവായ കാർഡ്."</string> <string name="keyguard_charged" msgid="3316115607283493413">"പൂർണ്ണമായി ചാർജ് ചെയ്തു"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • വയർലെസ്സ് ആയി ചാർജ്ജ് ചെയ്യുന്നു"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ചാർജ് ചെയ്യുന്നു"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • വേഗത്തിൽ ചാർജ് ചെയ്യുന്നു"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • പതുക്കെ ചാർജ് ചെയ്യുന്നു"</string> diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml index c4f748116b96..29e5c58e0847 100644 --- a/packages/SystemUI/res-keyguard/values-mn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ПИН код буруу байна."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Карт хүчингүй байна."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Бүрэн цэнэглэсэн"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Утасгүй цэнэглэж байна"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Цэнэглэж байна"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Хурдан цэнэглэж байна"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Удаан цэнэглэж байна"</string> diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml index 942e04e8b201..89bef5ecee7e 100644 --- a/packages/SystemUI/res-keyguard/values-mr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"चुकीचा पिन कोड."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"अवैध कार्ड."</string> <string name="keyguard_charged" msgid="3316115607283493413">"पूर्णपणे चार्ज"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • वायरलेस पद्धतीने चार्ज करत आहे"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज होत आहे"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • वेगाने चार्ज होत आहे"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • सावकाश चार्ज होत आहे"</string> diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml index 2052848a820a..3d8f5dea76fd 100644 --- a/packages/SystemUI/res-keyguard/values-ms/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Kod PIN salah."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Kad Tidak Sah."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Dicas penuh"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas Secara Wayarles"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas dengan cepat"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas dengan perlahan"</string> diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml index f834c35023d4..8ca5e4f97c47 100644 --- a/packages/SystemUI/res-keyguard/values-my/strings.xml +++ b/packages/SystemUI/res-keyguard/values-my/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ပင်နံပါတ် မှားနေသည်။"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ကတ် မမှန်ကန်ပါ။"</string> <string name="keyguard_charged" msgid="3316115607283493413">"အားအပြည့်သွင်းထားသည်"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ကြိုးမဲ့ အားသွင်းနေသည်"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • အားသွင်းနေသည်"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • အမြန်အားသွင်းနေသည်"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • နှေးကွေးစွာ အားသွင်းနေသည်"</string> diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml index 711478d0a586..8281f280aa9f 100644 --- a/packages/SystemUI/res-keyguard/values-nb/strings.xml +++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Feil PIN-kode."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ugyldig kort."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fulladet"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader trådløst"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader raskt"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader sakte"</string> diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml index ae45eb5044fa..312319f0c70c 100644 --- a/packages/SystemUI/res-keyguard/values-ne/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN कोड गलत छ।"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"अमान्य कार्ड।"</string> <string name="keyguard_charged" msgid="3316115607283493413">"पूर्ण चार्ज भएको"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ताररहित तरिकाले चार्ज गर्दै"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज गरिँदै"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • द्रुत गतिमा चार्ज गरिँदै"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • मन्द गतिमा चार्ज गरिँदै"</string> diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml index fd80a6c50485..509227ba3261 100644 --- a/packages/SystemUI/res-keyguard/values-nl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Onjuiste pincode."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ongeldige kaart."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Volledig opgeladen"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Draadloos opladen"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladen"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Snel opladen"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Langzaam opladen"</string> diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml index 94afe6835ee0..5dc8119c7691 100644 --- a/packages/SystemUI/res-keyguard/values-or/strings.xml +++ b/packages/SystemUI/res-keyguard/values-or/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ଭୁଲ PIN କୋଡ୍।"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ଅମାନ୍ୟ କାର୍ଡ।"</string> <string name="keyguard_charged" msgid="3316115607283493413">"ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଚାର୍ଜ ହୋଇଗଲା"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ୱାୟାର୍ଲେସ୍ଭାବରେ ଚାର୍ଜ ହେଉଛି"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଚାର୍ଜ ହେଉଛି"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଦ୍ରୁତ ଭାବେ ଚାର୍ଜ ହେଉଛି"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଧୀରେ ଚାର୍ଜ ହେଉଛି"</string> diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml index d9fada78a40f..c9fbdef87fb2 100644 --- a/packages/SystemUI/res-keyguard/values-pa/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"ਗਲਤ ਪਿੰਨ ਕੋਡ।"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"ਅਵੈਧ ਕਾਰਡ।"</string> <string name="keyguard_charged" msgid="3316115607283493413">"ਪੂਰਾ ਚਾਰਜ"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਵਾਇਰਲੈੱਸ ਤੌਰ \'ਤੇ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਤੇਜ਼ੀ ਨਾਲ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਹੌਲੀ-ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml index 8e9a9948dcfb..931c5f363aa9 100644 --- a/packages/SystemUI/res-keyguard/values-pl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Nieprawidłowy kod PIN."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Nieprawidłowa karta."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Bateria w pełni naładowana"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ładowanie bezprzewodowe"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ładowanie"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Szybkie ładowanie"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wolne ładowanie"</string> diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml index 48fb04f6f779..dfa8592923d9 100644 --- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Código PIN incorreto."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Cartão inválido."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Carga completa"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando sem fio"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando lentamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml index e1d2b4a48742..af7bdb7f29ca 100644 --- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Código PIN incorreto."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Cartão inválido."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Totalmente carregada"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento sem fios"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar…"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar rapidamente…"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar lentamente…"</string> diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml index 48fb04f6f779..dfa8592923d9 100644 --- a/packages/SystemUI/res-keyguard/values-pt/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Código PIN incorreto."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Cartão inválido."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Carga completa"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando sem fio"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando lentamente"</string> diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml index 7a9d51ae7092..42d47cc3df08 100644 --- a/packages/SystemUI/res-keyguard/values-ro/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Cod PIN incorect."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Card nevalid"</string> <string name="keyguard_charged" msgid="3316115607283493413">"Complet încărcată"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Încărcare Wireless"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă rapid"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă lent"</string> diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml index 85347196270b..6e20bae74190 100644 --- a/packages/SystemUI/res-keyguard/values-ru/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Неверный PIN-код."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ошибка SIM-карты."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Аккумулятор полностью заряжен"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Беспроводная зарядка"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"Идет зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"Идет быстрая зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"Идет медленная зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string> diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml index 849ff30a2bb4..1cbb391e18f0 100644 --- a/packages/SystemUI/res-keyguard/values-si/strings.xml +++ b/packages/SystemUI/res-keyguard/values-si/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"වැරදි PIN කේතයකි."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"වලංගු නොවන කාඩ්පත."</string> <string name="keyguard_charged" msgid="3316115607283493413">"සම්පූර්ණයෙන් ආරෝපණය වී ඇත"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • නොරැහැන්ව ආරෝපණය වේ"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ආරෝපණය වෙමින්"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • වේගයෙන් ආරෝපණය වෙමින්"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • සෙමින් ආරෝපණය වෙමින්"</string> diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml index c9222511cfc4..0e5707460c40 100644 --- a/packages/SystemUI/res-keyguard/values-sk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Nesprávny kód PIN."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Neplatná karta."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Úplne nabité"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Prebieha bezdrôtové nabíjanie"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa rýchlo"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa pomaly"</string> diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml index 2b3afe292e01..486d4b720fc5 100644 --- a/packages/SystemUI/res-keyguard/values-sl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Napačna koda PIN."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Neveljavna kartica"</string> <string name="keyguard_charged" msgid="3316115607283493413">"Popolnoma napolnjen"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • brezžično polnjenje"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • polnjenje"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • hitro polnjenje"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • počasno polnjenje"</string> diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml index da9a04862e0c..15b19cd9d13b 100644 --- a/packages/SystemUI/res-keyguard/values-sq/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Kodi PIN është i pasaktë."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Karta e pavlefshme."</string> <string name="keyguard_charged" msgid="3316115607283493413">"I ngarkuar plotësisht"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me valë"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me shpejtësi"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet ngadalë"</string> diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml index f069013b966a..28ff3993872c 100644 --- a/packages/SystemUI/res-keyguard/values-sr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN кôд је нетачан."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Неважећа картица."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Напуњена је у потпуности"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Бежично пуњење"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуни се"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Брзо се пуни"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Споро се пуни"</string> diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml index 58da9bbb26b7..1cbd6e905384 100644 --- a/packages/SystemUI/res-keyguard/values-sv/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Fel pinkod."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ogiltigt kort."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Fulladdad"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas trådlöst"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas snabbt"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas långsamt"</string> diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml index f948cd2ca77c..d07729f6a8f2 100644 --- a/packages/SystemUI/res-keyguard/values-sw/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Nambari ya PIN si sahihi."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Kadi si Sahihi."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Imejaa chaji"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji bila Kutumia Waya"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji kwa kasi"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji pole pole"</string> diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml index e72ffce917ec..2a3669486d0b 100644 --- a/packages/SystemUI/res-keyguard/values-ta/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"தவறான பின் குறியீடு."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"செல்லாத சிம் கார்டு."</string> <string name="keyguard_charged" msgid="3316115607283493413">"முழுவதுமாகச் சார்ஜ் ஆகிவிட்டது"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • வயர்லெஸ் முறையில் சார்ஜாகிறது"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • சார்ஜாகிறது"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • வேகமாகச் சார்ஜாகிறது"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • மெதுவாகச் சார்ஜாகிறது"</string> diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml index 8afb7867c9ed..23b68fc1a851 100644 --- a/packages/SystemUI/res-keyguard/values-te/strings.xml +++ b/packages/SystemUI/res-keyguard/values-te/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"పిన్ కోడ్ తప్పు."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"చెల్లని కార్డ్."</string> <string name="keyguard_charged" msgid="3316115607283493413">"పూర్తిగా ఛార్జ్ చేయబడింది"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • వైర్లెస్గా ఛార్జ్ అవుతోంది"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ఛార్జ్ అవుతోంది"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • వేగంగా ఛార్జ్ అవుతోంది"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • నెమ్మదిగా ఛార్జ్ అవుతోంది"</string> diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml index e923ab72359b..88f48f91931e 100644 --- a/packages/SystemUI/res-keyguard/values-th/strings.xml +++ b/packages/SystemUI/res-keyguard/values-th/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"รหัส PIN ไม่ถูกต้อง"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"การ์ดไม่ถูกต้อง"</string> <string name="keyguard_charged" msgid="3316115607283493413">"ชาร์จเต็มแล้ว"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จแบบไร้สาย"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จอย่างเร็ว"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จอย่างช้าๆ"</string> diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml index 7fb8cd58b74a..0124cd30ea96 100644 --- a/packages/SystemUI/res-keyguard/values-tl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Mali ang PIN code."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Di-wasto ang Card."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Puno na ang baterya"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wireless na Nagcha-charge"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nagcha-charge"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mabilis na nagcha-charge"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mabagal na nagcha-charge"</string> diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml index 8d528b93b3aa..9fde58e1f15c 100644 --- a/packages/SystemUI/res-keyguard/values-tr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Yanlış PIN kodu."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Geçersiz Kart."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Tamamen şarj edildi"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kablosuz Olarak Şarj Oluyor"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Şarj oluyor"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hızlı şarj oluyor"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Yavaş şarj oluyor"</string> diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml index 8a58d22aed0c..e3d9248440f4 100644 --- a/packages/SystemUI/res-keyguard/values-uk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Неправильний PIN-код."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Недійсна картка."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Повністю заряджений"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Бездротове заряджання"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Заряджання"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Швидке заряджання"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Повільне заряджання"</string> diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml index e46c02605b2a..3f3bea56a479 100644 --- a/packages/SystemUI/res-keyguard/values-ur/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"غلط PIN کوڈ۔"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"غلط کارڈ۔"</string> <string name="keyguard_charged" msgid="3316115607283493413">"مکمل طور پر چارج ہو گيا"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • وائرلیس چارجنگ"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • چارج ہو رہا ہے"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • تیزی سے چارج ہو رہا ہے"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • آہستہ چارج ہو رہا ہے"</string> diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml index 4110d2eb3a11..9242bc88de54 100644 --- a/packages/SystemUI/res-keyguard/values-uz/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml @@ -36,14 +36,15 @@ <!-- String.format failed for translation --> <!-- no translation found for keyguard_charged (3316115607283493413) --> <skip /> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Simsiz quvvat olmoqda"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Quvvat olmoqda"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Tezkor quvvat olmoqda"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sekin quvvat olmoqda"</string> <string name="keyguard_low_battery" msgid="9218432555787624490">"Quvvatlash moslamasini ulang."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8566679946700751371">"Qulfdan chiqarish uchun Menyu tugmasini bosing."</string> <string name="keyguard_network_locked_message" msgid="6743537524631420759">"Tarmoq qulflangan"</string> - <string name="keyguard_missing_sim_message_short" msgid="6327533369959764518">"SIM karta yo‘q"</string> + <string name="keyguard_missing_sim_message_short" msgid="6327533369959764518">"SIM karta solinmagan"</string> <string name="keyguard_missing_sim_message" product="tablet" msgid="4550152848200783542">"Planshetingizda SIM karta yo‘q."</string> <string name="keyguard_missing_sim_message" product="default" msgid="6585414237800161146">"Telefoningizda SIM karta yo‘q."</string> <string name="keyguard_missing_sim_instructions" msgid="7350295932015220392">"Telefonga SIM karta soling."</string> diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml index 19f62b2f812e..50e1007ff3cf 100644 --- a/packages/SystemUI/res-keyguard/values-vi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml @@ -34,14 +34,15 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Mã PIN không chính xác."</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Thẻ không hợp lệ."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Đã sạc đầy"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc không dây"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc nhanh"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc chậm"</string> <string name="keyguard_low_battery" msgid="9218432555787624490">"Kết nối bộ sạc của bạn."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8566679946700751371">"Nhấn vào Menu để mở khóa."</string> <string name="keyguard_network_locked_message" msgid="6743537524631420759">"Mạng đã bị khóa"</string> - <string name="keyguard_missing_sim_message_short" msgid="6327533369959764518">"Không có thẻ SIM nào"</string> + <string name="keyguard_missing_sim_message_short" msgid="6327533369959764518">"Không có thẻ SIM"</string> <string name="keyguard_missing_sim_message" product="tablet" msgid="4550152848200783542">"Không có thẻ SIM nào trong máy tính bảng."</string> <string name="keyguard_missing_sim_message" product="default" msgid="6585414237800161146">"Không có thẻ SIM nào trong điện thoại."</string> <string name="keyguard_missing_sim_instructions" msgid="7350295932015220392">"Lắp thẻ SIM."</string> diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml index 85058df718ad..ab6eb1649399 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN 码有误。"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"SIM 卡无效。"</string> <string name="keyguard_charged" msgid="3316115607283493413">"充电完成"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在无线充电"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在充电"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在快速充电"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在慢速充电"</string> diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml index 18503fd093c5..93e5a2c3370d 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN 碼不正確。"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"SIM 卡無效。"</string> <string name="keyguard_charged" msgid="3316115607283493413">"充電完成"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 無線充電中"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在充電"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在快速充電"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> •正在慢速充電"</string> diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml index ba61f433e116..e50bdd33125d 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"PIN 碼不正確。"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"卡片無效。"</string> <string name="keyguard_charged" msgid="3316115607283493413">"充電完成"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 無線充電"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電中"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 快速充電中"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 慢速充電中"</string> diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml index a6c5464fec99..6347cabe072e 100644 --- a/packages/SystemUI/res-keyguard/values-zu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml @@ -34,7 +34,8 @@ <string name="keyguard_password_wrong_pin_code" msgid="6535018036285012028">"Ikhodi ye-PIN engalungile!"</string> <string name="keyguard_sim_error_message_short" msgid="592109500618448312">"Ikhadi elingavumelekile."</string> <string name="keyguard_charged" msgid="3316115607283493413">"Ishaje ngokuphelele"</string> - <string name="keyguard_plugged_in_wireless" msgid="3004717438401575235">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ukushaja okungenantambo"</string> + <!-- no translation found for keyguard_plugged_in_wireless (8404159927155454732) --> + <skip /> <string name="keyguard_plugged_in" msgid="3161102098900158923">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Iyashaja"</string> <string name="keyguard_plugged_in_charging_fast" msgid="3684592786276709342">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ishaja kaningi"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="509533586841478405">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ishaja kancane"</string> diff --git a/packages/SystemUI/res/layout/ongoing_privacy_chip.xml b/packages/SystemUI/res/layout/ongoing_privacy_chip.xml index 49c16bee7b1f..dce9ce16e9cd 100644 --- a/packages/SystemUI/res/layout/ongoing_privacy_chip.xml +++ b/packages/SystemUI/res/layout/ongoing_privacy_chip.xml @@ -21,8 +21,6 @@ android:id="@+id/privacy_chip" android:layout_height="match_parent" android:layout_width="wrap_content" - android:layout_marginLeft="@dimen/ongoing_appops_chip_margin" - android:layout_marginRight="@dimen/ongoing_appops_chip_margin" android:layout_gravity="center_vertical|end" android:gravity="center_vertical" android:orientation="horizontal" diff --git a/packages/SystemUI/res/layout/qs_carrier.xml b/packages/SystemUI/res/layout/qs_carrier.xml index b94a3163804f..8f748069aa40 100644 --- a/packages/SystemUI/res/layout/qs_carrier.xml +++ b/packages/SystemUI/res/layout/qs_carrier.xml @@ -19,6 +19,7 @@ android:id="@+id/linear_carrier" android:layout_width="wrap_content" android:layout_height="match_parent" + android:minWidth="48dp" android:orientation="horizontal" android:gravity="center_vertical|start" android:background="@android:color/transparent" diff --git a/packages/SystemUI/res/layout/qs_paged_tile_layout.xml b/packages/SystemUI/res/layout/qs_paged_tile_layout.xml index e44fbcfd122f..887878631de7 100644 --- a/packages/SystemUI/res/layout/qs_paged_tile_layout.xml +++ b/packages/SystemUI/res/layout/qs_paged_tile_layout.xml @@ -18,7 +18,7 @@ <com.android.systemui.qs.PagedTileLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="0dp" android:layout_weight="1" android:clipChildren="true" android:paddingBottom="@dimen/qs_paged_tile_layout_padding_bottom"> diff --git a/packages/SystemUI/res/layout/quick_qs_status_icons.xml b/packages/SystemUI/res/layout/quick_qs_status_icons.xml index 29f53a47a14e..83fad66454f3 100644 --- a/packages/SystemUI/res/layout/quick_qs_status_icons.xml +++ b/packages/SystemUI/res/layout/quick_qs_status_icons.xml @@ -21,8 +21,8 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/qs_header_top_margin" android:layout_marginBottom="14dp" - android:layout_marginStart="@dimen/status_bar_padding_start" - android:layout_marginEnd="@dimen/status_bar_padding_end" + android:paddingStart="@dimen/status_bar_padding_start" + android:paddingEnd="@dimen/status_bar_padding_end" android:layout_below="@id/quick_status_bar_system_icons" android:clipChildren="false" android:clipToPadding="false" @@ -34,7 +34,7 @@ android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="start" + android:layout_gravity="start|center_vertical" android:gravity="center_vertical" android:singleLine="true" android:textAppearance="@style/TextAppearance.QS.Status" diff --git a/packages/SystemUI/res/layout/quick_settings_header_info.xml b/packages/SystemUI/res/layout/quick_settings_header_info.xml index da640fd1e164..37c6d9f2d973 100644 --- a/packages/SystemUI/res/layout/quick_settings_header_info.xml +++ b/packages/SystemUI/res/layout/quick_settings_header_info.xml @@ -19,7 +19,6 @@ android:layout_width="match_parent" android:layout_height="@dimen/qs_header_tooltip_height" android:layout_below="@id/quick_status_bar_system_icons" - android:layout_marginTop="@dimen/qs_header_top_margin" android:paddingStart="@dimen/status_bar_padding_start" android:paddingEnd="@dimen/status_bar_padding_end"> @@ -27,7 +26,7 @@ android:id="@+id/long_press_tooltip" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="start|bottom" + android:layout_gravity="start|center_vertical" android:alpha="0" android:text="@string/quick_settings_header_onboarding_text" android:textAppearance="@style/TextAppearance.QS.TileLabel" @@ -36,34 +35,48 @@ <LinearLayout android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="start|bottom" + android:layout_height="match_parent" + android:layout_gravity="start|center_vertical" android:gravity="center_vertical"> <LinearLayout android:id="@+id/status_container" android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:layout_gravity="start|center_vertical" android:layout_weight="1" android:gravity="center_vertical" - android:alpha="0"> - - <ImageView - android:id="@+id/next_alarm_icon" - android:layout_width="@dimen/qs_header_alarm_icon_size" - android:layout_height="@dimen/qs_header_alarm_icon_size" - android:src="@drawable/stat_sys_alarm" - android:tint="?android:attr/textColorPrimary" - android:visibility="gone"/> + android:alpha="0" > - <TextView - android:id="@+id/next_alarm_text" + <LinearLayout + android:id = "@+id/alarm_container" android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start" - android:textAppearance="@style/TextAppearance.QS.Status" - android:visibility="gone"/> + android:layout_height="match_parent" + android:layout_gravity="center_vertical" + android:gravity="center_vertical" + android:focusable="true" + android:clickable="true"> + + <ImageView + android:id="@+id/next_alarm_icon" + android:layout_width="@dimen/qs_header_alarm_icon_size" + android:layout_height="@dimen/qs_header_alarm_icon_size" + android:src="@drawable/ic_alarm" + android:tint="?android:attr/textColorPrimary" + android:contentDescription="@string/accessibility_quick_settings_alarm_set" + android:visibility="gone"/> + + <TextView + android:id="@+id/next_alarm_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start" + android:textAppearance="@style/TextAppearance.QS.Status" + android:visibility="gone"/> + </LinearLayout> <View android:id="@+id/status_separator" @@ -71,20 +84,33 @@ android:layout_height="match_parent" android:visibility="gone"/> - <ImageView - android:id="@+id/ringer_mode_icon" - android:layout_width="@dimen/qs_header_alarm_icon_size" - android:layout_height="@dimen/qs_header_alarm_icon_size" - android:tint="?android:attr/textColorPrimary" - android:visibility="gone"/> - - <TextView - android:id="@+id/ringer_mode_text" + <LinearLayout + android:id = "@+id/ringer_container" android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start" - android:textAppearance="@style/TextAppearance.QS.Status" - android:visibility="gone"/> + android:layout_height="match_parent" + android:layout_gravity="center_vertical" + android:gravity="center_vertical" + android:focusable="true" + android:clickable="true"> + + <ImageView + android:id="@+id/ringer_mode_icon" + android:layout_width="@dimen/qs_header_alarm_icon_size" + android:layout_height="@dimen/qs_header_alarm_icon_size" + android:tint="?android:attr/textColorPrimary" + android:visibility="gone"/> + + <TextView + android:id="@+id/ringer_mode_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:singleLine="true" + android:ellipsize="marquee" + android:marqueeRepeatLimit="marquee_forever" + android:layout_marginStart="@dimen/qs_header_alarm_text_margin_start" + android:textAppearance="@style/TextAppearance.QS.Status" + android:visibility="gone"/> + </LinearLayout> </LinearLayout> <View @@ -93,11 +119,13 @@ android:layout_height="match_parent" android:layout_weight="1"/> + <include layout="@layout/qs_carrier_group" android:id="@+id/carrier_group" android:layout_width="wrap_content" - android:layout_height="wrap_content" - android_layout_gravity="center vertical|end"/> + android:layout_height="match_parent" + android:layout_gravity="end|center_vertical" + android:focusable="false"/> </LinearLayout> </FrameLayout> diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 3e3a164d0fa7..ff220e92c7a7 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Skandeer tans gesig"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Stuur"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Bestuur kennisgewings"</string> - <string name="unlock_label" msgid="8779712358041029439">"ontsluit"</string> <string name="phone_label" msgid="2320074140205331708">"maak foon oop"</string> <string name="voice_assist_label" msgid="3956854378310019854">"maak stembystand oop"</string> <string name="camera_label" msgid="7261107956054836961">"maak kamera oop"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Volkome\nstilte"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Net\nprioriteit"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Net\nwekkers"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai draadloos (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans stadig (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Jy is gekoppel aan <xliff:g id="APPLICATION">%1$s</xliff:g>, wat jou persoonlike netwerkaktiwiteit, insluitend e-posse, programme en webwerwe, kan monitor."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> bestuur jou werkprofiel. Die profiel is gekoppel aan <xliff:g id="APPLICATION">%2$s</xliff:g>, wat jou netwerkaktiwiteit, insluitend e-posse, programme en webwerwe, kan monitor.\n\nKontak jou administrateur vir meer inligting."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> bestuur jou werkprofiel. Die profiel is gekoppel aan <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, wat jou netwerkaktiwiteit, insluitend e-posse, programme en webwerwe, kan monitor.\n\nJy is ook gekoppel aan <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, wat jou persoonlike netwerkaktiwiteit kan monitor."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Ontsluit vir <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> loop tans"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Toestel sal gesluit bly totdat jy dit handmatig ontsluit"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Kry kennisgewings vinniger"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Sien hulle voordat jy ontsluit"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Vou in"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Gee outomaties mediaopskrifte"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Maak wenk oor onderskrifte toe"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Wissel uitvoertoestel"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Skerm is vasgespeld"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Dit hou dit in sig totdat jy dit ontspeld. Raak en hou Terug en Oorsig om dit te ontspeld."</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index d707e8becdde..922d203d3c64 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"የቅኝት ፊት"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ላክ"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"ማሳወቂያዎችን ያቀናብሩ"</string> - <string name="unlock_label" msgid="8779712358041029439">"ክፈት"</string> <string name="phone_label" msgid="2320074140205331708">"ስልክ ክፈት"</string> <string name="voice_assist_label" msgid="3956854378310019854">"የድምጽ ረዳትን ክፈት"</string> <string name="camera_label" msgid="7261107956054836961">"ካሜራ ክፈት"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"ሙሉ ለሙሉ\nጸጥታ"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ቅድሚያ ተሰጪ\nብቻ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"ማንቂያዎች\nብቻ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • በዝግታ ኃይልን በመሙላት ላይ (እስኪሞላ ድረስ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"እርስዎ ኢሜይሎችን፣ መተግበሪያዎችን እና ድር ጣቢያዎችንም ጨምሮ የግል የአውታረ መረብ እንቅስቃሴዎን ከሚከታተለው ከ<xliff:g id="APPLICATION">%1$s</xliff:g> ጋር ተገናኝተዋል።"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"የእርስዎ የሥራ መገለጫ በ<xliff:g id="ORGANIZATION">%1$s</xliff:g> የሚተዳደር ነው። መገለጫው ኢሜይሎችን፣ መተግበሪያዎችን፣ እና የድር ጣቢያዎችን ጨምሮ የአውታረ መረብ እንቅስቃሴን መቆጣጠር ከሚችለው ከ<xliff:g id="APPLICATION">%2$s</xliff:g> ጋር ተገናኝቷል።\n\nለተጨማሪ መረጃ የእርስዎን አስተዳዳሪ ያነጋግሩ።"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"የእርስዎ የሥራ መገለጫ በ<xliff:g id="ORGANIZATION">%1$s</xliff:g> የሚተዳደር ነው። መገለጫው ኢሜይሎችን፣ መተግበሪያዎችን፣ እና የድር ጣቢያዎችን ጨምሮ የአውታረ መረብ እንቅስቃሴን መቆጣጠር ከሚችለው ከ<xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ጋር ተገናኝቷል።\n\nበተጨማሪ የእርስዎን የግል የአውታረ መረብ እንቅስቃሴ መቆጣጠር ከሚችለው ከ<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ጋር ተገናኝተዋል።"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"ለ<xliff:g id="USER_NAME">%1$s</xliff:g> ተከፍቷል"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> እያሄደ ነው"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"እራስዎ እስኪከፍቱት ድረስ መሣሪያ እንደተቆለፈ ይቆያል"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ማሳወቂያዎችን ፈጥነው ያግኙ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ከመክፈትዎ በፊት ይመልከቷቸው"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ሰብስብ"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ራስሰር የሥዕል መግለጫ ጽሑፍን ሚዲያ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"የሥዕል መግለጫ ጽሑፎችን ጠቃሚ ምክር ዝጋ"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"የውጽዓት መሣሪያን ይቀይሩ"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"ማያ ገጽ ተሰክቷል"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"ይሄ እስኪነቅሉት ድረስ በእይታ ውስጥ ያስቀምጠዋል። ለመንቀል ተመለስ እና አጠቃላይ ዕይታ የሚለውን ይጫኑ እና ይያዙ።"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index d5ab8e3aac85..d92b926454d7 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"مسح الوجه"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"إرسال"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"إدارة الإشعارات"</string> - <string name="unlock_label" msgid="8779712358041029439">"إلغاء القفل"</string> <string name="phone_label" msgid="2320074140205331708">"فتح الهاتف"</string> <string name="voice_assist_label" msgid="3956854378310019854">"فتح المساعد الصوتي"</string> <string name="camera_label" msgid="7261107956054836961">"فتح الكاميرا"</string> @@ -412,7 +411,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"كتم الصوت\nتمامًا"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"الأولوية \nفقط"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"التنبيهات\nفقط"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن ببطء (يتبقى <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> حتى الامتلاء)"</string> @@ -519,8 +519,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"أنت متصل بـ <xliff:g id="APPLICATION">%1$s</xliff:g>، الذي يمكنه مراقبة أنشطتك الشخصية على الشبكة، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"يخضع الملف الشخصي للعمل لإدارة <xliff:g id="ORGANIZATION">%1$s</xliff:g>. تم ربط الملف الشخصي بـ <xliff:g id="APPLICATION">%2$s</xliff:g>، الذي يمكنه مراقبة أنشطة شبكتك، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nيمكنك الاتصال بالمشرف للحصول على مزيد من المعلومات."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"يخضع الملف الشخصي للعمل لإدارة <xliff:g id="ORGANIZATION">%1$s</xliff:g>. تم ربط هذا الملف الشخصي بـ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>، الذي يمكنه مراقبة أنشطة شبكتك، بما في ذلك الرسائل الإلكترونية والتطبيقات ومواقع الويب.\n\nتم ربطك بـ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>، الذي يمكنه مراقبة أنشطة شبكتك الشخصية."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"تم إلغاء القفل لـ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> قيد التشغيل"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"سيظل الجهاز مقفلاً إلى أن يتم إلغاء قفله يدويًا"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"الحصول على الإشعارات بشكل أسرع"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"الاطّلاع عليها قبل إلغاء القفل"</string> @@ -533,6 +533,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"تصغير"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ترجمة تلقائية للوسائط"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"إغلاق نصيحة الشرح"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"تبديل جهاز الاستماع"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"تم تثبيت الشاشة"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"يؤدي هذا إلى استمرار عرض الشاشة المُختارة إلى أن تتم إزالة تثبيتها. المس مع الاستمرار الزرين \"رجوع\" و\"نظرة عامة\" لإزالة التثبيت."</string> @@ -778,8 +784,8 @@ <string name="right_keycode" msgid="708447961000848163">"رمز مفتاح اليمين"</string> <string name="left_icon" msgid="3096287125959387541">"رمز اليسار"</string> <string name="right_icon" msgid="3952104823293824311">"رمز اليمين"</string> - <string name="drag_to_add_tiles" msgid="230586591689084925">"انقر باستمرار مع السحب لإضافة المربعات."</string> - <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"اضغط باستمرار مع السحب لإعادة ترتيب المربّعات."</string> + <string name="drag_to_add_tiles" msgid="230586591689084925">"اضغط باستمرار مع السحب لإضافة الميزات."</string> + <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"اضغط باستمرار مع السحب لإعادة ترتيب الميزات."</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"اسحب هنا للإزالة"</string> <string name="drag_to_remove_disabled" msgid="2390968976638993382">"تحتاج إلى 6 مربعات على الأقل."</string> <string name="qs_edit" msgid="2232596095725105230">"تعديل"</string> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index 93d6c802d0a7..07583bdd7e78 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"চেহেৰা স্কেন কৰি থকা হৈছে"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"পঠিয়াওক"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"জাননী পৰিচালনা কৰক"</string> - <string name="unlock_label" msgid="8779712358041029439">"আনলক কৰক"</string> <string name="phone_label" msgid="2320074140205331708">"ফ\'ন খোলক"</string> <string name="voice_assist_label" msgid="3956854378310019854">"কণ্ঠধ্বনিৰে সহায় খোলক"</string> <string name="camera_label" msgid="7261107956054836961">"কেমেৰা খোলক"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"সম্পূর্ণ \n নিৰৱতা"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"কেৱল\nগুৰুত্বপূৰ্ণ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"কেৱল\nএলাৰ্মসমূহ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • লাহে লাহে চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"আপুনি <xliff:g id="APPLICATION">%1$s</xliff:g>ৰ সৈতে সংযুক্ত হৈ আছে, যিয়ে ইমেইল, এপ্ আৰু ৱেবছাইটসমূহকে সামৰি আপোনাৰ ব্যক্তিগত নেটৱর্কৰ কার্যকলাপ নিৰীক্ষণ কৰিব পাৰে।"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g>য়ে আপোনাৰ কৰ্মস্থানৰ প্ৰ\'ফাইল পৰিচালনা কৰে। এই প্ৰ\'ফাইলটো <xliff:g id="APPLICATION">%2$s</xliff:g>ৰে সংযুক্ত হৈ আছে যি ইমেইল, এপ্ আৰু ৱেবছাইটসমূহকে ধৰি আপোনাৰ কর্মস্থানৰ নেটৱর্কৰ কাৰ্যকলাপ নিৰীক্ষণ কৰিব পাৰিব। \n\nঅধিক তথ্যৰ বাবে আপোনাৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g>য়ে আপোনাৰ কৰ্মস্থানৰ প্ৰ\'ফাইল পৰিচালনা কৰে। এই প্ৰ\'ফাইলটো <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>ৰে সংযুক্ত হৈ আছে যি ইমেইল, এপ্ আৰু ৱেবছাইটসমূহকে ধৰি আপোনাৰ কর্মস্থানৰ নেটৱর্কৰ কাৰ্যকলাপ নিৰীক্ষণ কৰিব পাৰিব। \n\nআপুনি <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>ৰ সৈতেও সংযুক্ত হৈ আছে, যি আপোনাৰ ব্য়ক্তিগত নেটৱৰ্কৰ কাৰ্যকলাপ নিৰীক্ষণ কৰিব পাৰে।"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g>ৰ বাবে আনলক কৰা হৈছে"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> চলি আছে"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"আপুনি নিজে আনলক নকৰালৈকে ডিভাইচ লক হৈ থাকিব"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"জাননী ক্ষিপ্ৰতাৰে লাভ কৰক"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"আপুনি আনলক কৰাৰ পূৰ্বে তেওঁলোকক চাওক"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"সংকুচিত কৰক"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"স্বয়ংক্ৰিয় কেপশ্বন মিডিয়া"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"কেপচন টিপ বন্ধ কৰক"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"আউটপুট ডিভাইচ সলনি কৰক"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"স্ক্ৰীণ পিন কৰা হ’ল"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"এই কাৰ্যই আপুনি আনপিন নকৰালৈকে ইয়াক দেখা পোৱা অৱস্থাত ৰাখে। আনপিন কৰিবলৈ \'পিছলৈ যাওক\' আৰু \'অৱলোকন\'-ত স্পৰ্শ কৰি থাকক।"</string> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index df290c89431a..c6c03d6976d1 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Üzün skan edilməsi"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Göndərin"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Bildirişləri idarə edin"</string> - <string name="unlock_label" msgid="8779712358041029439">"kiliddən çıxarın"</string> <string name="phone_label" msgid="2320074140205331708">"telefonu açın"</string> <string name="voice_assist_label" msgid="3956854378310019854">"səs yardımçısını açın"</string> <string name="camera_label" msgid="7261107956054836961">"kemaranı açın"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Tam\nsakitlik"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Yalnız\nprioritet"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Yalnız\nalarmlar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"<xliff:g id="APPLICATION">%1$s</xliff:g> tətbiqinə qoşulmusunuz və o, e-məktublar, tətbiq və veb saytlar daxil olmaqla şəxsi şəbəkə fəaliyyətinizə nəzarət edə bilər."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"İş profili <xliff:g id="ORGANIZATION">%1$s</xliff:g> tərəfindən idarə olunur. Profil e-poçt, tətbiq və veb saytlar da daxil olmaqla şəbəkə fəaliyyətinə nəzarət edən <xliff:g id="APPLICATION">%2$s</xliff:g> tətbiqinə qoşuludur.\n\nƏtraflı məlumat üçün admin ilə əlaqə saxlayın."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"İş profili <xliff:g id="ORGANIZATION">%1$s</xliff:g> tərəfindən idarə edilir. Profil e-poçt, tətbiq və veb saytlar da daxil olmaqla şəbəkə fəaliyyətinə nəzarət edən <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> tətbiqinə qoşuludur.\n\nEyni zamanda şəxsi şəbəkə fəaliyyətinə nəzarət edən <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> tətbiqinə qoşulusunuz."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> üçün kiliddən çıxarıldı"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> işləyir"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Bildirişləri daha sürətlə əldə edin"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Kiliddən çıxarmadan öncə onları görün"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Yığcamlaşdırın"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Avtomatik başlıq mediası"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Bağlanmış subtitrlər tövsiyəsi"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Çıxış cihazına keçin"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekrana sancaq taxıldı"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Sancaq götürülənə qədər bu görünəcək. Sancağı götürmək üçün Geri və İcmal düymələrinə basıb saxlayın."</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 5de7ef78a6e0..b1e9493d8ba4 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Skeniranje lica"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Pošalji"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Upravljajte obaveštenjima"</string> - <string name="unlock_label" msgid="8779712358041029439">"otključaj"</string> <string name="phone_label" msgid="2320074140205331708">"otvori telefon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"otvori glasovnu pomoć"</string> <string name="camera_label" msgid="7261107956054836961">"otvori kameru"</string> @@ -406,7 +405,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Samo\npriorit. prekidi"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -510,8 +510,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Povezani ste sa aplikacijom <xliff:g id="APPLICATION">%1$s</xliff:g>, koja može da nadgleda aktivnosti na ličnoj mreži, uključujući imejlove, aplikacije i veb-sajtove."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profilom za Work upravlja <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Povezan je sa aplikacijom <xliff:g id="APPLICATION">%2$s</xliff:g>, koja može da nadgleda aktivnosti na poslovnoj mreži, uključujući imejlove, aplikacije i veb-sajtove.\n\nViše informacija potražite od administratora."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profilom za Work upravlja <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Povezan je sa aplikacijom <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, koja može da nadgleda aktivnosti na poslovnoj mreži, uključujući imejlove, aplikacije i veb-sajtove.\n\nPovezani ste i sa aplikacijom <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, koja može da nadgleda aktivnosti na ličnoj mreži."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Otključano za korisnika <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Funkcija <xliff:g id="TRUST_AGENT">%1$s</xliff:g> je pokrenuta"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Uređaj će ostati zaključan dok ga ne otključate ručno"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Brže dobijajte obaveštenja"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Pregledajte ih pre otključavanja"</string> @@ -524,6 +524,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skupi"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatski titl za medije"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Opis titla"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Promenite izlazni uređaj"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran je zakačen"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Na ovaj način se ovo stalno prikazuje dok ga ne otkačite. Dodirnite i zadržite Nazad i Pregled da biste ga otkačili."</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index fb69e2455ab7..e23154481a66 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Сканіраванне твару"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Адправіць"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Кіраваць апавяшчэннямі"</string> - <string name="unlock_label" msgid="8779712358041029439">"разблакiраваць"</string> <string name="phone_label" msgid="2320074140205331708">"адкрыць тэлефон"</string> <string name="voice_assist_label" msgid="3956854378310019854">"адкрыць галасавую дапамогу"</string> <string name="camera_label" msgid="7261107956054836961">"адкрыць камеру"</string> @@ -253,7 +252,7 @@ <string name="accessibility_quick_settings_color_inversion_changed_off" msgid="4406577213290173911">"Інверсія колеру адключаецца."</string> <string name="accessibility_quick_settings_color_inversion_changed_on" msgid="6897462320184911126">"Інверсія колеру ўключаецца."</string> <string name="accessibility_quick_settings_hotspot_changed_off" msgid="5004708003447561394">"Мабільны хот-спот выключаецца."</string> - <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2890951609226476206">"Мабільная кропка доступу ўключаная."</string> + <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2890951609226476206">"Хот-спот уключаны."</string> <string name="accessibility_casting_turned_off" msgid="1430668982271976172">"Трансляцыя экрана спынена."</string> <string name="accessibility_quick_settings_work_mode_off" msgid="7045417396436552890">"Рэжым працы выкл."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="7650588553988014341">"Рэжым працы ўкл."</string> @@ -350,7 +349,7 @@ <string name="quick_settings_connected_battery_level" msgid="4136051440381328892">"Падключана, узровень зараду акумулятара: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string> <string name="quick_settings_connecting" msgid="47623027419264404">"Падлучэнне..."</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Мадэм"</string> - <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Кропка доступу"</string> + <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Хот-спот"</string> <string name="quick_settings_hotspot_secondary_label_transient" msgid="8010579363691405477">"Уключэнне…"</string> <string name="quick_settings_hotspot_secondary_label_data_saver_enabled" msgid="5672131949987422420">"Эканомія трафіка ўкл"</string> <plurals name="quick_settings_hotspot_secondary_label_num_devices" formatted="false" msgid="2324635800672199428"> @@ -410,7 +409,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Поўная\nцішыня"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Толькі\nпрыярытэтныя"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Толькі\nбудзільнікі"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"Ідзе зарадка (<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="7767562163577492332">"Ідзе хуткая зарадка (<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="3769655133567307069">"Ідзе павольная зарадка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, яшчэ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -515,8 +515,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Вы падключаны да праграмы <xliff:g id="APPLICATION">%1$s</xliff:g>, якая можа сачыць за вашай асабістай сеткавай дзейнасцю, уключаючы электронную пошту, праграмы і вэб-сайты."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Ваш працоўны профіль знаходзіцца пад кіраваннем <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ён падключаны да праграмы <xliff:g id="APPLICATION">%2$s</xliff:g>, якая можа сачыць за вашай працоўнай сеткавай актыўнасцю, уключаючы электронную пошту, праграмы і вэб-сайты.\n\nДля атрымання дадатковай інфармацыі звярніцеся да адміністратара."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Ваш працоўны профіль знаходзіцца пад кіраваннем <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ён падключаны да праграмы <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, якая можа сачыць за вашай працоўнай сеткавай актыўнасцю, уключаючы электронную пошту, праграмы і вэб-сайты.\n\nВы таксама падключаны да праграмы <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, якая можа сачыць за вашай асабістай сеткавай актыўнасцю."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Разблакіравана для карыстальніка <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> працуе"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Прылада будзе заставацца заблакіраванай, пакуль вы не разблакіруеце яе ўручную"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Атрымлівайце апавяшчэнні хутчэй"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Праглядайце іх перад разблакіроўкай"</string> @@ -529,6 +529,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Згарнуць"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Аўтаматычныя цітры"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Падказка \"Схавайце цітры\""</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Змяніць прыладу аўдыявыхаду"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Экран замацаваны"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Будзе паказвацца, пакуль не адмацуеце. Каб адмацаваць, краніце і ўтрымлівайце кнопкі \"Назад\" і \"Агляд\"."</string> @@ -596,7 +602,7 @@ <string name="alarm_template" msgid="3980063409350522735">"у <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="alarm_template_far" msgid="4242179982586714810">"у <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="accessibility_quick_settings_detail" msgid="2579369091672902101">"Хуткія налады, <xliff:g id="TITLE">%s</xliff:g>."</string> - <string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"Кропка доступу"</string> + <string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"Хот-спот"</string> <string name="accessibility_managed_profile" msgid="6613641363112584120">"Працоўны профіль"</string> <string name="tuner_warning_title" msgid="7094689930793031682">"Цікава для некаторых, але не для ўсіх"</string> <string name="tuner_warning" msgid="8730648121973575701">"Наладка сістэмнага інтэрфейсу карыстальніка дае вам дадатковыя спосабы наладжвання і дапасоўвання карыстальніцкага інтэрфейсу Android. Гэтыя эксперыментальныя функцыі могуць змяніцца, перастаць працаваць або знікнуць у будучых версіях. Карыстайцеся з асцярожнасцю."</string> @@ -901,7 +907,7 @@ <string name="auto_saver_enabled_text" msgid="874711029884777579">"Калі ўзровень зараду акумулятара знізіцца да <xliff:g id="PERCENTAGE">%d</xliff:g>%%, аўтаматычна ўключыцца рэжым эканоміі энергіі."</string> <string name="open_saver_setting_action" msgid="8314624730997322529">"Налады"</string> <string name="auto_saver_okay_action" msgid="2701221740227683650">"Зразумела"</string> - <string name="heap_dump_tile_name" msgid="9141031328971226374">"Дамп кучы SysUI"</string> + <string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Праграма \"<xliff:g id="APP">%1$s</xliff:g>\" выкарыстоўвае: <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Праграмы выкарыстоўваюць: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 345f6e3e4e94..3cc5f254cab5 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Извършва се сканиране на лице"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Изпращане"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Управление на известията"</string> - <string name="unlock_label" msgid="8779712358041029439">"отключване"</string> <string name="phone_label" msgid="2320074140205331708">"отваряне на телефона"</string> <string name="voice_assist_label" msgid="3956854378310019854">"отваряне на гласовата помощ"</string> <string name="camera_label" msgid="7261107956054836961">"отваряне на камерата"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Пълна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Само\nс приоритет"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Само\nбудилници"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се бавно (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Установена е връзка с приложението <xliff:g id="APPLICATION">%1$s</xliff:g>, което може да наблюдава личната ви активност в мрежата, включително имейли, приложения и уебсайтове."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Служебният ви потребителски профил се управлява от <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Той е свързан с приложението <xliff:g id="APPLICATION">%2$s</xliff:g>, което може да наблюдава служебната ви активност в мрежата, включително имейли, приложения и уебсайтове.\n\nЗа още информация се свържете с администратора си."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Служебният ви потребителски профил се управлява от <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Той е свързан с приложението <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, което може да наблюдава служебната ви активност в мрежата, включително имейли, приложения и уебсайтове.\n\nУстановена е връзка и с приложението <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, което може да наблюдава личната ви активност в мрежата."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Отключено за <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> се изпълнява"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Устройството ще остане заключено, докато не го отключите ръчно"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Получавайте известия по-бързо"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Вижте известията, преди да отключите"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Свиване"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Медия с автоматични надписи"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Съвет за надписите"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Превключване на устройството за възпроизвеждане на звук"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Екранът е фиксиран"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Екранът ще се показва, докато не го освободите с докосване и задържане на бутона за връщане назад и този за общ преглед."</string> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index fbf296f173b3..4595f7fb703a 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"ফেস স্ক্যান করা হচ্ছে"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"পাঠান"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"বিজ্ঞপ্তি ম্যানেজ করুন"</string> - <string name="unlock_label" msgid="8779712358041029439">"আনলক করুন"</string> <string name="phone_label" msgid="2320074140205331708">"ফোন খুলুন"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ভয়েস সহায়তা খুলুন"</string> <string name="camera_label" msgid="7261107956054836961">"ক্যামেরা খুলুন"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"একদম\nনিরব"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"শুধুমাত্র\nঅগ্রাধিকার"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"শুধুমাত্র\nঅ্যালার্মগুলি"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ধীরে চার্জ হচ্ছে (পুরোটা হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"আপনি <xliff:g id="APPLICATION">%1$s</xliff:g> এর সাথে সংযুক্ত হয়েছেন, যা ইমেল, অ্যাপ এবং ওয়েবসাইটগুলি সহ আপনার ব্যক্তিগত নেটওয়ার্কের অ্যাক্টিভিটি নিরীক্ষণ করবে৷"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> আপনার কর্মস্থলের প্রোফাইল পরিচালনা করে। প্রোফাইলটি <xliff:g id="APPLICATION">%2$s</xliff:g> এর সাথে সংযুক্ত, যেটি ইমেল, অ্যাপ, ও ওয়েবসাইট সহ আপনার কর্মস্থলের নেটওয়ার্ক অ্যাক্টিভিটির উপরে নজর রাখতে পারে।\n\nআরও তথ্যের জন্য প্রশাসকের সাথে যোগাযোগ করুন।"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> আপনার কর্মস্থলের প্রোফাইল পরিচালনা করে। প্রোফাইলটি <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> এর সাথে সংযুক্ত, যেটি ইমেল অ্যাপ, ও ওয়েবসাইট সহ আপনার কর্মস্থলের নেটওয়ার্ক অ্যাক্টিভিটির উপরে নজর রাখতে পারে।\n\n এ ছাড়াও আপনি <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> এর সাথে সংযুক্ত, যেটি আপনার ব্যক্তিগত নেটওয়ার্কে নজর রাখে।"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> এর জন্য আনলক করা হয়েছে"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> চালু আছে"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"আপনি নিজে আনলক না করা পর্যন্ত ডিভাইসটি লক হয়ে থাকবে"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"বিজ্ঞপ্তিগুলি আরও দ্রুত পান"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"আপনি আনলক করার আগে ওগুলো দেখুন"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"সঙ্কুচিত করুন"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"মিডিয়া অটোমেটিক ক্যাপশন করুন"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ক্লোজড ক্যাপশন টুল টিপ বন্ধ করুন"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"অন্য আউটপুট ডিভাইস বেছে নিন"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"স্ক্রিন পিন করা হয়েছে"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"এটি আপনি আনপিন না করা পর্যন্ত এটিকে প্রদর্শিত করবে৷ আনপিন করতে ফিরুন এবং ওভারভিউ স্পর্শ করে ধরে থাকুন।"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 4c4c4f2f88c2..e8ef30312ffd 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Skeniranje lica"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Pošalji"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Upravljanje obavještenjima"</string> - <string name="unlock_label" msgid="8779712358041029439">"otključaj"</string> <string name="phone_label" msgid="2320074140205331708">"otvori telefon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"otvori glasovnu pomoć"</string> <string name="camera_label" msgid="7261107956054836961">"otvori kameru"</string> @@ -406,7 +405,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Samo\nprioritetni prekidi"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bežično punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Brzo punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string> @@ -510,8 +510,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Povezani ste na aplikaciju <xliff:g id="APPLICATION">%1$s</xliff:g>, koja može pratiti vaše privatne aktivnosti na mreži, uključujući e-poštu, aplikacije i web lokacije."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Vašim radnim profilom upravlja <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan s aplikacijom <xliff:g id="APPLICATION">%2$s</xliff:g>, koja može pratiti vašu aktivnost na radnoj mreži, uključujući e-poruke, aplikacije i web lokacije.\n\nZa više informacija, obratite se svom administratoru."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Radnim profilom upravlja <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan s aplikacijom <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, koja može pratiti vašu aktivnost na radnoj mreži, uključujući e-poruke, aplikacije i web lokacije.\n\nPovezani ste i sa aplikacijom <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, koja može pratiti vašu aktivnost na privatnoj mreži."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Otključano za korisnika <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Agent <xliff:g id="TRUST_AGENT">%1$s</xliff:g> je pokrenut"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Uređaj će ostati zaključan dok ga ručno ne otključate"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Brže primaj obavještenja"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Vidi ih prije otključavanja"</string> @@ -524,6 +524,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Suzi"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatski titluj medije"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Savjet u titlu"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Promijenite izlazni uređaj"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran je prikačen"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ekran ostaje prikazan ovako dok ga ne otkačite. Da ga otkačite, dodirnite i držite dugme Nazad."</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 0a75a5d4fdb7..15dab6a2c3b5 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"S\'està escanejant la cara"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Envia"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gestiona les notificacions"</string> - <string name="unlock_label" msgid="8779712358041029439">"desbloqueja"</string> <string name="phone_label" msgid="2320074140205331708">"obre el telèfon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"obre l\'assistència per veu"</string> <string name="camera_label" msgid="7261107956054836961">"obre la càmera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silenci\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Només\ninterr. prior."</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Només\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant sense fils (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> <string name="keyguard_indication_charging_time_fast" msgid="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregant lentament (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Estàs connectat a <xliff:g id="APPLICATION">%1$s</xliff:g>, que pot supervisar la teva activitat personal a la xarxa, com ara els correus electrònics, les aplicacions i els llocs web."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> gestiona el teu perfil professional. El perfil està connectat a <xliff:g id="APPLICATION">%2$s</xliff:g>, que pot supervisar la teva activitat a la xarxa de treball, com ara els correus electrònics, les aplicacions i els llocs web.\n\nPer obtenir més informació, contacta amb l\'administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> gestiona el teu perfil professional. El perfil està connectat a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pot supervisar la teva activitat a la xarxa de treball, com ara els correus electrònics, les aplicacions i els llocs web.\n\nTambé estàs connectat a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pot supervisar la teva activitat personal a la xarxa."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloquejat per a <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> s\'està executant"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"El dispositiu continuarà bloquejat fins que no el desbloquegis manualment."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Rep notificacions més ràpidament"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Mostra-les abans de desbloquejar"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Replega"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtítols automàtics"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Tanca el consell sobre subtítols"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Canvia el dispositiu de sortida"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"La pantalla està fixada"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Aquest element es continuarà mostrant fins que deixis de fixar-lo. Per fer-ho, toca i mantén premudes els botons Enrere i Aplicacions recents."</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 1c596ddb2a0d..ec39f8e26d1d 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Skenování obličeje"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Odeslat"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Spravovat oznámení"</string> - <string name="unlock_label" msgid="8779712358041029439">"odemknout"</string> <string name="phone_label" msgid="2320074140205331708">"otevřít telefon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"otevřít hlasovou asistenci"</string> <string name="camera_label" msgid="7261107956054836961">"spustit fotoaparát"</string> @@ -408,7 +407,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Úplné\nticho"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Pouze\nprioritní"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Pouze\nbudíky"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -513,8 +513,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Jste připojeni k aplikaci <xliff:g id="APPLICATION">%1$s</xliff:g>, která může sledovat vaši osobní aktivitu v síti, včetně e-mailů, aplikací a webů."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Váš pracovní profil spravuje organizace <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Je připojen k aplikaci <xliff:g id="APPLICATION">%2$s</xliff:g>, která může sledovat vaši aktivitu v síti, včetně e-mailů, aplikací a webů.\n\nDalší informace vám poskytne administrátor."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Váš pracovní profil spravuje organizace <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Je připojen k aplikaci <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, která může sledovat vaši aktivitu v síti, včetně e-mailů, aplikací a webů.\n\nTaké jste připojeni k aplikaci <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, která může sledovat vaši osobní aktivitu v síti."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Odemknuto pro uživatele <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> běží"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Zařízení zůstane uzamčeno, dokud je ručně neodemknete"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Čtěte si oznámení rychleji"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Můžete si je přečíst před odemčením obrazovky."</string> @@ -527,6 +527,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sbalit"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatické titulky k médiím"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Tip k titulkům"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Přepnout zařízení pro výstup"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Obrazovka je připnuta"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Obsah bude připnut v zobrazení, dokud jej neuvolníte. Uvolníte jej stisknutím a podržením tlačítek Zpět a Přehled."</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 8544ec0edc1d..b1af0483077a 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Scanner ansigt"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Administrer notifikationer"</string> - <string name="unlock_label" msgid="8779712358041029439">"lås op"</string> <string name="phone_label" msgid="2320074140205331708">"åbn telefon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"åbn taleassistent"</string> <string name="camera_label" msgid="7261107956054836961">"åbn kamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Total\nstilhed"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Kun\nprioritet"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Kun\nalarmer"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Oplader langsomt (fuldt opladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Du har forbindelse til <xliff:g id="APPLICATION">%1$s</xliff:g>, som kan overvåge din private netværksaktivitet, bl.a. e-mails, apps og websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Din arbejdsprofil administreres af <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen har forbindelse til <xliff:g id="APPLICATION">%2$s</xliff:g>, som kan overvåge din netværksaktivitet, bl.a. mails, apps og websites.\n\nKontakt din administrator for at få flere oplysninger."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Din arbejdsprofil administreres af <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen har forbindelse til <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, som kan overvåge din netværksaktivitet, bl.a. mails, apps og websites.\n\nDu har også forbindelse til <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, som kan overvåge din personlige netværksaktivitet."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Låst op for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> kører"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Enheden vil forblive låst, indtil du manuelt låser den op"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Modtag notifikationer hurtigere"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Se dem, før du låser op"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skjul"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Undertekster til medier"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Luk tip til undertekster"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Skift enhed til lydudgang"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Skærmen er fastgjort"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Dette fastholder skærmen i visningen, indtil du frigør den. Tryk på Tilbage og Overblik, og hold fingeren nede for at frigøre skærmen."</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index e5734944d834..134417dcc69e 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Gesicht wird gescannt"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Senden"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Benachrichtigungen verwalten"</string> - <string name="unlock_label" msgid="8779712358041029439">"Entsperren"</string> <string name="phone_label" msgid="2320074140205331708">"Telefon öffnen"</string> <string name="voice_assist_label" msgid="3956854378310019854">"Sprachassistent öffnen"</string> <string name="camera_label" msgid="7261107956054836961">"Kamera öffnen"</string> @@ -408,7 +407,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Laut-\nlos"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Nur\nwichtige"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Nur\nWecker"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kabelloses Laden (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wird langsam geladen (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -511,8 +511,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Du bist mit der App \"<xliff:g id="APPLICATION">%1$s</xliff:g>\" verbunden. Diese kann deine persönlichen Netzwerkaktivitäten erfassen, einschließlich E-Mails, Apps und Websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Dein Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet. Das Profil ist mit <xliff:g id="APPLICATION">%2$s</xliff:g> verknüpft. Diese App kann deine Netzwerkaktivitäten überwachen, einschließlich E-Mails, Apps und Websites.\n\nWeitere Informationen erhältst du von deinem Administrator."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Dein Arbeitsprofil wird von <xliff:g id="ORGANIZATION">%1$s</xliff:g> verwaltet. Das Profil ist mit <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> verknüpft. Diese App kann deine Netzwerkaktivitäten überwachen, einschließlich E-Mails, Apps und Websites.\n\nDu bist auch mit <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> verbunden, die deine persönlichen Netzwerkaktivitäten überwachen kann."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Entsperrt für <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> wird ausgeführt"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Das Gerät bleibt gesperrt, bis du es manuell entsperrst."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Benachrichtigungen schneller erhalten"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Vor dem Entsperren anzeigen"</string> @@ -525,6 +525,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Minimieren"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Medien autom. untertiteln"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Untertitelinfo schließen"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Ausgabegerät wechseln"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Bildschirm ist fixiert"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Der Bildschirm bleibt so lange eingeblendet, bis du die Fixierung aufhebst. Berühre und halte dazu \"Zurück\" und \"Übersicht\"."</string> @@ -705,7 +711,7 @@ <string name="keyboard_key_num_lock" msgid="5052537581246772117">"Num"</string> <string name="keyboard_key_numpad_template" msgid="8729216555174634026">"Ziffernblock <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="keyboard_shortcut_group_system" msgid="6472647649616541064">"System"</string> - <string name="keyboard_shortcut_group_system_home" msgid="3054369431319891965">"Startseite"</string> + <string name="keyboard_shortcut_group_system_home" msgid="3054369431319891965">"Startbildschirm"</string> <string name="keyboard_shortcut_group_system_recents" msgid="3154851905021926744">"Letzte"</string> <string name="keyboard_shortcut_group_system_back" msgid="2207004531216446378">"Zurück"</string> <string name="keyboard_shortcut_group_system_notifications" msgid="8366964080041773224">"Benachrichtigungen"</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 2fc780726091..33bf7ef99edb 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Σάρωση προσώπου"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Αποστολή"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Διαχείριση ειδοποιήσεων"</string> - <string name="unlock_label" msgid="8779712358041029439">"ξεκλείδωμα"</string> <string name="phone_label" msgid="2320074140205331708">"άνοιγμα τηλεφώνου"</string> <string name="voice_assist_label" msgid="3956854378310019854">"άνοιγμα φωνητικής υποβοήθησης"</string> <string name="camera_label" msgid="7261107956054836961">"άνοιγμα φωτογραφικής μηχανής"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Πλήρης\nσίγαση"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Μόνο\nπροτεραιότητας"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Μόνο\nειδοποιήσεις"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Αργή φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Έχετε συνδεθεί στην εφαρμογή <xliff:g id="APPLICATION">%1$s</xliff:g>, η οποία μπορεί να παρακολουθεί τη δραστηριότητα του προσωπικού σας δικτύου, συμπεριλαμβανομένων μηνυμάτων ηλεκτρονικού ταχυδρομείου, εφαρμογών και ιστοτόπων."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Ο οργανισμός <xliff:g id="ORGANIZATION">%1$s</xliff:g> διαχειρίζεται το προφίλ εργασίας σας. Το προφίλ είναι συνδεδεμένο στην εφαρμογή <xliff:g id="APPLICATION">%2$s</xliff:g>, η οποία μπορεί να παρακολουθήσει τη δραστηριότητα του δικτύου εργασίας σας, συμπεριλαμβανομένων μηνυμάτων ηλεκτρονικού ταχυδρομείου, εφαρμογών και ιστοτόπων.\n\nΓια περισσότερες πληροφορίες, επικοινωνήστε με τον διαχειριστή σας."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Ο οργανισμός <xliff:g id="ORGANIZATION">%1$s</xliff:g> διαχειρίζεται το προφίλ εργασίας σας. Το προφίλ συνδέεται με την εφαρμογή <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, η οποία μπορεί να παρακολουθεί τη δραστηριότητα του δικτύου της εργασίας σας, συμπεριλαμβανομένων μηνυμάτων ηλεκτρονικού ταχυδρομείου, εφαρμογών και ιστοτόπων.\n\nΕπίσης, είστε συνδεδεμένοι στην εφαρμογή <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, που έχει τη δυνατότητα παρακολούθησης της δραστηριότητας του προσωπικού σας δικτύου."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Ξεκλειδώθηκε για τον χρήστη <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Εκτελείται ο παράγοντας εμπιστοσύνης <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Η συσκευή θα παραμείνει κλειδωμένη μέχρι να την ξεκλειδώσετε μη αυτόματα"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Λάβετε ειδοποιήσεις γρηγορότερα"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Εμφάνιση πριν το ξεκλείδωμα"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Σύμπτυξη"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Αυτόματοι υπότιτλοι στο μέσο"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Συμβουλή υπότιτλων"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Εναλλαγή συσκευής εξόδου"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Η οθόνη καρφιτσώθηκε"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Με αυτόν τον τρόπο παραμένει σε προβολή μέχρι να το ξεκαρφιτσώσετε. Αγγίξτε παρατεταμένα τα στοιχεία \"Επιστροφή\" και \"Επισκόπηση\" για ξεκαρφίτσωμα."</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 74d97c218832..5fe94ef923ca 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string> - <string name="unlock_label" msgid="8779712358041029439">"unlock"</string> <string name="phone_label" msgid="2320074140205331708">"open phone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string> <string name="camera_label" msgid="7261107956054836961">"open camera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wirelessly Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"You\'re connected to <xliff:g id="APPLICATION">%1$s</xliff:g>, which can monitor your personal network activity, including emails, apps and websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nFor more information, contact your admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nYou\'re also connected to <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, which can monitor your personal network activity."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Unlocked for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is running"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Get notifications faster"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"See them before you unlock"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch & hold Back and Overview to unpin."</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 94a42e2223f8..0b2a44e1b01d 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string> - <string name="unlock_label" msgid="8779712358041029439">"unlock"</string> <string name="phone_label" msgid="2320074140205331708">"open phone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string> <string name="camera_label" msgid="7261107956054836961">"open camera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wirelessly Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"You\'re connected to <xliff:g id="APPLICATION">%1$s</xliff:g>, which can monitor your personal network activity, including emails, apps and websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nFor more information, contact your admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nYou\'re also connected to <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, which can monitor your personal network activity."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Unlocked for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is running"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Get notifications faster"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"See them before you unlock"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch & hold Back and Overview to unpin."</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 74d97c218832..5fe94ef923ca 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string> - <string name="unlock_label" msgid="8779712358041029439">"unlock"</string> <string name="phone_label" msgid="2320074140205331708">"open phone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string> <string name="camera_label" msgid="7261107956054836961">"open camera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wirelessly Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"You\'re connected to <xliff:g id="APPLICATION">%1$s</xliff:g>, which can monitor your personal network activity, including emails, apps and websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nFor more information, contact your admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nYou\'re also connected to <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, which can monitor your personal network activity."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Unlocked for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is running"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Get notifications faster"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"See them before you unlock"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch & hold Back and Overview to unpin."</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 74d97c218832..5fe94ef923ca 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string> - <string name="unlock_label" msgid="8779712358041029439">"unlock"</string> <string name="phone_label" msgid="2320074140205331708">"open phone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string> <string name="camera_label" msgid="7261107956054836961">"open camera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wirelessly Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"You\'re connected to <xliff:g id="APPLICATION">%1$s</xliff:g>, which can monitor your personal network activity, including emails, apps and websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nFor more information, contact your admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps and websites.\n\nYou\'re also connected to <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, which can monitor your personal network activity."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Unlocked for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is running"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Get notifications faster"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"See them before you unlock"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch & hold Back and Overview to unpin."</string> diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index 635456dbe099..32a5ff2d237d 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Scanning face"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Manage notifications"</string> - <string name="unlock_label" msgid="8779712358041029439">"unlock"</string> <string name="phone_label" msgid="2320074140205331708">"open phone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"open voice assist"</string> <string name="camera_label" msgid="7261107956054836961">"open camera"</string> @@ -404,7 +403,7 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wirelessly Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="6959284458466962592">"<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="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> @@ -507,8 +506,7 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"You\'re connected to <xliff:g id="APPLICATION">%1$s</xliff:g>, which can monitor your personal network activity, including emails, apps, and websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps, and websites.\n\nFor more information, contact your admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Your work profile is managed by <xliff:g id="ORGANIZATION">%1$s</xliff:g>. The profile is connected to <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, which can monitor your work network activity, including emails, apps, and websites.\n\nYou\'re also connected to <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, which can monitor your personal network activity."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Unlocked for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is running"</string> + <string name="keyguard_indication_trust_unlocked" msgid="2712865815371519117">"Kept unlocked by TrustAgent"</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Get notifications faster"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"See them before you unlock"</string> @@ -521,6 +519,9 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Collapse"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatically caption media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Close captions tip"</string> + <string name="volume_odi_captions_content_description" msgid="2950736796270214785">"Captions overlay"</string> + <string name="volume_odi_captions_hint_enable" msgid="49750248924730302">"enable"</string> + <string name="volume_odi_captions_hint_disable" msgid="8980842810619956593">"disable"</string> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Switch output device"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Screen is pinned"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"This keeps it in view until you unpin. Touch & hold Back and Overview to unpin."</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index c994c3323659..6e40506e66fe 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Escaneando rostro"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Administrar notificaciones"</string> - <string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string> <string name="phone_label" msgid="2320074140205331708">"abrir teléfono"</string> <string name="voice_assist_label" msgid="3956854378310019854">"abrir el asistente de voz"</string> <string name="camera_label" msgid="7261107956054836961">"abrir cámara"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Solo\nprioridad"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Solo\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga inalámbrica (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando lento (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Te conectaste a <xliff:g id="APPLICATION">%1$s</xliff:g>, que puede supervisar la actividad de tu red personal, incluidos los correos electrónicos, las apps y los sitios web."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> administra tu perfil de trabajo. El perfil está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>, que puede controlar tu actividad de red de trabajo, incluidos los correos electrónicos, apps y sitios web.\n\nPara obtener más información, comunícate con tu administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> administra tu perfil de red. El perfil está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que puede controlar tu actividad de red de trabajo, incluidos los correos electrónicos, las apps y los sitios web.\n\nTambién estás conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que puede controlar tu actividad de red personal."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Se desbloqueó para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Se está ejecutando <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"El dispositivo permanecerá bloqueado hasta que lo desbloquees manualmente."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Recibe notificaciones más rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ver antes de desbloquear"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Contraer"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtitular automáticamente"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sugerencia de subtítulos"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Cambiar dispositivo de salida"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Pantalla fija"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Esta función mantiene la pantalla visible hasta que dejes de fijarla. Para ello, mantén presionados los botones Atrás y Recientes."</string> @@ -758,7 +764,7 @@ <string name="right_keycode" msgid="708447961000848163">"Clave de código derecho"</string> <string name="left_icon" msgid="3096287125959387541">"Ícono izquierdo"</string> <string name="right_icon" msgid="3952104823293824311">"Ícono derecho"</string> - <string name="drag_to_add_tiles" msgid="230586591689084925">"Mantén presionado para agregar mosaicos"</string> + <string name="drag_to_add_tiles" msgid="230586591689084925">"Mantén presionado y arrastra para agregar mosaicos"</string> <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Mantén presionado y arrastra para reorganizar los mosaicos"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Arrastra aquí para quitar"</string> <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Necesitas al menos 6 mosaicos"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index b25f84d176af..e1a9e9c46689 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Escaneando cara"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gestionar notificaciones"</string> - <string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string> <string name="phone_label" msgid="2320074140205331708">"abrir teléfono"</string> <string name="voice_assist_label" msgid="3956854378310019854">"abrir el asistente de voz"</string> <string name="camera_label" msgid="7261107956054836961">"abrir cámara"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Solo\ncon prioridad"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Solo\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Estas conectado a <xliff:g id="APPLICATION">%1$s</xliff:g>, que puede controlar tu actividad de red personal, como correos electrónicos, aplicaciones y sitios web."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> gestiona tu perfil de trabajo. El perfil está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>, que puede supervisar tu actividad de red profesional, como los correos electrónicos, las aplicaciones y los sitios web.\n\nPara obtener más información, ponte en contacto con el administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> gestiona tu perfil de trabajo. El perfil está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que puede supervisar tu actividad de red profesional, como los correos electrónicos, las aplicaciones y los sitios web.\n\nTambién te has conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que puede supervisar tu actividad de red personal."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> se está ejecutando"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"El dispositivo permanecerá bloqueado hasta que se desbloquee manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Recibe notificaciones más rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ver antes de desbloquear"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ocultar"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Subtítulos autom. multimedia"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Cerrar las recomendaciones de subtítulos"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Cambiar dispositivo de salida"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Pantalla fijada"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"La pantalla se mantiene visible hasta que dejas de fijarla. Para ello, mantén pulsados los botones Atrás y Aplicaciones recientes."</string> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 9803841c4344..bce8ab78897a 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Näo skannimine"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Saada"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Halda märguandeid"</string> - <string name="unlock_label" msgid="8779712358041029439">"ava lukk"</string> <string name="phone_label" msgid="2320074140205331708">"ava telefon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ava häälabi"</string> <string name="camera_label" msgid="7261107956054836961">"ava kaamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Täielik\nvaikus"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Ainult\nprioriteetsed"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Ainult\nalarmid"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Juhtmeta laadimine (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> täislaadimiseni)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Aegl. laad. (täislaadimiseks kulub <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Olete ühendatud rakendusega <xliff:g id="APPLICATION">%1$s</xliff:g>, mis võib jälgida teie isiklikke võrgutegevusi, sh meile, rakendusi ja veebisaite."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Teie tööprofiili haldab <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profiil on ühendatud rakendusega <xliff:g id="APPLICATION">%2$s</xliff:g>, mis saab jälgida teie töökoha võrgutegevusi, sh meile, rakendusi ja veebisaite.\n\nLisateabe saamiseks võtke ühendust administraatoriga."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Teie tööprofiili haldab <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profiil on ühendatud rakendusega <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, mis saab jälgida teie töökoha võrgutegevusi, sh meile, rakendusi ja veebisaite.\n\nOlete ühendatud ka rakendusega <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, mis saab jälgida teie isiklikke võrgutegevusi."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Avatud kasutaja <xliff:g id="USER_NAME">%1$s</xliff:g> jaoks"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Funktsioon <xliff:g id="TRUST_AGENT">%1$s</xliff:g> töötab"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Seade jääb lukku, kuni selle käsitsi avate"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Saate märguandeid kiiremini"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Näete neid enne avamist"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ahendamine"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automaatsed subtiitrid"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sule subtiitrite nõuanne"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Väljundseadme vahetamine"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekraan on kinnitatud"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"See hoitakse kuval, kuni selle vabastate. Vabastamiseks puudutage pikalt nuppe Tagasi ja Ülevaade."</string> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index d02782d76aaa..d48b7b551c34 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Aurpegia eskaneatzen"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Bidali"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Kudeatu jakinarazpenak"</string> - <string name="unlock_label" msgid="8779712358041029439">"desblokeatu"</string> <string name="phone_label" msgid="2320074140205331708">"ireki telefonoan"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ireki ahots-laguntza"</string> <string name="camera_label" msgid="7261107956054836961">"ireki kamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Isiltasun\nosoa"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Lehentasunezkoak\nsoilik"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarmak\nsoilik"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hari gabe kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatzeko)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatzeko)"</string> <string name="keyguard_indication_charging_time_fast" msgid="7767562163577492332">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bizkor kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatzeko)"</string> <string name="keyguard_indication_charging_time_slowly" msgid="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mantso kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatzeko)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"<xliff:g id="APPLICATION">%1$s</xliff:g> aplikaziora konektatuta zaude. Aplikazio horrek sarean egiten dituzun jarduera pertsonalak kontrola ditzake, mezu elektronikoak, aplikazioak eta webguneak barne."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> erakundeak kudeatzen dizu laneko profila. <xliff:g id="APPLICATION">%2$s</xliff:g> aplikaziora dago konektatuta profila, eta aplikazio horrek sarean egiten dituzun jarduerak kontrola ditzake, mezu elektronikoak, aplikazioak eta webguneak barne.\n\nInformazio gehiago lortzeko, jarri administratzailearekin harremanetan."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> erakundeak kudeatzen dizu laneko profila. <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> aplikaziora dago konektatuta profila, eta aplikazio horrek sarean egiten dituzun jarduerak kontrola ditzake, mezu elektronikoak, aplikazioak eta webguneak barne. \n\n<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> aplikaziora ere zaude konektatuta, eta hark sare pertsonalean egiten dituzun jarduerak kontrola ditzake."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> erabiltzailearentzat desblokeatu da"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> abian da"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Gailua blokeatuta egongo da eskuz desblokeatu arte"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Eskuratu jakinarazpenak azkarrago"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ikusi desblokeatu baino lehen"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Tolestu"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Ezarri azpitituluak automatikoki"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Azpitituluei buruzko aholkua"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Aldatu irteerako gailua"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Pantaila ainguratuta dago"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Horrela, ikusgai egongo da aingura kendu arte. Aingura kentzeko, eduki sakatuta \"Atzera\" eta \"Ikuspegi orokorra\" botoiak."</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index d0c7422ed027..1c42a4a080a4 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"درحال اسکن کردن چهره"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ارسال"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"مدیریت اعلانها"</string> - <string name="unlock_label" msgid="8779712358041029439">"بازکردن قفل"</string> <string name="phone_label" msgid="2320074140205331708">"باز کردن تلفن"</string> <string name="voice_assist_label" msgid="3956854378310019854">"«دستیار صوتی» را باز کنید"</string> <string name="camera_label" msgid="7261107956054836961">"باز کردن دوربین"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"سکوت\nکامل"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"فقط\nاولویتدار"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"فقط\nهشدارها"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • درحال شارژ آهسته (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"به <xliff:g id="APPLICATION">%1$s</xliff:g> وصل شدهاید که میتواند فعالیت شبکه شخصی شما را (ازجمله ایمیلها، برنامهها و وبسایتها) کنترل کند."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"نمایه کاری شما توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت میشود. این نمایه به <xliff:g id="APPLICATION">%2$s</xliff:g> متصل است که میتواند فعالیت شما در شبکه (ازجمله ایمیلها، برنامهها و وبسایتها) را پایش کند.\n\nبرای اطلاعات بیشتر، با سرپرست سیستم تماس بگیرید."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"نمایه کاریتان توسط <xliff:g id="ORGANIZATION">%1$s</xliff:g> مدیریت میشود. این نمایه به <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> متصل است که میتواند تنظیمات، دسترسی شرکتی، برنامهها، دادههای مرتبط با دستگاه و اطلاعات مکان دستگاه شما را پایش کند.\n\nشما همچنین به <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> متصل هستید که میتواند فعالیت خصوصی شما را در شبکه پایش کند."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"قفل برای <xliff:g id="USER_NAME">%1$s</xliff:g> باز شد"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> درحال اجرا است"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"دستگاه قفل باقی میماند تا زمانی که قفل آن را به صورت دستی باز کنید"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"دریافت سریعتر اعلانها"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"قبل از باز کردن قفل آنها را مشاهده کنید"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"کوچک کردن"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"رسانه زیرنویس خودکار"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"نکته مربوط به زیرنویس ناشنوایان"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"تغییر دستگاه خروجی"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"صفحه نمایش پین شد"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"تا زمانی که پین را بردارید، در نما نگهداشته میشود. برای برداشتن پین، «برگشت» و «نمای کلی» را لمس کنید و نگهدارید."</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 73d12d2b4c16..fae88911eaf5 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Kasvojen skannaus"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Lähetä"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Ilmoitusasetusten muuttaminen"</string> - <string name="unlock_label" msgid="8779712358041029439">"avaa lukitus"</string> <string name="phone_label" msgid="2320074140205331708">"avaa puhelin"</string> <string name="voice_assist_label" msgid="3956854378310019854">"Avaa ääniapuri"</string> <string name="camera_label" msgid="7261107956054836961">"avaa kamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Täydellinen\nhiljaisuus"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Vain\ntärkeät"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Vain\nherätykset"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Olet muodostanut yhteyden sovellukseen <xliff:g id="APPLICATION">%1$s</xliff:g>, joka voi valvoa henkilökohtaista toimintaasi verkossa. Sovellus voi esimerkiksi seurata avaamiasi sähköposteja, sovelluksia ja verkkosivustoja."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> hallinnoi työprofiiliasi. Se on yhteydessä sovellukseen <xliff:g id="APPLICATION">%2$s</xliff:g>, joka voi valvoa toimintaasi verkossa, esimerkiksi sähköposteja, sovelluksia ja verkkosivustoja.\n\nPyydä lisätietoja järjestelmänvalvojalta."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> hallinnoi työprofiiliasi. Se on yhteydessä sovellukseen <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, joka voi valvoa toimintaasi verkossa, esimerkiksi sähköposteja, sovelluksia ja verkkosivustoja.\n\nLisäksi olet yhteydessä sovellukseen <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, joka voi valvoa henkilökohtaista toimintaasi verkossa."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Lukitus avattu käyttäjälle <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> on käytössä"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Laite pysyy lukittuna, kunnes se avataan käsin"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Näe ilmoitukset nopeammin"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Näytä ennen lukituksen avaamista"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Tiivistä."</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Tekstitä media automaatt."</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sulje tekstitysvinkki"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Vaihda toistolaitetta"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Näyttö on kiinnitetty"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Pysyy näkyvissä, kunnes irrotat sen. Irrota painamalla pitkään Edellinen ja Viimeisimmät."</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 23847fa39e2f..d409fec54c21 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Numérisation du visage"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Envoyer"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gérer les notifications"</string> - <string name="unlock_label" msgid="8779712358041029439">"déverrouiller"</string> <string name="phone_label" msgid="2320074140205331708">"Ouvrir le téléphone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ouvrir l\'assistance vocale"</string> <string name="camera_label" msgid="7261107956054836961">"Ouvrir l\'appareil photo"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Aucune\ninterruption"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priorités\nuniquement"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarmes\nuniquement"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"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="7767562163577492332">"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="3769655133567307069">"En recharge lente : <xliff:g id="PERCENTAGE">%2$s</xliff:g> (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> jusqu\'à ch. comp.)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Vous êtes connecté à <xliff:g id="APPLICATION">%1$s</xliff:g>. Cette application peut contrôler votre activité personnelle sur le réseau, y compris les courriels, les applications et les sites Web."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Votre profil professionnel est géré par <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ce profil est connecté à <xliff:g id="APPLICATION">%2$s</xliff:g>, qui peut contrôler votre activité professionnelle sur le réseau, y compris l\'activité relative aux courriels, aux applications et aux sites Web.\n\nPour en savoir plus, communiquez avec votre administrateur."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Votre profil professionnel est géré par <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ce profil est connecté à <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, qui peut contrôler votre activité professionnelle sur le réseau, y compris l\'activité relative aux courriels, aux applications et aux sites Web.\n\nVous êtes également connecté à <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, qui peut contrôler votre activité personnelle sur le réseau."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Déverrouillé pour for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> fonctionne"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"L\'appareil restera verrouillé jusqu\'à ce que vous le déverrouilliez manuellement"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Voir les notifications plus rapidement"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Afficher les notifications avant de déverrouiller l\'appareil"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Réduire"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Aj. auto. s-titres aux médias"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Astuce concernant les sous-titres"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Changer d\'appareil de sortie"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"L\'écran est épinglé"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Cet écran est épinglé jusqu\'à ce que vous annuliez l\'opération. Pour annuler l\'épinglage, maintenez le doigt sur « Retour » et « Aperçu »."</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index 41a7693d7192..130fa147233f 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Analyse du visage en cours"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Envoyer"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gérer les notifications"</string> - <string name="unlock_label" msgid="8779712358041029439">"déverrouiller"</string> <string name="phone_label" msgid="2320074140205331708">"ouvrir le téléphone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ouvrir l\'assistance vocale"</string> <string name="camera_label" msgid="7261107956054836961">"ouvrir l\'appareil photo"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Aucune\ninterruption"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priorité\nuniquement"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alarmes\nuniquement"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge sans fil (à 100 % dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge lente… (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Vous êtes connecté à <xliff:g id="APPLICATION">%1$s</xliff:g>. Cette application peut contrôler votre activité personnelle sur le réseau, y compris les e-mails, les applications et les sites Web."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Votre profil professionnel est géré par <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ce profil est connecté à <xliff:g id="APPLICATION">%2$s</xliff:g>, qui peut contrôler votre activité professionnelle sur le réseau, y compris l\'activité relative aux e-mails, aux applications et aux sites Web.\n\nPour plus d\'informations, contactez votre administrateur."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Votre profil professionnel est géré par <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Ce profil est connecté à <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, qui peut contrôler votre activité professionnelle sur le réseau, y compris l\'activité relative aux e-mails, aux applications et aux sites Web.\n\nVous êtes également connecté à <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, qui peut contrôler votre activité personnelle sur le réseau."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Déverrouillé pour <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> est en cours d\'exécution"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"L\'appareil restera verrouillé jusqu\'à ce que vous le déverrouilliez manuellement."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Recevoir les notifications plus vite"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Afficher les notifications avant de déverrouiller l\'appareil"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Réduire"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Sous-titres automatiques"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Fermer l\'info-bulle des sous-titres"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Changer de périphérique de sortie"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Écran épinglé"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Cet écran est épinglé jusqu\'à l\'annulation de l\'opération. Pour annuler l\'épinglage, appuyez de manière prolongée sur les boutons Retour et Aperçu."</string> @@ -889,7 +895,7 @@ <string name="auto_saver_enabled_text" msgid="874711029884777579">"L\'économiseur de batterie s\'active automatiquement lorsque l\'autonomie de la batterie est inférieure à <xliff:g id="PERCENTAGE">%d</xliff:g> %%."</string> <string name="open_saver_setting_action" msgid="8314624730997322529">"Paramètres"</string> <string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string> - <string name="heap_dump_tile_name" msgid="9141031328971226374">"Copier mémoire SysUI"</string> + <string name="heap_dump_tile_name" msgid="9141031328971226374">"Copier le tas SysUI"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> utilise votre <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Des applications utilisent votre <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 8566ec6ae13a..f6b565408f29 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Analizando cara"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Xestionar notificacións"</string> - <string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string> <string name="phone_label" msgid="2320074140205331708">"abrir teléfono"</string> <string name="voice_assist_label" msgid="3956854378310019854">"abrir asistente de voz"</string> <string name="camera_label" msgid="7261107956054836961">"abrir cámara"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Só\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Só\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Estás conectado a <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode supervisar a túa actividade persoal na rede, incluídos os correos electrónicos, as aplicacións e os sitios web."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> xestiona o teu perfil de traballo, que está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>. Esta aplicación pode controlar a túa actividade na rede, mesmo os correos electrónicos, as aplicacións e os sitios web.\n\nPara obter máis información, contacta co administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> xestiona o teu perfil de traballo, que está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>. Esta aplicación pode controlar a túa actividade na rede, mesmo os correos electrónicos, as aplicacións e os sitios web.\n\nTamén estás conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode controlar a túa actividade persoal na rede."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Estase executando: <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"O dispositivo permanecerá bloqueado ata que o desbloquees manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Recibir notificacións máis rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Consúltaas antes de desbloquear"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Contraer"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Crear subtítulos automáticos"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Pechar consello sobre subtítulos"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Cambia ao dispositivo de saída"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"A pantalla está fixada"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"A pantalla manterase visible ata que a soltes. Para facelo, mantén premido Atrás e Visión xeral."</string> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 9a8d5fbc063b..7b0803411107 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"ચહેરો સ્કૅન કરવો"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"મોકલો"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"નોટિફિકેશનને મેનેજ કરો"</string> - <string name="unlock_label" msgid="8779712358041029439">"અનલૉક કરો"</string> <string name="phone_label" msgid="2320074140205331708">"ફોન ખોલો"</string> <string name="voice_assist_label" msgid="3956854378310019854">"વૉઇસ સહાય ખોલો"</string> <string name="camera_label" msgid="7261107956054836961">"કૅમેરો ખોલો"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"સાવ\nશાંતિ"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ફક્ત\nપ્રાધાન્યતા"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"ફક્ત\nએલાર્મ્સ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ધીમેથી ચાર્જિંગ (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"તમે <xliff:g id="APPLICATION">%1$s</xliff:g> સાથે કનેક્ટ થયાં છો, જે ઇમેઇલ્સ, ઍપ્લિકેશનો અને વેબસાઇટ્સ સહિત તમારી વ્યક્તિગત નેટવર્ક પ્રવૃત્તિને મૉનિટર કરી શકે છે."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"તમારી કાર્યાલયની પ્રોફાઇલ <xliff:g id="ORGANIZATION">%1$s</xliff:g> દ્વારા સંચાલિત થાય છે. આ પ્રોફાઇલ <xliff:g id="APPLICATION">%2$s</xliff:g> સાથે કનેક્ટ થયેલ છે, જે ઇમેઇલ, ઍપ્લિકેશનો અને વેબસાઇટો સહિત તમારા કાર્યાલયના નેટવર્કની પ્રવૃત્તિનું નિયમન કરી શકે છે.\n\nવધુ માહિતી માટે, તમારા વ્યવસ્થાપકનો સંપર્ક કરો."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"તમારી કાર્યાલયની પ્રોફાઇલ <xliff:g id="ORGANIZATION">%1$s</xliff:g> દ્વારા સંચાલિત થાય છે. આ પ્રોફાઇલ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> સાથે કનેક્ટ કરેલ છે, જે ઇમેઇલ, ઍપ્લિકેશનો અને વેબસાઇટો સહિતની તમારી નેટવર્ક પ્રવૃત્તિનું નિયમન કરી શકે છે.\n\nતમે <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> સાથે પણ કનેક્ટ કરેલું છે, જે તમારી વ્યક્તિગત નેટવર્ક પ્રવૃત્તિનું નિયમન કરી શકે છે."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> માટે અનલૉક કર્યુ"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ચાલી રહ્યું છે"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"તમે ઉપકરણને મેન્યુઅલી અનલૉક કરશો નહીં ત્યાં સુધી તે લૉક રહેશે"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"વધુ ઝડપથી સૂચનાઓ મેળવો"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"તમે અનલૉક કરો તે પહેલાં તેમને જુઓ"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"સંકુચિત કરો"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"મીડિયામાં કૅપ્શન આપમેળે ઉમેરો"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"કૅપ્શન ટિપ બંધ કરો"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"આઉટપુટ ઉપકરણ સ્વિચ કરો"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"સ્ક્રીન પિન કરેલ છે"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"તમે જ્યાં સુધી અનપિન કરશો નહીં ત્યાં સુધી આ તેને દૃશ્યક્ષમ રાખે છે. અનપિન કરવા માટે પાછળ અને ઝલકને સ્પર્શ કરી રાખો."</string> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index c65351adc11a..5a3c52fc6cb1 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -63,10 +63,8 @@ <string name="usb_debugging_secondary_user_message" msgid="6067122453571699801">"अभी इस डिवाइस में जिस उपयोगकर्ता ने साइन इन किया है, वो USB डीबगिंग चालू नहीं कर सकता. इस सुविधा का इस्तेमाल करने के लिए, प्राथमिक उपयोगकर्ता में बदलें."</string> <string name="usb_contaminant_title" msgid="206854874263058490">"यूएसबी पोर्ट बंद है"</string> <string name="usb_contaminant_message" msgid="2205845572186473860">"तरल चीज़ या कचरे से आपके डिवाइस की सुरक्षा करने के लिए, यूएसबी पोर्ट को बंद कर दिया गया है और वह किसी भी एक्सेसरी की पहचान नहीं करेगा.\n\nयूएसबी पोर्ट का दोबारा इस्तेमाल करना सुरक्षित होने पर आपको सूचित किया जाएगा."</string> - <!-- no translation found for usb_port_enabled (7906141351687694867) --> - <skip /> - <!-- no translation found for usb_disable_contaminant_detection (2103905315747120033) --> - <skip /> + <string name="usb_port_enabled" msgid="7906141351687694867">"चार्जर और एक्सेसरी पहचानने के लिए यूएसबी पोर्ट को चालू कर दिया गया है"</string> + <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"यूएसबी चालू करें"</string> <string name="compat_mode_on" msgid="6623839244840638213">"स्क्रीन भरने के लिए ज़ूम करें"</string> <string name="compat_mode_off" msgid="4434467572461327898">"स्क्रीन भरने के लिए खींचें"</string> <string name="global_action_screenshot" msgid="8329831278085426283">"स्क्रीनशॉट"</string> @@ -113,9 +111,7 @@ <string name="accessibility_unlock_without_fingerprint" msgid="7541705575183694446">"अपने फ़िंगरप्रिंट का इस्तेमाल किए बिना अनलॉक करें"</string> <string name="accessibility_scanning_face" msgid="769545173211758586">"डिवाइस अनलॉक करने के लिए चेहरा स्कैन किया जाता है"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"भेजें"</string> - <!-- no translation found for accessibility_manage_notification (2026361503393549753) --> - <skip /> - <string name="unlock_label" msgid="8779712358041029439">"अनलॉक करें"</string> + <string name="accessibility_manage_notification" msgid="2026361503393549753">"सूचनाएं प्रबंधित करें"</string> <string name="phone_label" msgid="2320074140205331708">"फ़ोन खोलें"</string> <string name="voice_assist_label" msgid="3956854378310019854">"आवाज़ से डिवाइस को इस्तेमाल करें"</string> <string name="camera_label" msgid="7261107956054836961">"कैमरा खोलें"</string> @@ -186,8 +182,7 @@ <string name="accessibility_cell_data" msgid="5326139158682385073">"मोबाइल डेटा"</string> <string name="accessibility_cell_data_on" msgid="5927098403452994422">"मोबाइल डेटा चालू है"</string> <string name="cell_data_off_content_description" msgid="4356113230238585072">"मोबाइल डेटा बंद है"</string> - <!-- no translation found for not_default_data_content_description (9194667237765917844) --> - <skip /> + <string name="not_default_data_content_description" msgid="9194667237765917844">"डेटा इस्तेमाल करने के लिए सेट नहीं किया गया है"</string> <string name="cell_data_off" msgid="1051264981229902873">"बंद है"</string> <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ब्लूटूथ से टेदरिंग."</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"हवाई जहाज़ मोड."</string> @@ -229,12 +224,9 @@ <string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"हवाई जहाज़ मोड को चालू किया गया."</string> <string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"कोई आवाज़ सुनाई नहीं देगी"</string> <string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"सिर्फ़ अलार्म की आवाज़ सुनाई देगी"</string> - <!-- no translation found for accessibility_quick_settings_dnd (5555155552520665891) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_dnd_changed_off (2757071272328547807) --> - <skip /> - <!-- no translation found for accessibility_quick_settings_dnd_changed_on (6808220653747701059) --> - <skip /> + <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"परेशान न करें."</string> + <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\'परेशान न करें\' बंद किया गया."</string> + <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\'परेशान न करें\' चालू किया गया."</string> <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ब्लूटूथ."</string> <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ब्लूटूथ बंद है."</string> <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ब्लूटूथ चालू है."</string> @@ -298,8 +290,7 @@ <string name="start_dreams" msgid="5640361424498338327">"स्क्रीन सेवर"</string> <string name="ethernet_label" msgid="7967563676324087464">"ईथरनेट"</string> <string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"ज़्यादा विकल्प देखने के लिए आइकॉन को दबाकर रखें"</string> - <!-- no translation found for quick_settings_dnd_label (7112342227663678739) --> - <skip /> + <string name="quick_settings_dnd_label" msgid="7112342227663678739">"परेशान न करें"</string> <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"सिर्फ़ प्राथमिकता"</string> <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"सिर्फ़ अलार्म"</string> <string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"पूरी तरह शांत"</string> @@ -412,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"पूरी तरह\nशांत"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"केवल\nप्राथमिकता"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"केवल\nअलार्म"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • धीरे चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> @@ -451,10 +443,8 @@ <string name="battery_saver_notification_title" msgid="8614079794522291840">"बैटरी सेवर चालू है"</string> <string name="battery_saver_notification_text" msgid="820318788126672692">"निष्पादन और पृष्ठभूमि डेटा को कम करता है"</string> <string name="battery_saver_notification_action_text" msgid="132118784269455533">"बैटरी सेवर बंद करें"</string> - <!-- no translation found for media_projection_dialog_text (5751657130671431216) --> - <skip /> - <!-- no translation found for media_projection_dialog_title (8124184308671641248) --> - <skip /> + <string name="media_projection_dialog_text" msgid="5751657130671431216">"रिकॉर्ड या कास्ट करते समय, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> आपके चलाए जा रहे ऑडियो, आपके पासवर्ड, भुगतान जानकारी, फ़ोटो और मैसेज जैसी संवेदनशील जानकारी कैप्चर कर सकता है."</string> + <string name="media_projection_dialog_title" msgid="8124184308671641248">"कास्ट करने/रिकॉर्ड करने के दौरान संवेदनशील जानकारी का सबके सामने आ जाना"</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"फिर से न दिखाएं"</string> <string name="clear_all_notifications_text" msgid="814192889771462828">"सभी को हटाएं"</string> <string name="manage_notifications_text" msgid="2386728145475108753">"प्रबंधित करें"</string> @@ -517,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"आप <xliff:g id="APPLICATION">%1$s</xliff:g> से कनेक्ट हैं, जो ईमेल, ऐप्लिकेशन और वेबसाइट सहित आपकी व्यक्तिगत नेटवर्क गतिविधि को मॉनिटर कर सकता है."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"आपकी वर्क प्रोफ़ाइल का प्रबंधन <xliff:g id="ORGANIZATION">%1$s</xliff:g> करता है. प्रोफ़ाइल <xliff:g id="APPLICATION">%2$s</xliff:g> से कनेक्ट है, जो ईमेल, ऐप्लिकेशन और वेबसाइटों सहित आपकी नेटवर्क गतिविधि की निगरानी कर सकता है.\n\nऔर जानकारी के लिए, अपने एडमिन से संपर्क करें."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"आपकी कार्य प्रोफ़ाइल का प्रबंधन <xliff:g id="ORGANIZATION">%1$s</xliff:g> करता है. प्रोफ़ाइल <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> से कनेक्ट है, जो ईमेल, ऐप्लिकेशन और वेबसाइटों सहित आपकी नेटवर्क गतिविधि की निगरानी कर सकता है.\n\nआप <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> से भी कनेक्ट हैं, जो आपकी व्यक्तिगत नेटवर्क गतिविधि की निगरानी कर सकता है."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> के लिए अनलॉक किया गया"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> चल रहा है"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"जब तक कि आप मैन्युअल रूप से अनलॉक नहीं करते तब तक डिवाइस लॉक रहेगा"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"सूचनाएं ज़्यादा तेज़ी से पाएं"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"आपके द्वारा उन्हें अनलॉक किए जाने से पहले देखें"</string> @@ -529,9 +519,13 @@ <string name="accessibility_volume_settings" msgid="4915364006817819212">"साउंड सेटिंग"</string> <string name="accessibility_volume_expand" msgid="5946812790999244205">"विस्तार करें"</string> <string name="accessibility_volume_collapse" msgid="3609549593031810875">"छोटा करें"</string> - <!-- no translation found for volume_odi_captions_tip (1193653197906918269) --> + <string name="volume_odi_captions_tip" msgid="1193653197906918269">"मीडिया में अपने आप कैप्शन जोड़ें"</string> + <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"कैप्शन सलाह बंद करें"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> <skip /> - <!-- no translation found for accessibility_volume_close_odi_captions_tip (1163987066404128967) --> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"आउटपुट डिवाइस बदलें"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"स्क्रीन पिन कर दी गई है"</string> @@ -646,10 +640,8 @@ <string name="inline_silent_button_keep_alerting" msgid="327696842264359693">"सूचना देना जारी रखें"</string> <string name="inline_turn_off_notifications" msgid="8635596135532202355">"सूचनाएं बंद करें"</string> <string name="inline_keep_showing_app" msgid="1723113469580031041">"इस ऐप्लिकेशन से जुड़ी सूचनाएं दिखाना जारी रखें?"</string> - <!-- no translation found for hint_text_block (3554459167504485284) --> - <skip /> - <!-- no translation found for hint_text_silent (859468056340177016) --> - <skip /> + <string name="hint_text_block" msgid="3554459167504485284">"ब्लॉक की गई सूचनाएं कहीं नहीं दिखाई देती हैं या उनकी कोई आवाज़ नहीं आती. आप सेटिंग में जाकर सूचनाओं को अनब्लॉक कर सकते हैं."</string> + <string name="hint_text_silent" msgid="859468056340177016">"बिना आवाज़ वाली सूचनाएं अलग रंग में दिखाई देती हैं पर वे लॉक स्क्रीन पर बैनर के रूप में नहीं दिखाई देती हैं, और उनके दिखाई देने पर आवाज़ भी नहीं आती है."</string> <string name="hint_text_alert" msgid="2721169810318722524">"यह सूचनाएं आवाज़ करेंगी और सूचना की दराज, स्टेटस बार और लॉक स्क्रीन में दिखाई देंगी"</string> <string name="notification_unblockable_desc" msgid="1037434112919403708">"ये सूचनाएं दिखाया जाना बंद नहीं किया जा सकता"</string> <string name="notification_multichannel_desc" msgid="4695920306092240550">"सूचनाओं के इस समूह को यहां कॉन्फ़िगर नहीं किया जा सकता"</string> @@ -731,11 +723,9 @@ <string name="keyboard_shortcut_group_applications_youtube" msgid="6555453761294723317">"YouTube"</string> <string name="keyboard_shortcut_group_applications_calendar" msgid="9043614299194991263">"कैलेंडर"</string> <string name="tuner_full_zen_title" msgid="4540823317772234308">"वॉल्यूम नियंत्रणों के साथ दिखाएं"</string> - <!-- no translation found for volume_and_do_not_disturb (1750270820297253561) --> - <skip /> + <string name="volume_and_do_not_disturb" msgid="1750270820297253561">"परेशान न करें"</string> <string name="volume_dnd_silent" msgid="4363882330723050727">"वॉल्यूम बटन का शॉर्टकट"</string> - <!-- no translation found for volume_up_silent (7545869833038212815) --> - <skip /> + <string name="volume_up_silent" msgid="7545869833038212815">"आवाज़ बढ़ाने पर \'परेशान न करें\' से बाहर निकलें"</string> <string name="battery" msgid="7498329822413202973">"बैटरी"</string> <string name="clock" msgid="7416090374234785905">"घड़ी"</string> <string name="headset" msgid="4534219457597457353">"हेडसेट"</string> @@ -876,8 +866,7 @@ <string name="go_to_web" msgid="2650669128861626071">"ब्राउज़र पर जाएं"</string> <string name="mobile_data" msgid="7094582042819250762">"मोबाइल डेटा"</string> <string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string> - <!-- no translation found for mobile_carrier_text_format (3241721038678469804) --> - <skip /> + <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string> <string name="wifi_is_off" msgid="1838559392210456893">"वाई-फ़ाई बंद है"</string> <string name="bt_is_off" msgid="2640685272289706392">"ब्लूटूथ बंद है"</string> <string name="dnd_is_off" msgid="6167780215212497572">"परेशान न करें बंद है"</string> @@ -917,30 +906,18 @@ <string name="sensor_privacy_mode" msgid="8982771253020769598">"सेंसर बंद हैं"</string> <string name="device_services" msgid="1191212554435440592">"डिवाइस सेवाएं"</string> <string name="music_controls_no_title" msgid="5236895307087002011">"कोई शीर्षक नहीं"</string> - <!-- no translation found for restart_button_description (2035077840254950187) --> - <skip /> + <string name="restart_button_description" msgid="2035077840254950187">"इस ऐप्लिकेशन को रीस्टार्ट करने और फ़ुल स्क्रीन चालू करने के लिए टैप करें."</string> <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"<xliff:g id="APP_NAME">%1$s</xliff:g> खोलें"</string> - <!-- no translation found for bubbles_settings_button_description (2970630476657287189) --> - <skip /> - <!-- no translation found for bubbles_prompt (8807968030159469710) --> - <skip /> - <!-- no translation found for no_bubbles (337101288173078247) --> - <skip /> + <string name="bubbles_settings_button_description" msgid="2970630476657287189">"<xliff:g id="APP_NAME">%1$s</xliff:g> बबल की सेटिंग"</string> + <string name="bubbles_prompt" msgid="8807968030159469710">"<xliff:g id="APP_NAME">%1$s</xliff:g> से बबल की अनुमति दें?"</string> + <string name="no_bubbles" msgid="337101288173078247">"अनुमति न दें"</string> <string name="yes_bubbles" msgid="668809525728633841">"अनुमति दें"</string> - <!-- no translation found for ask_me_later_bubbles (2147688438402939029) --> - <skip /> - <!-- no translation found for bubble_content_description_single (1184462974339387516) --> - <skip /> - <!-- no translation found for bubble_content_description_stack (8666349184095622232) --> - <skip /> - <!-- no translation found for bubble_accessibility_action_move (1794879742234803840) --> - <skip /> - <!-- no translation found for bubble_accessibility_action_move_top_left (104736832249802724) --> - <skip /> - <!-- no translation found for bubble_accessibility_action_move_top_right (1671844272347036806) --> - <skip /> - <!-- no translation found for bubble_accessibility_action_move_bottom_left (206369104473183217) --> - <skip /> - <!-- no translation found for bubble_accessibility_action_move_bottom_right (8705660152384312329) --> - <skip /> + <string name="ask_me_later_bubbles" msgid="2147688438402939029">"मुझसे बाद में पूछें"</string> + <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="APP_NAME">%2$s</xliff:g> से <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> + <string name="bubble_content_description_stack" msgid="8666349184095622232">"<xliff:g id="APP_NAME">%2$s</xliff:g> और <xliff:g id="BUBBLE_COUNT">%3$d</xliff:g> अन्य ऐप्लिकेशन से <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> + <string name="bubble_accessibility_action_move" msgid="1794879742234803840">"ले जाएं"</string> + <string name="bubble_accessibility_action_move_top_left" msgid="104736832249802724">"सबसे ऊपर बाईं ओर ले जाएं"</string> + <string name="bubble_accessibility_action_move_top_right" msgid="1671844272347036806">"सबसे ऊपर दाईं ओर ले जाएं"</string> + <string name="bubble_accessibility_action_move_bottom_left" msgid="206369104473183217">"बाईं ओर सबसे नीचे ले जाएं"</string> + <string name="bubble_accessibility_action_move_bottom_right" msgid="8705660152384312329">"सबसे नीचे दाईं ओर ले जाएं"</string> </resources> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index cae65e1fe61e..6f6a468e513c 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Skeniranje lica"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Pošalji"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Upravljanje obavijestima"</string> - <string name="unlock_label" msgid="8779712358041029439">"otključavanje"</string> <string name="phone_label" msgid="2320074140205331708">"otvaranje telefona"</string> <string name="voice_assist_label" msgid="3956854378310019854">"otvaranje glasovne pomoći"</string> <string name="camera_label" msgid="7261107956054836961">"otvaranje fotoaparata"</string> @@ -406,7 +405,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Samo\nprioritetno"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • sporo punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> @@ -510,8 +510,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Povezani ste s aplikacijom <xliff:g id="APPLICATION">%1$s</xliff:g> koja može nadzirati vašu osobnu aktivnost na mreži, uključujući e-poštu, aplikacije i web-lokacije."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Vašim radnim profilom upravlja organizacija <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan s aplikacijom <xliff:g id="APPLICATION">%2$s</xliff:g> koja može nadzirati vaše poslovne aktivnosti na mreži, uključujući e-poruke, aplikacije i web-lokacije.\n\nAko vam je potrebno više informacija, obratite se administratoru."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Vašim radnim profilom upravlja organizacija <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan s aplikacijom <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> koja može nadzirati vaše poslovne aktivnosti na mreži, uključujući e-poruke, aplikacije i web-lokacije.\n\nPovezani ste i s aplikacijom <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> koja može nadzirati vaše osobne aktivnosti na mreži."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Otključano za korisnika <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Izvodi se <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Uređaj će ostati zaključan dok ga ručno ne otključate"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Primajte obavijesti brže"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Pogledajte ih prije otključavanja"</string> @@ -524,6 +524,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sažimanje"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatski opisi medija"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zatvorite opis"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Promijenite izlazni uređaj"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Zaslon je prikvačen"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Zaslon će tako ostati u prvom planu dok ga ne otkvačite. Dodirnite i zadržite Natrag i Pregled da biste ga otkvačili."</string> @@ -764,7 +770,7 @@ <string name="left_icon" msgid="3096287125959387541">"Lijeva ikona"</string> <string name="right_icon" msgid="3952104823293824311">"Desna ikona"</string> <string name="drag_to_add_tiles" msgid="230586591689084925">"Zadržite i povucite za dodavanje pločica"</string> - <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Zadržite i povucite da biste preuredili pločice"</string> + <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Zadržite i povucite da biste premjestili pločice"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Povucite ovdje za uklanjanje"</string> <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Potrebno je barem 6 pločica"</string> <string name="qs_edit" msgid="2232596095725105230">"Uredi"</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 76883736a62e..f012eee58c76 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Arc keresése"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Küldés"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Értesítések kezelése"</string> - <string name="unlock_label" msgid="8779712358041029439">"feloldás"</string> <string name="phone_label" msgid="2320074140205331708">"telefon megnyitása"</string> <string name="voice_assist_label" msgid="3956854378310019854">"hangsegéd megnyitása"</string> <string name="camera_label" msgid="7261107956054836961">"kamera megnyitása"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Teljes\nnémítás"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Csak\nprioritás"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Csak\nriasztások"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Ön a(z) <xliff:g id="APPLICATION">%1$s</xliff:g> alkalmazáshoz csatlakozik, amely figyelheti személyes hálózati tevékenységét, beleértve az e-maileket, alkalmazásokat és webhelyeket."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Munkaprofilját a(z) <xliff:g id="ORGANIZATION">%1$s</xliff:g> kezeli. A profil csatlakozik a(z) <xliff:g id="APPLICATION">%2$s</xliff:g> alkalmazáshoz, amely figyelheti az Ön hálózati tevékenységeit, beleértve az e-maileket, alkalmazásokat és webhelyeket.\n\nTovábbi információért forduljon a rendszergazdához."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Munkaprofilját a(z) <xliff:g id="ORGANIZATION">%1$s</xliff:g> kezeli. A profil csatlakozik a(z) <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> alkalmazáshoz, amely figyelheti az Ön hálózati tevékenységeit, beleértve az e-maileket, alkalmazásokat és webhelyeket.\n\nCsatlakoztatta továbbá a(z) <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> alkalmazást, amely figyelheti az Ön személyes hálózati tevékenységeit."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Felnyitva a következő számára: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"A(z) <xliff:g id="TRUST_AGENT">%1$s</xliff:g> jelenleg fut"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Az eszköz addig zárolva marad, amíg kézileg fel nem oldja"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Gyorsabban megkaphatja az értesítéseket"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Már a képernyőzár feloldása előtt megtekintheti őket"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Összecsukás"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatikus feliratozás"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Feliratokkal kapcsolatos tipp"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Váltás másik kimeneti eszközre"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"A képernyő rögzítve van"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Megjelenítve tartja addig, amíg Ön fel nem oldja a rögzítést. A feloldáshoz tartsa lenyomva a Vissza és az Áttekintés lehetőséget."</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index b8350607d05d..7210dfba0a93 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Դեմքի սկանավորում"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Ուղարկել"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Կառավարել ծանուցումները"</string> - <string name="unlock_label" msgid="8779712358041029439">"ապակողպել"</string> <string name="phone_label" msgid="2320074140205331708">"բացել հեռախոսը"</string> <string name="voice_assist_label" msgid="3956854378310019854">"բացեք ձայնային հուշումը"</string> <string name="camera_label" msgid="7261107956054836961">"բացել ֆոտոխցիկը"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Ընդհանուր\nլուռ վիճակը"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Միայն\nկարևորները"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Միայն\nզարթուցիչ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Դանդաղ լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Դուք կապակցված եք <xliff:g id="APPLICATION">%1$s</xliff:g> հավելվածին, որը կարող է վերահսկել անձնական ցանցում կատարած ձեր գործողությունները, այդ թվում նաև էլփոստի հաշիվները, հավելվածները և կայքերը:"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Ձեր աշխատանքային պրոֆիլի կառավարիչն է <xliff:g id="ORGANIZATION">%1$s</xliff:g> կազմակերպությունը: Այն կապակցված է <xliff:g id="APPLICATION">%2$s</xliff:g> հավելվածին, որը կարող է վերահսկել աշխատանքային ցանցում կատարած գործունեությունը, այդ թվում նաև էլփոստի հաշիվները, հավելվածները և կայքերը:\n\nԼրացուցիչ տեղեկություններ ստանալու համար դիմեք ձեր ադմինիստրատորին։"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Ձեր աշխատանքային պրոֆիլի կառավարիչն է <xliff:g id="ORGANIZATION">%1$s</xliff:g> կազմակերպությունը: Այն կապակցված է <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> հավելվածին, որը կարող է վերահսկել աշխատանքային ցանցում կատարած գործունեությունը, այդ թվում նաև էլփոստի հաշիվները, հավելվածները և կայքերը:\n\nԴուք կապակցված եք նաև <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> հավելվածին, որը կարող է վերահսկել անձնական ցանցում կատարած ձեր գործողությունները:"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Ապակողպվել է <xliff:g id="USER_NAME">%1$s</xliff:g> օգտատիրոջ համար"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g>-ն աշխատում է"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Սարքը կմնա արգելափակված՝ մինչև ձեռքով չբացեք"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Ավելի արագ ստացեք ծանուցումները"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Տեսեք դրանք մինչև ապակողպելը"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Կոծկել"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Ավտոմատ ավելացնել ենթագրեր"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Փակել ենթագրերը"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Փոխել արտածման սարքը"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Էկրանն ամրացված է"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Էկրանը կմնա տեսադաշտում, մինչև այն ապամրացնեք: Ապամրացնելու համար հպեք և պահեք Հետ և Համատեսք կոճակները:"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index e52f6c73ce6e..cc4982c8cbd6 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Memindai wajah"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Kirim"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Mengelola notifikasi"</string> - <string name="unlock_label" msgid="8779712358041029439">"buka kunci"</string> <string name="phone_label" msgid="2320074140205331708">"buka ponsel"</string> <string name="voice_assist_label" msgid="3956854378310019854">"buka bantuan suara"</string> <string name="camera_label" msgid="7261107956054836961">"buka kamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Senyap\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Hanya\nprioritas"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Hanya\nalarm"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi Daya Secara Nirkabel (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Anda tersambung ke <xliff:g id="APPLICATION">%1$s</xliff:g>, yang dapat memantau aktivitas jaringan pribadi, termasuk email, aplikasi, dan situs web.."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profil kerja Anda dikelola oleh <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil tersambung ke <xliff:g id="APPLICATION">%2$s</xliff:g>, yang dapat memantau aktivitas jaringan kerja, termasuk email, aplikasi, dan situs.\n\nHubungi admin untuk mendapatkan informasi lebih lanjut."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profil kerja Anda dikelola oleh <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil tersambung ke <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, yang dapat memantau aktivitas jaringan, termasuk email, aplikasi, dan situs.\n\nAnda juga tersambung ke <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, yang dapat memantau aktivitas jaringan pribadi."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Dibuka kuncinya untuk <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> sedang berjalan"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Perangkat akan tetap terkunci hingga Anda membukanya secara manual"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Dapatkan pemberitahuan lebih cepat"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Lihat sebelum membuka kunci"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Ciutkan"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Otomatis beri teks ke media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Tutup tooltip teks"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Ganti perangkat keluaran"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Layar dipasangi pin"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh & tahan tombol Kembali dan Ringkasan untuk melepas pin."</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index 7ee6e7a4d23f..6b1156981e2c 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Andlit skannað"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Senda"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Stjórna tilkynningum"</string> - <string name="unlock_label" msgid="8779712358041029439">"taka úr lás"</string> <string name="phone_label" msgid="2320074140205331708">"opna síma"</string> <string name="voice_assist_label" msgid="3956854378310019854">"opna raddaðstoð"</string> <string name="camera_label" msgid="7261107956054836961">"opna myndavél"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Algjör\nþögn"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Aðeins\nforgangur"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Aðeins\nvekjarar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Þráðlaus 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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Þú ert með tengingu við <xliff:g id="APPLICATION">%1$s</xliff:g>, sem getur fylgst með persónulegri netnotkun þinni, þ. á m. tölvupósti, forritum og vefsvæðum."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Vinnusniðinu þínu er stýrt af <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Sniðið er tengt <xliff:g id="APPLICATION">%2$s</xliff:g>, sem getur fylgst með netnotkun þinni, þ. á m. tölvupósti, forritum og vefsvæðum\n\nFrekari upplýsingar fást hjá kerfisstjóra."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Vinnusniðinu þínu er stýrt af <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Sniðið er tengt <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, sem getur fylgst með netnotkun þinni, þ. á m. tölvupósti, forritum og vefsvæðum\n\nÞú ert einnig með tengingu við <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, sem getur fylgst með persónulegri netnotkun þinni."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Opnað fyrir <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> er í gangi"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Tækið verður læst þar til þú opnar það handvirkt"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Fáðu tilkynningar hraðar"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Sjáðu þær áður en þú opnar"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Minnka"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Sjálfvirkir skjátextar"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Loka ábendingu um skjátexta"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Skipta um úttakstæki"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Skjárinn er festur"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Þetta heldur þessu opnu þangað til þú losar það. Haltu fingri á „Til baka“ og „Yfirlit“ til að losa."</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 25d5fd09f498..1b9f6f0f8b11 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Scansione del viso"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Invia"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gestisci notifiche"</string> - <string name="unlock_label" msgid="8779712358041029439">"sblocca"</string> <string name="phone_label" msgid="2320074140205331708">"apri telefono"</string> <string name="voice_assist_label" msgid="3956854378310019854">"apri Voice Assist"</string> <string name="camera_label" msgid="7261107956054836961">"apri fotocamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silenzio\ntotale"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Solo con\npriorità"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Solo\nsveglie"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • In ricarica wireless (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ricarica lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Sei collegato a <xliff:g id="APPLICATION">%1$s</xliff:g>, che consente di monitorare la tua attività di rete personale, inclusi siti web, email e app."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Il tuo profilo di lavoro è gestito da <xliff:g id="ORGANIZATION">%1$s</xliff:g> ed è collegato a <xliff:g id="APPLICATION">%2$s</xliff:g>, da cui è possibile monitorare la tua attività di rete lavorativa, inclusi siti web, email e app.\n\nPer ulteriori informazioni, contatta l\'amministratore."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Il tuo profilo di lavoro è gestito da <xliff:g id="ORGANIZATION">%1$s</xliff:g> ed è collegato a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, da cui è possibile monitorare la tua attività di rete lavorativa, inclusi siti web, email e app.\n\nSei collegato anche a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, da cui è possibile monitorare la tua attività di rete personale."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Sbloccato per <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> in esecuzione"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Il dispositivo resterà bloccato fino allo sblocco manuale"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Ricevi notifiche più velocemente"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Visualizza prima di sbloccare"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Comprimi"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Sottotitoli automatici"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Suggerimento sottotitoli"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Cambia dispositivo di uscita"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"La schermata è fissata"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"La schermata rimane visibile finché non viene sganciata. Per sganciarla, tieni premuto Indietro e Panoramica."</string> @@ -881,7 +887,7 @@ <string name="slice_permission_text_2" msgid="3146758297471143723">"- Può compiere azioni nell\'app <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="slice_permission_checkbox" msgid="7986504458640562900">"Consenti all\'app <xliff:g id="APP">%1$s</xliff:g> di mostrare porzioni di qualsiasi app"</string> <string name="slice_permission_allow" msgid="2340244901366722709">"Consenti"</string> - <string name="slice_permission_deny" msgid="7683681514008048807">"Nega"</string> + <string name="slice_permission_deny" msgid="7683681514008048807">"Rifiuta"</string> <string name="auto_saver_title" msgid="1217959994732964228">"Tocca per programmare il Risparmio energetico"</string> <string name="auto_saver_text" msgid="6324376061044218113">"Attiva automaticamente quando la batteria arriva al <xliff:g id="PERCENTAGE">%d</xliff:g>%%"</string> <string name="no_auto_saver_action" msgid="8086002101711328500">"No grazie"</string> @@ -904,7 +910,7 @@ <string name="bubbles_deep_link_button_description" msgid="8895837143057564517">"Apri <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="bubbles_settings_button_description" msgid="2970630476657287189">"Impostazioni per fumetti <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="bubbles_prompt" msgid="8807968030159469710">"Consentire fumetti da <xliff:g id="APP_NAME">%1$s</xliff:g>?"</string> - <string name="no_bubbles" msgid="337101288173078247">"Nega"</string> + <string name="no_bubbles" msgid="337101288173078247">"Rifiuta"</string> <string name="yes_bubbles" msgid="668809525728633841">"Consenti"</string> <string name="ask_me_later_bubbles" msgid="2147688438402939029">"Ricordamelo più tardi"</string> <string name="bubble_content_description_single" msgid="1184462974339387516">"<xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g> da <xliff:g id="APP_NAME">%2$s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 62bf89d43f98..bf2a80e5f103 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"סורק פנים"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"שליחה"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"ניהול התראות"</string> - <string name="unlock_label" msgid="8779712358041029439">"בטל את הנעילה"</string> <string name="phone_label" msgid="2320074140205331708">"פתח את הטלפון"</string> <string name="voice_assist_label" msgid="3956854378310019854">"פתח את המסייע הקולי"</string> <string name="camera_label" msgid="7261107956054836961">"פתח את המצלמה"</string> @@ -408,7 +407,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"שקט\nמוחלט"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"הודעות בעדיפות\nבלבד"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"התראות\nבלבד"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה איטית (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> @@ -513,8 +513,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"אתה מחובר לאפליקציה <xliff:g id="APPLICATION">%1$s</xliff:g>, שיכולה לעקוב אחר הפעילות שלך ברשת הפרטית, כולל הודעות אימייל, אפליקציות ואתרים."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"פרופיל העבודה שלך מנוהל על ידי <xliff:g id="ORGANIZATION">%1$s</xliff:g>. הפרופיל מחובר לאפליקציה <xliff:g id="APPLICATION">%2$s</xliff:g>, שיכולה לעקוב אחר הפעילות שלך ברשת, כולל הודעות אימייל, אפליקציות ואתרים.\n\nלמידע נוסף, פנה למנהל המערכת."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"פרופיל העבודה שלך מנוהל על ידי <xliff:g id="ORGANIZATION">%1$s</xliff:g>. הפרופיל מחובר לאפליקציה <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, שיכולה לעקוב אחר הפעילות שלך ברשת, כולל הודעות אימייל, אפליקציות ואתרים.\n\nהפרופיל מחובר גם לאפליקציה <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, שיכולה לעקוב אחר הפעילות שלך ברשת."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"הנעילה בוטלה על ידי <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> פועל"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"המכשיר יישאר נעול עד שתבטל את נעילתו באופן ידני"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"קבלה מהירה של התראות"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"צפה בהן לפני שתבטל נעילה"</string> @@ -527,6 +527,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"כווץ"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"הוספת כתוביות אוטומטית למדיה"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"סגירת הטיפ לגבי כתוביות"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"החלפת מכשיר פלט"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"המסך מוצמד"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"נשאר בתצוגה עד לביטול ההצמדה. יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'סקירה\' כדי לבטל את ההצמדה."</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 170752bb885c..12bb238e8827 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"顔のスキャン"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"送信"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"通知を管理"</string> - <string name="unlock_label" msgid="8779712358041029439">"ロック解除"</string> <string name="phone_label" msgid="2320074140205331708">"電話を起動"</string> <string name="voice_assist_label" msgid="3956854378310019854">"音声アシストを開く"</string> <string name="camera_label" msgid="7261107956054836961">"カメラを起動"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"サイレント\n"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"重要な\n通知のみ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"アラーム\nのみ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 低速充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"「<xliff:g id="APPLICATION">%1$s</xliff:g>」に接続しています。このアプリはあなたの個人のネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"この仕事用プロファイルは<xliff:g id="ORGANIZATION">%1$s</xliff:g>によって管理され、<xliff:g id="APPLICATION">%2$s</xliff:g> に接続しています。このアプリはあなたの仕事のネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を監視できます。\n\n詳しくは管理者にお問い合わせください。"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"この仕事用プロファイルは<xliff:g id="ORGANIZATION">%1$s</xliff:g>によって管理され、<xliff:g id="APPLICATION_WORK">%2$s</xliff:g> に接続しています。このアプリはあなたの仕事のネットワーク アクティビティ(メール、アプリ、ウェブサイトなど)を管理できます。\n\nまた、<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> にも接続しているため、あなたの個人のネットワーク アクティビティも監視できます。"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> さんのロックを解除しました"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> を実行しています"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"手動でロックを解除するまでロックされたままとなります"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"通知をすばやく確認できます"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ロックを解除する前にご確認ください"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"折りたたむ"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自動字幕起こしメディア"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"字幕のヒントを閉じる"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"出力デバイスを選択"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"画面が固定されました"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"固定を解除するまで画面が常に表示されるようになります。[戻る] と [最近] を同時に押し続けると固定が解除されます。"</string> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 5cb4cf65ebee..17e191eb2211 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"მიმდინარეობს სახის სკანირება"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"გაგზავნა"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"შეტყობინებების მართვა"</string> - <string name="unlock_label" msgid="8779712358041029439">"განბლოკვა"</string> <string name="phone_label" msgid="2320074140205331708">"ტელეფონის გახსნა"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ხმოვანი დახმარების გახსნა"</string> <string name="camera_label" msgid="7261107956054836961">"კამერის გახსნა"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"სრული\nსიჩუმე"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"მხოლოდ\nპრიორიტეტულები"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"მხოლოდ\nგაფრთხილებები"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება ნელა (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> სრულ დატენვამდე)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"თქვენ დაუკავშირდით <xliff:g id="APPLICATION">%1$s</xliff:g>-ს, რომელსაც თქვენი პირადი ქსელის აქტივობის მონიტორინგი შეუძლია, მათ შორის, ელფოსტის, აპებისა და ვებსაიტების."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"თქვენს სამსახურის პროფილს მართავს <xliff:g id="ORGANIZATION">%1$s</xliff:g>. პროფილი დაკავშირებულია <xliff:g id="APPLICATION">%2$s</xliff:g>-თან, რომელსაც შეუძლია ქსელში თქვენი სამსახურეობრივი აქტივობის (მათ შორის, ელფოსტის, აპებისა და ვებსაიტების) მონიტორინგი.\n\nდამატებითი ინფორმაციისთვის დაუკავშირდით თქვენს ადმინისტრატორს."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"თქვენს სამსახურის პროფილს მართავს <xliff:g id="ORGANIZATION">%1$s</xliff:g>. პროფილი დაკავშირებულია <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>-თან, რომელსაც შეუძლია ქსელში თქვენი სამსახურეობრივი აქტივობის (მათ შორის, ელფოსტის, აპებისა და ვებსაიტების) მონიტორინგი.\n\nგარდა ამისა, თქვენ დაკავშირებული ხართ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>-თან, რომელსაც ქსელში თქვენი პირადი აქტივობის მონიტორინგი შეუძლია."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"განბლოკილია მომხმარებლისთვის: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> გაშვებულია"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"მოწყობილობის დარჩება ჩაკეტილი, სანამ ხელით არ გახსნით"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"შეტყობინებების უფრო სწრაფად მიღება"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"იხილეთ განბლოკვამდე"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ჩაკეცვა"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ავტომატური სუბტიტრების მედია"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"მინიშნება სუბტიტრებისთვის"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"გამოტანის მოწყობილობის გადართვა"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"ეკრანი ჩამაგრებულია"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"ამით ის დარჩება ხედში ჩამაგრების მოხსნამდე. ჩამაგრების მოსახსნელად, ხანგრძლივად შეეხეთ „უკან და მიმოხილვა“-ს."</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 340717c62acb..7841145d2c73 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Бетті сканерлеу"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Жіберу"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Хабарландыруларды басқару"</string> - <string name="unlock_label" msgid="8779712358041029439">"бекітпесін ашу"</string> <string name="phone_label" msgid="2320074140205331708">"телефонды ашу"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ашық дауыс көмекшісі"</string> <string name="camera_label" msgid="7261107956054836961">"камераны ашу"</string> @@ -317,7 +316,7 @@ <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Орын өшірулі"</string> <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Meдиа құрылғысы"</string> <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI (алынған сигнал қуатының көрсеткіші)"</string> - <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Тек қана төтенше қоңыраулар"</string> + <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"Құтқару қызметіне ғана қоңырау шалынады"</string> <string name="quick_settings_settings_label" msgid="5326556592578065401">"Параметрлер"</string> <string name="quick_settings_time_label" msgid="4635969182239736408">"Уақыт"</string> <string name="quick_settings_user_label" msgid="5238995632130897840">"Мен"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Толық\nтыныштық"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Тек\nбасымдық"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Тек\nдабылдар"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Баяу зарядталуда (толуына <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Жеке желідегі әрекеттеріңізді, соның ішінде электрондық пошта хабарларын, қолданбаларды және вебсайттарды бақылай алатын <xliff:g id="APPLICATION">%1$s</xliff:g> қолданбасына қосылғансыз."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Жұмыс профиліңізді <xliff:g id="ORGANIZATION">%1$s</xliff:g> басқарады. Бұл профиль жұмыс желісіндегі белсенділігіңізді, соның ішінде электрондық хабарларды, қолданбаларды және веб-сайттарды бақылай алатын <xliff:g id="APPLICATION">%2$s</xliff:g> қолданбасына қосылған.\n\nҚосымша ақпарат алу үшін әкімшіге хабарласыңыз."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Жұмыс профиліңізді <xliff:g id="ORGANIZATION">%1$s</xliff:g> басқарады. Бұл профиль жұмыс желісіндегі белсенділігіңізді, соның ішінде электрондық хабарларды, қолданбаларды және веб-сайттарды бақылай алатын <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> қолданбасына қосылған.\n\nСондай-ақ сіз жеке желідегі белсенділігіңізді бақылай алатын <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> қолданбасына қосылғансыз."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> үшін құлпы ашылды"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> белсенді"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Қолмен бекітпесін ашқанша құрылғы бекітілген күйде қалады"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Хабарландыруларды тезірек алу"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Бекітпесін ашу алдында оларды көру"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Жию"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматты субтитр медиасы"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Субтитрлер кеңесі"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Шығыс құрылғыны ауыстыру"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Экран түйрелді"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Экран босатылғанға дейін көрсетіліп тұрады. Оны босату үшін \"Артқа\" және \"Шолу\" түймелерін басып тұрыңыз."</string> @@ -750,7 +756,7 @@ </string-array> <string name="menu_ime" msgid="4998010205321292416">"Пернетақта ауыстырғышы"</string> <string name="save" msgid="2311877285724540644">"Сақтау"</string> - <string name="reset" msgid="2448168080964209908">"Қайта реттеу"</string> + <string name="reset" msgid="2448168080964209908">"Бастапқы күйге қайтару"</string> <string name="adjust_button_width" msgid="6138616087197632947">"Түйме енін реттеу"</string> <string name="clipboard" msgid="1313879395099896312">"Буфер"</string> <string name="accessibility_key" msgid="5701989859305675896">"Арнаулы шарлау түймесі"</string> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 4ed5fdf1dec2..e9159ad401c2 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"ការស្កេនមុខ"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ផ្ញើ"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"គ្រប់គ្រងការជូនដំណឹង"</string> - <string name="unlock_label" msgid="8779712358041029439">"ដោះសោ"</string> <string name="phone_label" msgid="2320074140205331708">"បើកទូរស័ព្ទ"</string> <string name="voice_assist_label" msgid="3956854378310019854">"បើកជំនួយសំឡេង"</string> <string name="camera_label" msgid="7261107956054836961">"បើកម៉ាស៊ីនថត"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"ស្ងៀមស្ងាត់\nទាំងស្រុង"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"អាទិភាព\nប៉ុណ្ណោះ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"សំឡេងរោទ៍\nប៉ុណ្ណោះ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្មយឺត (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"អ្នកត្រូវបានភ្ជាប់ទៅ <xliff:g id="APPLICATION">%1$s</xliff:g> ដែលអាចឃ្លាំមើលសកម្មភាពបណ្តាញរបស់អ្នក រាប់បញ្ចូលទាំងអ៊ីមែល កម្មវិធី និងគេហទំព័រ។"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"កម្រងព័ត៌មានការងាររបស់អ្នកស្ថិតក្រោមការគ្រប់គ្រងរបស់ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ។ កម្រងព័ត៌មាននេះត្រូវបានភ្ជាប់ទៅ <xliff:g id="APPLICATION">%2$s</xliff:g> ដែលអាចតាមដានសកម្មភាពបណ្តាញរបស់អ្នក រួមទាំងអ៊ីមែល កម្មវិធី និងគេហទំព័រផងដែរ។\n\nសម្រាប់ព័ត៌មានបន្ថែម សូមទាក់ទងទៅអ្នកគ្រប់គ្រងរបស់អ្នក។"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"កម្រងព័ត៌មានការងាររបស់អ្នកស្ថិតក្រោមគ្រប់គ្រងរបស់ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ។ កម្រងព័ត៌មាននេះត្រូវបានភ្ជាប់ទៅ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ដែលអាចតាមដានសកម្មភាពបណ្តាញរបស់អ្នក រួមទាំងអ៊ីមែល កម្មវិធី និងគេហទំព័រផងដែរ។\n\nអ្នកក៏ត្រូវបានភ្ជាប់ទៅ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ដែលអាចតាមដានសកម្មភាពបណ្តាញផ្ទាល់ខ្លួនរបស់អ្នក។"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"បានដោះសោសម្រាប់ <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> កំពុងដំណើរការ"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ឧបករណ៍នឹងចាក់សោរហូតដល់អ្នកដោះសោដោយដៃ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ទទួលបានការជូនដំណឹងកាន់តែលឿន"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ឃើញពួកវាមុនពេលដោះសោ"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"បង្រួម"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ដាក់ចំណងជើងមេឌៀដោយស្វ័យប្រវត្តិ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"គន្លឹះអក្សររត់"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"ប្ដូរឧបករណ៍បញ្ចេញសំឡេង"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"អេក្រង់ត្រូវបានភ្ជាប់"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"វានឹងនៅតែបង្ហាញ រហូតទាល់តែអ្នកដកការដៅ។ សូមសង្កត់ប៊ូតុងថយក្រោយ និងប៊ូតុងទិដ្ឋភាពរួមឲ្យជាប់ ដើម្បីដកការដៅ។"</string> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 8c91997f4315..8e1998bad1e1 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"ಮುಖವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ಕಳುಹಿಸಿ"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"ಅಧಿಸೂಚನೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string> - <string name="unlock_label" msgid="8779712358041029439">"ಅನ್ಲಾಕ್ ಮಾಡು"</string> <string name="phone_label" msgid="2320074140205331708">"ಫೋನ್ ತೆರೆಯಿರಿ"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ಧ್ವನಿ ಸಹಾಯಕವನ್ನು ತೆರೆ"</string> <string name="camera_label" msgid="7261107956054836961">"ಕ್ಯಾಮರಾ ತೆರೆಯಿರಿ"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"ಸಂಪೂರ್ಣ\nನಿಶ್ಯಬ್ಧ"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ಆದ್ಯತೆ\nಮಾತ್ರ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"ಅಲಾರಮ್ಗಳು\nಮಾತ್ರ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ನಿಧಾನವಾಗಿ ಚಾರ್ಜ್ಆಗುತ್ತಿದೆ (ಪೂರ್ಣವಾಗಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"ನೀವು ಇಮೇಲ್ಗಳು, ಅಪ್ಲಿಕೇಶನ್ಗಳು, ಮತ್ತು ವೆಬ್ಸೈಟ್ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ನೆಟ್ವರ್ಕ್ ಚಟುವಟಿಕೆಯ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದಾದ <xliff:g id="APPLICATION">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವಿರಿ."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು <xliff:g id="ORGANIZATION">%1$s</xliff:g> ನಿರ್ವಹಿಸುತ್ತಿದೆ. <xliff:g id="APPLICATION">%2$s</xliff:g> ಗೆ ಪ್ರೊಫೈಲ್ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಕಾರಣ, ಅದು ನಿಮ್ಮ ಇಮೇಲ್ಗಳು, ಅಪ್ಲಿಕೇಶನ್ಗಳು ಹಾಗೂ ವೆಬ್ಸೈಟ್ಗಳೂ ಸೇರಿದಂತೆ ನೆಟ್ವರ್ಕ್ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು.\n\nಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ನಿಮ್ಮ ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು <xliff:g id="ORGANIZATION">%1$s</xliff:g> ನಿರ್ವಹಿಸುತ್ತಿದೆ. <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ಗೆ ಪ್ರೊಫೈಲ್ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಕಾರಣ, ಅದು ನಿಮ್ಮ ಇಮೇಲ್ಗಳು, ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ವೆಬ್ಸೈಟ್ಗಳೂ ಸೇರಿದಂತೆ ನೆಟ್ವರ್ಕ್ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು.\n\nನೀವು <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ಗೆ ಕೂಡಾ ಸಂಪರ್ಕಗೊಂಡಿದ್ದೀರಿ, ಇದು ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ನೆಟ್ವರ್ಕ್ ಚಟುವಟಿಕೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಬಹುದು."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> ಗಾಗಿ ಅನ್ಲಾಕ್ ಮಾಡಿ"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ಚಾಲನೆಯಲ್ಲಿದೆ"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ನೀವಾಗಿಯೇ ಅನ್ಲಾಕ್ ಮಾಡುವವರೆಗೆ ಸಾಧನವು ಲಾಕ್ ಆಗಿಯೇ ಇರುತ್ತದೆ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ವೇಗವಾಗಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಪಡೆದುಕೊಳ್ಳಿ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ನೀವು ಅನ್ಲಾಕ್ ಮಾಡುವ ಮೊದಲೇ ಅವುಗಳನ್ನು ನೋಡಿ"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ಸಂಕುಚಿಸು"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ಸ್ವಯಂಚಾಲಿತ ಶೀರ್ಷಿಕೆ ಮಾಧ್ಯಮ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ಶೀರ್ಷಿಕೆಗಳ ಸಲಹೆಯನ್ನು ಮುಚ್ಚಿ"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"ಔಟ್ಪುಟ್ ಸಾಧನವನ್ನು ಬದಲಿಸಿ"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"ಪರದೆಯನ್ನು ಪಿನ್ ಮಾಡಲಾಗಿದೆ"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"ನೀವು ಅನ್ಪಿನ್ ಮಾಡುವವರೆಗೆ ಅದನ್ನು ವೀಕ್ಷಣೆಯಲ್ಲಿಡುತ್ತದೆ. ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ ಹಾಗೂ ಅನ್ಪಿನ್ ಮಾಡಲು ಅವಲೋಕಿಸಿ."</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 9756477c2451..df40a50f9419 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"얼굴 스캔 중"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"보내기"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"알림 관리"</string> - <string name="unlock_label" msgid="8779712358041029439">"잠금 해제"</string> <string name="phone_label" msgid="2320074140205331708">"휴대전화 열기"</string> <string name="voice_assist_label" msgid="3956854378310019854">"음성 지원 열기"</string> <string name="camera_label" msgid="7261107956054836961">"카메라 열기"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"모두\n차단"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"중요 알림만\n허용"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"알람만\n"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 저속 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> 후 충전 완료)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"<xliff:g id="APPLICATION">%1$s</xliff:g>에 연결되었습니다. 이 앱은 이메일, 앱, 웹사이트와 같은 내 개인 네트워크 활동을 모니터링할 수 있습니다."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"직장 프로필은 <xliff:g id="ORGANIZATION">%1$s</xliff:g>에서 관리합니다. 프로필이 <xliff:g id="APPLICATION">%2$s</xliff:g>에 연결되어 이메일, 앱, 웹사이트와 같은 직장 네트워크 활동을 모니터링할 수 있습니다.\n\n자세한 내용을 확인하려면 관리자에게 문의하세요."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"직장 프로필은 <xliff:g id="ORGANIZATION">%1$s</xliff:g>에서 관리합니다. 이 프로필은 <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>에 연결되어 이메일, 앱, 웹사이트와 같은 직장 네트워크 활동을 모니터링할 수 있습니다.\n\n개인 네트워크 활동을 모니터링할 수 있는 <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>에도 연결됩니다."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g>님 잠금 해제됨"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> 실행 중"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"수동으로 잠금 해제할 때까지 기기가 잠금 상태로 유지됩니다."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"알림을 더욱 빠르게 받기"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"잠금 해제하기 전에 알림을 봅니다."</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"접기"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"자동 자막 미디어"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"자막 팁 닫기"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"출력 기기 전환"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"화면 고정됨"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"고정 해제할 때까지 계속 표시됩니다. 고정 해제하려면 뒤로 및 최근 사용을 길게 터치하세요."</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index 69d9cf6f7813..28d3d6be3b68 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Жүз скандалууда"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Жөнөтүү"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Билдирмелерди башкаруу"</string> - <string name="unlock_label" msgid="8779712358041029439">"кулпуну ачуу"</string> <string name="phone_label" msgid="2320074140205331708">"телефонду ачуу"</string> <string name="voice_assist_label" msgid="3956854378310019854">"үн жардамчысысын ачуу"</string> <string name="camera_label" msgid="7261107956054836961">"камераны ачуу"</string> @@ -306,7 +305,7 @@ <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="4930931771490695395">"Угуу аппараттары"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="4551281899312150640">"Күйгүзүлүүдө…"</string> <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Жарыктыгы"</string> - <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Автоматтык бурулуу"</string> + <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Авто айлануу"</string> <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Экрандын авто-айлануусу"</string> <string name="accessibility_quick_settings_rotation_value" msgid="8187398200140760213">"<xliff:g id="ID_1">%s</xliff:g> режими"</string> <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Буруу аракети кулпуланган"</string> @@ -346,7 +345,7 @@ <string name="quick_settings_connected_battery_level" msgid="4136051440381328892">"Туташып турат, батареянын деңгээли – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string> <string name="quick_settings_connecting" msgid="47623027419264404">"Туташууда…"</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Тетеринг"</string> - <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Туташуу чекити"</string> + <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Байланыш түйүнү"</string> <string name="quick_settings_hotspot_secondary_label_transient" msgid="8010579363691405477">"Күйгүзүлүүдө…"</string> <string name="quick_settings_hotspot_secondary_label_data_saver_enabled" msgid="5672131949987422420">"Трафикти үнөмдөө күйүк"</string> <plurals name="quick_settings_hotspot_secondary_label_num_devices" formatted="false" msgid="2324635800672199428"> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Тым-\nтырс"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Артыкчылыктуу\nгана"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Ойготкучтар\nгана"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Жай кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Электрондук почта, колдонмолор жана вебсайттар сыяктуу тармактагы жеке аракеттериңизди тескей турган <xliff:g id="APPLICATION">%1$s</xliff:g> колдонмосуна туташып турасыз."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Жумуш профилиңизди <xliff:g id="ORGANIZATION">%1$s</xliff:g> башкарат. Ал электрондук почта, колдонмолор жана вебсайттар сыяктуу жумуш тармагыңыздагы аракеттерди көзөмөлдөй турган <xliff:g id="APPLICATION">%2$s</xliff:g> колдонмосуна туташкан.\n\nКөбүрөөк маалымат алуу үчүн администраторуңузга кайрылыңыз."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Жумуш профилиңизди <xliff:g id="ORGANIZATION">%1$s</xliff:g> башкарат. Ал электрондук почта, колдонмолор жана вебсайттар сыяктуу жумуш тармагыңыздагы аракеттерди көзөмөлдөй турган <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> колдонмосуна туташкан.\n\nМындан тышкары, тармактагы жеке аракеттериңизди көзөмөлдөгөн <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> колдонмосуна туташып турасыз."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> үчүн кулпусу ачылды"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> иштеп жатат"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Түзмөктүн кулпусу кол менен ачылмайынча кулпуланган бойдон алат"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Эскертмелерди тезирээк алуу"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Аларды кулпудан чыгараардан мурун көрүңүз"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Жыйнап коюу"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Медиага автоматтык коштомо жазуу"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Коштомо жазуулар кеңеши"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Аудио түзмөктү которуштуруу"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Экран кадалган"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ал бошотулмайынча көрүнө берет. Бошотуу үчүн, \"Артка\" жана \"Карап чыгуу\" баскычтарын басып, кармап туруңуз."</string> @@ -588,7 +594,7 @@ <string name="alarm_template" msgid="3980063409350522735">"<xliff:g id="WHEN">%1$s</xliff:g> болгондо"</string> <string name="alarm_template_far" msgid="4242179982586714810">"<xliff:g id="WHEN">%1$s</xliff:g> болгондо"</string> <string name="accessibility_quick_settings_detail" msgid="2579369091672902101">"Ыкчам жөндөөлөр, <xliff:g id="TITLE">%s</xliff:g>."</string> - <string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"Туташуу чекити"</string> + <string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"Байланыш түйүнү"</string> <string name="accessibility_managed_profile" msgid="6613641363112584120">"Жумуш профили"</string> <string name="tuner_warning_title" msgid="7094689930793031682">"Баарына эле жага бербейт"</string> <string name="tuner_warning" msgid="8730648121973575701">"System UI Tuner Android колдонуучу интерфейсин жөнгө салып жана ыңгайлаштыруунун кошумча ыкмаларын сунуштайт. Бул сынамык функциялар кийинки чыгарылыштарда өзгөрүлүп, бузулуп же жоголуп кетиши мүмкүн. Абайлап колдонуңуз."</string> @@ -759,7 +765,7 @@ <string name="left_icon" msgid="3096287125959387541">"Сол жактагы сүрөтчө"</string> <string name="right_icon" msgid="3952104823293824311">"Оң жактагы сүрөтчө"</string> <string name="drag_to_add_tiles" msgid="230586591689084925">"Керектүү элементтерди сүйрөп келиңиз"</string> - <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Мозаикаларды иреттөө үчүн кармап туруп, сүйрөңүз"</string> + <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Элементтердин иретин өзгөртүү үчүн кармап туруп, сүйрөңүз"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Алып салуу үчүн бул жерге сүйрөңүз"</string> <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Сизге жок дегенде 6 мозаика керек"</string> <string name="qs_edit" msgid="2232596095725105230">"Түзөтүү"</string> diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml index e7689399f507..90e78e85ed19 100644 --- a/packages/SystemUI/res/values-land/dimens.xml +++ b/packages/SystemUI/res/values-land/dimens.xml @@ -24,8 +24,8 @@ <dimen name="brightness_mirror_height">40dp</dimen> - <dimen name="qs_tile_margin_top">2dp</dimen> - <dimen name="qs_header_tooltip_height">24dp</dimen> + <dimen name="qs_tile_margin_top">8dp</dimen> + <dimen name="qs_tile_margin_vertical">0dp</dimen> <dimen name="battery_detail_graph_space_top">9dp</dimen> <dimen name="battery_detail_graph_space_bottom">9dp</dimen> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index a68295bbe9b3..0dbc5f3d6cc5 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"ການສະແກນໜ້າ"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ສົ່ງ"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"ຈັດການການແຈ້ງເຕືອນ"</string> - <string name="unlock_label" msgid="8779712358041029439">"ປົດລັອກ"</string> <string name="phone_label" msgid="2320074140205331708">"ເປີດແປ້ນໂທລະສັບ"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ຊ່ວເຫຼືອເປີດສຽງ"</string> <string name="camera_label" msgid="7261107956054836961">"ເປີດກ້ອງ"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"ຄວາມງຽບ\nທັງໝົດ"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ບຸລິມະສິດ\nເທົ່ານັ້ນ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"ໂມງປຸກ\nເທົ່ານັ້ນ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກແບບຊ້າ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈຶ່ງຈະເຕັມ)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"ທ່ານເຊື່ອມຕໍ່ກັບ <xliff:g id="APPLICATION">%1$s</xliff:g> ແລ້ວ, ເຊິ່ງສາມາດຕິດຕາມການເຄື່ອນໄຫວເຄືອຂ່າຍສ່ວນຕົວຂອງທ່ານ ຮວມທັງອີເມວ, ແອັບ ແລະເວັບໄຊໄດ້."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານແມ່ນຖືກຈັດການໂດຍ <xliff:g id="ORGANIZATION">%1$s</xliff:g>. ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກດັ່ງກ່າວເຊື່ອມຕໍ່ຫາ <xliff:g id="APPLICATION">%2$s</xliff:g>, ເຊິ່ງສາມາດຕິດຕາມການເຄື່ອນໄຫວເຄືອຂ່າຍຂອງທ່ານ, ຮວມທັງອີເມວ, ແອັບ ແລະ ເວັບໄຊໄດ້.\nສຳລັບຂໍ້ມູນເພີ່ມເຕີມ, ໃຫ້ຕິດຕໍ່ຫາຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ\n."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານແມ່ນຖືກຈັດການໂດຍ <xliff:g id="ORGANIZATION">%1$s</xliff:g>. ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກດັ່ງກ່າວເຊື່ອມຕໍ່ຫາ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ເຊິ່ງສາມາດຕິດຕາມການເຄື່ອນໄຫວເຄືອຂ່າຍຂອງທ່ານ, ຮວມທັງອີເມວ, ແອັບ ແລະ ເວັບໄຊໄດ້.\n\nນອກຈາກນັ້ນ, ທ່ານຍັງເຊື່ອມຕໍ່ຫາ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ເຊິ່ງສາມາດຕິດຕາມການເຄື່ອນໄຫວເຄືອຂ່າຍສ່ວນຕົວຂອງທ່ານໄດ້."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"ປົດລັອກສຳລັບ <xliff:g id="USER_NAME">%1$s</xliff:g> ແລ້ວ"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ກຳລັງເຮັດວຽກຢູ່"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Device will stay locked until you manually unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ຮັບເອົາການແຈ້ງເຕືອນໄວຂຶ້ນ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ເບິ່ງພວກມັນກ່ອນທ່ານຈະປົດລັອກ"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ຫຍໍ້ລົງ"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ສ້າງຄຳບັນຍາຍມີເດຍໂດຍອັດຕະໂນມັດ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ປິດເຄັດລັບຄຳບັນຍາຍ"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"ສະຫຼັບອຸປະກອນສົ່ງສຽງອອກ"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"ປັກໝຸດໜ້າຈໍແລ້ວ"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"ນີ້ຈະສະແດງມັນໃນໜ້າຈໍຈົນກວ່າທ່ານຈະເຊົາປັກມຸດ. ໃຫ້ແຕະປຸ່ມກັບຄືນ ແລະ ປຸ່ມພາບຮວມຄ້າງໄວ້ເພື່ອຍົກເລີກການປັກມຸດ."</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 948e0a2b0684..2d571c01cf57 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Nuskaitomas veidas"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Siųsti"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Tvarkyti pranešimus"</string> - <string name="unlock_label" msgid="8779712358041029439">"atrakinti"</string> <string name="phone_label" msgid="2320074140205331708">"atidaryti telefoną"</string> <string name="voice_assist_label" msgid="3956854378310019854">"atidaryti „Voice Assist“"</string> <string name="camera_label" msgid="7261107956054836961">"atidaryti fotoaparatą"</string> @@ -408,7 +407,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Visiška\ntyla"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Tik\nprioritetiniai"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Tik\nsignalai"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Įkraunama be laidų (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> iki visiško įkrovimo)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -513,8 +513,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Esate prisijungę prie programos „<xliff:g id="APPLICATION">%1$s</xliff:g>“, kuri gali stebėti asmeninio tinklo veiklą, įskaitant el. laiškus, programas ir svetaines."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Jūsų darbo profilį tvarko „<xliff:g id="ORGANIZATION">%1$s</xliff:g>“. Profilis susietas su programa „<xliff:g id="APPLICATION">%2$s</xliff:g>“, kuri gali stebėti jūsų tinklo veiklą, įskaitant el. laiškus, programas ir svetaines.\n\nJei reikia daugiau informacijos, susisiekite su administratoriumi."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Jūsų darbo profilį tvarko „<xliff:g id="ORGANIZATION">%1$s</xliff:g>“. Profilis susietas su programa „<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>“, kuri gali stebėti jūsų tinklo veiklą, įskaitant el. laiškus, programas ir svetaines.\n\nTaip pat esate prisijungę prie programos „<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>“, kuri gali stebėti asmeninio tinklo veiklą."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Atrakinta (<xliff:g id="USER_NAME">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"„<xliff:g id="TRUST_AGENT">%1$s</xliff:g>“ vykdoma"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Įrenginys liks užrakintas, kol neatrakinsite jo neautomatiniu būdu"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Greičiau gaukite pranešimus"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Peržiūrėti prieš atrakinant"</string> @@ -527,6 +527,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sutraukti"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Taikyti aut. medij. subtitr."</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Subtitrų patarimas"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Perjungti išvesties įrenginį"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekranas prisegtas"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Tai bus rodoma, kol atsegsite. Palieskite ir palaikykite „Atgal“ ir „Apžvalga“, kad atsegtumėte."</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 1e898f02d078..285b5e40c712 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Sejas skenēšana"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Sūtīt"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Pārvaldīt paziņojumus"</string> - <string name="unlock_label" msgid="8779712358041029439">"atbloķēt"</string> <string name="phone_label" msgid="2320074140205331708">"atvērt tālruni"</string> <string name="voice_assist_label" msgid="3956854378310019854">"atvērt balss palīgu"</string> <string name="camera_label" msgid="7261107956054836961">"atvērt kameru"</string> @@ -406,7 +405,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Pilnīgs\nklusums"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Tikai\nprioritārie"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Tikai\nsignāli"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -510,8 +510,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Ir izveidots savienojums ar lietotni <xliff:g id="APPLICATION">%1$s</xliff:g>, kas var pārraudzīt jūsu tīklā veiktās privātās darbības, tostarp e-pasta ziņojumus, lietotnes un vietnes."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Jūsu darba profilu pārvalda <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profils ir saistīts ar lietotni <xliff:g id="APPLICATION">%2$s</xliff:g>, kura var pārraudzīt jūsu tīklā veiktās darbības, tostarp saņemtos un nosūtītos e-pasta ziņojumus, izmantotās lietotnes un apmeklētās tīmekļa vietnes.\n\nLai iegūtu plašāku informāciju, sazinieties ar administratoru."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Jūsu darba profilu pārvalda <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profils ir saistīts ar lietotni <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, kura var pārraudzīt jūsu tīklā veiktās darbības, tostarp saņemtos un nosūtītos e-pasta ziņojumus, instalētās lietotnes un apmeklētās tīmekļa vietnes.\n\nIr izveidots savienojums ar lietotni <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, kas var pārraudzīt jūsu tīklā veiktās privātās darbības, tostarp saņemtos un nosūtītos e-pasta ziņojumus, instalētās lietotnes un apmeklētās tīmekļa vietnes."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Atbloķēta lietotājam <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> darbojas"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Ierīce būs bloķēta, līdz to manuāli atbloķēsiet."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Saņemiet paziņojumus ātrāk"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Skatiet tos pirms atbloķēšanas."</string> @@ -524,6 +524,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Sakļaut"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Autom. paraksti multividei"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Padoms par slēgtajiem parakstiem"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Pārslēgt izvades ierīci"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekrāns ir piesprausts"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Šādi tas būs redzams līdz brīdim, kad to atspraudīsiet. Lai atspraustu, pieskarieties pogām Atpakaļ un Pārskats un turiet tās."</string> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index b609273bf8ce..64d71ead3847 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Скенирање лице"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Испрати"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Управувајте со известувањата"</string> - <string name="unlock_label" msgid="8779712358041029439">"отклучи"</string> <string name="phone_label" msgid="2320074140205331708">"отвори телефон"</string> <string name="voice_assist_label" msgid="3956854378310019854">"отвори гласовна помош"</string> <string name="camera_label" msgid="7261107956054836961">"отвори камера"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Целосна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Само\nприоритетни"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Само\nаларми"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Бавно полнење (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Поврзани сте на <xliff:g id="APPLICATION">%1$s</xliff:g>, којашто може да ја следи вашата лична активност на мрежата, вклучувајќи ги е-пораките, апликациите и веб-локациите."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> управува со вашиот работен профил. Профилот е поврзан на <xliff:g id="APPLICATION">%2$s</xliff:g>, што може да ја следи вашата работна активност на мрежата, заедно со е-пораките, апликациите и веб-сајтовите.\n\nЗа повеќе информации, контактирајте со вашиот администратор."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> управува со вашиот работен профил. Профилот е поврзан на <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, што може да ја следи вашата работна активност на мрежата, заедно со е-пораките, апликациите и веб-сајтовите.\n\nПоврзани сте и на <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, што може да ја следи вашата лична активност на мрежата."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Отклучен за <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> работи"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Уредот ќе остане заклучен додека рачно не го отклучите"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Добивајте известувања побрзо"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Видете ги пред да отклучите"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Собери"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматски титлови"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Совет за затворени титлови"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Префрлете го излезниот уред"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Екранот е прикачен"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ќе се гледа сѐ додека не го откачите. Допрете и држете „Назад“ и „Краток преглед“ за откачување."</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 292280e93c79..1ca56d633ce7 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"മുഖം സ്കാൻ ചെയ്യുന്നു"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"അയയ്ക്കുക"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"അറിയിപ്പുകൾ മാനേജ് ചെയ്യുക"</string> - <string name="unlock_label" msgid="8779712358041029439">"അൺലോക്കുചെയ്യുക"</string> <string name="phone_label" msgid="2320074140205331708">"ഫോൺ തുറക്കുക"</string> <string name="voice_assist_label" msgid="3956854378310019854">"വോയ്സ് അസിസ്റ്റ് തുറക്കുക"</string> <string name="camera_label" msgid="7261107956054836961">"ക്യാമറ തുറക്കുക"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"പൂർണ്ണ\nനിശബ്ദത"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"മുൻഗണന\nമാത്രം"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"അലാറങ്ങൾ\nമാത്രം"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • പതുക്കെ ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"നിങ്ങൾ <xliff:g id="APPLICATION">%1$s</xliff:g> ആപ്പിലേക്ക് കണക്റ്റുചെയ്തിരിക്കുന്നു, ഇമെയിലുകൾ, ആപ്സ്, വെബ്സൈറ്റുകൾ എന്നിവ ഉൾപ്പെടെ നെറ്റ്വർക്ക് ആക്റ്റിവിറ്റി നിരീക്ഷിക്കാൻ ഈ ആപ്പിന് കഴിയും."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> ആണ് നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈൽ മാനേജുചെയ്യുന്നത്. <xliff:g id="APPLICATION">%2$s</xliff:g> ആപ്പിലേക്ക് പ്രൊഫൈൽ കണക്റ്റുചെയ്തിരിക്കുന്നു, അതിന് ഇമെയിലുകൾ, ആപ്പുകൾ, വെബ്സൈറ്റുകൾ എന്നിവ ഉൾപ്പെടെ നിങ്ങളുടെ ഔദ്യോഗിക നെറ്റ്വർക്ക് ആക്റ്റിവിറ്റി നിരീക്ഷിക്കാനാകും.\n\nകൂടുതൽ വിവരങ്ങൾക്ക് നിങ്ങളുടെ അഡ്മിനെ ബന്ധപ്പെടുക."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> ആണ് നിങ്ങളുടെ ഔദ്യോഗിക പ്രൊഫൈൽ മാനേജുചെയ്യുന്നത്. <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ആപ്പിലേക്ക് പ്രൊഫൈൽ കണക്റ്റുചെയ്തിരിക്കുന്നു, അതിന് ഇമെയിലുകൾ, ആപ്പുകൾ, വെബ്സൈറ്റുകൾ എന്നിവ ഉൾപ്പെടെ നിങ്ങളുടെ ഔദ്യോഗിക നെറ്റ്വർക്ക് ആക്റ്റിവിറ്റി നിരീക്ഷിക്കാനാകും.\n\n<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ആപ്പിലേക്കും നിങ്ങൾ കണക്റ്റുചെയ്തിരിക്കുന്നു, അതിന് നിങ്ങളുടെ വ്യക്തിഗത നെറ്റ്വർക്ക് ആക്റ്റിവിറ്റി നിരീക്ഷിക്കാനാകും."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> എന്നയാൾക്കായി അൺലോക്കുചെയ്തു"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> റൺ ചെയ്യുന്നു"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"നിങ്ങൾ സ്വമേധയാ അൺലോക്കുചെയ്യുന്നതുവരെ ഉപകരണം ലോക്കുചെയ്തതായി തുടരും"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"അറിയിപ്പുകൾ വേഗത്തിൽ സ്വീകരിക്കുക"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"അൺലോക്കുചെയ്യുന്നതിന് മുമ്പ് അവ കാണുക"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ചുരുക്കുക"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"മീഡിയയ്ക്ക് സ്വയമേവ ക്യാപ്ഷൻ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"അടിക്കുറിപ്പുകൾക്കുള്ള നുറുങ്ങ്"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"ഔട്ട്പുട്ട് ഉപകരണം മാറുക"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"സ്ക്രീൻ പിൻ ചെയ്തു"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"നിങ്ങൾ അൺപിൻ ചെയ്യുന്നതുവരെ ഇത് കാണുന്ന വിധത്തിൽ നിലനിർത്തും. അൺപിൻ ചെയ്യാൻ \'തിരികെ\', \'ചുരുക്കവിവരണം\' എന്നിവ സ്പർശിച്ച് പിടിക്കുക."</string> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index bd396399067d..d4dbfd89c8e1 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Скан хийх нүүр царай"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Илгээх"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Мэдэгдлийг удирдах"</string> - <string name="unlock_label" msgid="8779712358041029439">"тайлах"</string> <string name="phone_label" msgid="2320074140205331708">"утас нээх"</string> <string name="voice_assist_label" msgid="3956854378310019854">"дуут туслахыг нээнэ"</string> <string name="camera_label" msgid="7261107956054836961">"камер нээх"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Дуугүй\nболгох"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Зөвхөн\nхамгийн чухлыг"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Зөвхөн\nсэрүүлэг"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Удаан цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Та имэйл, апп, вэб хуудас зэрэг хувийн сүлжээнийхээ үйл ажиллагааг хянах боломжтой <xliff:g id="APPLICATION">%1$s</xliff:g>-д холбогдсон байна."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Таны ажлын профайлыг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг. Энэ нь таны имэйл, апп, вэб хуудас зэрэг ажлын сүлжээний үйл ажиллагааг хянах боломжтой <xliff:g id="APPLICATION">%2$s</xliff:g>-д холбогдсон. \n\nДэлгэрэнгүй мэдээллийг авахын тулд админтай холбогдоно уу."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Таны ажлын профайлыг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг. Энэ нь таны имэйл, апп, вэб хуудас зэрэг сүлжээний үйл ажиллагааг хянах боломжтой <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>-тай холбогдсон. \n\nМөн таны сүлжээний хувийн үйл ажиллагааг хянах боломжтой <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>-д холбогдсон байна."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g>-н түгжээг тайлсан"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ажиллаж байна"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Таныг гараар нээх хүртэл төхөөрөмж түгжээтэй байх болно"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Мэдэгдлийг хурдан авах"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Түгжээг тайлахын өмнө үзнэ үү"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Хураах"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Медиад автоматаар тайлбар нэмэх"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Хаалттай тайлбаруудын зөвлөгөө"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Гаралтын төхөөрөмжийг солих"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Дэлгэц эхэнд байрлуулагдсан"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Таныг тогтоосныг болиулах хүртэл үүнийг харуулна. Тогтоосныг болиулахын тулд Буцах, Тоймыг дараад хүлээнэ үү."</string> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 7e0ae497ae1d..7c46bab11a56 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"चेहरा स्कॅन करत आहे"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"पाठवा"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"सूचना व्यवस्थापित करा"</string> - <string name="unlock_label" msgid="8779712358041029439">"अनलॉक करा"</string> <string name="phone_label" msgid="2320074140205331708">"फोन उघडा"</string> <string name="voice_assist_label" msgid="3956854378310019854">"व्हॉइस सहाय्य उघडा"</string> <string name="camera_label" msgid="7261107956054836961">"कॅमेरा उघडा"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"संपूर्ण\nशांतता"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"केवळ\nप्राधान्य"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"केवळ\nअलार्म"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • सावकाश चार्ज होत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण होईल)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"तुम्ही <xliff:g id="APPLICATION">%1$s</xliff:g> शी कनेक्ट केले आहे, जो ईमेल, अॅप्स आणि वेबसाइटसह आपल्या वैयक्तिक नेटवर्क क्रियाकलापाचे परीक्षण करू शकतो."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"तुमचे कार्य प्रोफाइल <xliff:g id="ORGANIZATION">%1$s</xliff:g> द्वारे व्यवस्थापित केले जाते. प्रोफाइल <xliff:g id="APPLICATION">%2$s</xliff:g> शी कनेक्ट केले आहे, जे ईमेल, अॅप्स आणि वेबसाइटसह आपल्या कार्य नेटवर्क क्रियाकलापाचे परीक्षण करू शकते.\n\nअधिक माहितीसाठी, आपल्या प्रशासकाशी संपर्क साधा."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"तुमचे कार्य प्रोफाइल <xliff:g id="ORGANIZATION">%1$s</xliff:g> द्वारे व्यवस्थापित केले जाते. प्रोफाइल <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> शी कनेक्ट केले आहे, जे ईमेल, अॅप्स आणि वेबसाइटसह आपल्या कार्य नेटवर्क क्रियाकलापाचे परीक्षण करू शकते.\n\nतुम्ही <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> शीदेखील कनेक्ट केले आहे, जे आपल्या वैयक्तिक नेटवर्क क्रियाकलापाचे परीक्षण करू शकते."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> साठी अनलॉक केले"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> चालू आहे"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"तुम्ही मॅन्युअली अनलॉक करेपर्यंत डिव्हाइस लॉक राहील"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"सूचना अधिक जलद मिळवा"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"तुम्ही अनलॉक करण्यापूर्वी त्यांना पहा"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"संकुचित करा"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"मीडियाला आपोआप सबटायटल द्या"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"सबटायटल टीप"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"आउटपुट डिव्हाइस स्विच करा"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"स्क्रीन पिन केलेली आहे"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"तुम्ही अनपिन करेर्यंत हे यास दृश्यामध्ये ठेवते. अनपिन करण्यासाठी परत आणि विहंगावलोकनास स्पर्श करा आणि धरून ठेवा."</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index e7ec94baa266..e1b82fb60abd 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Mengimbas wajah"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Hantar"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Urus pemberitahuan"</string> - <string name="unlock_label" msgid="8779712358041029439">"buka kunci"</string> <string name="phone_label" msgid="2320074140205331708">"buka telefon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"buka bantuan suara"</string> <string name="camera_label" msgid="7261107956054836961">"buka kamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Senyap\nsepenuhnya"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Keutamaan\nsahaja"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Penggera\nsahaja"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas Secara Wayarles (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas dengan perlahan (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Anda disambungkan ke <xliff:g id="APPLICATION">%1$s</xliff:g>, yang boleh memantau aktiviti rangkaian peribadi anda, termasuk e-mel, apl dan tapak web."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profil kerja anda diurus oleh <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil itu dihubungkan ke <xliff:g id="APPLICATION">%2$s</xliff:g>, yang boleh memantau aktiviti rangkaian kerja anda, termasuk e-mel, apl dan tapak web.\n\nUntuk mendapatkan maklumat lanjut, hubungi pentadbir anda."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profil kerja anda diurus oleh <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil itu dihubungkan ke <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, yang boleh memantau aktiviti rangkaian kerja anda, termasuk e-mel, apl dan tapak web.\n\nAnda turut dihubungkan ke <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, yang boleh memantau aktiviti rangkaian peribadi anda."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Kunci dibuka untuk <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> sedang berjalan"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Peranti akan kekal terkunci sehingga anda membuka kunci secara manual"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Dapatkan pemberitahuan lebih cepat"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Lihat sebelum anda membuka kunci"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Runtuhkan"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Kapsyen media automatik"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Petua sari kata"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Tukar peranti output"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Skrin telah disemat"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Tindakan ini memastikan skrin kelihatan sehingga anda menyahsemat. Sentuh & tahan Kembali dan Ikhtisar untuk menyahsemat."</string> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 813933092780..b2c9f53bf157 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"မျက်နှာ စကင်ဖတ်နေသည်"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ပို့ရန်"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"အကြောင်းကြားချက်များကို စီမံရန်"</string> - <string name="unlock_label" msgid="8779712358041029439">"သော့ဖွင့်ရန်"</string> <string name="phone_label" msgid="2320074140205331708">"ဖုန်းကို ဖွင့်ရန်"</string> <string name="voice_assist_label" msgid="3956854378310019854">"အသံ အကူအညီအား ဖွင့်ရန်"</string> <string name="camera_label" msgid="7261107956054836961">"ကင်မရာ ဖွင့်ရန်"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"လုံးဝ\nတိတ်ဆိတ်ခြင်း"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ဦးစားပေးမှု\nသာ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"နှိုးစက်များ\nသာ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • နှေးကွေးစွာ သွင်းနေသည် (အားပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လို)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"သင်သည် အီးမေးလ်၊ အက်ပ်နှင့် ဝဘ်ဆိုက်များအပါအဝင် သင့်ကိုယ်ရေးကိုယ်တာ ကွန်ရက်အသုံးပြုမှုကို စောင့်ကြည့်နိုင်သည့် <xliff:g id="APPLICATION">%1$s</xliff:g> သို့ ချိတ်ဆက်ထားပါသည်။"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"သင်၏ အလုပ်ပရိုဖိုင်ကို <xliff:g id="ORGANIZATION">%1$s</xliff:g> က စီမံခန့်ခွဲထားပါသည်။ ပရိုဖိုင်သည် အီးမေး၊ အက်ပ်နှင့် ဝဘ်ဆိုက်များအပါအဝင် သင်၏ကွန်ရက် လုပ်ဆောင်ချက်များကို စောင့်ကြည့်နိုင်သည့် <xliff:g id="APPLICATION">%2$s</xliff:g> သို့ ချိတ်ဆက်ထားပါသည်။\n\nနောက်ထပ် အချက်အလက်များအတွက် သင်၏ စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"သင်၏ အလုပ်ပရိုဖိုင်ကို <xliff:g id="ORGANIZATION">%1$s</xliff:g> က စီမံခန့်ခွဲထားသည်။ ပရိုဖိုင်သည် အီးမေး၊ အက်ပ်နှင့် ဝဘ်ဆိုက်များအပါအဝင် သင်၏ကွန်ရက် လုပ်ဆောင်ချက်များကို စောင့်ကြည့်နိုင်သည့် <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> သို့ ချိတ်ဆက်ထားပါသည်။\n\nသင်၏ ကိုယ်ရေးကိုယ်တာ ကွန်ရက်လုပ်ဆောင်ချက်များကို စောင့်ကြည့်နိုင်သည့် <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> သို့လည်း ချိတ်ဆက်ထားပါသည်။"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> အတွက် လော့ခ်ဖွင့်ထားသည်"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ပွင့်နေပါသည်"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"သင်က လက်ဖြင့် သော့မဖွင့်မချင်း ကိရိယာမှာ သော့ပိတ်လျက် ရှိနေမည်"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"အကြောင်းကြားချက်များ မြန်မြန်ရရန်"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"မဖွင့်ခင် ၎င်းတို့ကို ကြည့်ပါ"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ခေါက်သိမ်းရန်..."</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"အလိုလို မီဒီယာ စာတန်းထိုးရန်"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"စာတန်းအကြံပြုချက်ကို ပိတ်ပါ"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"အထွက် စက်ပစ္စည်းကို ပြောင်းပါ"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"မျက်နှာပြင် ပင်ထိုးပြီးပါပြီ"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"သင်ပင်မဖြုတ်မခြင်း ၎င်းကို ပြသထားပါမည်။ ပင်ဖြုတ်ရန် Back နှင့် Overview ကို ထိ၍ဖိထားပါ။"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index d6b9530ba2d5..e53a26365e10 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Skanning av ansikt"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Send"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Administrer varsler"</string> - <string name="unlock_label" msgid="8779712358041029439">"lås opp"</string> <string name="phone_label" msgid="2320074140205331708">"åpne telefonen"</string> <string name="voice_assist_label" msgid="3956854378310019854">"åpne talehjelp"</string> <string name="camera_label" msgid="7261107956054836961">"åpne kamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Total\nstillhet"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Bare\nPrioritet"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Bare\nalarmer"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader sakte (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Enheten er koblet til <xliff:g id="APPLICATION">%1$s</xliff:g>, som kan overvåke den personlige nettverksaktiviteten din, inkludert e-post, apper og nettsteder."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Jobbprofilen din administreres av <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen er koblet til <xliff:g id="APPLICATION">%2$s</xliff:g>, som kan overvåke nettverksaktiviteten din på jobben, inkludert e-poster, apper og nettsteder.\n\nTa kontakt med administratoren hvis du vil ha mer informasjon."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Jobbprofilen din administreres av <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen er koblet til <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, som kan overvåke nettverksaktiviteten din på jobben, inkludert e-poster, apper og nettsteder.\n\nDu er også koblet til <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, som kan overvåke den personlige nettverksaktiviteten din."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Låst opp for <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> kjører"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Enheten forblir låst til du låser den opp manuelt"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Motta varsler raskere"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Se dem før du låser opp"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Skjul"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatisk teksting av media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Verktøytips for teksting"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Bytt enhet for lydutgang"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Skjermen er låst"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"På denne måten blir skjermen synlig frem til du løsner den. Trykk og hold inne Tilbake og Oversikt for å løsne den."</string> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 869b60b84d6c..5f2d1cc29866 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"अनुहार स्क्यान गर्दै"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"पठाउनुहोस्"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"सूचनाहरू व्यवस्थित गर्नुहोस्"</string> - <string name="unlock_label" msgid="8779712358041029439">"खोल्नुहोस्"</string> <string name="phone_label" msgid="2320074140205331708">"फोन खोल्नुहोस्"</string> <string name="voice_assist_label" msgid="3956854378310019854">"आवाज सहायता खोल्नुहोस्"</string> <string name="camera_label" msgid="7261107956054836961">"क्यामेरा खोल्नुहोस्"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"पूरै\nशान्त"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"प्राथमिकता \nमात्र"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"अलार्महरू \nमात्र"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • मन्द गतिमा चार्ज गरिँदै (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> समय बाँकी)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"तपाईं <xliff:g id="APPLICATION">%1$s</xliff:g> मा जोडिनुभएको छ जसले इमेल, अनुप्रयोग र वेबसाइटहरू लगायतको तपाईंको व्यक्तिगत नेटवर्क सम्बन्धी गतिविधिको अनुगमन गर्न सक्छ।"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> ले तपाईंको कार्य प्रोफाइलको व्यवस्थापन गर्छ। उक्त प्रोफाइल तपाईंका इमेल, अनुप्रयोग र वेवसाइटहरू लगायत तपाईंको नेटवर्कको गतिविधिको अनुगमन गर्नसक्ने <xliff:g id="APPLICATION">%2$s</xliff:g> मा जडान छ।\n\nथप जानकारीका लागि, आफ्ना प्रशासकलाई सम्पर्क गर्नुहोस्।"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> ले तपाईंको कार्य प्रोफाइलको व्यवस्थापन गर्छ। उक्त प्रोफाइल तपाईंका इमेल, अनुप्रयोग र वेवसाइटहरू लगायत तपाईंको नेटवर्कको गतिविधिको अनुगमन गर्नसक्ने <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> मा जडान छ। \n\nतपाईं आफ्नो व्यक्तिगत नेटवर्कको गतिविधिको अनुगमन गर्नसक्ने <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> मा पनि जडान हुनुहुन्छ।"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> का लागि अनलक गरियो"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> चल्दै छ"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"तपाईँले नखोले सम्म उपकरण बन्द रहनेछ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"छिटो सूचनाहरू प्राप्त गर्नुहोस्"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"तपाईँले अनलक गर्नअघि तिनीहरूलाई हेर्नुहोस्"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"संक्षिप्त पार्नुहोस्"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"स्वचालित क्याप्सनहरूसम्बन्धी मिडिया"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"उपशीर्षकहरूसम्बन्धी सुझाव"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"आउटपुट यन्त्र बदल्नुहोस्"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"पर्दा राखेका छ"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न पछाडि र परिदृश्य बटनलाई छोइराख्नुहोस्।"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 8035f01ebac5..7a7d40dc0174 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Gezicht scannen"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Verzenden"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Meldingen beheren"</string> - <string name="unlock_label" msgid="8779712358041029439">"ontgrendelen"</string> <string name="phone_label" msgid="2320074140205331708">"telefoon openen"</string> <string name="voice_assist_label" msgid="3956854378310019854">"spraakassistent openen"</string> <string name="camera_label" msgid="7261107956054836961">"camera openen"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Totale\nstilte"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Alleen\nprioriteit"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Alleen\nalarmen"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Draadloos opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Langzaam opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Je bent verbonden met <xliff:g id="APPLICATION">%1$s</xliff:g>, waarmee je persoonlijke netwerkactiviteit kan worden gecontroleerd, inclusief e-mails, apps en websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Je werkprofiel wordt beheerd door <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Het profiel is verbonden met <xliff:g id="APPLICATION">%2$s</xliff:g>, waarmee je werkgerelateerde netwerkactiviteit (waaronder e-mails, apps en websites) kan worden bijgehouden.\n\nNeem contact op met je beheerder voor meer informatie."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Je werkprofiel wordt beheerd door <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Het profiel is verbonden met <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, waarmee je werkgerelateerde netwerkactiviteit (waaronder e-mails, apps en websites) kan worden bijgehouden.\n\nJe bent ook verbonden met <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, waarmee je persoonlijke netwerkactiviteit kan worden bijgehouden."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Ontgrendeld voor <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> is actief"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Het apparaat blijft vergrendeld totdat u het handmatig ontgrendelt"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Sneller meldingen ontvangen"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Weergeven voordat u ontgrendelt"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Samenvouwen"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automatisch ondertitelen"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Ondertitelingstip sluiten"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Naar een ander uitvoerapparaat schakelen"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Scherm is vastgezet"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Het scherm blijft zichtbaar totdat je het losmaakt. Tik op Terug en Overzicht en houd deze vast om het scherm los te maken."</string> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index 9b7fed292743..ac22d24e3b50 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -43,7 +43,7 @@ <string name="status_bar_settings_mute_label" msgid="554682549917429396">"ମ୍ୟୁଟ୍"</string> <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"ସ୍ୱତଃ"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"ବିଜ୍ଞପ୍ତି"</string> - <string name="bluetooth_tethered" msgid="7094101612161133267">"ବ୍ଲୁ-ଟୂଥ୍ ଟିଥରିଙ୍ଗ୍"</string> + <string name="bluetooth_tethered" msgid="7094101612161133267">"ବ୍ଲୁଟୂଥ୍ ଟିଥରିଙ୍ଗ୍"</string> <string name="status_bar_input_method_settings_configure_input_methods" msgid="3504292471512317827">"ଇନପୁଟ୍ ପଦ୍ଧତି ସେଟ୍ କରନ୍ତୁ"</string> <string name="status_bar_use_physical_keyboard" msgid="7551903084416057810">"ଫିଜିକଲ୍ କୀ’ବୋର୍ଡ୍"</string> <string name="usb_device_permission_prompt" msgid="1825685909587559679">"<xliff:g id="USB_DEVICE">%2$s</xliff:g> ଆକ୍ସେସ୍ କରିବାକୁ <xliff:g id="APPLICATION">%1$s</xliff:g>କୁ ଅନୁମତି ଦେବେ?"</string> @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"ଫେସ୍ ସ୍କାନିଙ୍ଗ କରାଯାଉଛି"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ପଠାନ୍ତୁ"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପରିଚାଳନା କରନ୍ତୁ"</string> - <string name="unlock_label" msgid="8779712358041029439">"ଅନଲକ୍"</string> <string name="phone_label" msgid="2320074140205331708">"ଫୋନ୍ ଖୋଲନ୍ତୁ"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ଭଏସ୍ ସହାୟକ ଖୋଲନ୍ତୁ"</string> <string name="camera_label" msgid="7261107956054836961">"କ୍ୟାମେରା ଖୋଲନ୍ତୁ"</string> @@ -125,8 +124,8 @@ <string name="accessibility_face_dialog_face_icon" msgid="2658119009870383490">"ମୁହଁ ଆଇକନ୍"</string> <string name="accessibility_compatibility_zoom_button" msgid="8461115318742350699">"କମ୍ପାଟିବିଲିଟୀ ଜୁମ୍ ବଟନ୍।"</string> <string name="accessibility_compatibility_zoom_example" msgid="4220687294564945780">"ଜୁମ୍ କରି ସ୍କ୍ରୀନ୍କୁ ଛୋଟରୁ ବଡ଼ କରନ୍ତୁ।"</string> - <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ବ୍ଲୁ-ଟୂଥ୍ ସଂଯୋଗ କରାଯାଇଛି।"</string> - <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"ବ୍ଲୁ-ଟୂଥ୍ ସଂଯୋଗ କରାଯାଇନାହିଁ।"</string> + <string name="accessibility_bluetooth_connected" msgid="2707027633242983370">"ବ୍ଲୁଟୂଥ୍ ସଂଯୋଗ କରାଯାଇଛି।"</string> + <string name="accessibility_bluetooth_disconnected" msgid="7416648669976870175">"ବ୍ଲୁଟୂଥ୍ ସଂଯୋଗ କରାଯାଇନାହିଁ।"</string> <string name="accessibility_no_battery" msgid="358343022352820946">"ବ୍ୟାଟେରୀ ନାହିଁ।"</string> <string name="accessibility_battery_one_bar" msgid="7774887721891057523">"ବ୍ୟାଟେରୀର ଗୋଟିଏ ବାର୍ ଅଛି।"</string> <string name="accessibility_battery_two_bars" msgid="8500650438735009973">"ବ୍ୟାଟେରୀର ଦୁଇଟି ବାର୍ ଅଛି।"</string> @@ -185,7 +184,7 @@ <string name="cell_data_off_content_description" msgid="4356113230238585072">"ମୋବାଇଲ୍ ଡାଟା ବନ୍ଦ ଅଛି"</string> <string name="not_default_data_content_description" msgid="9194667237765917844">"ବ୍ୟବହୃତ ଡାଟା ପାଇଁ ସେଟ୍ ହୋଇନାହିଁ"</string> <string name="cell_data_off" msgid="1051264981229902873">"ଅଫ୍ ଅଛି"</string> - <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ବ୍ଲୁ-ଟୂଥ୍ ଟିଥରିଙ୍ଗ।"</string> + <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"ବ୍ଲୁଟୂଥ୍ ଟିଥରିଙ୍ଗ।"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"ଏରୋପ୍ଲେନ୍ ମୋଡ୍।"</string> <string name="accessibility_vpn_on" msgid="5993385083262856059">"VPN ଅନ୍।"</string> <string name="accessibility_no_sims" msgid="3957997018324995781">"କୌଣସି SIM କାର୍ଡ ନାହିଁ।"</string> @@ -228,10 +227,10 @@ <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ।"</string> <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\"କୁ ବନ୍ଦ କରାଯାଇଛି।"</string> <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଚାଲୁ ଅଛି।"</string> - <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ବ୍ଲୁ-ଟୂଥ୍।"</string> - <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ବ୍ଲୁ-ଟୂଥ୍ ଅଫ୍ ଅଛି।"</string> - <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ବ୍ଲୁ-ଟୂଥ୍ ଅନ୍ ଅଛି।"</string> - <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ବ୍ଲୁ-ଟୂଥ୍ ସଂଯୋଗ ହେଉଛି।"</string> + <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"ବ୍ଲୁଟୂଥ୍।"</string> + <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"ବ୍ଲୁଟୂଥ୍ ଅଫ୍ ଅଛି।"</string> + <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"ବ୍ଲୁଟୂଥ୍ ଅନ୍ ଅଛି।"</string> + <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"ବ୍ଲୁଟୂଥ୍ ସଂଯୋଗ ହେଉଛି।"</string> <string name="accessibility_quick_settings_bluetooth_connected" msgid="4306637793614573659">"ବ୍ଲୁ-ଟୁଥ୍କୁ ସଂଯୋଗ କରାଯାଇଛି।"</string> <string name="accessibility_quick_settings_bluetooth_changed_off" msgid="2730003763480934529">"ବ୍ଲୁ-ଟୁଥ୍କୁ ବନ୍ଦ କରିଦିଆଯାଇଛି।"</string> <string name="accessibility_quick_settings_bluetooth_changed_on" msgid="8722351798763206577">"ବ୍ଲୁ-ଟୁଥ୍କୁ ଚାଲୁ କରାଯାଇଛି।"</string> @@ -270,8 +269,8 @@ <string name="data_usage_disabled_dialog" msgid="4919541636934603816">"ଆପଣ ସେଟ୍ କରିଥିବା ଡାଟାର ସୀମାରେ ପହଞ୍ଚିଲେ। ଆପଣ ଆଉ ମୋବାଇଲ୍ ଡାଟା ବ୍ୟବହାର କରୁନାହାଁନ୍ତି।\n\nଯଦି ଆପଣ ପୁଣି ଆରମ୍ଭ କରନ୍ତି, ଡାଟା ବ୍ୟବହାର ପାଇଁ ଆପଣଙ୍କୁ ଦେୟ ଲାଗୁ କରାଯାଇ ପାରେ।"</string> <string name="data_usage_disabled_dialog_enable" msgid="1412395410306390593">"ପୁଣି ଚାଲୁ କରନ୍ତୁ"</string> <string name="gps_notification_searching_text" msgid="8574247005642736060">"GPS ଖୋଜାଯାଉଛି"</string> - <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS ଦ୍ୱାରା ଲୋକେଶନ୍ ସେଟ୍ କରାଯାଇଛି"</string> - <string name="accessibility_location_active" msgid="2427290146138169014">"ଲୋକେଶନ୍ ଅନୁରୋଧ ସକ୍ରିୟ ଅଛି"</string> + <string name="gps_notification_found_text" msgid="4619274244146446464">"GPS ଦ୍ୱାରା ଲୋକେସନ୍ ସେଟ୍ କରାଯାଇଛି"</string> + <string name="accessibility_location_active" msgid="2427290146138169014">"ଲୋକେସନ୍ ଅନୁରୋଧ ସକ୍ରିୟ ଅଛି"</string> <string name="accessibility_clear_all" msgid="5235938559247164925">"ସମସ୍ତ ବିଜ୍ଞପ୍ତି ଖାଲି କରନ୍ତୁ।"</string> <string name="notification_group_overflow_indicator" msgid="1863231301642314183">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string> <plurals name="notification_group_overflow_description" formatted="false" msgid="4579313201268495404"> @@ -295,9 +294,9 @@ <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"କେବଳ ପ୍ରାଥମିକତା"</string> <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"କେବଳ ଆଲାର୍ମ"</string> <string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"ସମ୍ପୂର୍ଣ୍ଣ ନୀରବ"</string> - <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"ବ୍ଲୁ-ଟୂଥ୍"</string> - <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"ବ୍ଲୁ-ଟୂଥ୍ (<xliff:g id="NUMBER">%d</xliff:g>ଟି ଡିଭାଇସ୍)"</string> - <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"ବ୍ଲୁ-ଟୂଥ୍ ଅଫ୍"</string> + <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"ବ୍ଲୁଟୂଥ୍"</string> + <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"ବ୍ଲୁଟୂଥ୍ (<xliff:g id="NUMBER">%d</xliff:g>ଟି ଡିଭାଇସ୍)"</string> + <string name="quick_settings_bluetooth_off_label" msgid="8159652146149219937">"ବ୍ଲୁଟୂଥ୍ ଅଫ୍"</string> <string name="quick_settings_bluetooth_detail_empty_text" msgid="4910015762433302860">"ପେୟାର୍ ହୋଇଥିବା କୌଣସି ଡିଭାଇସ୍ ଉପଲବ୍ଧ ନାହିଁ"</string> <string name="quick_settings_bluetooth_secondary_label_battery_level" msgid="7106697106764717416">"<xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%s</xliff:g> ବ୍ୟାଟେରୀ"</string> <string name="quick_settings_bluetooth_secondary_label_audio" msgid="5673845963301132071">"ଅଡିଓ"</string> @@ -313,8 +312,8 @@ <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"ପୋର୍ଟ୍ରେଟ୍"</string> <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"ଲ୍ୟାଣ୍ଡସ୍କେପ୍"</string> <string name="quick_settings_ime_label" msgid="7073463064369468429">"ଇନପୁଟ୍ ପଦ୍ଧତି"</string> - <string name="quick_settings_location_label" msgid="5011327048748762257">"ଲୋକେଶନ୍"</string> - <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ଲୋକେଶନ୍ ଅଫ୍"</string> + <string name="quick_settings_location_label" msgid="5011327048748762257">"ଲୋକେସନ୍"</string> + <string name="quick_settings_location_off_label" msgid="7464544086507331459">"ଲୋକେସନ୍ ଅଫ୍"</string> <string name="quick_settings_media_device_label" msgid="1302906836372603762">"ମିଡିଆ ଡିଭାଇସ୍"</string> <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string> <string name="quick_settings_rssi_emergency_only" msgid="2713774041672886750">"କେବଳ ଜରୁରୀକାଳୀନ କଲ୍"</string> @@ -338,7 +337,7 @@ <string name="quick_settings_cast_no_wifi" msgid="2696477881905521882">"ୱାଇ-ଫାଇ ସଂଯୋଜିତ ହୋଇନାହିଁ"</string> <string name="quick_settings_brightness_dialog_title" msgid="8599674057673605368">"ଉଜ୍ଜ୍ୱଳତା"</string> <string name="quick_settings_brightness_dialog_auto_brightness_label" msgid="5064982743784071218">"ସ୍ୱଚାଳିତ"</string> - <string name="quick_settings_inversion_label" msgid="8790919884718619648">"ରଙ୍ଗ ପୂର୍ବପରି କରନ୍ତୁ"</string> + <string name="quick_settings_inversion_label" msgid="8790919884718619648">"ରଙ୍ଗ ଇନଭାର୍ଟ୍ କରନ୍ତୁ"</string> <string name="quick_settings_color_space_label" msgid="853443689745584770">"ରଙ୍ଗ ସଂଶୋଧନ ମୋଡ୍"</string> <string name="quick_settings_more_settings" msgid="326112621462813682">"ଅଧିକ ସେଟିଙ୍ଗ"</string> <string name="quick_settings_done" msgid="3402999958839153376">"ହୋଇଗଲା"</string> @@ -368,8 +367,7 @@ <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4453017157391574402">"ସୂର୍ଯ୍ୟୋଦୟ ପର୍ଯ୍ୟନ୍ତ"</string> <string name="quick_settings_night_secondary_label_on_at" msgid="6256314040368487637">"<xliff:g id="TIME">%s</xliff:g>ରେ ଅନ୍ ହେବ"</string> <string name="quick_settings_secondary_label_until" msgid="2749196569462600150">"<xliff:g id="TIME">%s</xliff:g> ପର୍ଯ୍ୟନ୍ତ"</string> - <!-- no translation found for quick_settings_ui_mode_night_label (512534812963862137) --> - <skip /> + <string name="quick_settings_ui_mode_night_label" msgid="512534812963862137">"ଗାଢ଼ା ଥିମ୍"</string> <string name="quick_settings_nfc_label" msgid="9012153754816969325">"NFC"</string> <string name="quick_settings_nfc_off" msgid="6883274004315134333">"NFC ଅକ୍ଷମ କରାଯାଇଛି"</string> <string name="quick_settings_nfc_on" msgid="6680317193676884311">"NFC ସକ୍ଷମ କରାଯାଇଛି"</string> @@ -405,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"ସମ୍ପୂର୍ଣ୍ଣ\nନୀରବ"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"କେବଳ\nପ୍ରାଥମିକତା"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"କେବଳ\nଆଲାର୍ମ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଧୀରେ ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବଳକା ଅଛି)"</string> @@ -479,8 +478,8 @@ <string name="disable_vpn" msgid="4435534311510272506">"VPN ଅକ୍ଷମ କରନ୍ତୁ"</string> <string name="disconnect_vpn" msgid="1324915059568548655">"VPN ବିଛିନ୍ନ କରନ୍ତୁ"</string> <string name="monitoring_button_view_policies" msgid="100913612638514424">"ପଲିସୀ ଦେଖନ୍ତୁ"</string> - <string name="monitoring_description_named_management" msgid="5281789135578986303">"ଆପଣଙ୍କ ଡିଭାଇସ୍ <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> ଦ୍ୱାରା ପରିଚାଳନା କରାଯାଉଛି।.\n\nଆପଣଙ୍କ ଆଡମିନ୍ ସେଟିଙ୍ଗ, କର୍ପୋରେଟ୍ ଆକ୍ସେସ୍, ଆପ୍, ଆପଣଙ୍କ ଡିଭାଇସ୍ ସମ୍ବନ୍ଧୀୟ ଡାଟା ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେଶନ୍ ନିରୀକ୍ଷଣ ଓ ପରିଚାଳନା କରିପାରନ୍ତି।\n\nଅଧିକ ସୂଚନା ପାଇଁ, ନିଜ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string> - <string name="monitoring_description_management" msgid="4573721970278370790">"ଆପଣଙ୍କ ଡିଭାଇସ୍ ଆପଣଙ୍କ ସଂସ୍ଥା ଦ୍ୱାରା ପରିଚାଳନା କରାଯାଉଛି।\n\nଆପଣଙ୍କ ଆଡମିନ୍ ସେଟିଙ୍ଗ, କର୍ପୋରେଟ୍ ଆକ୍ସେସ୍, ଆପ୍, ଆପଣଙ୍କ ଡିଭାଇସ୍ ସମ୍ବନ୍ଧୀୟ ଡାଟା ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେଶନ୍ ନିରୀକ୍ଷଣ ଓ ପରିଚାଳନା କରିପାରନ୍ତି।\n\nଅଧିକ ସୂଚନା ପାଇଁ, ନିଜ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string> + <string name="monitoring_description_named_management" msgid="5281789135578986303">"ଆପଣଙ୍କ ଡିଭାଇସ୍ <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> ଦ୍ୱାରା ପରିଚାଳନା କରାଯାଉଛି।.\n\nଆପଣଙ୍କ ଆଡମିନ୍ ସେଟିଙ୍ଗ, କର୍ପୋରେଟ୍ ଆକ୍ସେସ୍, ଆପ୍, ଆପଣଙ୍କ ଡିଭାଇସ୍ ସମ୍ବନ୍ଧୀୟ ଡାଟା ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେସନ୍ ନିରୀକ୍ଷଣ ଓ ପରିଚାଳନା କରିପାରନ୍ତି।\n\nଅଧିକ ସୂଚନା ପାଇଁ, ନିଜ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string> + <string name="monitoring_description_management" msgid="4573721970278370790">"ଆପଣଙ୍କ ଡିଭାଇସ୍ ଆପଣଙ୍କ ସଂସ୍ଥା ଦ୍ୱାରା ପରିଚାଳନା କରାଯାଉଛି।\n\nଆପଣଙ୍କ ଆଡମିନ୍ ସେଟିଙ୍ଗ, କର୍ପୋରେଟ୍ ଆକ୍ସେସ୍, ଆପ୍, ଆପଣଙ୍କ ଡିଭାଇସ୍ ସମ୍ବନ୍ଧୀୟ ଡାଟା ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେସନ୍ ନିରୀକ୍ଷଣ ଓ ପରିଚାଳନା କରିପାରନ୍ତି।\n\nଅଧିକ ସୂଚନା ପାଇଁ, ନିଜ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string> <string name="monitoring_description_management_ca_certificate" msgid="5202023784131001751">"ଏହି ଡିଭାଇସରେ ଆପଣଙ୍କ ସଂସ୍ଥା ଏକ ସର୍ଟିଫିକେଟ୍ ଅଥରିଟି ଇନଷ୍ଟଲ୍ କରିଛନ୍ତି। ଆପଣଙ୍କ ସୁରକ୍ଷିତ ନେଟୱର୍କ ଟ୍ରାଫିକ୍ ନୀରିକ୍ଷଣ କିମ୍ବା ସଂଶୋଧନ କରାଯାଇ ପାରେ।"</string> <string name="monitoring_description_managed_profile_ca_certificate" msgid="4683248196789897964">"ଆପଣଙ୍କ ୱର୍କ ପ୍ରୋଫାଇଲରେ ଆପଣଙ୍କ ସଂସ୍ଥା ଏକ ସର୍ଟିଫିକେଟ୍ ଅଥରିଟି ଇନଷ୍ଟଲ୍ କରିଛନ୍ତି। ଆପଣଙ୍କ ସୁରକ୍ଷିତ ନେଟୱର୍କ ଟ୍ରାଫିକ୍ ନୀରିକ୍ଷଣ କିମ୍ବା ସଂଶୋଧନ କରାଯାଇ ପାରେ।"</string> <string name="monitoring_description_ca_certificate" msgid="7886985418413598352">"ଏହି ଡିଭାଇସରେ ଏକ ସର୍ଟିଫିକେଟ୍ ଅଥରିଟି ଇନଷ୍ଟଲ୍ କରାଯାଇଛି। ଆପଣଙ୍କ ସୁରକ୍ଷିତ ନେଟୱର୍କ ଟ୍ରାଫିକ୍ ନୀରିକ୍ଷଣ କିମ୍ବା ସଂଶୋଧନ କରାଯାଇ ପାରେ।"</string> @@ -491,7 +490,7 @@ <string name="monitoring_description_personal_profile_named_vpn" msgid="3133980926929069283">"ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ପ୍ରୋଫାଇଲ୍ <xliff:g id="VPN_APP">%1$s</xliff:g>ରେ ସଂଯୁକ୍ତ, ଯାହା ଇମେଲ୍, ଆପ୍ ଓ ୱେବସାଇଟ୍ ସମେତ ଆପଣଙ୍କ ନେଟୱର୍କ ଗତିବିଧିକୁ ନିରୀକ୍ଷଣ କରିପାରେ।"</string> <string name="monitoring_description_do_header_generic" msgid="96588491028288691">"ଆପଣଙ୍କ ଡିଭାଇସ୍ <xliff:g id="DEVICE_OWNER_APP">%1$s</xliff:g> ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି।"</string> <string name="monitoring_description_do_header_with_name" msgid="5511133708978206460">"ଆପଣଙ୍କ ଡିଭାଇସ୍ ପରିଚାଳନା କରିବାକୁ <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g>, <xliff:g id="DEVICE_OWNER_APP">%2$s</xliff:g> ବ୍ୟବହାର କରନ୍ତି।"</string> - <string name="monitoring_description_do_body" msgid="3639594537660975895">"ଆପଣଙ୍କ ଆଡମିନ୍ ସେଟିଙ୍ଗ, କର୍ପୋରେଟ୍ ଆକ୍ସେସ୍, ଆପ୍, ଆପଣଙ୍କ ଡିଭାଇସ୍ ସମ୍ବନ୍ଧୀୟ ଡାଟା ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେଶନ୍ ନିରୀକ୍ଷଣ ଓ ପରିଚାଳନା କରିପାରନ୍ତି।"</string> + <string name="monitoring_description_do_body" msgid="3639594537660975895">"ଆପଣଙ୍କ ଆଡମିନ୍ ସେଟିଙ୍ଗ, କର୍ପୋରେଟ୍ ଆକ୍ସେସ୍, ଆପ୍, ଆପଣଙ୍କ ଡିଭାଇସ୍ ସମ୍ବନ୍ଧୀୟ ଡାଟା ଏବଂ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେସନ୍ ନିରୀକ୍ଷଣ ଓ ପରିଚାଳନା କରିପାରନ୍ତି।"</string> <string name="monitoring_description_do_learn_more_separator" msgid="3785251953067436862">" "</string> <string name="monitoring_description_do_learn_more" msgid="1849514470437907421">"ଅଧିକ ଜାଣନ୍ତୁ"</string> <string name="monitoring_description_do_body_vpn" msgid="8255218762488901796">"ଆପଣ <xliff:g id="VPN_APP">%1$s</xliff:g>ରେ ସଂଯୁକ୍ତ ଅଛନ୍ତି, ଯାହା ଇମେଲ୍, ଆପ୍ ଓ ୱେବସାଇଟ୍ ସମେତ ଆପଣଙ୍କ ନେଟ୍ୱର୍କର ଗତିବିଧିକୁ ନିରୀକ୍ଷଣ କରିପାରେ।"</string> @@ -508,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"ଆପଣ <xliff:g id="APPLICATION">%1$s</xliff:g>ରେ ସଂଯୁକ୍ତ ଅଛନ୍ତି, ଯାହା ଇମେଲ୍, ଆପ୍ ଓ ୱେବସାଇଟ୍ ସମେତ ଆପଣଙ୍କ ନେଟ୍ୱର୍କ ଗତିବିଧିକୁ ନିରୀକ୍ଷଣ କରିପାରେ।"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"ଆପଣଙ୍କ ୱର୍କ ପ୍ରୋଫାଇଲ୍ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ଦ୍ୱାରା ପରିଚାଳନା କରାଯାଉଛି। ପ୍ରୋଫାଇଲଟି <xliff:g id="APPLICATION">%2$s</xliff:g> ସହ ସଂଯୁକ୍ତ ଅଛି, ଯାହା ଇମେଲ୍, ଆପ୍ ଓ ୱେବସାଇଟ୍ ସମେତ ଆପଣଙ୍କ ନେଟୱର୍କ ଗତିବିଧିକୁ ନିରୀକ୍ଷଣ କରିପାରେ।\n\nଅଧିକ ସୂଚନା ପାଇଁ, ନିଜ ଆଡମିନଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ଆପଣଙ୍କ ୱର୍କ ପ୍ରୋଫାଇଲ୍ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ଦ୍ୱାରା ପରିଚାଳନା କରାଯାଉଛି। ପ୍ରୋଫାଇଲଟି <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ସହ ସଂଯୁକ୍ତ ଅଛି, ଯାହା ଇମେଲ୍, ଆପ୍ ଓ ୱେବସାଇଟ୍ ସମେତ ଆପଣଙ୍କ ନେଟୱର୍କ ଗତିବିଧିକୁ ନିରୀକ୍ଷଣ କରିପାରେ।\n\nଆପଣ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>ରେ ମଧ୍ୟ ସଂଯୁକ୍ତ, ଯାହା ଆପଣଙ୍କ ବ୍ୟକ୍ତିଗତ ନେଟୱର୍କ ଗତିବିଧିକୁ ନିରୀକ୍ଷଣ କରିପାରେ।"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g>ଙ୍କ ପାଇଁ ଅନଲକ୍ କରାଯାଇଛି"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ଚାଲୁଛି"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ଯେତେବେଳ ପର୍ଯ୍ୟନ୍ତ ଆପଣ ମାନୁଆଲୀ ଅନଲକ୍ କରିନାହାନ୍ତି, ସେତେବେଳ ପର୍ଯ୍ୟନ୍ତ ଡିଭାଇସ୍ ଲକ୍ ରହିବ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ବିଜ୍ଞପ୍ତିକୁ ଶୀଘ୍ର ପ୍ରାପ୍ତ କରନ୍ତୁ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ଅନଲକ୍ କରିବା ପୁର୍ବରୁ ସେମାନଙ୍କୁ ଦେଖନ୍ତୁ"</string> @@ -522,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ଛୋଟ କରନ୍ତୁ"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ସ୍ବଚାଳିତ କ୍ୟାପ୍ସନ୍ ମିଡିଆ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"କ୍ୟାପ୍ସନ୍ଗୁଡ଼ିିକର ଟିପ୍ ବନ୍ଦ କରନ୍ତୁ"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"ଆଉଟପୁଟ୍ ଡିଭାଇସ୍କୁ ଯାଆନ୍ତୁ"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"ସ୍କ୍ରିନକୁ ପିନ୍ କରାଯାଇଛି"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"ଆପଣ ଅନପିନ୍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଏହା ଦେଖାଉଥିବ। ଅନପିନ୍ କରିବାକୁ ସ୍ପର୍ଶ କରି ଧରିରଖନ୍ତୁ ଓ ଦେଖନ୍ତୁ।"</string> @@ -543,7 +548,7 @@ <string name="stream_music" msgid="9086982948697544342">"ମିଡିଆ"</string> <string name="stream_alarm" msgid="5209444229227197703">"ଆଲାର୍ମ"</string> <string name="stream_notification" msgid="2563720670905665031">"ବିଜ୍ଞପ୍ତି"</string> - <string name="stream_bluetooth_sco" msgid="2055645746402746292">"ବ୍ଲୁ-ଟୂଥ୍"</string> + <string name="stream_bluetooth_sco" msgid="2055645746402746292">"ବ୍ଲୁଟୂଥ୍"</string> <string name="stream_dtmf" msgid="2447177903892477915">"ଡୁଆଲ୍ ମଲ୍ଟି ଟୋନ୍ ଫ୍ରିକ୍ୱେନ୍ସୀ"</string> <string name="stream_accessibility" msgid="301136219144385106">"ଆକ୍ସେସିବିଲିଟୀ"</string> <string name="ring_toggle_title" msgid="3281244519428819576">"କଲ୍"</string> @@ -566,9 +571,9 @@ <string name="output_calls_title" msgid="8717692905017206161">"ଫୋନ୍ କଲ୍ ଆଉଟପୁଟ୍"</string> <string name="output_none_found" msgid="5544982839808921091">"କୌଣସି ଡିଭାଇସ୍ ମିଳିଲା ନାହିଁ"</string> <string name="output_none_found_service_off" msgid="8631969668659757069">"କୌଣସି ଡିଭାଇସ୍ ମିଳିଲା ନାହିଁ। <xliff:g id="SERVICE">%1$s</xliff:g> ଅନ୍ କରି ଦେଖନ୍ତୁ"</string> - <string name="output_service_bt" msgid="6224213415445509542">"ବ୍ଲୁ-ଟୂଥ୍"</string> + <string name="output_service_bt" msgid="6224213415445509542">"ବ୍ଲୁଟୂଥ୍"</string> <string name="output_service_wifi" msgid="3749735218931825054">"ୱାଇ-ଫାଇ"</string> - <string name="output_service_bt_wifi" msgid="4486837869988770896">"ବ୍ଲୁ-ଟୂଥ୍ ଓ ୱାଇ-ଫାଇ"</string> + <string name="output_service_bt_wifi" msgid="4486837869988770896">"ବ୍ଲୁଟୂଥ୍ ଓ ୱାଇ-ଫାଇ"</string> <string name="system_ui_tuner" msgid="708224127392452018">"ସିଷ୍ଟମ୍ UI ଟ୍ୟୁନର୍"</string> <string name="show_battery_percentage" msgid="5444136600512968798">"ଏମ୍ବେଡ୍ ହୋଇଥିବା ବ୍ୟାଟେରୀ ଶତକଡ଼ା ଦେଖାନ୍ତୁ"</string> <string name="show_battery_percentage_summary" msgid="3215025775576786037">"ଚାର୍ଜ ହେଉନଥିବାବେଳେ ଷ୍ଟାଟସ୍ ବାର୍ ଆଇକନ୍ ଭିତରେ ବ୍ୟାଟେରୀ ସ୍ତର ଶତକଡ଼ା ଦେଖାନ୍ତୁ"</string> @@ -604,8 +609,8 @@ <string name="qs_rearrange" msgid="8060918697551068765">"ଦ୍ରୁତ ସେଟିଙ୍ଗକୁ ପୁଣି ସଜାନ୍ତୁ"</string> <string name="show_brightness" msgid="6613930842805942519">"ଦ୍ରୁତ ସେଟିଙ୍ଗରେ ବ୍ରାଇଟନେସ୍ ଦେଖାନ୍ତୁ"</string> <string name="experimental" msgid="6198182315536726162">"ପରୀକ୍ଷାମୂଳକ"</string> - <string name="enable_bluetooth_title" msgid="5027037706500635269">"ବ୍ଲୁ-ଟୂଥ୍ ଅନ୍ କରିବେ?"</string> - <string name="enable_bluetooth_message" msgid="9106595990708985385">"ଆପଣଙ୍କ ଟାବଲେଟ୍ରେ କୀ’ବୋର୍ଡ ସଂଯୋଗ କରିବା ପାଇଁ ଆପଣଙ୍କୁ ପ୍ରଥମେ ବ୍ଲୁ-ଟୂଥ୍ ଅନ୍ କରିବାକୁ ହେବ।"</string> + <string name="enable_bluetooth_title" msgid="5027037706500635269">"ବ୍ଲୁଟୂଥ୍ ଅନ୍ କରିବେ?"</string> + <string name="enable_bluetooth_message" msgid="9106595990708985385">"ଆପଣଙ୍କ ଟାବଲେଟ୍ରେ କୀ’ବୋର୍ଡ ସଂଯୋଗ କରିବା ପାଇଁ ଆପଣଙ୍କୁ ପ୍ରଥମେ ବ୍ଲୁଟୂଥ୍ ଅନ୍ କରିବାକୁ ହେବ।"</string> <string name="enable_bluetooth_confirmation_ok" msgid="6258074250948309715">"ଅନ୍ କରନ୍ତୁ"</string> <string name="show_silently" msgid="6841966539811264192">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ନିରବରେ ଦେଖାନ୍ତୁ"</string> <string name="block" msgid="2734508760962682611">"ସମସ୍ତ ବିଜ୍ଞପ୍ତି ବ୍ଲକ୍ କରନ୍ତୁ"</string> @@ -760,7 +765,7 @@ <string name="left_icon" msgid="3096287125959387541">"ବାମ ଆଇକନ୍"</string> <string name="right_icon" msgid="3952104823293824311">"ଡାହାଣ ଆଇକନ୍"</string> <string name="drag_to_add_tiles" msgid="230586591689084925">"ଟାଇଲ୍ ଯୋଡ଼ିବା ପାଇଁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> - <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ଟାଇଲ୍ ପୁଣି ଆୟୋଜିତ କରିବାକୁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> + <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"ଟାଇଲ୍ ପୁଣି ସଜାଇବାକୁ ଦାବିଧରି ଟାଣନ୍ତୁ"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ବାହାର କରିବାକୁ ଏଠାକୁ ଡ୍ରାଗ୍ କରନ୍ତୁ"</string> <string name="drag_to_remove_disabled" msgid="2390968976638993382">"ଆପଣଙ୍କର ଅତିକମରେ 6ଟି ଟାଇଲ୍ ଆବଶ୍ୟକ"</string> <string name="qs_edit" msgid="2232596095725105230">"ଏଡିଟ୍ କରନ୍ତୁ"</string> @@ -863,7 +868,7 @@ <string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> — <xliff:g id="ID_2">%2$s</xliff:g>"</string> <string name="mobile_carrier_text_format" msgid="3241721038678469804">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="MOBILE_DATA_TYPE">%2$s</xliff:g>"</string> <string name="wifi_is_off" msgid="1838559392210456893">"ୱାଇ-ଫାଇ ଅଫ୍ ଅଛି"</string> - <string name="bt_is_off" msgid="2640685272289706392">"ବ୍ଲୁ-ଟୂଥ୍ ଅଫ୍ ଅଛି"</string> + <string name="bt_is_off" msgid="2640685272289706392">"ବ୍ଲୁଟୂଥ୍ ଅଫ୍ ଅଛି"</string> <string name="dnd_is_off" msgid="6167780215212497572">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅଫ୍ ଅଛି"</string> <string name="qs_dnd_prompt_auto_rule" msgid="862559028345233052">"ଏକ (<xliff:g id="ID_1">%s</xliff:g>) ନିୟମ ଦ୍ୱାରା \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ସ୍ୱଚାଳିତ ଭାବେ ଅନ୍ କରାଗଲା।"</string> <string name="qs_dnd_prompt_app" msgid="7978037419334156034">"ଏକ ଆପ୍ (<xliff:g id="ID_1">%s</xliff:g>) ଦ୍ୱାରା \"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅନ୍ କରାଗଲା।"</string> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index 018555c776fe..ee6916759142 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"ਚਿਹਰਾ ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ਭੇਜੋ"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"ਸੂਚਨਾਵਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string> - <string name="unlock_label" msgid="8779712358041029439">"ਅਣਲਾਕ ਕਰੋ"</string> <string name="phone_label" msgid="2320074140205331708">"ਫ਼ੋਨ ਖੋਲ੍ਹੋ"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ਅਵਾਜ਼ੀ ਸਹਾਇਕ ਖੋਲ੍ਹੋ"</string> <string name="camera_label" msgid="7261107956054836961">"ਕੈਮਰਾ ਖੋਲ੍ਹੋ"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"ਕੁਲ \n ਚੁੱਪੀ"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ਕੇਵਲ\nਤਰਜੀਹੀ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"ਕੇਵਲ\nਅਲਾਰਮ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"ਤੁਸੀਂ <xliff:g id="APPLICATION">%1$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਹੋ, ਜੋ ਈਮੇਲਾਂ, ਐਪਾਂ, ਅਤੇ ਵੈੱਬਸਾਈਟਾਂ ਸਮੇਤ ਤੁਹਾਡੀ ਨਿੱਜੀ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦੀ ਹੈ।"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"ਤੁਹਾਡੇ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਦਾ ਪ੍ਰਬੰਧਨ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਪ੍ਰੋਫਾਈਲ <xliff:g id="APPLICATION">%2$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਹੈ, ਜੋ ਈਮੇਲਾਂ, ਐਪਾਂ, ਅਤੇ ਵੈੱਬਸਾਈਟਾਂ ਸਮੇਤ ਤੁਹਾਡੀ ਕਾਰਜ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦੀ ਹੈ।\n\nਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਆਪਣੇ ਪ੍ਰਸ਼ਾਸਕ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ਤੁਹਾਡੇ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਦਾ ਪ੍ਰਬੰਧਨ <xliff:g id="ORGANIZATION">%1$s</xliff:g> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਪ੍ਰੋਫਾਈਲ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਜੋ ਈਮੇਲਾਂ, ਐਪਾਂ, ਅਤੇ ਵੈੱਬਸਾਈਟਾਂ ਸਮੇਤ ਤੁਹਾਡੀ ਕਾਰਜ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦੀ ਹੈ।\n\nਤੁਸੀਂ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ਨਾਲ ਵੀ ਕਨੈਕਟ ਹੋਂ, ਜੋ ਤੁਹਾਡੀ ਨਿੱਜੀ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦੀ ਹੈ।"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> ਲਈ ਅਣਲਾਕ ਕੀਤੀ ਗਈ"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ਚੱਲ ਰਿਹਾ ਹੈ"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ਡੀਵਾਈਸ ਲਾਕ ਰਹੇਗਾ ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਮੈਨੂਅਲੀ ਅਣਲਾਕ ਨਹੀਂ ਕਰਦੇ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"ਤੇਜ਼ੀ ਨਾਲ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰੋ"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ਅਣਲਾਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਹਨਾਂ ਨੂੰ ਦੇਖੋ"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ਨਸ਼ਟ ਕਰੋ"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"ਸਵੈਚਲਿਤ ਸੁਰਖੀ ਮੀਡੀਆ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ਬੰਦ ਸੁਰਖੀਆਂ ਦੇ ਨੁਕਤੇ"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"ਆਊਟਪੁੱਟ ਡੀਵਾਈਸ ਵਰਤੋ"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"ਸਕ੍ਰੀਨ ਪਿੰਨ ਕੀਤੀ"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"ਇਹ ਇਸ ਨੂੰ ਤਦ ਤੱਕ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਰੱਖਦਾ ਹੈ ਜਦ ਤੱਕ ਤੁਸੀਂ ਅਨਪਿੰਨ ਨਹੀਂ ਕਰਦੇ। ਅਨਪਿੰਨ ਕਰਨ ਲਈ \'ਪਿੱਛੇ\' ਅਤੇ \'ਰੂਪ-ਰੇਖਾ\' ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾ ਕੇ ਰੱਖੋ।"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 02c4a4f3f9e9..455c6974b01b 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Skanowanie twarzy"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Wyślij"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Zarządzanie powiadomieniami"</string> - <string name="unlock_label" msgid="8779712358041029439">"odblokuj"</string> <string name="phone_label" msgid="2320074140205331708">"otwórz telefon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"otwórz pomoc głosową"</string> <string name="camera_label" msgid="7261107956054836961">"otwórz aparat"</string> @@ -410,7 +409,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Całkowita\ncisza"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Tylko\npriorytetowe"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Tylko\nalarmy"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wolne ładowanie (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do końca)"</string> @@ -515,8 +515,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Masz połączenie z aplikacją <xliff:g id="APPLICATION">%1$s</xliff:g>, która może monitorować Twoją prywatną aktywność w sieci, w tym e-maile, aplikacje i strony internetowe."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Organizacja <xliff:g id="ORGANIZATION">%1$s</xliff:g> zarządza Twoim profilem do pracy. Profil jest połączony z aplikacją <xliff:g id="APPLICATION">%2$s</xliff:g>, która może monitorować Twoją aktywność w sieci, w tym e-maile, aplikacje i strony internetowe.\n\nSkontaktuj się z administratorem, aby uzyskać więcej informacji."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Organizacja <xliff:g id="ORGANIZATION">%1$s</xliff:g> zarządza Twoim profilem do pracy. Profil jest połączony z aplikacją <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, która może monitorować Twoją aktywność w sieci, w tym e-maile, aplikacje i strony internetowe.\n\nMasz też połączenie z aplikacją <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, która może monitorować Twoją osobistą aktywność w sieci."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Odblokowano dla: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Aplikacja <xliff:g id="TRUST_AGENT">%1$s</xliff:g> jest uruchomiona"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Urządzenie pozostanie zablokowane, aż odblokujesz je ręcznie"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Szybszy dostęp do powiadomień"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Zobacz powiadomienia, jeszcze zanim odblokujesz ekran"</string> @@ -529,6 +529,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Zwiń"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Autom. napisy do multimediów"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zamknij wskazówkę dotyczącą napisów"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Przełącz urządzenie wyjściowe"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran jest przypięty"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ekran będzie widoczny, dopóki go nie odepniesz. Aby to zrobić, kliknij i przytrzymaj Wstecz oraz Przegląd."</string> @@ -862,7 +868,7 @@ <string name="notification_channel_battery" msgid="5786118169182888462">"Bateria"</string> <string name="notification_channel_screenshot" msgid="6314080179230000938">"Zrzuty ekranu"</string> <string name="notification_channel_general" msgid="4525309436693914482">"Wiadomości"</string> - <string name="notification_channel_storage" msgid="3077205683020695313">"Pamięć wewnętrzna"</string> + <string name="notification_channel_storage" msgid="3077205683020695313">"Pamięć"</string> <string name="notification_channel_hints" msgid="7323870212489152689">"Wskazówki"</string> <string name="instant_apps" msgid="6647570248119804907">"Aplikacje błyskawiczne"</string> <string name="instant_apps_title" msgid="8738419517367449783">"Aplikacja <xliff:g id="APP">%1$s</xliff:g> działa"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 4f12f4f7d400..d6365c8061e1 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -39,7 +39,7 @@ <string name="battery_saver_start_action" msgid="8187820911065797519">"Ativar a Economia de bateria"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configurações"</string> <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string> - <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Girar tela automaticamente"</string> + <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Giro automático da tela"</string> <string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUDO"</string> <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificações"</string> @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Verificando rosto"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gerenciar notificações"</string> - <string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string> <string name="phone_label" msgid="2320074140205331708">"abrir telefone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"abrir assistência de voz"</string> <string name="camera_label" msgid="7261107956054836961">"abrir câmera"</string> @@ -306,8 +305,8 @@ <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="4930931771490695395">"Aparelhos auditivos"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="4551281899312150640">"Ativando…"</string> <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brilho"</string> - <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Girar automaticamente"</string> - <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Girar tela automaticamente"</string> + <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Giro automático"</string> + <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Giro automático da tela"</string> <string name="accessibility_quick_settings_rotation_value" msgid="8187398200140760213">"Modo <xliff:g id="ID_1">%s</xliff:g>"</string> <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotação bloqueada"</string> <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Retrato"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Somente\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Somente\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Você está conectado a <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorar sua atividade pessoal na rede, incluindo e-mails, apps e websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Seu perfil de trabalho é gerenciado por <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>, que pode monitorar sua atividade profissional de rede, incluindo e-mails, apps e websites.\n\nPara saber mais informações, entre em contato com seu administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Seu perfil de trabalho é gerenciado por <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pode monitorar sua atividade profissional de rede, incluindo e-mails, apps e websites.\n\nVocê também está conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode monitorar sua atividade pessoal de rede."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> está em execução"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"O dispositivo permanecerá bloqueado até que você o desbloqueie manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Receba notificações mais rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Veja-as antes de desbloquear"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Recolher"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Transcrição automática"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Dica de legenda"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Alterar dispositivo de saída"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"A tela está fixada"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ela é mantida à vista até que seja liberada. Toque em Voltar e em Visão geral e mantenha essas opções pressionadas para liberar."</string> @@ -889,7 +895,7 @@ <string name="auto_saver_enabled_text" msgid="874711029884777579">"O recurso Economia de bateria será ativado automaticamente depois que a bateria ficar abaixo de <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string> <string name="open_saver_setting_action" msgid="8314624730997322529">"Configurações"</string> <string name="auto_saver_okay_action" msgid="2701221740227683650">"Ok"</string> - <string name="heap_dump_tile_name" msgid="9141031328971226374">"Despejar pilha SysUI"</string> + <string name="heap_dump_tile_name" msgid="9141031328971226374">"Despejar heap SysUI"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"O app <xliff:g id="APP">%1$s</xliff:g> está usando <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplicativos estão usando <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 44446ad64950..2b490bdf3dde 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"A analisar o rosto…"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gerir notificações"</string> - <string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string> <string name="phone_label" msgid="2320074140205331708">"abrir telemóvel"</string> <string name="voice_assist_label" msgid="3956854378310019854">"abrir assistente de voz"</string> <string name="camera_label" msgid="7261107956054836961">"abrir câmara"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Apenas\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Apenas\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregamento sem fios (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até ficar completo)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Está ligado ao <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorizar a atividade da rede pessoal, incluindo emails, aplicações e Sites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"O seu perfil de trabalho é gerido pela <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está associado à aplicação <xliff:g id="APPLICATION">%2$s</xliff:g>, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Sites.\n\nContacte o gestor para obter mais informações."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"O seu perfil de trabalho é gerido pela <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está associado à aplicação <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pode monitorizar a atividade da rede de trabalho, incluindo emails, aplicações e Sites.\n\nTambém está associado à aplicação <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode monitorizar a atividade da rede pessoal."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> em execução"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"O dispositivo permanecerá bloqueado até ser desbloqueado manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Receber notificações mais rapidamente"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ver antes de desbloquear"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Reduzir"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Multim. legendas automáticas"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sugestão de legendas"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Mudar de dispositivo de saída"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"O ecrã está fixado"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Esta opção mantém o item visível até o soltar. Toque sem soltar em Anterior e em Vista geral para soltar."</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 4f12f4f7d400..d6365c8061e1 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -39,7 +39,7 @@ <string name="battery_saver_start_action" msgid="8187820911065797519">"Ativar a Economia de bateria"</string> <string name="status_bar_settings_settings_button" msgid="3023889916699270224">"Configurações"</string> <string name="status_bar_settings_wifi_button" msgid="1733928151698311923">"Wi-Fi"</string> - <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Girar tela automaticamente"</string> + <string name="status_bar_settings_auto_rotation" msgid="3790482541357798421">"Giro automático da tela"</string> <string name="status_bar_settings_mute_label" msgid="554682549917429396">"MUDO"</string> <string name="status_bar_settings_auto_brightness_label" msgid="511453614962324674">"AUTO"</string> <string name="status_bar_settings_notifications" msgid="397146176280905137">"Notificações"</string> @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Verificando rosto"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Enviar"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gerenciar notificações"</string> - <string name="unlock_label" msgid="8779712358041029439">"desbloquear"</string> <string name="phone_label" msgid="2320074140205331708">"abrir telefone"</string> <string name="voice_assist_label" msgid="3956854378310019854">"abrir assistência de voz"</string> <string name="camera_label" msgid="7261107956054836961">"abrir câmera"</string> @@ -306,8 +305,8 @@ <string name="quick_settings_bluetooth_secondary_label_hearing_aids" msgid="4930931771490695395">"Aparelhos auditivos"</string> <string name="quick_settings_bluetooth_secondary_label_transient" msgid="4551281899312150640">"Ativando…"</string> <string name="quick_settings_brightness_label" msgid="6968372297018755815">"Brilho"</string> - <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Girar automaticamente"</string> - <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Girar tela automaticamente"</string> + <string name="quick_settings_rotation_unlocked_label" msgid="7305323031808150099">"Giro automático"</string> + <string name="accessibility_quick_settings_rotation" msgid="4231661040698488779">"Giro automático da tela"</string> <string name="accessibility_quick_settings_rotation_value" msgid="8187398200140760213">"Modo <xliff:g id="ID_1">%s</xliff:g>"</string> <string name="quick_settings_rotation_locked_label" msgid="6359205706154282377">"Rotação bloqueada"</string> <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Retrato"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Somente\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Somente\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Você está conectado a <xliff:g id="APPLICATION">%1$s</xliff:g>, que pode monitorar sua atividade pessoal na rede, incluindo e-mails, apps e websites."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Seu perfil de trabalho é gerenciado por <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está conectado a <xliff:g id="APPLICATION">%2$s</xliff:g>, que pode monitorar sua atividade profissional de rede, incluindo e-mails, apps e websites.\n\nPara saber mais informações, entre em contato com seu administrador."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Seu perfil de trabalho é gerenciado por <xliff:g id="ORGANIZATION">%1$s</xliff:g>. O perfil está conectado a <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, que pode monitorar sua atividade profissional de rede, incluindo e-mails, apps e websites.\n\nVocê também está conectado a <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, que pode monitorar sua atividade pessoal de rede."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Desbloqueado para <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> está em execução"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"O dispositivo permanecerá bloqueado até que você o desbloqueie manualmente"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Receba notificações mais rápido"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Veja-as antes de desbloquear"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Recolher"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Transcrição automática"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Dica de legenda"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Alterar dispositivo de saída"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"A tela está fixada"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ela é mantida à vista até que seja liberada. Toque em Voltar e em Visão geral e mantenha essas opções pressionadas para liberar."</string> @@ -889,7 +895,7 @@ <string name="auto_saver_enabled_text" msgid="874711029884777579">"O recurso Economia de bateria será ativado automaticamente depois que a bateria ficar abaixo de <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string> <string name="open_saver_setting_action" msgid="8314624730997322529">"Configurações"</string> <string name="auto_saver_okay_action" msgid="2701221740227683650">"Ok"</string> - <string name="heap_dump_tile_name" msgid="9141031328971226374">"Despejar pilha SysUI"</string> + <string name="heap_dump_tile_name" msgid="9141031328971226374">"Despejar heap SysUI"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"O app <xliff:g id="APP">%1$s</xliff:g> está usando <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplicativos estão usando <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index b28a5d1642a6..9850c5e0b817 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Scanarea chipului"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Trimiteți"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Gestionați notificările"</string> - <string name="unlock_label" msgid="8779712358041029439">"deblocați"</string> <string name="phone_label" msgid="2320074140205331708">"deschideți telefonul"</string> <string name="voice_assist_label" msgid="3956854378310019854">"deschideți asistentul vocal"</string> <string name="camera_label" msgid="7261107956054836961">"deschideți camera foto"</string> @@ -406,7 +405,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Niciun\nsunet"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Numai\ncu prioritate"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Numai\nalarme"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Încărcare Wireless (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la încărcarea completă)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -510,8 +510,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"V-ați conectat la aplicația <xliff:g id="APPLICATION">%1$s</xliff:g>, care vă poate monitoriza activitatea personală în rețea, inclusiv e-mailurile, aplicațiile și site-urile accesate."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profilul de serviciu este gestionat de <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilul este conectat la <xliff:g id="APPLICATION">%2$s</xliff:g>, care vă poate monitoriza activitatea în rețeaua de serviciu, inclusiv e-mailurile, aplicațiile și site-urile accesate.\n\nPentru mai multe informații, contactați administratorul."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profilul de serviciu este gestionat de <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilul este conectat la <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, care vă poate monitoriza activitatea în rețeaua de serviciu, inclusiv e-mailurile, aplicațiile și site-urile accesate.\n\nDe asemenea, v-ați conectat la <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, care vă poate monitoriza activitatea în rețeaua personală."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Deblocat pentru <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> rulează"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Dispozitivul va rămâne blocat până când îl deblocați manual"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Obțineți notificări mai rapid"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Doresc să se afișeze înainte de deblocare"</string> @@ -524,6 +524,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Restrângeți"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Adăugați subtitrări automate la fișierele media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Sfat pentru subtitrări"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Comutați dispozitivul de ieșire"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ecranul este fixat"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Astfel rămâne afișat până anulați fixarea. Atingeți lung opțiunile Înapoi și Recente pentru a anula fixarea."</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index cbe6b5803328..45f6ce7ecd9c 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Сканирование лица"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Отправить"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Настроить уведомления"</string> - <string name="unlock_label" msgid="8779712358041029439">"Разблокировать."</string> <string name="phone_label" msgid="2320074140205331708">"Открыть телефон."</string> <string name="voice_assist_label" msgid="3956854378310019854">"включить аудиоподсказки"</string> <string name="camera_label" msgid="7261107956054836961">"Открыть камеру."</string> @@ -315,7 +314,7 @@ <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Вертикальная ориентация"</string> <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Горизонтальная ориентация"</string> <string name="quick_settings_ime_label" msgid="7073463064369468429">"Способ ввода"</string> - <string name="quick_settings_location_label" msgid="5011327048748762257">"Передача геоданных"</string> + <string name="quick_settings_location_label" msgid="5011327048748762257">"Геолокация"</string> <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Местоположение выкл."</string> <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Режим медиа"</string> <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string> @@ -408,7 +407,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Полная\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Только\nважные"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Только\nбудильник"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"Идет зарядка (<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="7767562163577492332">"Идет быстрая зарядка (<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="3769655133567307069">"Идет медленная зарядка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -513,8 +513,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Запущено приложение \"<xliff:g id="APPLICATION">%1$s</xliff:g>\", которое может отслеживать ваши действия в сети, включая работу с электронной почтой, приложениями и веб-сайтами."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Вашим рабочим профилем управляет организация \"<xliff:g id="ORGANIZATION">%1$s</xliff:g>\". Приложение \"<xliff:g id="APPLICATION">%2$s</xliff:g>\" может отслеживать ваши действия в корпоративной сети, включая работу с электронной почтой, приложениями и веб-сайтами.\n\nЧтобы получить подробную информацию, обратитесь к администратору."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Вашим рабочим профилем управляет организация \"<xliff:g id="ORGANIZATION">%1$s</xliff:g>\". Приложение \"<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>\" может отслеживать ваши действия в корпоративной сети, включая работу с электронной почтой, приложениями и веб-сайтами.\n\nТакже запущено приложение \"<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>\", которое может отслеживать ваши действия в сети, выполняемые в личном профиле."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Разблокировано для пользователя <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Агент \"<xliff:g id="TRUST_AGENT">%1$s</xliff:g>\" работает"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Устройство необходимо будет разблокировать вручную"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Быстрый доступ к уведомлениям"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Просматривайте уведомления на заблокированном экране."</string> @@ -527,6 +527,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Свернуть"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматические субтитры"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Подсказка \"Закрыть субтитры\""</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Сменить устройство аудиовыхода"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Блокировка в приложении включена"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Приложение останется активным, пока вы не отмените блокировку, нажав и удерживая кнопки \"Назад\" и \"Обзор\"."</string> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 0513219144c5..037a2cca3706 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"මුහුණ ස්කෑන් කිරීම"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"යවන්න"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"දැනුම්දීම් කළමනා කරන්න"</string> - <string name="unlock_label" msgid="8779712358041029439">"අඟුල අරින්න"</string> <string name="phone_label" msgid="2320074140205331708">"දුරකථනය විවෘත කරන්න"</string> <string name="voice_assist_label" msgid="3956854378310019854">"විවෘත හඬ සහාය"</string> <string name="camera_label" msgid="7261107956054836961">"කැමරාව විවෘත කරන්න"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"සම්පූර්ණ\nනිහඬතාව"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ප්රමුඛතා\nපමණි"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"ඇඟවීම්\nපමණි"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • සෙමින් ආරෝපණය වෙමින් (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> සම්පූර්ණ වන තෙක්)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"ඊ-තැපැල්, යෙදුම් සහ වෙබ් අඩවි ඇතුළු ඔබේ පෞද්ගලික ජාල ක්රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION">%1$s</xliff:g> වෙත ඔබ සම්බන්ධ වී ඇත."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"ඔබේ කාර්ය පැතිකඩ කළමනාකරණය කරන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> මගිනි. ඔබේ ඊ-තැපැල්, යෙදුම්, සහ වෙබ් අඩවි ඇතුළු, ඔබේ ජාල ක්රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION">%2$s</xliff:g> වෙත පැතිකඩ සම්බන්ධය.\n\nවැඩිදුර තොරතුරු සඳහා, ඔබගේ පරිපාලක අමතන්න."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"ඔබේ කාර්යාල පැතිකඩ කළමනාකරණය කරන්නේ <xliff:g id="ORGANIZATION">%1$s</xliff:g> විසිනි. ඊ-තැපැල්, යෙදුම් සහ වෙබ් අඩවි ඇතුළු ඔබේ කාර්යාල ජාල ක්රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, වෙත පැතිකඩ සම්බන්ධ වී ඇත.\n\nඔබ ඔබේ පෞද්ගලික ජාල ක්රියාකාරකම් නිරීක්ෂණය කළ හැකි, <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> වෙතද සම්බන්ධ වී ඇත."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> සඳහා අගුලු හරින ලදී"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ධාවනය වේ"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"ඔබ අතින් අගුළු අරින තුරු උපකරණය අගුළු වැටි තිබේ"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"දැනුම්දීම් ඉක්මනින් ලබාගන්න"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ඔබ අඟුළු හැරීමට කලින් ඒවා බලන්න"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"හකුළන්න"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"මාධ්ය ස්වයංක්රීයව සිරස්තල"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"සිරස්තල ඉඟිය"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"ප්රතිදාන උපාංගය මාරු කරන්න"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"තීරය අමුණන ලදි"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"මෙය ඔබ ගලවන තෙක් එය දසුන තුළ තබයි. ගැලවීමට දළ විශ්ලේෂණය ස්පර්ශ කර ආපසු අල්ලාගෙන සිටින්න."</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index d5463dd6e9f4..617caad5a127 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -67,7 +67,7 @@ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Povoliť USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"Priblížiť na celú obrazovku"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Na celú obrazovku"</string> - <string name="global_action_screenshot" msgid="8329831278085426283">"Snímka obrazovky"</string> + <string name="global_action_screenshot" msgid="8329831278085426283">"Snímka"</string> <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Prebieha ukladanie snímky obrazovky..."</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"Prebieha ukladanie snímky obrazovky..."</string> <string name="screenshot_saved_title" msgid="5637073968117370753">"Snímka obrazovky bola uložená"</string> @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Skenovanie tváre"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Odoslať"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Spravovať upozornenia"</string> - <string name="unlock_label" msgid="8779712358041029439">"odomknúť"</string> <string name="phone_label" msgid="2320074140205331708">"otvoriť telefón"</string> <string name="voice_assist_label" msgid="3956854378310019854">"otvoriť hlasového asistenta"</string> <string name="camera_label" msgid="7261107956054836961">"spustiť fotoaparát"</string> @@ -408,7 +407,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Úplné\nticho"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Iba\nprioritné"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Iba\nbudíky"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Prebieha bezdrôtové nabíjanie (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -513,8 +513,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Ste pripojený/-á k aplikácii <xliff:g id="APPLICATION">%1$s</xliff:g>, ktorá môže sledovať vašu osobnú aktivitu v sieti vrátane e-mailových správ, aplikácií a webových stránok."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Váš pracovný profil spravuje organizácia <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Je pripojený k aplikácii <xliff:g id="APPLICATION">%2$s</xliff:g>, ktorá môže sledovať vašu pracovnú aktivitu v sieti vrátane správ, aplikácií a webových stránok.\n\nĎalšie informácie vám poskytne správca."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Váš pracovný profil spravuje organizácia <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Je pripojený k aplikácii <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ktorá môže sledovať vašu pracovnú aktivitu v sieti vrátane správ, aplikácií a webových stránok.\n\nPripojili ste sa k aplikácii <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ktorá môže sledovať vašu osobnú aktivitu v sieti."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Odomknuté pre používateľa <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Agent <xliff:g id="TRUST_AGENT">%1$s</xliff:g> je spustený"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Zariadenie zostane uzamknuté, dokým ho ručne neodomknete."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Získavať upozornenia rýchlejšie"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Zobraziť pred odomknutím"</string> @@ -527,6 +527,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Zbaliť"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Automaticky pridávať titulky k médiám"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zavrieť tip pre titulky"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Prepnúť výstupné zariadenie"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Obrazovka je pripnutá"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Obsah bude pripnutý v zobrazení, dokým ho neuvoľníte. Uvoľníte ho stlačením a podržaním tlačidiel Späť a Prehľad."</string> @@ -760,7 +766,7 @@ </string-array> <string name="menu_ime" msgid="4998010205321292416">"Prepínač klávesnice"</string> <string name="save" msgid="2311877285724540644">"Uložiť"</string> - <string name="reset" msgid="2448168080964209908">"Obnoviť"</string> + <string name="reset" msgid="2448168080964209908">"Resetovať"</string> <string name="adjust_button_width" msgid="6138616087197632947">"Upraviť šírku tlačidla"</string> <string name="clipboard" msgid="1313879395099896312">"Schránka"</string> <string name="accessibility_key" msgid="5701989859305675896">"Vlastné tlačidlo navigácie"</string> @@ -899,7 +905,7 @@ <string name="auto_saver_enabled_text" msgid="874711029884777579">"Keď batéria klesne pod <xliff:g id="PERCENTAGE">%d</xliff:g> %%, automaticky sa aktivujte Šetrič batérie."</string> <string name="open_saver_setting_action" msgid="8314624730997322529">"Nastavenia"</string> <string name="auto_saver_okay_action" msgid="2701221740227683650">"Dobre"</string> - <string name="heap_dump_tile_name" msgid="9141031328971226374">"Výpis haldy SysUI"</string> + <string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"<xliff:g id="APP">%1$s</xliff:g> používa zoznam <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Aplikácie používajú zoznam <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index f06661fdd706..165ac89e7e59 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Optično branje obraza"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Pošlji"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Upravljanje obvestil"</string> - <string name="unlock_label" msgid="8779712358041029439">"odkleni"</string> <string name="phone_label" msgid="2320074140205331708">"odpri telefon"</string> <string name="voice_assist_label" msgid="3956854378310019854">"odpri glasovnega pomočnika"</string> <string name="camera_label" msgid="7261107956054836961">"odpri fotoaparat"</string> @@ -408,7 +407,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Popolna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Samo\nprednostno"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • počasno polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> @@ -513,8 +513,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Povezani ste z aplikacijo <xliff:g id="APPLICATION">%1$s</xliff:g>, ki lahko nadzira vašo osebno omrežno dejavnost, vključno z e-pošto, aplikacijami in spletnimi mesti."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Delovni profil upravlja organizacija <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan z aplikacijo <xliff:g id="APPLICATION">%2$s</xliff:g>, ki lahko nadzira vašo delovno omrežno dejavnost, vključno z e-pošto, aplikacijami in spletnimi mesti.\n\nZa več informacij se obrnite na skrbnika."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Delovni profil upravlja organizacija <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profil je povezan z aplikacijo <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ki lahko nadzira vašo delovno omrežno dejavnost, vključno z e-pošto, aplikacijami in spletnimi mesti.\n\nPovezani ste tudi z aplikacijo <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ki lahko nadzira vašo osebno omrežno dejavnost."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Odklenjeno za uporabnika <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> se izvaja"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Naprava bo ostala zaklenjena, dokler je ročno ne odklenete."</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Hitrejše prejemanje obvestil"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Oglejte si jih pred odklepanjem"</string> @@ -527,6 +527,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Strni"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Samod. napisi predstavnosti"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Zapiranje namiga za podnapise"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Izbira druge izhodne naprave"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Zaslon je pripet"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"S tem ostane zaslon viden, dokler ga ne odpnete. Če ga želite odpeti, hkrati pridržite gumba za nazaj in pregled."</string> @@ -866,7 +872,7 @@ <string name="instant_apps_title" msgid="8738419517367449783">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> se izvaja"</string> <string name="instant_apps_message" msgid="1183313016396018086">"Aplikacija je odprta brez namestitve."</string> <string name="instant_apps_message_with_help" msgid="6179830437630729747">"Aplikacija je odprta brez namestitve. Dotaknite se, če želite izvedeti več."</string> - <string name="app_info" msgid="6856026610594615344">"Podatki o aplikaciji"</string> + <string name="app_info" msgid="6856026610594615344">"Podatki o aplikacijah"</string> <string name="go_to_web" msgid="2650669128861626071">"Odpri brskalnik"</string> <string name="mobile_data" msgid="7094582042819250762">"Mobilni podatki"</string> <string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index 54d294cef445..f5a28424896d 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Po skanon fytyrën"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Dërgo"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Menaxho njoftimet"</string> - <string name="unlock_label" msgid="8779712358041029439">"shkyç"</string> <string name="phone_label" msgid="2320074140205331708">"hap telefonin"</string> <string name="voice_assist_label" msgid="3956854378310019854">"hap ndihmën zanore"</string> <string name="camera_label" msgid="7261107956054836961">"hap kamerën"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Heshtje\ne plotë"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Vetëm\nme prioritet"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Vetëm\nalarmet"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet me valë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Je i lidhur me aplikacionin <xliff:g id="APPLICATION">%1$s</xliff:g>, i cili mund të monitorojë aktivitetin tënd personal në rrjet, përfshirë email-et, aplikacionet dhe sajtet e uebit."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Profili yt i punës menaxhohet nga <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profili është i lidhur me <xliff:g id="APPLICATION">%2$s</xliff:g>, i cili mund të monitorojë aktivitetin tënd të punës në rrjet, duke përfshirë mail-et, aplikacionet dhe sajtet e uebit.\n\nPër më shumë informacione, kontakto me administratorin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Profili yt i punës menaxhohet nga <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profili është i lidhur me <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, i cili mund të monitorojë aktivitetin tënd të punës në rrjet, duke përfshirë mail-et, aplikacionet dhe sajtet e uebit.\n\nJe lidhur gjithashtu edhe me <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, i cili mund të monitorojë aktivitetin tënd personal në rrjet."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Shkyçur për <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> po ekzekutohet"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Pajisje do të qëndrojë e kyçur derisa ta shkyçësh manualisht"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Merr njoftime më shpejt"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Shikoji para se t\'i shkyçësh"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Mbylle"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Media me titra automatike"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Mbylle këshillën për nëntitullin"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Ndërro pajisjen e daljes"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekrani u gozhdua"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Kjo e ruan në pamje deri sa ta heqësh nga gozhdimi. Prek dhe mbaj të shtypur \"Prapa\" dhe \"Përmbledhje\" për ta hequr nga gozhdimi."</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index e144f7458886..e0b217f7dffe 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Скенирање лица"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Пошаљи"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Управљајте обавештењима"</string> - <string name="unlock_label" msgid="8779712358041029439">"откључај"</string> <string name="phone_label" msgid="2320074140205331708">"отвори телефон"</string> <string name="voice_assist_label" msgid="3956854378310019854">"отвори гласовну помоћ"</string> <string name="camera_label" msgid="7261107956054836961">"отвори камеру"</string> @@ -406,7 +405,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Потпуна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Само\nприорит. прекиди"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Само\nаларми"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Споро се пуни (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -510,8 +510,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Повезани сте са апликацијом <xliff:g id="APPLICATION">%1$s</xliff:g>, која може да надгледа активности на личној мрежи, укључујући имејлове, апликације и веб-сајтове."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Профилом за Work управља <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Повезан је са апликацијом <xliff:g id="APPLICATION">%2$s</xliff:g>, која може да надгледа активности на пословној мрежи, укључујући имејлове, апликације и веб-сајтове.\n\nВише информација потражите од администратора."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Профилом за Work управља <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Повезан је са апликацијом <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, која може да надгледа активности на пословној мрежи, укључујући имејлове, апликације и веб-сајтове.\n\nПовезани сте и са апликацијом <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, која може да надгледа активности на личној мрежи."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Откључано за корисника <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Функција <xliff:g id="TRUST_AGENT">%1$s</xliff:g> је покренута"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Уређај ће остати закључан док га не откључате ручно"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Брже добијајте обавештења"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Прегледајте их пре откључавања"</string> @@ -524,6 +524,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Скупи"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Аутоматски титл за медије"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Опис титла"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Промените излазни уређај"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Екран је закачен"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"На овај начин се ово стално приказује док га не откачите. Додирните и задржите Назад и Преглед да бисте га откачили."</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 4bb95cd48521..b65a190129de 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Registrerar ansikte"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Skicka"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Hantera aviseringar"</string> - <string name="unlock_label" msgid="8779712358041029439">"lås upp"</string> <string name="phone_label" msgid="2320074140205331708">"öppna mobilen"</string> <string name="voice_assist_label" msgid="3956854378310019854">"öppna röstassistenten"</string> <string name="camera_label" msgid="7261107956054836961">"öppna kameran"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Helt\ntyst"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Endast\nprioriterade"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Endast\nalarm"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas långsamt (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Du är ansluten till <xliff:g id="APPLICATION">%1$s</xliff:g> som kan övervaka din privata aktivitet på nätverket, inklusive e-postmeddelanden, appar och webbplatser."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Jobbprofilen hanteras av <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen är ansluten till <xliff:g id="APPLICATION">%2$s</xliff:g> som kan bevaka din nätverksaktivitet, exempelvis e-post, appar och webbplatser.\n\nKontakta administratören om du vill veta mer."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Jobbprofilen hanteras av <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Profilen är ansluten till <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> som kan bevaka din nätverksaktivitet på jobbet, exempelvis e-post, appar och webbplatser.\n\nDu är även ansluten till <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> som kan bevaka din privata nätverksaktivitet."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Upplåst för <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> körs"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Enheten förblir låst tills du låser upp den manuellt"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Få aviseringar snabbare"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Visa dem innan du låser upp"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Komprimera"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Texta media automatiskt"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Textningstips"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Byt enhet för utdata"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Skärmen har fästs"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Skärmen visas tills du lossar den. Tryck länge på Tillbaka och Översikt om du vill lossa skärmen."</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 5c1c561eacb7..39f4b0d38d82 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Inachanganua uso"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Tuma"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Dhibiti arifa"</string> - <string name="unlock_label" msgid="8779712358041029439">"fungua"</string> <string name="phone_label" msgid="2320074140205331708">"fungua simu"</string> <string name="voice_assist_label" msgid="3956854378310019854">"fungua mapendekezo ya sauti"</string> <string name="camera_label" msgid="7261107956054836961">"fungua kamera"</string> @@ -250,8 +249,8 @@ <string name="accessibility_quick_settings_flashlight_changed_on" msgid="6531793301533894686">"Tochi imewashwa."</string> <string name="accessibility_quick_settings_color_inversion_changed_off" msgid="4406577213290173911">"Ugeuzaji rangi umezimwa."</string> <string name="accessibility_quick_settings_color_inversion_changed_on" msgid="6897462320184911126">"Ugeuzaji rangi umewashwa."</string> - <string name="accessibility_quick_settings_hotspot_changed_off" msgid="5004708003447561394">"Mtandao-hewa unaoweza kuhamishika umezimwa."</string> - <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2890951609226476206">"Mtandao-hewa unaoweza kuhamishika umewashwa."</string> + <string name="accessibility_quick_settings_hotspot_changed_off" msgid="5004708003447561394">"Mtandaopepe unahamishika umezimwa."</string> + <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2890951609226476206">"Mtandaopepe unaohamishika umewashwa."</string> <string name="accessibility_casting_turned_off" msgid="1430668982271976172">"Utumaji wa skrini umesitishwa."</string> <string name="accessibility_quick_settings_work_mode_off" msgid="7045417396436552890">"Hali ya kazi imezimwa."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="7650588553988014341">"Hali ya kazi imewashwa."</string> @@ -313,7 +312,7 @@ <string name="quick_settings_rotation_locked_portrait_label" msgid="5102691921442135053">"Wima"</string> <string name="quick_settings_rotation_locked_landscape_label" msgid="8553157770061178719">"Mlalo"</string> <string name="quick_settings_ime_label" msgid="7073463064369468429">"Mbinu ya uingizaji"</string> - <string name="quick_settings_location_label" msgid="5011327048748762257">"Kutambua Eneo"</string> + <string name="quick_settings_location_label" msgid="5011327048748762257">"Kutambua Mahali"</string> <string name="quick_settings_location_off_label" msgid="7464544086507331459">"Kitambua eneo kimezimwa"</string> <string name="quick_settings_media_device_label" msgid="1302906836372603762">"Kifaa cha faili"</string> <string name="quick_settings_rssi_label" msgid="7725671335550695589">"RSSI"</string> @@ -346,7 +345,7 @@ <string name="quick_settings_connected_battery_level" msgid="4136051440381328892">"Imeunganishwa, kiwango cha betri ni <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string> <string name="quick_settings_connecting" msgid="47623027419264404">"Inaunganisha..."</string> <string name="quick_settings_tethering_label" msgid="7153452060448575549">"Kusambaza mtandao"</string> - <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Mtandao-hewa"</string> + <string name="quick_settings_hotspot_label" msgid="6046917934974004879">"Mtandaopepe"</string> <string name="quick_settings_hotspot_secondary_label_transient" msgid="8010579363691405477">"Inawasha..."</string> <string name="quick_settings_hotspot_secondary_label_data_saver_enabled" msgid="5672131949987422420">"Kiokoa Data kimewashwa"</string> <plurals name="quick_settings_hotspot_secondary_label_num_devices" formatted="false" msgid="2324635800672199428"> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Kimya\nkabisa"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Kipaumbele\npekee"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Kengele\npekee"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji pole pole (Imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ili ijae)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Umeunganishwa kwenye <xliff:g id="APPLICATION">%1$s</xliff:g>, ambayo inaweza kufuatilia shughuli za mtandao wako, ikiwa ni pamoja na barua pepe, programu na tovuti."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Wasifu wako wa kazini unasimamiwa na <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Wasifu umeunganishwa kwenye <xliff:g id="APPLICATION">%2$s</xliff:g>, ambayo inaweza kufuatilia shughuli za mtandao wako wa kazini, ikiwa ni pamoja na barua pepe, programu na tovuti.\n\n Wasiliana na msimamizi wako kwa maelezo zaidi."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Wasifu wako wa kazini unasimamiwa na <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Wasifu umeunganishwa kwenye <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ambayo inaweza kufuatilia shughuli zako kwenye mtandao wa kazini, ikiwa ni pamoja na barua pepe, programu na tovuti.\n\n Umeunganishwa pia kwenye <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ambayo inaweza kufuatilia shughuli zako kwenye mtandao wa binafsi."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Imefunguliwa kwa ajili ya <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> inatumika"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Kifaa kitaendelea kuwa katika hali ya kufungwa hadi utakapokifungua mwenyewe"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Pata arifa kwa haraka"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Zitazame kabla hujafungua"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Kunja"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Wekea maudhui manukuu kiotomatiki"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Funga kidokezo cha manukuu"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Badilisha kifaa cha kutoa sauti"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Skrini imebandikwa"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Hali hii huifanya ionekane hadi utakapoibandua. Gusa na ushikilie kipengele cha Nyuma na Muhtasari ili ubandue."</string> @@ -588,7 +594,7 @@ <string name="alarm_template" msgid="3980063409350522735">"saa <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="alarm_template_far" msgid="4242179982586714810">"siku ya <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="accessibility_quick_settings_detail" msgid="2579369091672902101">"Mipangilio ya Haraka, <xliff:g id="TITLE">%s</xliff:g>."</string> - <string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"Mtandao-hewa"</string> + <string name="accessibility_status_bar_hotspot" msgid="4099381329956402865">"Mtandaopepe"</string> <string name="accessibility_managed_profile" msgid="6613641363112584120">"Wasifu wa kazini"</string> <string name="tuner_warning_title" msgid="7094689930793031682">"Kinafurahisha kwa baadhi ya watu lakini si wote"</string> <string name="tuner_warning" msgid="8730648121973575701">"Kirekebishi cha kiolesura cha mfumo kinakupa njia zaidi za kugeuza na kubadilisha kiolesura cha Android ili kikufae. Vipengele hivi vya majaribio vinaweza kubadilika, kuharibika au kupotea katika matoleo ya siku zijazo. Endelea kwa uangalifu."</string> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index df7f696288c8..09bce10530df 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"முகத்தை ஸ்கேன் செய்கிறது"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"அனுப்பு"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"அறிவிப்புகளை நிர்வகிக்கும் பட்டன்"</string> - <string name="unlock_label" msgid="8779712358041029439">"திற"</string> <string name="phone_label" msgid="2320074140205331708">"ஃபோனைத் திற"</string> <string name="voice_assist_label" msgid="3956854378310019854">"குரல் உதவியைத் திற"</string> <string name="camera_label" msgid="7261107956054836961">"கேமராவைத் திற"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"அறிவிப்புகள்\nவேண்டாம்"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"முன்னுரிமைகள்\nமட்டும்"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"அலாரங்கள்\nமட்டும்"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • மெதுவாகச் சார்ஜாகிறது (முழு சார்ஜ்: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"<xliff:g id="APPLICATION">%1$s</xliff:g> உடன் இணைக்கப்பட்டுள்ளீர்கள். இந்தப் பயன்பாட்டால் மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"உங்கள் பணிக் கணக்கை <xliff:g id="ORGANIZATION">%1$s</xliff:g> நிர்வகிக்கிறது. மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION">%2$s</xliff:g> உடன் அது இணைக்கப்பட்டுள்ளது.\n\nமேலும் தகவலுக்கு, நிர்வாகியைத் தொடர்புகொள்ளவும்."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"உங்கள் பணிக் கணக்கை <xliff:g id="ORGANIZATION">%1$s</xliff:g> நிர்வகிக்கிறது. மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> உடன் அது இணைக்கப்பட்டுள்ளது.\n\nஉங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> உடனும் இணைக்கப்பட்டுள்ளீர்கள்."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g>க்குத் திறக்கப்பட்டது"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> இயங்குகிறது"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"நீங்கள் கைமுறையாகத் திறக்கும் வரை, சாதனம் பூட்டப்பட்டிருக்கும்"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"விரைவாக அறிவிப்புகளைப் பெறுதல்"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"திறக்கும் முன் அவற்றைப் பார்க்கவும்"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"சுருக்கு"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"வசன உரைகளைத் தானாக எழுதும்"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"விரிவான வசனங்களுக்கான உதவிக்குறிப்பு"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"வெளியீட்டுச் சாதனத்தை மாற்றுதல்"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"திரை பொருத்தப்பட்டது"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"பொருத்தியதை அகற்றும் வரை இதைக் காட்சியில் வைக்கும். அகற்ற, முந்தையது மற்றும் மேலோட்டப் பார்வையைத் தொட்டுப் பிடிக்கவும்."</string> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 85893e725e2a..8cd9e5490f0d 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"ముఖాన్ని స్కాన్ చేస్తోంది"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"పంపు"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"నోటిఫికేషన్లను నిర్వహించండి"</string> - <string name="unlock_label" msgid="8779712358041029439">"అన్లాక్ చేయి"</string> <string name="phone_label" msgid="2320074140205331708">"ఫోన్ను తెరువు"</string> <string name="voice_assist_label" msgid="3956854378310019854">"వాయిస్ అసిస్టెంట్ను తెరువు"</string> <string name="camera_label" msgid="7261107956054836961">"కెమెరాను తెరువు"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"మొత్తం\nనిశ్శబ్దం"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ప్రాధాన్యమైనవి\nమాత్రమే"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"అలారాలు\nమాత్రమే"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • నెమ్మదిగా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"మీరు <xliff:g id="APPLICATION">%1$s</xliff:g>కి కనెక్ట్ చేయబడ్డారు, ఇది ఇమెయిల్లు, అనువర్తనాలు మరియు వెబ్సైట్లతో సహా మీ వ్యక్తిగత నెట్వర్క్ కార్యాచరణను పర్యవేక్షించగలదు."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"మీ కార్యాలయ ప్రొఫైల్ <xliff:g id="ORGANIZATION">%1$s</xliff:g> నిర్వహణలో ఉంది. ఇమెయిల్లు, అనువర్తనాలు మరియు వెబ్సైట్లతో సహా మీ కార్యాలయ నెట్వర్క్ కార్యాచరణను పర్యవేక్షించగల <xliff:g id="APPLICATION">%2$s</xliff:g>కి ప్రొఫైల్ కనెక్ట్ చేయబడింది.\n\nమరింత సమాచారం కోసం, మీ నిర్వాహకులను సంప్రదించండి."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"మీ కార్యాలయ ప్రొఫైల్ <xliff:g id="ORGANIZATION">%1$s</xliff:g> నిర్వహణలో ఉంది. ఇమెయిల్లు, అనువర్తనాలు మరియు వెబ్సైట్లతో సహా మీ కార్యాలయ నెట్వర్క్ కార్యాచరణను పర్యవేక్షించగల <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>కి ప్రొఫైల్ కనెక్ట్ చేయబడింది.\n\nమీ వ్యక్తిగత నెట్వర్క్ కార్యాచరణను పర్యవేక్షించగల <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>కి కూడా మీరు కనెక్ట్ చేయబడ్డారు."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> కోసం అన్లాక్ చేయబడింది"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> అమలులో ఉంది"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"మీరు మాన్యువల్గా అన్లాక్ చేస్తే మినహా పరికరం లాక్ చేయబడి ఉంటుంది"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"నోటిఫికేషన్లను వేగంగా పొందండి"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"వీటిని మీరు అన్లాక్ చేయకముందే చూడండి"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"కుదించండి"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"మీడియాకు ఆటోమేటిక్ శీర్షికలు"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"ఉపశీర్షికల చిట్కాను మూసివేయండి"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"పరికరం అవుట్పుట్ని మార్చండి"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"స్క్రీన్ పిన్ చేయబడింది"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"దీని వలన మీరు అన్పిన్ చేసే వరకు ఇది వీక్షణలో ఉంచబడుతుంది. అన్పిన్ చేయడానికి వెనుకకు మరియు స్థూలదృష్టి తాకి & అలాగే పట్టుకోండి."</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 999348f12b4c..e433edcb8d0b 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"กำลังสแกนใบหน้า"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"ส่ง"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"จัดการการแจ้งเตือน"</string> - <string name="unlock_label" msgid="8779712358041029439">"ปลดล็อก"</string> <string name="phone_label" msgid="2320074140205331708">"เปิดโทรศัพท์"</string> <string name="voice_assist_label" msgid="3956854378310019854">"เปิดตัวช่วยเสียง"</string> <string name="camera_label" msgid="7261107956054836961">"เปิดกล้อง"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"ปิดเสียง\nทั้งหมด"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"เฉพาะเรื่อง\nสำคัญ"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"เฉพาะปลุก\nเท่านั้น"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จอย่างช้าๆ (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"คุณเชื่อมต่อกับ <xliff:g id="APPLICATION">%1$s</xliff:g> ซึ่งสามารถตรวจสอบกิจกรรมในเครือข่ายส่วนตัวของคุณ รวมถึงอีเมล แอป และเว็บไซต์ได้"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> เป็นผู้จัดการโปรไฟล์งานของคุณ โปรไฟล์ดังกล่าวเชื่อมต่ออยู่กับ <xliff:g id="APPLICATION">%2$s</xliff:g> ซึ่งสามารถตรวจสอบกิจกรรมในเครือข่ายของคุณ รวมถึงอีเมล แอป และเว็บไซต์\n\nโปรดติดต่อผู้ดูแลระบบของคุณสำหรับข้อมูลเพิ่มเติม"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"<xliff:g id="ORGANIZATION">%1$s</xliff:g> เป็นผู้จัดการโปรไฟล์งานของคุณ โปรไฟล์ดังกล่าวเชื่อมต่ออยู่กับ <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ซึ่งสามารถตรวจสอบกิจกรรมในเครือข่ายของคุณ รวมถึงอีเมล แอป และเว็บไซต์\n\nคุณยังเชื่อมต่ออยู่กับ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ด้วย ซึ่งสามารถตรวจสอบกิจกรรมในเครือข่ายส่วนตัวของคุณ"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"ปลดล็อกสำหรับ <xliff:g id="USER_NAME">%1$s</xliff:g> แล้ว"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> กำลังทำงาน"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"อุปกรณ์จะล็อกจนกว่าคุณจะปลดล็อกด้วยตนเอง"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"รับการแจ้งเตือนเร็วขึ้น"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"ดูก่อนปลดล็อก"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"ยุบ"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"แสดงคำบรรยายสื่อโดยอัตโนมัติ"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"เคล็ดลับเกี่ยวกับคำอธิบายภาพ"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"เปลี่ยนอุปกรณ์เอาต์พุต"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"ตรึงหน้าจอแล้ว"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"การดำเนินการนี้จะแสดงหน้าจอนี้ไว้เสมอจนกว่าคุณจะเลิกตรึง แตะ \"กลับ\" และ \"ภาพรวม\" ค้างไว้เพื่อเลิกตรึง"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 608f439c394e..a7a63d5cc0da 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Sina-scan ang mukha"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Ipadala"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Pamahalaan ang mga notification"</string> - <string name="unlock_label" msgid="8779712358041029439">"i-unlock"</string> <string name="phone_label" msgid="2320074140205331708">"buksan ang telepono"</string> <string name="voice_assist_label" msgid="3956854378310019854">"buksan ang voice assist"</string> <string name="camera_label" msgid="7261107956054836961">"buksan ang camera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Ganap na\nkatahimikan"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Priyoridad\nlang"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Mga alarm\nlang"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Nakakonekta ka sa <xliff:g id="APPLICATION">%1$s</xliff:g>, na maaaring sumubaybay sa aktibidad sa iyong personal na network, kabilang ang mga email, app at website."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Pinamamahalaan ng <xliff:g id="ORGANIZATION">%1$s</xliff:g> ang iyong profile sa trabaho. Nakakonekta ang profile sa <xliff:g id="APPLICATION">%2$s</xliff:g>, na maaaring sumubaybay sa aktibidad sa iyong network sa trabaho, kasama ang mga email, app, at website.\n\nPara sa higit pang impormasyon, makipag-ugnayan sa iyong admin."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Pinamamahalaan ng <xliff:g id="ORGANIZATION">%1$s</xliff:g> ang iyong profile sa trabaho. Nakakonekta ang profile sa <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, na maaaring sumubaybay sa aktibidad sa iyong network sa trabaho, kasama ang mga email, app, at website.\n\nNakakonekta ka rin sa <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, na maaaring sumubaybay sa aktibidad sa iyong personal na network."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Na-unlock para kay <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"Gumagana ang <xliff:g id="TRUST_AGENT">%1$s</xliff:g>"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Mananatiling naka-lock ang device hanggang sa manual mong i-unlock"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Kunin ang notification nang mas mabilis"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Tingnan ang mga ito bago ka mag-unlock"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"I-collapse"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"I-autocaption ang media"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Isara ang tip sa mga caption"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Lumipat ng output device"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Naka-pin ang screen"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Pinapanatili nitong nakikita ito hanggang sa mag-unpin ka. Pindutin nang matagal ang Bumalik at Overview upang mag-unpin."</string> @@ -759,7 +765,7 @@ <string name="left_icon" msgid="3096287125959387541">"Icon ng kaliwa"</string> <string name="right_icon" msgid="3952104823293824311">"Icon ng kanan"</string> <string name="drag_to_add_tiles" msgid="230586591689084925">"Pindutin nang matagal at i-drag para magdagdag ng mga tile"</string> - <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Pindutin nang matagal at i-drag para ayusing muli ang tile"</string> + <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Pindutin nang matagal at i-drag para ayusin ulit ang tile"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"I-drag dito upang alisin"</string> <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Kailangan mo ng hindi bababa sa 6 na tile"</string> <string name="qs_edit" msgid="2232596095725105230">"I-edit"</string> @@ -889,7 +895,7 @@ <string name="auto_saver_enabled_text" msgid="874711029884777579">"Awtomatikong mao-on ang Pangtipid sa Baterya kapag mas mababa na sa <xliff:g id="PERCENTAGE">%d</xliff:g>%% ang baterya."</string> <string name="open_saver_setting_action" msgid="8314624730997322529">"Mga Setting"</string> <string name="auto_saver_okay_action" msgid="2701221740227683650">"OK"</string> - <string name="heap_dump_tile_name" msgid="9141031328971226374">"Itapon SysUI Heap"</string> + <string name="heap_dump_tile_name" msgid="9141031328971226374">"Dump SysUI Heap"</string> <string name="ongoing_privacy_chip_content_single_app" msgid="4479560741898690064">"Ginagamit ng <xliff:g id="APP">%1$s</xliff:g> ang iyong <xliff:g id="TYPES_LIST">%2$s</xliff:g>."</string> <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8640691753867990511">"Ginagamit ng mga application ang iyong <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="6854860652480837439">", "</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 1876c2b85460..1b8cfde8c6be 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Yüz taranıyor"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Gönder"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Bildirimleri yönet"</string> - <string name="unlock_label" msgid="8779712358041029439">"kilidi aç"</string> <string name="phone_label" msgid="2320074140205331708">"telefonu aç"</string> <string name="voice_assist_label" msgid="3956854378310019854">"sesli yardımı aç"</string> <string name="camera_label" msgid="7261107956054836961">"kamerayı aç"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Tamamen\nsessiz"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Yalnızca\nöncelik"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Yalnızca\nalarmlar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kablosuz Şarj Oluyor (tam şarj olması için kalan süre: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"E-postalarınız, uygulamalarınız ve web siteleriniz dahil olmak üzere kişisel ağ etkinliğinizi izleyebilen <xliff:g id="APPLICATION">%1$s</xliff:g> uygulamasına bağlısınız."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"İş profiliniz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tarafından yönetiliyor. Profil; e-postalar, uygulamalar ve web siteleri de dahil olmak üzere iş ağı etkinliğinizi izleyebilen <xliff:g id="APPLICATION">%2$s</xliff:g> uygulamasına bağlı.\n\nDaha fazla bilgi için yöneticinize başvurun."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"İş profiliniz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tarafından yönetiliyor. Profil; e-postalar, uygulamalar ve web siteleri de dahil olmak üzere iş ağı etkinliğinizi izleyebilen <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> uygulamasına bağlı.\n\nAyrıca, kişisel ağ etkinliğinizi izleyebilen <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> uygulamasına bağlısınız."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> için kilit açıldı"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> çalışıyor"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Cihazınızın kilidini manuel olarak açmadıkça cihaz kilitli kalacak"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Bildirimleri daha hızlı alın"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Kilidi açmadan bildirimleri görün"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Daralt"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Otomatik medya altyazısı"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Altyazı ipucu"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Çıkış cihazını değiştir"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran sabitlendi"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Bu işlem, siz sabitlemeyi kaldırana kadar ekranı görünür durumda tutar. Sabitlemeyi kaldırmak için Geri\'ye ve Genel Bakış\'a dokunup basılı tutun."</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 75ff2b664470..c2bb8fc8d294 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Сканування обличчя"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Надіслати"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Керувати сповіщеннями"</string> - <string name="unlock_label" msgid="8779712358041029439">"розблокувати"</string> <string name="phone_label" msgid="2320074140205331708">"відкрити телефон"</string> <string name="voice_assist_label" msgid="3956854378310019854">"запустити голосові підказки"</string> <string name="camera_label" msgid="7261107956054836961">"відкрити камеру"</string> @@ -408,7 +407,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Без\nсигналів"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Лише\nприорітетні"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Лише\nсигнали"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Повільне заряджання (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до повного)"</string> @@ -513,8 +513,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Ваш профіль під’єднано до додатка <xliff:g id="APPLICATION">%1$s</xliff:g>, який може відстежувати вашу особисту активність у мережі, зокрема доступ до електронної пошти, додатків і веб-сайтів."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Вашим робочим профілем керує адміністратор організації <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Цей профіль під’єднано до додатка <xliff:g id="APPLICATION">%2$s</xliff:g>, який може відстежувати вашу активність у мережі, зокрема в електронній пошті, додатках і на веб-сайтах.\n\nЩоб дізнатися більше, зв’яжіться з адміністратором."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Вашим робочим профілем керує адміністратор організації <xliff:g id="ORGANIZATION">%1$s</xliff:g>. Цей профіль під’єднано до додатка <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, який може відстежувати вашу активність у мережі, зокрема а електронній пошті, додатках і на веб-сайтах.\n\nВаш профіль також під’єднано до додатка <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, який може відстежувати вашу особисту активність у мережі."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Розблоковано для користувача <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> працює"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Пристрій залишатиметься заблокованим, доки ви не розблокуєте його вручну"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Швидше отримуйте сповіщення"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Переглядайте сповіщення, перш ніж розблокувати екран"</string> @@ -527,6 +527,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Згорнути"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Автоматичні субтитри (медіа)"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Підказка щодо субтитрів"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Увімкніть пристрій виведення"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Екран закріплено"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ви постійно бачитимете екран, доки не відкріпите його. Щоб відкріпити екран, натисніть і втримуйте кнопки \"Назад\" та \"Огляд\"."</string> @@ -768,8 +774,8 @@ <string name="right_keycode" msgid="708447961000848163">"Код клавіші праворуч"</string> <string name="left_icon" msgid="3096287125959387541">"Значок ліворуч"</string> <string name="right_icon" msgid="3952104823293824311">"Значок праворуч"</string> - <string name="drag_to_add_tiles" msgid="230586591689084925">"Натисніть і перетягніть, щоб додати фрагменти"</string> - <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Щоб упорядковувати компоненти, перетягуйте їх"</string> + <string name="drag_to_add_tiles" msgid="230586591689084925">"Перетягніть потрібні елементи, щоб додати їх"</string> + <string name="drag_to_rearrange_tiles" msgid="4566074720193667473">"Щоб змінити порядок елементів, перетягуйте їх"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"Перетягніть сюди, щоб видалити"</string> <string name="drag_to_remove_disabled" msgid="2390968976638993382">"Потрібно принаймні 6 фрагментів"</string> <string name="qs_edit" msgid="2232596095725105230">"Редагувати"</string> @@ -866,7 +872,7 @@ <string name="instant_apps_title" msgid="8738419517367449783">"<xliff:g id="APP">%1$s</xliff:g> працює"</string> <string name="instant_apps_message" msgid="1183313016396018086">"Додаток відкрито без встановлення."</string> <string name="instant_apps_message_with_help" msgid="6179830437630729747">"Додаток відкрито без встановлення. Торкніться, щоб дізнатися більше."</string> - <string name="app_info" msgid="6856026610594615344">"Про додаток"</string> + <string name="app_info" msgid="6856026610594615344">"Про додатки"</string> <string name="go_to_web" msgid="2650669128861626071">"Веб-переглядач"</string> <string name="mobile_data" msgid="7094582042819250762">"Мобільний трафік"</string> <string name="mobile_data_text_format" msgid="3526214522670876454">"<xliff:g id="ID_1">%1$s</xliff:g> – <xliff:g id="ID_2">%2$s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index cd6727245804..189da57ee144 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"اسکیننگ چہرہ"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"بھیجیں"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"اطلاعات کا نظم کریں"</string> - <string name="unlock_label" msgid="8779712358041029439">"غیر مقفل کریں"</string> <string name="phone_label" msgid="2320074140205331708">"فون کھولیں"</string> <string name="voice_assist_label" msgid="3956854378310019854">"صوتی معاون کھولیں"</string> <string name="camera_label" msgid="7261107956054836961">"کیمرا کھولیں"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"مکمل\nخاموشی"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"صرف\nترجیحی"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"صرف\nالارمز"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • آہستہ چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> باقی)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"آپ <xliff:g id="APPLICATION">%1$s</xliff:g> سے منسلک ہیں، جو ای میلز، ایپس اور ویب سائٹس سمیت آپ کے نجی نیٹ ورک کی سرگرمی مانیٹر کر سکتی ہے۔"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"آپ کا دفتری پروفائل <xliff:g id="ORGANIZATION">%1$s</xliff:g> کے زیر انتظام ہے۔ پروفائل <xliff:g id="APPLICATION">%2$s</xliff:g> سے منسلک ہے جو ای میلز، ایپس اور ویب سائٹس سمیت آپ کے دفتری نیٹ ورک کی سرگرمی مانیٹر کر سکتی ہے۔\n\nمزید معلومات کیلئے اپنے منتظم سے رابطہ کریں۔"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"آپ کا دفتری پروفائل <xliff:g id="ORGANIZATION">%1$s</xliff:g> کے زیر انتظام ہے۔ پروفائل <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> سے منسلک ہے جو ای میلز، ایپس اور ویب سائٹس سمیت آپ کے دفتری نیٹ ورک کی سرگرمی مانیٹر کر سکتی ہے۔\n\nآپ <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> سے بھی منسلک ہیں، جو آپ کے ذاتی نیٹ ورک کی سرگرمی مانیٹر کر سکتی ہے۔"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> کے لیے غیر مقفل کر دیا گیا"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> چل رہا ہے"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"آلہ اس وقت تک مقفل رہے گا جب تک آپ دستی طور پر اسے غیر مقفل نہ کریں"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"تیزی سے اطلاعات حاصل کریں"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"غیر مقفل کرنے سے پہلے انہیں دیکھیں"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"سکیڑیں"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"خودکار طور پر کیپشن میڈیا"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"کیپشنز کی تجویز بند کریں"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"آؤٹ پٹ آلہ سوئچ کریں"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"اسکرین پن کردہ ہے"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"یہ اسے اس وقت تک نظر میں رکھتا ہے جب تک آپ اس سے پن ہٹا نہیں دیتے۔ پن ہٹانے کیلئے پیچھے اور مجموعی جائزہ بٹنز کو ٹچ کریں اور دبائے رکھیں۔"</string> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index c0f67b72f36a..26491d04e454 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Yuzni skanerlash"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Yuborish"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Bildirishnomalarni boshqarish"</string> - <string name="unlock_label" msgid="8779712358041029439">"qulfdan chiqarish"</string> <string name="phone_label" msgid="2320074140205331708">"telefonni ochish"</string> <string name="voice_assist_label" msgid="3956854378310019854">"ovozli yordamni yoqish"</string> <string name="camera_label" msgid="7261107956054836961">"kamerani ochish"</string> @@ -188,7 +187,7 @@ <string name="accessibility_bluetooth_tether" msgid="4102784498140271969">"Bluetooth modem"</string> <string name="accessibility_airplane_mode" msgid="834748999790763092">"Parvoz rejimi"</string> <string name="accessibility_vpn_on" msgid="5993385083262856059">"VPN yoniq."</string> - <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM karta yo‘q."</string> + <string name="accessibility_no_sims" msgid="3957997018324995781">"SIM karta solinmagan."</string> <string name="carrier_network_change_mode" msgid="8149202439957837762">"Mobil tarmoqni o‘zgartirish"</string> <string name="accessibility_battery_details" msgid="7645516654955025422">"Quvvat sarfi tafsilotlari"</string> <string name="accessibility_battery_level" msgid="7451474187113371965">"Batareya <xliff:g id="NUMBER">%d</xliff:g> foiz."</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Tinchlik\nsaqlansin"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Faqat\nmuhimlar"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Faqat\nsignallar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Simsiz quvvat olmoqda (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sekin quvvat olmoqda (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> @@ -498,17 +498,17 @@ <string name="monitoring_description_vpn_settings" msgid="6434859242636063861">"VPN sozlamalarini ochish"</string> <string name="monitoring_description_ca_cert_settings_separator" msgid="4987350385906393626">" "</string> <string name="monitoring_description_ca_cert_settings" msgid="5489969458872997092">"Ishonchli sertifikatlarni ochish"</string> - <string name="monitoring_description_network_logging" msgid="7223505523384076027">"Administrator qurilmangizdagi trafikni nazorat qiluvchi tarmoq jurnalini yoqdi.\n\nBatafsil ma’lumot olish uchun administratoringizga murojaat qiling."</string> + <string name="monitoring_description_network_logging" msgid="7223505523384076027">"Administrator qurilmangizdagi trafikni nazorat qiluvchi tarmoq jurnalini yoqdi.\n\nBatafsil axborot olish uchun administratoringizga murojaat qiling."</string> <string name="monitoring_description_vpn" msgid="4445150119515393526">"Siz ilovaga VPN tarmog‘iga ulanishga ruxsat bergansiz.\n\nUshbu ilova qurilmangiz va internetdagi harakatlaringizni, jumladan, e-pochta, ilovalar va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin."</string> - <string name="monitoring_description_vpn_profile_owned" msgid="2958019119161161530">"Sizning ishchi profilingiz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tomonidan boshqariladi.\n\nAdministrator internetdagi harakatlaringizni, jumladan, e-pochta, ilova va xavfsiz veb-saytlar bilan ishlashingizni kuzatishi mumkin.\n\nBatafsil ma’lumot olish uchun administrator bilan bog‘laning.\n\nShuningdek, siz VPN tarmog‘iga ham ulangansiz. U internetdagi harakatlaringizni kuzatishi mumkin."</string> + <string name="monitoring_description_vpn_profile_owned" msgid="2958019119161161530">"Sizning ishchi profilingiz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tomonidan boshqariladi.\n\nAdministrator internetdagi harakatlaringizni, jumladan, e-pochta, ilova va xavfsiz veb-saytlar bilan ishlashingizni kuzatishi mumkin.\n\nBatafsil axborot olish uchun administrator bilan bog‘laning.\n\nShuningdek, siz VPN tarmog‘iga ham ulangansiz. U internetdagi harakatlaringizni kuzatishi mumkin."</string> <string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string> <string name="monitoring_description_app" msgid="1828472472674709532">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi ishga tushirilgan. U tarmoqdagi, jumladan, e-pochta, ilova va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin."</string> <string name="monitoring_description_app_personal" msgid="484599052118316268">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi ishga tushirilgan. U internetdagi harakatlaringiz, jumladan, e-pochta, ilova va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin."</string> <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"<xliff:g id="APPLICATION">%1$s</xliff:g> ilovasi ishga tushirilgan. U internetdagi harakatlaringiz, jumladan, e-pochta, ilova va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Ishchi profilingiz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tomonidan boshqariladi. <xliff:g id="APPLICATION">%2$s</xliff:g> ilovasi ish tarmog‘idagi, jumladan, e-pochta, ilova va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin.\n\nBatafsil axborot olish uchun administrator bilan bog‘laning."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Ishchi profilingiz <xliff:g id="ORGANIZATION">%1$s</xliff:g> tomonidan boshqariladi. <xliff:g id="APPLICATION_WORK">%2$s</xliff:g> ilovasi ish tarmog‘idagi, jumladan, e-pochta, ilova va veb-saytlardagi xatti-harakatlaringizni kuzatishi mumkin.\n\nShuningdek, <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g> ilovasi ham shaxsiy tarmoqdagi harakatlaringizni kuzatishi mumkin."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"<xliff:g id="USER_NAME">%1$s</xliff:g> uchun qulfdan chiqarilgan"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> ishlamoqda"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Qurilma qo‘lda qulfdan chiqarilmaguncha qulflangan holatda qoladi"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Bildirishnomalarni tezroq oling"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ularni qulfdan chiqarishdan oldin ko‘ring"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Yig‘ish"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Avtomatik taglavha mediasi"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Taglavhalar maslahatini yopish"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Audiochiqish qurilmasini almashtirish"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Ekran qadaldi"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Ekran yechilmaguncha u o‘zgarmas holatda qoladi. Uni yechish uchun “Orqaga” va “Umumiy ma’lumot” tugmalarini bosib turing."</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 3609932d3332..38fa14ff9431 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -67,7 +67,7 @@ <string name="usb_disable_contaminant_detection" msgid="2103905315747120033">"Bật USB"</string> <string name="compat_mode_on" msgid="6623839244840638213">"T.phóng để lấp đầy m.hình"</string> <string name="compat_mode_off" msgid="4434467572461327898">"Giãn ra để lấp đầy m.hình"</string> - <string name="global_action_screenshot" msgid="8329831278085426283">"Chụp ảnh màn hình"</string> + <string name="global_action_screenshot" msgid="8329831278085426283">"Chụp màn hình"</string> <string name="screenshot_saving_ticker" msgid="7403652894056693515">"Đang lưu ảnh chụp màn hình..."</string> <string name="screenshot_saving_title" msgid="8242282144535555697">"Đang lưu ảnh chụp màn hình..."</string> <string name="screenshot_saved_title" msgid="5637073968117370753">"Đã lưu ảnh chụp màn hình"</string> @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Quét tìm khuôn mặt"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Gửi"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Quản lý thông báo"</string> - <string name="unlock_label" msgid="8779712358041029439">"mở khóa"</string> <string name="phone_label" msgid="2320074140205331708">"mở điện thoại"</string> <string name="voice_assist_label" msgid="3956854378310019854">"mở trợ lý thoại"</string> <string name="camera_label" msgid="7261107956054836961">"mở máy ảnh"</string> @@ -224,7 +223,7 @@ <string name="accessibility_quick_settings_airplane_changed_off" msgid="66846307818850664">"Đã tắt chế độ trên máy bay."</string> <string name="accessibility_quick_settings_airplane_changed_on" msgid="8983005603505087728">"Đã bật chế độ trên máy bay."</string> <string name="accessibility_quick_settings_dnd_none_on" msgid="2960643943620637020">"hoàn toàn tắt tiếng"</string> - <string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"chỉ báo thức"</string> + <string name="accessibility_quick_settings_dnd_alarms_on" msgid="3357131899365865386">"chỉ chuông báo"</string> <string name="accessibility_quick_settings_dnd" msgid="5555155552520665891">"Không làm phiền."</string> <string name="accessibility_quick_settings_dnd_changed_off" msgid="2757071272328547807">"Đã tắt chế độ Không làm phiền."</string> <string name="accessibility_quick_settings_dnd_changed_on" msgid="6808220653747701059">"Đã bật tính năng Không làm phiền."</string> @@ -293,7 +292,7 @@ <string name="quick_settings_header_onboarding_text" msgid="8030309023792936283">"Chạm và giữ các biểu tượng để xem thêm tùy chọn khác"</string> <string name="quick_settings_dnd_label" msgid="7112342227663678739">"Không làm phiền"</string> <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"Chỉ ưu tiên"</string> - <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Chỉ báo thức"</string> + <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"Chỉ chuông báo"</string> <string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"Hoàn toàn tắt tiếng"</string> <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"Bluetooth"</string> <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"Bluetooth (<xliff:g id="NUMBER">%d</xliff:g> thiết bị)"</string> @@ -400,11 +399,12 @@ <string name="interruption_level_none_with_warning" msgid="5114872171614161084">"Tắt tiếng hoàn toàn. Cài đặt này cũng sẽ tắt tiếng trình đọc màn hình."</string> <string name="interruption_level_none" msgid="6000083681244492992">"Hoàn toàn tắt tiếng"</string> <string name="interruption_level_priority" msgid="6426766465363855505">"Chỉ ưu tiên"</string> - <string name="interruption_level_alarms" msgid="5226306993448328896">"Chỉ báo thức"</string> + <string name="interruption_level_alarms" msgid="5226306993448328896">"Chỉ chuông báo"</string> <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Hoàn toàn\ntắt tiếng"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Chỉ\nưu tiên"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Chỉ\nbáo thức"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<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> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Bạn đang kết nối với <xliff:g id="APPLICATION">%1$s</xliff:g>. Ứng dụng này có thể giám sát hoạt động mạng cá nhân của bạn bao gồm email, ứng dụng và trang web."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Hồ sơ công việc của bạn do <xliff:g id="ORGANIZATION">%1$s</xliff:g> quản lý. Hồ sơ này được kết nối với <xliff:g id="APPLICATION">%2$s</xliff:g>, ứng dụng này có thể giám sát hoạt động mạng cơ quan của bạn, bao gồm email, ứng dụng và trang web.\n\nĐể biết thêm thông tin, hãy liên hệ với quản trị viên của bạn."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Hồ sơ công việc của bạn do <xliff:g id="ORGANIZATION">%1$s</xliff:g> quản lý. Hồ sơ này được kết nối với <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, ứng dụng này có thể giám sát hoạt động mạng của bạn, bao gồm email, ứng dụng và trang web.\n\nBạn cũng đang kết nối với <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, ứng dụng này có thể giám sát hoạt động mạng cá nhân của bạn."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Được mở khóa cho <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> đang chạy"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Thiết bị sẽ vẫn bị khóa cho tới khi bạn mở khóa theo cách thủ công"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Nhận thông báo nhanh hơn"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Xem thông báo trước khi bạn mở khóa"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Thu gọn"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Tự động chú thích nội dung"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Đóng mẹo về chú thích"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Chuyển đổi thiết bị đầu ra"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Màn hình được ghim"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Thao tác này sẽ duy trì hiển thị màn hình cho đến khi bạn bỏ ghim. Hãy chạm và giữ Quay lại và Tổng quan để bỏ ghim."</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index cc34f48bc718..0faaf8e7c0cf 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"正在扫描面孔"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"发送"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"管理通知"</string> - <string name="unlock_label" msgid="8779712358041029439">"解锁"</string> <string name="phone_label" msgid="2320074140205331708">"打开电话"</string> <string name="voice_assist_label" msgid="3956854378310019854">"打开语音助理"</string> <string name="camera_label" msgid="7261107956054836961">"打开相机"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"完全\n静音"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"仅限\n优先打扰"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"仅限\n闹钟"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在慢速充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"您已连接到<xliff:g id="APPLICATION">%1$s</xliff:g>,该应用可以监控您的个人网络活动,包括收发电子邮件、使用应用和浏览网站。"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"您的工作资料由“<xliff:g id="ORGANIZATION">%1$s</xliff:g>”负责管理,且已连接到“<xliff:g id="APPLICATION">%2$s</xliff:g>”(该应用能够监控您的工作网络活动,其中包括收发电子邮件、使用应用和浏览网站)。\n\n如需更多信息,请与您的管理员联系。"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"您的工作资料由“<xliff:g id="ORGANIZATION">%1$s</xliff:g>”负责管理,且已连接到“<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>”(该应用能够监控您的工作网络活动,其中包括收发电子邮件、使用应用和浏览网站)。\n\n此外,您还连接到了“<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>”(该应用能够监控您的个人网络活动)。"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"已为<xliff:g id="USER_NAME">%1$s</xliff:g>解锁"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"“<xliff:g id="TRUST_AGENT">%1$s</xliff:g>”正在运行"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"在您手动解锁之前,设备会保持锁定状态"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"更快捷地查看通知"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"无需解锁即可查看通知"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"收起"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自动字幕媒体"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"关闭字幕提示"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"切换输出设备"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"已固定屏幕"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"这将会固定显示此屏幕,直到您取消固定为止。触摸并按住“返回”和“概览”即可取消固定屏幕。"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index d235f6d2948e..3e4930468758 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"掃瞄緊面孔"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"傳送"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"管理通知"</string> - <string name="unlock_label" msgid="8779712358041029439">"解鎖"</string> <string name="phone_label" msgid="2320074140205331708">"開啟電話"</string> <string name="voice_assist_label" msgid="3956854378310019854">"開啟語音助手"</string> <string name="camera_label" msgid="7261107956054836961">"開啟相機"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"完全\n靜音"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"僅限\n優先"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"僅限\n鬧鐘"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在慢速充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"您已連接至「<xliff:g id="APPLICATION">%1$s</xliff:g>」,此應用程式可以監控您的個人網絡活動,包括電郵、應用程式及網站。"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"您的工作設定檔由<xliff:g id="ORGANIZATION">%1$s</xliff:g>管理。設定檔已連結至「<xliff:g id="APPLICATION">%2$s</xliff:g>」,此應用程式可以監控您的工作網絡活動,包括電郵、應用程式和網站。\n\n如需瞭解詳情,請聯絡您的管理員。"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"您的工作設定檔由<xliff:g id="ORGANIZATION">%1$s</xliff:g>管理。設定檔已連結至「<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>」,此應用程式可以監控您的工作網絡活動,包括電郵、應用程式和網站。\n\n您亦已連結至「<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>」,此應用程式可以監控您的個人網絡活動。"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"已為<xliff:g id="USER_NAME">%1$s</xliff:g>解鎖"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> 執行中"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"裝置將保持上鎖,直到您手動解鎖"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"更快取得通知"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"解鎖前顯示"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"收合"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自動為媒體加入字幕"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"字幕提示"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"切換輸出裝置"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"螢幕已固定"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"畫面將會繼續顯示,直至您取消固定。按住 [返回] 和 [概覽] 即可取消固定。"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index b85d839c0393..0edef8f38310 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"掃描臉孔"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"傳送"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"管理通知"</string> - <string name="unlock_label" msgid="8779712358041029439">"解除鎖定"</string> <string name="phone_label" msgid="2320074140205331708">"開啟電話"</string> <string name="voice_assist_label" msgid="3956854378310019854">"開啟語音小幫手"</string> <string name="camera_label" msgid="7261107956054836961">"開啟攝影機"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"完全\n靜音"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"僅允許\n優先通知"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"僅允許\n鬧鐘"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<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 (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 慢速充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"由於你已連結至「<xliff:g id="APPLICATION">%1$s</xliff:g>」,你的個人網路活動 (包括收發電子郵件、使用應用程式及瀏覽網站) 可能會受到這個應用程式監控。"</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"你的工作資料夾是由「<xliff:g id="ORGANIZATION">%1$s</xliff:g>」所管理。由於該設定檔已連結至「<xliff:g id="APPLICATION">%2$s</xliff:g>」,因此你的網路活動 (包括收發電子郵件、使用應用程式和瀏覽網站) 可能會受到這個應用程式監控。\n\n如要瞭解詳情,請與你的管理員聯絡。"</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"你的工作資料夾是由「<xliff:g id="ORGANIZATION">%1$s</xliff:g>」所管理。由於該設定檔已連結至「<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>」,因此你的網路活動 (包括收發電子郵件、使用應用程式和瀏覽網站) 可能會受到這個應用程式監控。\n\n此外,你還與「<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>」建立了連結,因此你的個人網路活動也可能會受到該應用程式監控。"</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"已為<xliff:g id="USER_NAME">%1$s</xliff:g>解鎖"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"「<xliff:g id="TRUST_AGENT">%1$s</xliff:g>」執行中"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"在你手動解鎖前,裝置將保持鎖定狀態"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"更快取得通知"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"解鎖前顯示"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"收合"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"自動產生媒體字幕"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"關閉字幕提示"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"切換輸出裝置"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"螢幕已固定"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"這會讓目前的螢幕畫面保持顯示狀態,直到取消固定為止。按住 [返回] 按鈕和 [總覽] 按鈕即可取消固定。"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index c77c5cd48793..ad43208563ed 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -112,7 +112,6 @@ <string name="accessibility_scanning_face" msgid="769545173211758586">"Ukuskena ubuso"</string> <string name="accessibility_send_smart_reply" msgid="7766727839703044493">"Thumela"</string> <string name="accessibility_manage_notification" msgid="2026361503393549753">"Phatha izaziso"</string> - <string name="unlock_label" msgid="8779712358041029439">"vula"</string> <string name="phone_label" msgid="2320074140205331708">"vula ifoni"</string> <string name="voice_assist_label" msgid="3956854378310019854">"vula isilekeleli sezwi"</string> <string name="camera_label" msgid="7261107956054836961">"vula ikhamera"</string> @@ -404,7 +403,8 @@ <string name="interruption_level_none_twoline" msgid="3957581548190765889">"Ukuthula\niokuphelele"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"Okubalulekile\nkuphela"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"Ama-alamu\nkuphela"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="5376059837186496558">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ishanga ngokungenantambo (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ize igcwale)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (6959284458466962592) --> + <skip /> <string name="keyguard_indication_charging_time" msgid="2056340799276374421">"<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="7767562163577492332">"<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="3769655133567307069">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ishaja kancane (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ize igcwale)"</string> @@ -507,8 +507,8 @@ <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Uxhumeke ku-<xliff:g id="APPLICATION">%1$s</xliff:g>, engaqapha umsebenzi wakho womuntu siqu wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza, namawebhusayithi."</string> <string name="monitoring_description_app_work" msgid="4612997849787922906">"Iphrofayela yakho yomsebenzi iphethwe i-<xliff:g id="ORGANIZATION">%1$s</xliff:g>. Iphrofayela ixhumeke ku-<xliff:g id="APPLICATION">%2$s</xliff:g>, engaqapha umsebenzi wenethiwekhi yakho yokusebenza, ofaka ama-imeyili, izinhlelo zokusebenza, namawebhusayithi.\n\nUkuze uthole olunye ulwazi, xhumana nomlawuli wakho."</string> <string name="monitoring_description_app_personal_work" msgid="5664165460056859391">"Iphrofayela yakho yomsebenzi iphethwe i-<xliff:g id="ORGANIZATION">%1$s</xliff:g>. Iphrofayela ixhumeke ku-<xliff:g id="APPLICATION_WORK">%2$s</xliff:g>, engaqapha umsebenzi wakho wenethiwekhi, ofaka ama-imeyili, izinhlelo zokusebenza, namawebhusayithi.\n\nFuthi uxhumeke ku-<xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>, engaqapha umsebenzi wakho siqu wenethiwekhi."</string> - <string name="keyguard_indication_trust_granted" msgid="4985003749105182372">"Kuvulelwe u-<xliff:g id="USER_NAME">%1$s</xliff:g>"</string> - <string name="keyguard_indication_trust_managed" msgid="8319646760022357585">"<xliff:g id="TRUST_AGENT">%1$s</xliff:g> iyasebenza"</string> + <!-- no translation found for keyguard_indication_trust_unlocked (2712865815371519117) --> + <skip /> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Idivayisi izohlala ikhiyekile uze uyivule ngokwenza"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Thola izaziso ngokushesha"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Ibone ngaphambi kokuthi uyivule"</string> @@ -521,6 +521,12 @@ <string name="accessibility_volume_collapse" msgid="3609549593031810875">"Goqa"</string> <string name="volume_odi_captions_tip" msgid="1193653197906918269">"Yenza amagama-ngcazo ngokuzenzakalela emidiya"</string> <string name="accessibility_volume_close_odi_captions_tip" msgid="1163987066404128967">"Ithiphu lamagama-ngcazo"</string> + <!-- no translation found for volume_odi_captions_content_description (2950736796270214785) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_enable (49750248924730302) --> + <skip /> + <!-- no translation found for volume_odi_captions_hint_disable (8980842810619956593) --> + <skip /> <string name="accessibility_output_chooser" msgid="8185317493017988680">"Shintsha idivayisi yokukhipha"</string> <string name="screen_pinning_title" msgid="3273740381976175811">"Isikrini siphiniwe"</string> <string name="screen_pinning_description" msgid="8909878447196419623">"Lokhu kuyigcina ibukeka uze ususe ukuphina. Thinta uphinde ubambe okuthi Emuva Nokubuka konke ukuze ususe ukuphina."</string> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index d6906f3988cd..73386879a20d 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -469,6 +469,10 @@ --> <integer name="config_smart_replies_in_notifications_max_num_actions">-1</integer> + <!-- Smart replies in notifications: Delay (ms) before smart suggestions are clickable, since + they were added. --> + <integer name="config_smart_replies_in_notifications_onclick_init_delay">200</integer> + <!-- Screenshot editing default activity. Must handle ACTION_EDIT image/png intents. Blank sends the user to the Chooser first. This name is in the ComponentName flattened format (package/class) --> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 5d8b9e662c51..7d76160f8242 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -437,7 +437,7 @@ <dimen name="qs_tile_padding_bottom">16dp</dimen> <dimen name="qs_tile_spacing">4dp</dimen> <dimen name="qs_panel_padding_bottom">0dp</dimen> - <dimen name="qs_panel_padding_top">30dp</dimen> + <dimen name="qs_panel_padding_top">@dimen/qs_header_tooltip_height</dimen> <dimen name="qs_detail_header_height">56dp</dimen> <dimen name="qs_detail_header_padding">0dp</dimen> <dimen name="qs_detail_image_width">56dp</dimen> @@ -461,8 +461,8 @@ <dimen name="qs_detail_item_icon_width">32dp</dimen> <dimen name="qs_detail_item_icon_marginStart">0dp</dimen> <dimen name="qs_detail_item_icon_marginEnd">20dp</dimen> - <dimen name="qs_header_tooltip_height">18dp</dimen> - <dimen name="qs_header_alarm_icon_size">18dp</dimen> + <dimen name="qs_header_tooltip_height">48dp</dimen> + <dimen name="qs_header_alarm_icon_size">@dimen/status_bar_icon_drawing_size</dimen> <dimen name="qs_header_mobile_icon_size">@dimen/status_bar_icon_drawing_size</dimen> <dimen name="qs_header_alarm_text_margin_start">6dp</dimen> <dimen name="qs_header_separator_width">8dp</dimen> @@ -473,7 +473,7 @@ <dimen name="qs_footer_padding_end">16dp</dimen> <dimen name="qs_footer_icon_size">16dp</dimen> <dimen name="qs_paged_tile_layout_padding_bottom">0dp</dimen> - <dimen name="qs_header_top_margin">12dp</dimen> + <dimen name="qs_header_top_margin">15dp</dimen> <dimen name="qs_notif_collapsed_space">64dp</dimen> @@ -1031,8 +1031,6 @@ <dimen name="ongoing_appops_dialog_title_size">20sp</dimen> <!-- Text size for Ongoing App Ops dialog items --> <dimen name="ongoing_appops_dialog_item_size">16sp</dimen> - <!-- Side margins around the Ongoing App Ops chip--> - <dimen name="ongoing_appops_chip_margin">0dp</dimen> <!-- Height of the Ongoing App Ops chip --> <dimen name="ongoing_appops_chip_height">32dp</dimen> <!-- Padding between background of Ongoing App Ops chip and content --> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginPrefs.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginPrefs.java index c0c5d7051cea..6baad466aba8 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginPrefs.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginPrefs.java @@ -42,12 +42,12 @@ public class PluginPrefs { } public Set<String> getPluginList() { - return mPluginActions; + return new ArraySet<>(mPluginActions); } public synchronized void addAction(String action) { if (mPluginActions.add(action)){ - mSharedPrefs.edit().putStringSet(PLUGIN_ACTIONS, mPluginActions).commit(); + mSharedPrefs.edit().putStringSet(PLUGIN_ACTIONS, mPluginActions).apply(); } } @@ -56,6 +56,6 @@ public class PluginPrefs { } public static void setHasPlugins(Context context) { - context.getSharedPreferences(PREFS, 0).edit().putBoolean(HAS_PLUGINS, true).commit(); + context.getSharedPreferences(PREFS, 0).edit().putBoolean(HAS_PLUGINS, true).apply(); } } diff --git a/packages/SystemUI/src/com/android/keyguard/CarrierTextController.java b/packages/SystemUI/src/com/android/keyguard/CarrierTextController.java index eca39262dfb5..2e9b03c6b31e 100644 --- a/packages/SystemUI/src/com/android/keyguard/CarrierTextController.java +++ b/packages/SystemUI/src/com/android/keyguard/CarrierTextController.java @@ -383,7 +383,7 @@ public class CarrierTextController { } if (TextUtils.isEmpty(displayText) && !airplaneMode) { - displayText = TextUtils.join(mSeparator, carrierNames); + displayText = joinNotEmpty(mSeparator, carrierNames); } final CarrierTextCallbackInfo info = new CarrierTextCallbackInfo( displayText, @@ -546,6 +546,25 @@ public class CarrierTextController { } } + /** + * Joins the strings in a sequence using a separator. Empty strings are discarded with no extra + * separator added so there are no extra separators that are not needed. + */ + private static CharSequence joinNotEmpty(CharSequence separator, CharSequence[] sequences) { + int length = sequences.length; + if (length == 0) return ""; + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < length; i++) { + if (!TextUtils.isEmpty(sequences[i])) { + if (!TextUtils.isEmpty(sb)) { + sb.append(separator); + } + sb.append(sequences[i]); + } + } + return sb.toString(); + } + private static List<CharSequence> append(List<CharSequence> list, CharSequence string) { if (!TextUtils.isEmpty(string)) { list.add(string); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java index ace6f6fe904d..814fec34b4dc 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardMessageArea.java @@ -87,15 +87,14 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp monitor.registerCallback(mInfoCallback); mHandler = new Handler(Looper.myLooper()); mConfigurationController = configurationController; - onThemeChanged(); - update(); } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); mConfigurationController.addCallback(this); + onThemeChanged(); } @Override @@ -116,8 +115,8 @@ public class KeyguardMessageArea extends TextView implements SecurityMessageDisp }); ColorStateList newTextColors = ColorStateList.valueOf(array.getColor(0, Color.RED)); array.recycle(); - setTextColor(newTextColors); mDefaultColorState = newTextColors; + update(); } @Override diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java index 0d8a3db67a1c..fb3a586677aa 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java @@ -135,7 +135,6 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView { return; } - // Sending empty PIN here to query the number of remaining PIN attempts new CheckSimPin("", mSubId) { void onSimCheckResponse(final int result, final int attemptsRemaining) { @@ -216,20 +215,15 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView { } @Override - protected void onAttachedToWindow() { - super.onAttachedToWindow(); - KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitorCallback); - resetState(); - } + public void showUsabilityHint() { - @Override - protected void onDetachedFromWindow() { - super.onDetachedFromWindow(); - KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mUpdateMonitorCallback); } @Override - public void showUsabilityHint() { + public void onResume(int reason) { + super.onResume(reason); + KeyguardUpdateMonitor.getInstance(mContext).registerCallback(mUpdateMonitorCallback); + resetState(); } @Override @@ -239,6 +233,7 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView { mSimUnlockProgressDialog.dismiss(); mSimUnlockProgressDialog = null; } + KeyguardUpdateMonitor.getInstance(mContext).removeCallback(mUpdateMonitorCallback); } /** diff --git a/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java b/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java index 06488b86c59e..135b351867e9 100644 --- a/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java +++ b/packages/SystemUI/src/com/android/keyguard/clock/ClockManager.java @@ -30,6 +30,7 @@ import android.util.DisplayMetrics; import android.view.LayoutInflater; import androidx.annotation.VisibleForTesting; +import androidx.lifecycle.Observer; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.colorextraction.SysuiColorExtractor; @@ -37,13 +38,14 @@ import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManager.DockEventListener; import com.android.systemui.plugins.ClockPlugin; import com.android.systemui.plugins.PluginListener; -import com.android.systemui.settings.CurrentUserTracker; +import com.android.systemui.settings.CurrentUserObservable; import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.util.InjectionInflationController; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.function.Supplier; import javax.inject.Inject; @@ -64,7 +66,7 @@ public final class ClockManager { private final ContentResolver mContentResolver; private final SettingsWrapper mSettingsWrapper; private final Handler mMainHandler = new Handler(Looper.getMainLooper()); - private final CurrentUserTracker mCurrentUserTracker; + private final CurrentUserObservable mCurrentUserObservable; /** * Observe settings changes to know when to switch the clock face. @@ -74,12 +76,18 @@ public final class ClockManager { @Override public void onChange(boolean selfChange, Uri uri, int userId) { super.onChange(selfChange, uri, userId); - if (userId == mCurrentUserTracker.getCurrentUserId()) { + if (Objects.equals(userId, + mCurrentUserObservable.getCurrentUser().getValue())) { reload(); } } }; + /** + * Observe user changes and react by potentially loading the custom clock for the new user. + */ + private final Observer<Integer> mCurrentUserObserver = (newUserId) -> reload(); + private final PluginManager mPluginManager; /** @@ -119,22 +127,19 @@ public final class ClockManager { public ClockManager(Context context, InjectionInflationController injectionInflater, PluginManager pluginManager, SysuiColorExtractor colorExtractor) { this(context, injectionInflater, pluginManager, colorExtractor, - context.getContentResolver(), new SettingsWrapper(context.getContentResolver())); + context.getContentResolver(), new CurrentUserObservable(context), + new SettingsWrapper(context.getContentResolver())); } ClockManager(Context context, InjectionInflationController injectionInflater, PluginManager pluginManager, SysuiColorExtractor colorExtractor, - ContentResolver contentResolver, SettingsWrapper settingsWrapper) { + ContentResolver contentResolver, CurrentUserObservable currentUserObservable, + SettingsWrapper settingsWrapper) { mContext = context; mPluginManager = pluginManager; mContentResolver = contentResolver; mSettingsWrapper = settingsWrapper; - mCurrentUserTracker = new CurrentUserTracker(context) { - @Override - public void onUserSwitched(int newUserId) { - reload(); - } - }; + mCurrentUserObservable = currentUserObservable; mPreviewClocks = new AvailableClocks(); Resources res = context.getResources(); @@ -217,7 +222,7 @@ public final class ClockManager { mContentResolver.registerContentObserver( Settings.Secure.getUriFor(Settings.Secure.DOCKED_CLOCK_FACE), false, mContentObserver, UserHandle.USER_ALL); - mCurrentUserTracker.startTracking(); + mCurrentUserObservable.getCurrentUser().observeForever(mCurrentUserObserver); if (mDockManager == null) { mDockManager = SysUiServiceProvider.getComponent(mContext, DockManager.class); } @@ -229,7 +234,7 @@ public final class ClockManager { private void unregister() { mPluginManager.removePluginListener(mPreviewClocks); mContentResolver.unregisterContentObserver(mContentObserver); - mCurrentUserTracker.stopTracking(); + mCurrentUserObservable.getCurrentUser().removeObserver(mCurrentUserObserver); if (mDockManager != null) { mDockManager.removeListener(mDockEventListener); } @@ -347,7 +352,7 @@ public final class ClockManager { ClockPlugin plugin = null; if (ClockManager.this.isDocked()) { final String name = mSettingsWrapper.getDockedClockFace( - mCurrentUserTracker.getCurrentUserId()); + mCurrentUserObservable.getCurrentUser().getValue()); if (name != null) { plugin = mClocks.get(name); if (plugin != null) { @@ -356,7 +361,7 @@ public final class ClockManager { } } final String name = mSettingsWrapper.getLockScreenCustomClockFace( - mCurrentUserTracker.getCurrentUserId()); + mCurrentUserObservable.getCurrentUser().getValue()); if (name != null) { plugin = mClocks.get(name); } diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java index 94bb1f3e329e..1bd8e0d2ce0f 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java +++ b/packages/SystemUI/src/com/android/systemui/assist/AssistManager.java @@ -204,6 +204,11 @@ public class AssistManager implements ConfigurationChangedReceiver { return false; } + /** Called when the user is performing an assistant invocation action (e.g. Active Edge) */ + public void onInvocationProgress(int type, float progress) { + // intentional no-op, vendor's AssistManager implementation should override if needed. + } + public void hideAssist() { mAssistUtils.hideCurrentSession(); } diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java index 9d9c88f2c6ca..744f88d19ba3 100644 --- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java +++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java @@ -86,7 +86,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi @Retention(SOURCE) @IntDef({DISMISS_USER_GESTURE, DISMISS_AGED, DISMISS_TASK_FINISHED, DISMISS_BLOCKED, - DISMISS_NOTIF_CANCEL, DISMISS_ACCESSIBILITY_ACTION}) + DISMISS_NOTIF_CANCEL, DISMISS_ACCESSIBILITY_ACTION, DISMISS_NO_LONGER_BUBBLE}) @interface DismissReason {} static final int DISMISS_USER_GESTURE = 1; @@ -95,6 +95,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi static final int DISMISS_BLOCKED = 4; static final int DISMISS_NOTIF_CANCEL = 5; static final int DISMISS_ACCESSIBILITY_ACTION = 6; + static final int DISMISS_NO_LONGER_BUBBLE = 7; static final int MAX_BUBBLES = 5; // TODO: actually enforce this @@ -129,8 +130,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi private final StatusBarWindowController mStatusBarWindowController; private StatusBarStateListener mStatusBarStateListener; - private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider = - Dependency.get(NotificationInterruptionStateProvider.class); + private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider; private INotificationManager mNotificationManagerService; @@ -189,15 +189,19 @@ public class BubbleController implements ConfigurationController.ConfigurationLi @Inject public BubbleController(Context context, StatusBarWindowController statusBarWindowController, - BubbleData data, ConfigurationController configurationController) { + BubbleData data, ConfigurationController configurationController, + NotificationInterruptionStateProvider interruptionStateProvider) { this(context, statusBarWindowController, data, null /* synchronizer */, - configurationController); + configurationController, interruptionStateProvider); } public BubbleController(Context context, StatusBarWindowController statusBarWindowController, BubbleData data, @Nullable BubbleStackView.SurfaceSynchronizer synchronizer, - ConfigurationController configurationController) { + ConfigurationController configurationController, + NotificationInterruptionStateProvider interruptionStateProvider) { mContext = context; + mNotificationInterruptionStateProvider = interruptionStateProvider; + configurationController.addCallback(this /* configurationListener */); mNotificationEntryManager = Dependency.get(NotificationEntryManager.class); @@ -394,7 +398,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi if (!areBubblesEnabled(mContext)) { return; } - if (shouldAutoBubbleForFlags(mContext, entry) || shouldBubble(entry)) { + if (mNotificationInterruptionStateProvider.shouldBubbleUp(entry)) { // TODO: handle group summaries? updateShowInShadeForSuppressNotification(entry); } @@ -405,7 +409,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi if (!areBubblesEnabled(mContext)) { return; } - if (entry.isBubble() && mNotificationInterruptionStateProvider.shouldBubbleUp(entry)) { + if (mNotificationInterruptionStateProvider.shouldBubbleUp(entry)) { updateBubble(entry); } } @@ -415,8 +419,11 @@ public class BubbleController implements ConfigurationController.ConfigurationLi if (!areBubblesEnabled(mContext)) { return; } - if (mNotificationInterruptionStateProvider.shouldBubbleUp(entry) - && alertAgain(entry, entry.notification.getNotification())) { + boolean shouldBubble = mNotificationInterruptionStateProvider.shouldBubbleUp(entry); + if (!shouldBubble && mBubbleData.hasBubbleWithKey(entry.key)) { + // It was previously a bubble but no longer a bubble -- lets remove it + removeBubble(entry.key, DISMISS_NO_LONGER_BUBBLE); + } else if (shouldBubble && alertAgain(entry, entry.notification.getNotification())) { updateShowInShadeForSuppressNotification(entry); entry.setBubbleDismissed(false); // updates come back as bubbles even if dismissed updateBubble(entry); @@ -561,17 +568,6 @@ public class BubbleController implements ConfigurationController.ConfigurationLi } /** - * Whether the notification has been developer configured to bubble and is allowed by the user. - */ - @VisibleForTesting - protected boolean shouldBubble(NotificationEntry entry) { - StatusBarNotification n = entry.notification; - boolean hasOverlayIntent = n.getNotification().getBubbleMetadata() != null - && n.getNotification().getBubbleMetadata().getIntent() != null; - return hasOverlayIntent && entry.canBubble; - } - - /** * Whether the notification should automatically bubble or not. Gated by secure settings flags. */ @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsGridLayout.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsGridLayout.java index e7878c69873c..669348e4b481 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsGridLayout.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsGridLayout.java @@ -117,6 +117,7 @@ public class GlobalActionsGridLayout extends MultiListLayout { } else { parent.addView(v); } + parent.setVisibility(View.VISIBLE); } updateSnapPosition(); updateSeparatedButtonSize(); diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/ListGridLayout.java b/packages/SystemUI/src/com/android/systemui/globalactions/ListGridLayout.java index 9c71ffc0e73b..6bc975a9dc62 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/ListGridLayout.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/ListGridLayout.java @@ -41,6 +41,21 @@ public class ListGridLayout extends LinearLayout { private static final String TAG = "ListGridLayout"; private int mExpectedCount; + // number of rows and columns to use for different numbers of items + private final int[][] mConfigs = { + // {rows, columns} + {0, 0}, // 0 items + {1, 1}, // 1 item + {1, 2}, // 2 items + {1, 3}, // 3 items + {2, 2}, // 4 items + {2, 3}, // 5 items + {2, 3}, // 6 items + {3, 3}, // 7 items + {3, 3}, // 8 items + {3, 3} // 9 items + }; + public ListGridLayout(Context context, AttributeSet attrs) { super(context, attrs); } @@ -53,19 +68,28 @@ public class ListGridLayout extends LinearLayout { ViewGroup subList = (ViewGroup) getChildAt(i); if (subList != null) { subList.removeAllViews(); + subList.setVisibility(View.GONE); } } } /** * Get the parent view associated with the item which should be placed at the given position. + * @param index The index of the item. + * @param reverseSublists Reverse the order of sublists. Ordinarily, sublists fill from first to + * last, whereas setting this to true will fill them last to first. + * @param swapRowsAndColumns Swap the order in which rows and columns are filled. By default, + * columns fill first, adding one item to each row. Setting this to + * true will cause rows to fill first, adding one item to each column. + * @return */ public ViewGroup getParentView(int index, boolean reverseSublists, boolean swapRowsAndColumns) { - if (getRowCount() == 0) { + if (getRowCount() == 0 || index < 0) { return null; } - int column = getParentViewIndex(index, reverseSublists, swapRowsAndColumns); - return (ViewGroup) getChildAt(column); + int targetIndex = Math.min(index, getMaxElementCount() - 1); + int row = getParentViewIndex(targetIndex, reverseSublists, swapRowsAndColumns); + return (ViewGroup) getChildAt(row); } private int reverseSublistIndex(int index) { @@ -74,7 +98,6 @@ public class ListGridLayout extends LinearLayout { private int getParentViewIndex(int index, boolean reverseSublists, boolean swapRowsAndColumns) { int sublistIndex; - ViewGroup row; int rows = getRowCount(); if (swapRowsAndColumns) { sublistIndex = (int) Math.floor(index / rows); @@ -92,42 +115,31 @@ public class ListGridLayout extends LinearLayout { */ public void setExpectedCount(int count) { mExpectedCount = count; + } - for (int i = 0; i < getChildCount(); i++) { - if (i <= getColumnCount()) { - setSublistVisibility(i, true); - } else { - setSublistVisibility(i, false); - } - } + private int getMaxElementCount() { + return mConfigs.length - 1; } - private void setSublistVisibility(int index, boolean visible) { - View subList = getChildAt(index); - if (subList != null) { - subList.setVisibility(visible ? View.VISIBLE : View.GONE); + private int[] getConfig() { + if (mExpectedCount < 0) { + return mConfigs[0]; } + int targetElements = Math.min(getMaxElementCount(), mExpectedCount); + return mConfigs[targetElements]; } /** * Get the number of rows which will be used to render children. */ public int getRowCount() { - // special case for 3 to use a single row - if (mExpectedCount == 3) { - return 1; - } - return (int) Math.round(Math.sqrt(mExpectedCount)); + return getConfig()[0]; } /** * Get the number of columns which will be used to render children. */ public int getColumnCount() { - // special case for 3 to use a single row - if (mExpectedCount == 3) { - return 3; - } - return (int) Math.ceil(Math.sqrt(mExpectedCount)); + return getConfig()[1]; } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 6af7ac4d17b8..d363622dcc89 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -66,8 +66,6 @@ import android.view.WindowManagerPolicyConstants; import android.view.animation.Animation; import android.view.animation.AnimationUtils; -import com.android.internal.logging.MetricsLogger; -import com.android.internal.logging.nano.MetricsProto; import com.android.internal.policy.IKeyguardDismissCallback; import com.android.internal.policy.IKeyguardDrawnCallback; import com.android.internal.policy.IKeyguardExitCallback; @@ -362,7 +360,6 @@ public class KeyguardViewMediator extends SystemUI { private boolean mWakeAndUnlocking; private IKeyguardDrawnCallback mDrawnCallback; - private boolean mLockWhenSimRemoved; private CharSequence mCustomMessage; KeyguardUpdateMonitorCallback mUpdateCallback = new KeyguardUpdateMonitorCallback() { @@ -465,7 +462,6 @@ public class KeyguardViewMediator extends SystemUI { if (simState == ABSENT) { // MVNO SIMs can become transiently NOT_READY when switching networks, // so we should only lock when they are ABSENT. - onSimAbsentLocked(); if (simWasLocked) { if (DEBUG_SIM_STATES) Log.d(TAG, "SIM moved to ABSENT when the " + "previous state was locked. Reset the state."); @@ -498,7 +494,6 @@ public class KeyguardViewMediator extends SystemUI { + "show permanently disabled message in lockscreen."); resetStateLocked(); } - onSimAbsentLocked(); } break; case READY: @@ -509,7 +504,6 @@ public class KeyguardViewMediator extends SystemUI { + "previous state was locked. Reset the state."); resetStateLocked(); } - mLockWhenSimRemoved = true; } break; default: @@ -518,18 +512,6 @@ public class KeyguardViewMediator extends SystemUI { } } - private void onSimAbsentLocked() { - if (isSecure() && mLockWhenSimRemoved && !mShuttingDown) { - mLockWhenSimRemoved = false; - MetricsLogger.action(mContext, - MetricsProto.MetricsEvent.ACTION_LOCK_BECAUSE_SIM_REMOVED, mShowing); - if (!mShowing) { - Log.i(TAG, "SIM removed, showing keyguard"); - doKeyguardLocked(null); - } - } - } - @Override public void onBiometricAuthFailed(BiometricSourceType biometricSourceType) { final int currentUser = KeyguardUpdateMonitor.getCurrentUser(); diff --git a/packages/SystemUI/src/com/android/systemui/power/BatteryStateSnapshot.kt b/packages/SystemUI/src/com/android/systemui/power/BatteryStateSnapshot.kt index 02ad0f1766bd..f73bc93ff313 100644 --- a/packages/SystemUI/src/com/android/systemui/power/BatteryStateSnapshot.kt +++ b/packages/SystemUI/src/com/android/systemui/power/BatteryStateSnapshot.kt @@ -15,6 +15,7 @@ data class BatteryStateSnapshot( val severeLevelThreshold: Int, val lowLevelThreshold: Int, val timeRemainingMillis: Long, + val averageTimeToDischargeMillis: Long, val severeThresholdMillis: Long, val lowThresholdMillis: Long, val isBasedOnUsage: Boolean, @@ -39,18 +40,19 @@ data class BatteryStateSnapshot( severeLevelThreshold: Int, lowLevelThreshold: Int ) : this( - batteryLevel, - isPowerSaver, - plugged, - bucket, - batteryStatus, - severeLevelThreshold, - lowLevelThreshold, - NO_ESTIMATE_AVAILABLE.toLong(), - NO_ESTIMATE_AVAILABLE.toLong(), - NO_ESTIMATE_AVAILABLE.toLong(), - false, - true + batteryLevel, + isPowerSaver, + plugged, + bucket, + batteryStatus, + severeLevelThreshold, + lowLevelThreshold, + NO_ESTIMATE_AVAILABLE.toLong(), + NO_ESTIMATE_AVAILABLE.toLong(), + NO_ESTIMATE_AVAILABLE.toLong(), + NO_ESTIMATE_AVAILABLE.toLong(), + false, + true ) { this.isHybrid = false } diff --git a/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimates.java b/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimates.java index a87922792616..3b464783d009 100644 --- a/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimates.java +++ b/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimates.java @@ -1,5 +1,7 @@ package com.android.systemui.power; +import com.android.settingslib.fuelgauge.Estimate; + public interface EnhancedEstimates { /** diff --git a/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimatesImpl.java b/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimatesImpl.java index bfb809ecbf34..9b1f23aa0d0c 100644 --- a/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimatesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/power/EnhancedEstimatesImpl.java @@ -1,5 +1,7 @@ package com.android.systemui.power; +import com.android.settingslib.fuelgauge.Estimate; + public class EnhancedEstimatesImpl implements EnhancedEstimates { @Override diff --git a/packages/SystemUI/src/com/android/systemui/power/Estimate.kt b/packages/SystemUI/src/com/android/systemui/power/Estimate.kt deleted file mode 100644 index dca0d45c1c9f..000000000000 --- a/packages/SystemUI/src/com/android/systemui/power/Estimate.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.android.systemui.power - -data class Estimate(val estimateMillis: Long, val isBasedOnUsage: Boolean)
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java index 25d6d940d92e..b57c053964ca 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java @@ -42,6 +42,7 @@ import android.util.Log; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; +import com.android.settingslib.fuelgauge.Estimate; import com.android.settingslib.utils.ThreadUtils; import com.android.systemui.Dependency; import com.android.systemui.R; @@ -283,6 +284,7 @@ public class PowerUI extends SystemUI { mCurrentBatteryStateSnapshot = new BatteryStateSnapshot(mBatteryLevel, isPowerSaverMode, plugged, bucket, mBatteryStatus, mLowBatteryReminderLevels[1], mLowBatteryReminderLevels[0], estimate.getEstimateMillis(), + estimate.getAverageDischargeTime(), mEnhancedEstimates.getSevereWarningThreshold(), mEnhancedEstimates.getLowWarningThreshold(), estimate.isBasedOnUsage(), mEnhancedEstimates.getLowWarningEnabled()); @@ -316,7 +318,8 @@ public class PowerUI extends SystemUI { return estimate; } return new Estimate(mLastBatteryStateSnapshot.getTimeRemainingMillis(), - mLastBatteryStateSnapshot.isBasedOnUsage()); + mLastBatteryStateSnapshot.isBasedOnUsage(), + mLastBatteryStateSnapshot.getAverageTimeToDischargeMillis()); } @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java index ebc3a6adaeee..e22a21ad1fed 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/PagedTileLayout.java @@ -63,6 +63,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { private int mLayoutDirection; private int mHorizontalClipBound; private final Rect mClippingRect; + private int mLastMaxHeight = -1; public PagedTileLayout(Context context, AttributeSet attrs) { super(context, attrs); @@ -303,8 +304,11 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout { protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int nTiles = mTiles.size(); - if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) { + // If we have no reason to recalculate the number of rows, skip this step. In particular, + // if the height passed by its parent is the same as the last time, we try not to remeasure. + if (mDistributeTiles || mLastMaxHeight != MeasureSpec.getSize(heightMeasureSpec)) { + mLastMaxHeight = MeasureSpec.getSize(heightMeasureSpec); // Only change the pages if the number of rows or columns (from updateResources) has // changed or the tiles have changed if (mPages.get(0).updateMaxRows(heightMeasureSpec, nTiles) || mDistributeTiles) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroup.java b/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroup.java index 7de8b74f30cc..e352b58ea552 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroup.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroup.java @@ -19,6 +19,8 @@ package com.android.systemui.qs; import static com.android.systemui.util.InjectionInflationController.VIEW_CONTEXT; import android.content.Context; +import android.content.Intent; +import android.provider.Settings; import android.telephony.SubscriptionManager; import android.util.AttributeSet; import android.util.Log; @@ -30,6 +32,7 @@ import androidx.annotation.VisibleForTesting; import com.android.keyguard.CarrierTextController; import com.android.systemui.Dependency; import com.android.systemui.R; +import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.policy.NetworkController; import javax.inject.Inject; @@ -40,7 +43,7 @@ import javax.inject.Named; */ public class QSCarrierGroup extends LinearLayout implements CarrierTextController.CarrierTextCallback, - NetworkController.SignalCallback { + NetworkController.SignalCallback, View.OnClickListener { private static final String TAG = "QSCarrierGroup"; /** @@ -53,20 +56,29 @@ public class QSCarrierGroup extends LinearLayout implements private QSCarrier[] mCarrierGroups = new QSCarrier[SIM_SLOTS]; private final CellSignalState[] mInfos = new CellSignalState[SIM_SLOTS]; private CarrierTextController mCarrierTextController; + private ActivityStarter mActivityStarter; private boolean mListening; @Inject public QSCarrierGroup(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs, - NetworkController networkController) { + NetworkController networkController, ActivityStarter activityStarter) { super(context, attrs); mNetworkController = networkController; + mActivityStarter = activityStarter; } @VisibleForTesting public QSCarrierGroup(Context context, AttributeSet attrs) { this(context, attrs, - Dependency.get(NetworkController.class)); + Dependency.get(NetworkController.class), + Dependency.get(ActivityStarter.class)); + } + + @Override + public void onClick(View v) { + mActivityStarter.postStartActivityDismissingKeyguard(new Intent( + Settings.ACTION_WIRELESS_SETTINGS), 0); } @Override @@ -82,6 +94,7 @@ public class QSCarrierGroup extends LinearLayout implements for (int i = 0; i < SIM_SLOTS; i++) { mInfos[i] = new CellSignalState(); + mCarrierGroups[i].setOnClickListener(this); } CharSequence separator = mContext.getString( diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java index dbd304233601..f0413cd6651b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java @@ -103,7 +103,9 @@ public class QSContainerImpl extends FrameLayout { if (navBelow) { maxQs -= getResources().getDimensionPixelSize(R.dimen.navigation_bar_height); } - mQSPanel.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(maxQs, MeasureSpec.AT_MOST)); + // Measure with EXACTLY. That way, PagedTileLayout will only use excess height and will be + // measured last, after other views and padding is accounted for. + mQSPanel.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(maxQs, MeasureSpec.EXACTLY)); int width = mQSPanel.getMeasuredWidth(); int height = layoutParams.topMargin + layoutParams.bottomMargin + mQSPanel.getMeasuredHeight() + getPaddingBottom(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index d6e03060c7f7..fcaf98165016 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -128,6 +128,24 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne addView(mDivider); } + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + // We want all the logic of LinearLayout#onMeasure, and for it to assign the excess space + // not used by the other children to PagedTileLayout. However, in this case, LinearLayout + // assumes that PagedTileLayout would use all the excess space. This is not the case as + // PagedTileLayout height is quantized (because it shows a certain number of rows). + // Therefore, after everything is measured, we need to make sure that we add up the correct + // total height + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + int height = getPaddingBottom() + getPaddingTop(); + int numChildren = getChildCount(); + for (int i = 0; i < numChildren; i++) { + View child = getChildAt(i); + if (child.getVisibility() != View.GONE) height += child.getMeasuredHeight(); + } + setMeasuredDimension(getMeasuredWidth(), height); + } + public View getDivider() { return mDivider; } @@ -282,6 +300,7 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mFooter.onConfigurationChanged(); + updateResources(); updateBrightnessMirror(); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index d78982183db9..2e3065aeee03 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -35,6 +35,7 @@ import android.media.AudioManager; import android.os.Handler; import android.os.Looper; import android.provider.AlarmClock; +import android.provider.Settings; import android.service.notification.ZenModeConfig; import android.text.format.DateUtils; import android.util.AttributeSet; @@ -133,9 +134,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements private ImageView mNextAlarmIcon; /** {@link TextView} containing the actual text indicating when the next alarm will go off. */ private TextView mNextAlarmTextView; + private View mNextAlarmContainer; private View mStatusSeparator; private ImageView mRingerModeIcon; private TextView mRingerModeTextView; + private View mRingerContainer; private Clock mClockView; private DateView mDateView; private OngoingPrivacyChip mPrivacyChip; @@ -203,10 +206,14 @@ public class QuickStatusBarHeader extends RelativeLayout implements mStatusSeparator = findViewById(R.id.status_separator); mNextAlarmIcon = findViewById(R.id.next_alarm_icon); mNextAlarmTextView = findViewById(R.id.next_alarm_text); + mNextAlarmContainer = findViewById(R.id.alarm_container); + mNextAlarmContainer.setOnClickListener(this::onClick); mRingerModeIcon = findViewById(R.id.ringer_mode_icon); mRingerModeTextView = findViewById(R.id.ringer_mode_text); + mRingerContainer = findViewById(R.id.ringer_container); + mRingerContainer.setOnClickListener(this::onClick); mPrivacyChip = findViewById(R.id.privacy_chip); - mPrivacyChip.setOnClickListener(this); + mPrivacyChip.setOnClickListener(this::onClick); mCarrierGroup = findViewById(R.id.carrier_group); @@ -236,6 +243,8 @@ public class QuickStatusBarHeader extends RelativeLayout implements // QS will always show the estimate, and BatteryMeterView handles the case where // it's unavailable or charging mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE); + mRingerModeTextView.setSelected(true); + mNextAlarmTextView.setSelected(true); } private List<String> getIgnoredIconSlots() { @@ -285,11 +294,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements if (!ZenModeConfig.isZenOverridingRinger(mZenController.getZen(), mZenController.getConsolidatedPolicy())) { if (mRingerMode == AudioManager.RINGER_MODE_VIBRATE) { - mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_vibrate); + mRingerModeIcon.setImageResource(R.drawable.ic_volume_ringer_vibrate); mRingerModeTextView.setText(R.string.qs_status_phone_vibrate); ringerVisible = true; } else if (mRingerMode == AudioManager.RINGER_MODE_SILENT) { - mRingerModeIcon.setImageResource(R.drawable.stat_sys_ringer_silent); + mRingerModeIcon.setImageResource(R.drawable.ic_volume_ringer_mute); mRingerModeTextView.setText(R.string.qs_status_phone_muted); ringerVisible = true; } @@ -546,7 +555,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements @Override public void onClick(View v) { - if (v == mClockView) { + if (v == mClockView || v == mNextAlarmContainer) { mActivityStarter.postStartActivityDismissingKeyguard(new Intent( AlarmClock.ACTION_SHOW_ALARMS),0); } else if (v == mPrivacyChip) { @@ -561,6 +570,9 @@ public class QuickStatusBarHeader extends RelativeLayout implements new Intent(Intent.ACTION_REVIEW_ONGOING_PERMISSION_USAGE), 0); mHost.collapsePanels(); }); + } else if (v == mRingerContainer) { + mActivityStarter.postStartActivityDismissingKeyguard(new Intent( + Settings.ACTION_SOUND_SETTINGS), 0); } } @@ -573,7 +585,6 @@ public class QuickStatusBarHeader extends RelativeLayout implements @Override public void onZenChanged(int zen) { updateStatusText(); - } @Override @@ -731,8 +742,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements public void setMargins(int sideMargins) { for (int i = 0; i < getChildCount(); i++) { View v = getChildAt(i); + // Prevents these views from getting set a margin. + // The Icon views all have the same padding set in XML to be aligned. if (v == mSystemIconsView || v == mQuickQsStatusIcons || v == mHeaderQsPanel - || v == mPrivacyChip) { + || v == mHeaderTextContainerView) { continue; } RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java index 1dd729d0624c..8aacd725ceb4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java +++ b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java @@ -137,7 +137,8 @@ public class TileLayout extends ViewGroup implements QSTileLayout { * @param tilesCount Upper limit on the number of tiles to show. to prevent empty rows. */ public boolean updateMaxRows(int heightMeasureSpec, int tilesCount) { - final int availableHeight = MeasureSpec.getSize(heightMeasureSpec) - mCellMarginTop; + final int availableHeight = MeasureSpec.getSize(heightMeasureSpec) - mCellMarginTop + + mCellMarginVertical; final int previousRows = mRows; mRows = availableHeight / (mCellHeight + mCellMarginVertical); if (mRows >= mMaxAllowedRows) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java index 8d2f8952cc6e..f26a94fed8a4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java @@ -81,6 +81,7 @@ public class UiModeNightTile extends QSTileImpl<QSTile.BooleanState> implements state.icon = mIcon; state.expandedAccessibilityClassName = Switch.class.getName(); state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE; + state.showRippleEffect = false; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index b2302cccba25..898f64be9e55 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -354,17 +354,22 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis private final ServiceConnection mOverviewServiceConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { - mHandler.removeCallbacks(mDeferredConnectionCallback); - mCurrentBoundedUserId = mDeviceProvisionedController.getCurrentUser(); mConnectionBackoffAttempts = 0; - mOverviewProxy = IOverviewProxy.Stub.asInterface(service); - // Listen for launcher's death + mHandler.removeCallbacks(mDeferredConnectionCallback); try { service.linkToDeath(mOverviewServiceDeathRcpt, 0); } catch (RemoteException e) { + // Failed to link to death (process may have died between binding and connecting), + // just unbind the service for now and retry again Log.e(TAG_OPS, "Lost connection to launcher service", e); + disconnectFromLauncherService(); + retryConnectionWithBackoff(); + return; } + mCurrentBoundedUserId = mDeviceProvisionedController.getCurrentUser(); + mOverviewProxy = IOverviewProxy.Stub.asInterface(service); + Bundle params = new Bundle(); params.putBinder(KEY_EXTRA_SYSUI_PROXY, mSysUiProxy.asBinder()); params.putFloat(KEY_EXTRA_WINDOW_CORNER_RADIUS, mWindowCornerRadius); @@ -550,7 +555,6 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis mHandler.post(()-> { StatusBar bar = SysUiServiceProvider.getComponent(mContext, StatusBar.class); if (bar != null) { - System.out.println("MERONG dispatchNotificationPanelTouchEvent"); mStatusBarGestureDownEvent.setAction(MotionEvent.ACTION_CANCEL); bar.dispatchNotificationsPanelTouchEvent(mStatusBarGestureDownEvent); mStatusBarGestureDownEvent.recycle(); diff --git a/packages/SystemUI/src/com/android/systemui/settings/CurrentUserObservable.java b/packages/SystemUI/src/com/android/systemui/settings/CurrentUserObservable.java new file mode 100644 index 000000000000..3cf08b4b866e --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/settings/CurrentUserObservable.java @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.settings; + +import android.content.Context; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; + +/** + * A class that has an observable for the current user. + */ +public class CurrentUserObservable { + + private final CurrentUserTracker mTracker; + + private final MutableLiveData<Integer> mCurrentUser = new MutableLiveData<Integer>() { + @Override + protected void onActive() { + super.onActive(); + mTracker.startTracking(); + } + + @Override + protected void onInactive() { + super.onInactive(); + mTracker.startTracking(); + } + }; + + public CurrentUserObservable(Context context) { + mTracker = new CurrentUserTracker(context) { + @Override + public void onUserSwitched(int newUserId) { + mCurrentUser.setValue(newUserId); + } + }; + } + + /** + * Returns the current user that can be observed. + */ + public LiveData<Integer> getCurrentUser() { + if (mCurrentUser.getValue() == null) { + mCurrentUser.setValue(mTracker.getCurrentUserId()); + } + return mCurrentUser; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java index 2f99cf311eec..d5849598342f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java @@ -18,7 +18,10 @@ package com.android.systemui.statusbar; import static android.app.StatusBarManager.DISABLE2_NONE; import static android.app.StatusBarManager.DISABLE_NONE; +import static android.inputmethodservice.InputMethodService.BACK_DISPOSITION_DEFAULT; +import static android.inputmethodservice.InputMethodService.IME_INVISIBLE; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.Display.INVALID_DISPLAY; import static com.android.systemui.statusbar.phone.StatusBar.ONLY_CORE_APPS; @@ -40,6 +43,7 @@ import android.os.Looper; import android.os.Message; import android.util.Pair; import android.util.SparseArray; +import android.view.inputmethod.InputMethodSystemProperty; import androidx.annotation.VisibleForTesting; @@ -127,6 +131,11 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< private Handler mHandler = new H(Looper.getMainLooper()); /** A map of display id - disable flag pair */ private SparseArray<Pair<Integer, Integer>> mDisplayDisabled = new SparseArray<>(); + /** + * The last ID of the display where IME window for which we received setImeWindowStatus + * event. + */ + private int mLastUpdatedImeDisplayId = INVALID_DISPLAY; /** * These methods are called back on the main thread. @@ -785,6 +794,32 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< } } + private void handleShowImeButton(int displayId, IBinder token, int vis, int backDisposition, + boolean showImeSwitcher) { + if (displayId == INVALID_DISPLAY) return; + + if (!InputMethodSystemProperty.MULTI_CLIENT_IME_ENABLED + && mLastUpdatedImeDisplayId != displayId + && mLastUpdatedImeDisplayId != INVALID_DISPLAY) { + // Set previous NavBar's IME window status as invisible when IME + // window switched to another display for single-session IME case. + sendImeInvisibleStatusForPrevNavBar(); + } + for (int i = 0; i < mCallbacks.size(); i++) { + mCallbacks.get(i).setImeWindowStatus(displayId, token, vis, backDisposition, + showImeSwitcher); + } + mLastUpdatedImeDisplayId = displayId; + } + + private void sendImeInvisibleStatusForPrevNavBar() { + for (int i = 0; i < mCallbacks.size(); i++) { + mCallbacks.get(i).setImeWindowStatus(mLastUpdatedImeDisplayId, + null /* token */, IME_INVISIBLE, BACK_DISPOSITION_DEFAULT, + false /* showImeSwitcher */); + } + } + private final class H extends Handler { private H(Looper l) { super(l); @@ -852,10 +887,9 @@ public class CommandQueue extends IStatusBar.Stub implements CallbackController< break; case MSG_SHOW_IME_BUTTON: args = (SomeArgs) msg.obj; - for (int i = 0; i < mCallbacks.size(); i++) { - mCallbacks.get(i).setImeWindowStatus(args.argi1, (IBinder) args.arg1, - args.argi2, args.argi3, args.argi4 != 0 /* showImeSwitcher */); - } + handleShowImeButton(args.argi1 /* displayId */, (IBinder) args.arg1 /* token */, + args.argi2 /* vis */, args.argi3 /* backDisposition */, + args.argi4 != 0 /* showImeSwitcher */); break; case MSG_SHOW_RECENT_APPS: for (int i = 0; i < mCallbacks.size(); i++) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java index 2da68249d8c4..6adaa0ddbfd2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java @@ -149,6 +149,13 @@ public class KeyguardAffordanceView extends ImageView { updateIconColor(); } + /** + * If current drawable should be tinted. + */ + public boolean shouldTint() { + return mShouldTint; + } + @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); @@ -168,6 +175,9 @@ public class KeyguardAffordanceView extends ImageView { } public void setPreviewView(View v) { + if (mPreviewView == v) { + return; + } View oldPreviewView = mPreviewView; mPreviewView = v; if (mPreviewView != null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index 7d4cf75059dd..610159345110 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -134,7 +134,10 @@ public class KeyguardIndicationController implements StateListener { mTextView.getTextColors() : ColorStateList.valueOf(Color.WHITE); mDisclosure = indicationArea.findViewById(R.id.keyguard_indication_enterprise_disclosure); mLockIcon = lockIcon; - mLockIcon.setOnLongClickListener(this::handleTrustCircleClick); + // lock icon is not used on all form factors. + if (mLockIcon != null) { + mLockIcon.setOnLongClickListener(this::handleTrustCircleClick); + } mWakeLock = new SettableWakeLock(wakeLock, TAG); mLockPatternUtils = lockPatternUtils; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationInterruptionStateProvider.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationInterruptionStateProvider.java index 059c3f672b69..926d4b6a79b3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationInterruptionStateProvider.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationInterruptionStateProvider.java @@ -147,7 +147,14 @@ public class NotificationInterruptionStateProvider { * @return true if the entry should bubble up, false otherwise */ public boolean shouldBubbleUp(NotificationEntry entry) { - StatusBarNotification sbn = entry.notification; + final StatusBarNotification sbn = entry.notification; + if (!entry.canBubble) { + if (DEBUG) { + Log.d(TAG, "No bubble up: not allowed to bubble: " + sbn.getKey()); + } + return false; + } + if (!entry.isBubble()) { if (DEBUG) { Log.d(TAG, "No bubble up: notification " + sbn.getKey() @@ -156,6 +163,15 @@ public class NotificationInterruptionStateProvider { return false; } + final Notification n = sbn.getNotification(); + if (n.getBubbleMetadata() == null || n.getBubbleMetadata().getIntent() == null) { + if (DEBUG) { + Log.d(TAG, "No bubble up: notification: " + sbn.getKey() + + " doesn't have valid metadata"); + } + return false; + } + if (!canHeadsUpCommon(entry)) { return false; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java index efdcd053bc54..6b2efaab0a64 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java @@ -100,6 +100,7 @@ import com.android.systemui.statusbar.notification.stack.NotificationStackScroll import com.android.systemui.statusbar.phone.NotificationGroupManager; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.HeadsUpManager; +import com.android.systemui.statusbar.policy.InflatedSmartReplies.SmartRepliesAndActions; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -3194,6 +3195,13 @@ public class ExpandableNotificationRow extends ActivatableNotificationView mAmbientGoingAway = goingAway; } + /** + * Returns the Smart Suggestions backing the smart suggestion buttons in the notification. + */ + public SmartRepliesAndActions getExistingSmartRepliesAndActions() { + return mPrivateLayout.getCurrentSmartRepliesAndActions(); + } + @VisibleForTesting protected void setChildrenContainer(NotificationChildrenContainer childrenContainer) { mChildrenContainer = childrenContainer; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java index 18dcf4c55d21..396cd73f9a22 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java @@ -44,6 +44,7 @@ import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewW import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.InflatedSmartReplies; +import com.android.systemui.statusbar.policy.InflatedSmartReplies.SmartRepliesAndActions; import com.android.systemui.statusbar.policy.SmartReplyConstants; import com.android.systemui.util.Assert; @@ -282,7 +283,8 @@ public class NotificationContentInflater { mIsChildInGroup, mUsesIncreasedHeight, mUsesIncreasedHeadsUpHeight, mRedactAmbient, packageContext); result = inflateSmartReplyViews(result, reInflateFlags, mRow.getEntry(), - mRow.getContext(), mRow.getHeadsUpManager()); + mRow.getContext(), mRow.getHeadsUpManager(), + mRow.getExistingSmartRepliesAndActions()); apply( inflateSynchronously, result, @@ -344,20 +346,20 @@ public class NotificationContentInflater { private static InflationProgress inflateSmartReplyViews(InflationProgress result, @InflationFlag int reInflateFlags, NotificationEntry entry, Context context, - HeadsUpManager headsUpManager) { + HeadsUpManager headsUpManager, SmartRepliesAndActions previousSmartRepliesAndActions) { SmartReplyConstants smartReplyConstants = Dependency.get(SmartReplyConstants.class); SmartReplyController smartReplyController = Dependency.get(SmartReplyController.class); if ((reInflateFlags & FLAG_CONTENT_VIEW_EXPANDED) != 0 && result.newExpandedView != null) { result.expandedInflatedSmartReplies = InflatedSmartReplies.inflate( context, entry, smartReplyConstants, smartReplyController, - headsUpManager); + headsUpManager, previousSmartRepliesAndActions); } if ((reInflateFlags & FLAG_CONTENT_VIEW_HEADS_UP) != 0 && result.newHeadsUpView != null) { result.headsUpInflatedSmartReplies = InflatedSmartReplies.inflate( context, entry, smartReplyConstants, smartReplyController, - headsUpManager); + headsUpManager, previousSmartRepliesAndActions); } return result; } @@ -905,7 +907,8 @@ public class NotificationContentInflater { mIsChildInGroup, mUsesIncreasedHeight, mUsesIncreasedHeadsUpHeight, mRedactAmbient, packageContext); return inflateSmartReplyViews(inflationProgress, mReInflateFlags, mRow.getEntry(), - mRow.getContext(), mRow.getHeadsUpManager()); + mRow.getContext(), mRow.getHeadsUpManager(), + mRow.getExistingSmartRepliesAndActions()); } catch (Exception e) { mError = e; return null; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java index 78500357f41f..b81d81438ea3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java @@ -93,6 +93,7 @@ public class NotificationContentView extends FrameLayout { private SmartReplyController mSmartReplyController; private InflatedSmartReplies mExpandedInflatedSmartReplies; private InflatedSmartReplies mHeadsUpInflatedSmartReplies; + private SmartRepliesAndActions mCurrentSmartRepliesAndActions; private NotificationViewWrapper mContractedWrapper; private NotificationViewWrapper mExpandedWrapper; @@ -1259,18 +1260,18 @@ public class NotificationContentView extends FrameLayout { // the same SmartRepliesAndActions to avoid discrepancies between the two views. We here // reuse that object for our local SmartRepliesAndActions to avoid discrepancies between // this class and the InflatedSmartReplies classes. - SmartRepliesAndActions smartRepliesAndActions = mExpandedInflatedSmartReplies != null + mCurrentSmartRepliesAndActions = mExpandedInflatedSmartReplies != null ? mExpandedInflatedSmartReplies.getSmartRepliesAndActions() : mHeadsUpInflatedSmartReplies.getSmartRepliesAndActions(); if (DEBUG) { Log.d(TAG, String.format("Adding suggestions for %s, %d actions, and %d replies.", entry.notification.getKey(), - smartRepliesAndActions.smartActions == null ? 0 : - smartRepliesAndActions.smartActions.actions.size(), - smartRepliesAndActions.smartReplies == null ? 0 : - smartRepliesAndActions.smartReplies.choices.length)); + mCurrentSmartRepliesAndActions.smartActions == null ? 0 : + mCurrentSmartRepliesAndActions.smartActions.actions.size(), + mCurrentSmartRepliesAndActions.smartReplies == null ? 0 : + mCurrentSmartRepliesAndActions.smartReplies.choices.length)); } - applySmartReplyView(smartRepliesAndActions, entry); + applySmartReplyView(mCurrentSmartRepliesAndActions, entry); } private void applyRemoteInput(NotificationEntry entry, boolean hasFreeformRemoteInput) { @@ -1472,6 +1473,13 @@ public class NotificationContentView extends FrameLayout { } } + /** + * Returns the smart replies and actions currently shown in the notification. + */ + @Nullable public SmartRepliesAndActions getCurrentSmartRepliesAndActions() { + return mCurrentSmartRepliesAndActions; + } + public void closeRemoteInput() { if (mHeadsUpRemoteInput != null) { mHeadsUpRemoteInput.close(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java index 959342b27b56..5f5fad33fbfe 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java @@ -61,6 +61,7 @@ public class ButtonDispatcher { private final AnimatorListenerAdapter mFadeListener = new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { + mFadeAnimator = null; setVisibility(getAlpha() == 1 ? View.VISIBLE : View.INVISIBLE); } }; @@ -143,7 +144,6 @@ public class ButtonDispatcher { if (mVisibility == visibility) return; if (mFadeAnimator != null) { mFadeAnimator.cancel(); - mFadeAnimator = null; } mVisibility = visibility; @@ -176,13 +176,13 @@ public class ButtonDispatcher { if (mFadeAnimator != null) { mFadeAnimator.cancel(); } + setVisibility(View.VISIBLE); mFadeAnimator = ValueAnimator.ofFloat(getAlpha(), alpha); mFadeAnimator.setDuration(duration); mFadeAnimator.setInterpolator(getAlpha() < alpha ? ALPHA_IN : ALPHA_OUT); mFadeAnimator.addListener(mFadeListener); mFadeAnimator.addUpdateListener(mAlphaListener); mFadeAnimator.start(); - setVisibility(View.VISIBLE); } else { mAlpha = alpha; final int N = mViews.size(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java index cb64f10d9e8c..5b464a9ecd97 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java @@ -337,7 +337,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private void updateRightAffordanceIcon() { IconState state = mRightButton.getIcon(); mRightAffordanceView.setVisibility(!mDozing && state.isVisible ? View.VISIBLE : View.GONE); - mRightAffordanceView.setImageDrawable(state.drawable, state.tint); + if (state.drawable != mRightAffordanceView.getDrawable() + || state.tint != mRightAffordanceView.shouldTint()) { + mRightAffordanceView.setImageDrawable(state.drawable, state.tint); + } mRightAffordanceView.setContentDescription(state.contentDescription); } @@ -389,7 +392,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private void updateLeftAffordanceIcon() { IconState state = mLeftButton.getIcon(); mLeftAffordanceView.setVisibility(!mDozing && state.isVisible ? View.VISIBLE : View.GONE); - mLeftAffordanceView.setImageDrawable(state.drawable, state.tint); + if (state.drawable != mLeftAffordanceView.getDrawable() + || state.tint != mLeftAffordanceView.shouldTint()) { + mLeftAffordanceView.setImageDrawable(state.drawable, state.tint); + } mLeftAffordanceView.setContentDescription(state.contentDescription); } @@ -715,11 +721,6 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL updateLeftPreview(); } - public void onKeyguardShowingChanged() { - updateLeftAffordance(); - inflateCameraPreview(); - } - private void setRightButton(IntentButton button) { mRightButton = button; updateRightAffordanceIcon(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java index 971e5b3115d6..6121ae603d69 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/LockIcon.java @@ -123,7 +123,6 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange mAccessibilityController = accessibilityController; mConfigurationController = configurationController; mStatusBarStateController = statusBarStateController; - onThemeChanged(); } @Override @@ -133,6 +132,7 @@ public class LockIcon extends KeyguardAffordanceView implements OnUserInfoChange mConfigurationController.addCallback(this); mKeyguardUpdateMonitor.registerCallback(mUpdateMonitorCallback); mUnlockMethodCache.addListener(this); + onThemeChanged(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java index 4d2b56c5e81a..2a933a784ca0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java @@ -715,7 +715,10 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback } mNavigationBarView.onNavigationButtonLongPress(v); mMetricsLogger.action(MetricsEvent.ACTION_ASSIST_LONG_PRESS); - mAssistManager.startAssist(new Bundle() /* args */); + Bundle args = new Bundle(); + args.putInt( + AssistManager.INVOCATION_TYPE_KEY, AssistManager.INVOCATION_HOME_BUTTON_LONG_PRESS); + mAssistManager.startAssist(args); mStatusBar.awakenDreams(); if (mNavigationBarView != null) { @@ -1063,4 +1066,9 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback context.getSystemService(WindowManager.class).addView(navigationBarView, lp); return navigationBarView; } + + @VisibleForTesting + int getNavigationIconHints() { + return mNavigationIconHints; + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 324e14777519..c39a4941fdab 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -1306,7 +1306,6 @@ public class NotificationPanelView extends PanelView implements mKeyguardStatusBar.setAlpha(1f); mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE); if (keyguardShowing && oldState != mBarState) { - mKeyguardBottomArea.onKeyguardShowingChanged(); if (mQs != null) { mQs.hideImmediately(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index a381bbc47657..3f33ba633d77 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -3926,6 +3926,10 @@ public class StatusBar extends SystemUI implements DemoMode, mScrimController.setWakeLockScreenSensorActive(true); } + if (reason == DozeLog.PULSE_REASON_DOCKING && mStatusBarWindow != null) { + mStatusBarWindow.suppressWakeUpGesture(true); + } + boolean passiveAuthInterrupt = reason == DozeLog.PULSE_REASON_NOTIFICATION; // Set the state to pulsing, so ScrimController will know what to do once we ask it to // execute the transition. The pulse callback will then be invoked when the scrims @@ -3945,6 +3949,9 @@ public class StatusBar extends SystemUI implements DemoMode, callback.onPulseFinished(); updateNotificationPanelTouchState(); mScrimController.setWakeLockScreenSensorActive(false); + if (mStatusBarWindow != null) { + mStatusBarWindow.suppressWakeUpGesture(false); + } setPulsing(false); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 09fa9ca6d0cf..cc159b4aaea5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -241,6 +241,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb && !mBouncer.isShowing() && !mBouncer.isAnimatingAway()) { mBouncer.show(false /* resetSecuritySelection */, false /* scrimmed */); } + } else if (mPulsing && expansion == KeyguardBouncer.EXPANSION_VISIBLE) { + // Panel expanded while pulsing but didn't translate the bouncer (because we are + // unlocked.) Let's simply wake-up to dismiss the lock screen. + mStatusBar.wakeUpIfDozing(SystemClock.uptimeMillis(), mContainer, "BOUNCER_VISIBLE"); } } @@ -250,6 +254,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } private void updateLockIcon() { + // Not all form factors have a lock icon + if (mLockIconContainer == null) { + return; + } boolean keyguardWithoutQs = mStatusBarStateController.getState() == StatusBarState.KEYGUARD && !mNotificationPanelView.isQsExpanded(); int lockVisibility = (mBouncer.isShowing() || keyguardWithoutQs) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java index 28db28c7a845..44996acafc63 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java @@ -107,12 +107,13 @@ public class StatusBarWindowView extends FrameLayout { private boolean mTouchActive; private boolean mExpandAnimationRunning; private boolean mExpandAnimationPending; + private boolean mSuppressingWakeUpGesture; private final GestureDetector.SimpleOnGestureListener mGestureListener = new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapConfirmed(MotionEvent e) { - if (mSingleTapEnabled) { + if (mSingleTapEnabled && !mSuppressingWakeUpGesture) { mService.wakeUpIfDozing(SystemClock.uptimeMillis(), StatusBarWindowView.this, "SINGLE_TAP"); return true; @@ -327,6 +328,10 @@ public class StatusBarWindowView extends FrameLayout { mTouchActive = touchActive; } + void suppressWakeUpGesture(boolean suppress) { + mSuppressingWakeUpGesture = suppress; + } + @Override public boolean dispatchTouchEvent(MotionEvent ev) { boolean isDown = ev.getActionMasked() == MotionEvent.ACTION_DOWN; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java index 273fa55ee9d8..fde1455b0af0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java @@ -31,10 +31,10 @@ import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.fuelgauge.BatterySaverUtils; +import com.android.settingslib.fuelgauge.Estimate; import com.android.settingslib.utils.PowerUtil; import com.android.systemui.Dependency; import com.android.systemui.power.EnhancedEstimates; -import com.android.systemui.power.Estimate; import java.io.FileDescriptor; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/InflatedSmartReplies.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/InflatedSmartReplies.java index 5b2e398b66e1..ee78a723a49c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/InflatedSmartReplies.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/InflatedSmartReplies.java @@ -28,15 +28,19 @@ import android.util.Log; import android.util.Pair; import android.widget.Button; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; import com.android.systemui.Dependency; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.DevicePolicyManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; +import com.android.systemui.statusbar.NotificationUiAdjustment; import com.android.systemui.statusbar.SmartReplyController; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -79,29 +83,52 @@ public class InflatedSmartReplies { NotificationEntry entry, SmartReplyConstants smartReplyConstants, SmartReplyController smartReplyController, - HeadsUpManager headsUpManager) { - SmartRepliesAndActions smartRepliesAndActions = + HeadsUpManager headsUpManager, + SmartRepliesAndActions existingSmartRepliesAndActions) { + SmartRepliesAndActions newSmartRepliesAndActions = chooseSmartRepliesAndActions(smartReplyConstants, entry); - if (!shouldShowSmartReplyView(entry, smartRepliesAndActions)) { + if (!shouldShowSmartReplyView(entry, newSmartRepliesAndActions)) { return new InflatedSmartReplies(null /* smartReplyView */, - null /* smartSuggestionButtons */, smartRepliesAndActions); + null /* smartSuggestionButtons */, newSmartRepliesAndActions); } + // Only block clicks if the smart buttons are different from the previous set - to avoid + // scenarios where a user incorrectly cannot click smart buttons because the notification is + // updated. + boolean delayOnClickListener = + !areSuggestionsSimilar(existingSmartRepliesAndActions, newSmartRepliesAndActions); + SmartReplyView smartReplyView = SmartReplyView.inflate(context); List<Button> suggestionButtons = new ArrayList<>(); - if (smartRepliesAndActions.smartReplies != null) { + if (newSmartRepliesAndActions.smartReplies != null) { suggestionButtons.addAll(smartReplyView.inflateRepliesFromRemoteInput( - smartRepliesAndActions.smartReplies, smartReplyController, entry)); + newSmartRepliesAndActions.smartReplies, smartReplyController, entry, + delayOnClickListener)); } - if (smartRepliesAndActions.smartActions != null) { + if (newSmartRepliesAndActions.smartActions != null) { suggestionButtons.addAll( - smartReplyView.inflateSmartActions(smartRepliesAndActions.smartActions, - smartReplyController, entry, headsUpManager)); + smartReplyView.inflateSmartActions(newSmartRepliesAndActions.smartActions, + smartReplyController, entry, headsUpManager, + delayOnClickListener)); } return new InflatedSmartReplies(smartReplyView, suggestionButtons, - smartRepliesAndActions); + newSmartRepliesAndActions); + } + + @VisibleForTesting + static boolean areSuggestionsSimilar( + SmartRepliesAndActions left, SmartRepliesAndActions right) { + if (left == right) return true; + if (left == null || right == null) return false; + + if (!Arrays.equals(left.getSmartReplies(), right.getSmartReplies())) { + return false; + } + + return !NotificationUiAdjustment.areDifferent( + left.getSmartActions(), right.getSmartActions()); } /** @@ -260,5 +287,13 @@ public class InflatedSmartReplies { this.smartReplies = smartReplies; this.smartActions = smartActions; } + + @NonNull public CharSequence[] getSmartReplies() { + return smartReplies == null ? new CharSequence[0] : smartReplies.choices; + } + + @NonNull public List<Notification.Action> getSmartActions() { + return smartActions == null ? Collections.emptyList() : smartActions.actions; + } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java index e57cff789a23..f02b5441a737 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyConstants.java @@ -47,6 +47,7 @@ public final class SmartReplyConstants { private final boolean mDefaultShowInHeadsUp; private final int mDefaultMinNumSystemGeneratedReplies; private final int mDefaultMaxNumActions; + private final int mDefaultOnClickInitDelay; // These fields are updated on the UI thread but can be accessed on both the UI thread and // background threads. We use the volatile keyword here instead of synchronization blocks since @@ -59,6 +60,7 @@ public final class SmartReplyConstants { private volatile boolean mShowInHeadsUp; private volatile int mMinNumSystemGeneratedReplies; private volatile int mMaxNumActions; + private volatile long mOnClickInitDelay; private final Handler mHandler; private final Context mContext; @@ -83,6 +85,8 @@ public final class SmartReplyConstants { R.integer.config_smart_replies_in_notifications_min_num_system_generated_replies); mDefaultMaxNumActions = resources.getInteger( R.integer.config_smart_replies_in_notifications_max_num_actions); + mDefaultOnClickInitDelay = resources.getInteger( + R.integer.config_smart_replies_in_notifications_onclick_init_delay); registerDeviceConfigListener(); updateConstants(); @@ -136,6 +140,10 @@ public final class SmartReplyConstants { DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.SSIN_MAX_NUM_ACTIONS, mDefaultMaxNumActions); + mOnClickInitDelay = DeviceConfig.getInt( + DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.SSIN_ONCLICK_INIT_DELAY, + mDefaultOnClickInitDelay); } } @@ -218,4 +226,12 @@ public final class SmartReplyConstants { public int getMaxNumActions() { return mMaxNumActions; } + + /** + * Returns the amount of time (ms) before smart suggestions are clickable, since the suggestions + * were added. + */ + public long getOnClickInitDelay() { + return mOnClickInitDelay; + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyView.java index ed5487f74356..0f7a0f09b2e1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyView.java @@ -16,6 +16,7 @@ import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.InsetDrawable; import android.graphics.drawable.RippleDrawable; import android.os.Bundle; +import android.os.SystemClock; import android.text.Layout; import android.text.TextPaint; import android.text.method.TransformationMethod; @@ -213,14 +214,16 @@ public class SmartReplyView extends ViewGroup { */ public List<Button> inflateRepliesFromRemoteInput( @NonNull SmartReplies smartReplies, - SmartReplyController smartReplyController, NotificationEntry entry) { + SmartReplyController smartReplyController, NotificationEntry entry, + boolean delayOnClickListener) { List<Button> buttons = new ArrayList<>(); if (smartReplies.remoteInput != null && smartReplies.pendingIntent != null) { if (smartReplies.choices != null) { for (int i = 0; i < smartReplies.choices.length; ++i) { buttons.add(inflateReplyButton( - this, getContext(), i, smartReplies, smartReplyController, entry)); + this, getContext(), i, smartReplies, smartReplyController, entry, + delayOnClickListener)); } this.mSmartRepliesGeneratedByAssistant = smartReplies.fromAssistant; } @@ -234,7 +237,7 @@ public class SmartReplyView extends ViewGroup { */ public List<Button> inflateSmartActions(@NonNull SmartActions smartActions, SmartReplyController smartReplyController, NotificationEntry entry, - HeadsUpManager headsUpManager) { + HeadsUpManager headsUpManager, boolean delayOnClickListener) { List<Button> buttons = new ArrayList<>(); int numSmartActions = smartActions.actions.size(); for (int n = 0; n < numSmartActions; n++) { @@ -242,7 +245,7 @@ public class SmartReplyView extends ViewGroup { if (action.actionIntent != null) { buttons.add(inflateActionButton( this, getContext(), n, smartActions, smartReplyController, entry, - headsUpManager)); + headsUpManager, delayOnClickListener)); } } return buttons; @@ -259,7 +262,7 @@ public class SmartReplyView extends ViewGroup { @VisibleForTesting static Button inflateReplyButton(SmartReplyView smartReplyView, Context context, int replyIndex, SmartReplies smartReplies, SmartReplyController smartReplyController, - NotificationEntry entry) { + NotificationEntry entry, boolean useDelayedOnClickListener) { Button b = (Button) LayoutInflater.from(context).inflate( R.layout.smart_reply_button, smartReplyView, false); CharSequence choice = smartReplies.choices[replyIndex]; @@ -299,9 +302,13 @@ public class SmartReplyView extends ViewGroup { return false; // do not defer }; - b.setOnClickListener(view -> { + OnClickListener onClickListener = view -> smartReplyView.mKeyguardDismissUtil.executeWhenUnlocked(action); - }); + if (useDelayedOnClickListener) { + onClickListener = new DelayedOnClickListener(onClickListener, + smartReplyView.mConstants.getOnClickInitDelay()); + } + b.setOnClickListener(onClickListener); b.setAccessibilityDelegate(new AccessibilityDelegate() { public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { @@ -322,7 +329,7 @@ public class SmartReplyView extends ViewGroup { static Button inflateActionButton(SmartReplyView smartReplyView, Context context, int actionIndex, SmartActions smartActions, SmartReplyController smartReplyController, NotificationEntry entry, - HeadsUpManager headsUpManager) { + HeadsUpManager headsUpManager, boolean useDelayedOnClickListener) { Notification.Action action = smartActions.actions.get(actionIndex); Button button = (Button) LayoutInflater.from(context).inflate( R.layout.smart_action_button, smartReplyView, false); @@ -335,14 +342,19 @@ public class SmartReplyView extends ViewGroup { iconDrawable.setBounds(0, 0, newIconSize, newIconSize); button.setCompoundDrawables(iconDrawable, null, null, null); - button.setOnClickListener(view -> + OnClickListener onClickListener = view -> smartReplyView.getActivityStarter().startPendingIntentDismissingKeyguard( action.actionIntent, () -> { smartReplyController.smartActionClicked( entry, actionIndex, action, smartActions.fromAssistant); headsUpManager.removeNotification(entry.key, true); - })); + }); + if (useDelayedOnClickListener) { + onClickListener = new DelayedOnClickListener(onClickListener, + smartReplyView.mConstants.getOnClickInitDelay()); + } + button.setOnClickListener(onClickListener); // Mark this as an Action button final LayoutParams lp = (LayoutParams) button.getLayoutParams(); @@ -958,4 +970,32 @@ public class SmartReplyView extends ViewGroup { this.fromAssistant = fromAssistant; } } + + /** + * An OnClickListener wrapper that blocks the underlying OnClickListener for a given amount of + * time. + */ + private static class DelayedOnClickListener implements OnClickListener { + private final OnClickListener mActualListener; + private final long mInitDelayMs; + private final long mInitTimeMs; + + DelayedOnClickListener(OnClickListener actualOnClickListener, long initDelayMs) { + mActualListener = actualOnClickListener; + mInitDelayMs = initDelayMs; + mInitTimeMs = SystemClock.elapsedRealtime(); + } + + public void onClick(View v) { + if (hasFinishedInitialization()) { + mActualListener.onClick(v); + } else { + Log.i(TAG, "Accidental Smart Suggestion click registered, delay: " + mInitDelayMs); + } + } + + private boolean hasFinishedInitialization() { + return SystemClock.elapsedRealtime() >= mInitTimeMs + mInitDelayMs; + } + } } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java index df534d79f730..9f91a17e846d 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java @@ -104,7 +104,8 @@ public class CarrierTextControllerTest extends SysuiTestCase { mCarrierTextCallbackInfo = new CarrierTextController.CarrierTextCallbackInfo("", new CharSequence[]{}, false, new int[]{}); - when(mTelephonyManager.getPhoneCount()).thenReturn(2); + when(mTelephonyManager.getPhoneCount()).thenReturn(3); + mCarrierTextController = new TestCarrierTextController(mContext, SEPARATOR, true, true, mKeyguardUpdateMonitor); // This should not start listening on any of the real dependencies @@ -130,6 +131,12 @@ public class CarrierTextControllerTest extends SysuiTestCase { reset(mCarrierTextCallback); when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn( new ArrayList<>()); + + // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the + // same answer as KeyguardUpdateMonitor. Remove when this is addressed + when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn( + new ArrayList<>()); + when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn( IccCardConstants.State.CARD_IO_ERROR); // This should not produce an out of bounds error, even though there are no subscriptions @@ -173,7 +180,11 @@ public class CarrierTextControllerTest extends SysuiTestCase { list.add(TEST_SUBSCRIPTION); when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn(IccCardConstants.State.READY); when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list); + + // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the + // same answer as KeyguardUpdateMonitor. Remove when this is addressed when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list); + mKeyguardUpdateMonitor.mServiceStates = new HashMap<>(); ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = @@ -197,7 +208,11 @@ public class CarrierTextControllerTest extends SysuiTestCase { list.add(TEST_SUBSCRIPTION_ROAMING); when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn(IccCardConstants.State.READY); when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list); + + // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the + // same answer as KeyguardUpdateMonitor. Remove when this is addressed when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list); + mKeyguardUpdateMonitor.mServiceStates = new HashMap<>(); ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = @@ -219,6 +234,12 @@ public class CarrierTextControllerTest extends SysuiTestCase { reset(mCarrierTextCallback); when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn( new ArrayList<>()); + + // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the + // same answer as KeyguardUpdateMonitor. Remove when this is addressed + when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn( + new ArrayList<>()); + ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = ArgumentCaptor.forClass( CarrierTextController.CarrierTextCallbackInfo.class); @@ -233,6 +254,121 @@ public class CarrierTextControllerTest extends SysuiTestCase { } + @Test + public void testCarrierText_twoValidSubscriptions() { + reset(mCarrierTextCallback); + List<SubscriptionInfo> list = new ArrayList<>(); + list.add(TEST_SUBSCRIPTION); + list.add(TEST_SUBSCRIPTION); + when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn(IccCardConstants.State.READY); + when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list); + + // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the + // same answer as KeyguardUpdateMonitor. Remove when this is addressed + when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list); + + mKeyguardUpdateMonitor.mServiceStates = new HashMap<>(); + + ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = + ArgumentCaptor.forClass( + CarrierTextController.CarrierTextCallbackInfo.class); + + mCarrierTextController.updateCarrierText(); + mTestableLooper.processAllMessages(); + verify(mCarrierTextCallback).updateCarrierInfo(captor.capture()); + + assertEquals(TEST_CARRIER + SEPARATOR + TEST_CARRIER, + captor.getValue().carrierText); + } + + @Test + public void testCarrierText_oneDisabledSub() { + reset(mCarrierTextCallback); + List<SubscriptionInfo> list = new ArrayList<>(); + list.add(TEST_SUBSCRIPTION); + list.add(TEST_SUBSCRIPTION); + when(mKeyguardUpdateMonitor.getSimState(anyInt())) + .thenReturn(IccCardConstants.State.READY) + .thenReturn(IccCardConstants.State.NOT_READY); + when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list); + + // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the + // same answer as KeyguardUpdateMonitor. Remove when this is addressed + when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list); + + mKeyguardUpdateMonitor.mServiceStates = new HashMap<>(); + + ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = + ArgumentCaptor.forClass( + CarrierTextController.CarrierTextCallbackInfo.class); + + mCarrierTextController.updateCarrierText(); + mTestableLooper.processAllMessages(); + verify(mCarrierTextCallback).updateCarrierInfo(captor.capture()); + + assertEquals(TEST_CARRIER, + captor.getValue().carrierText); + } + + @Test + public void testCarrierText_firstDisabledSub() { + reset(mCarrierTextCallback); + List<SubscriptionInfo> list = new ArrayList<>(); + list.add(TEST_SUBSCRIPTION); + list.add(TEST_SUBSCRIPTION); + when(mKeyguardUpdateMonitor.getSimState(anyInt())) + .thenReturn(IccCardConstants.State.NOT_READY) + .thenReturn(IccCardConstants.State.READY); + when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list); + + // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the + // same answer as KeyguardUpdateMonitor. Remove when this is addressed + when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list); + + mKeyguardUpdateMonitor.mServiceStates = new HashMap<>(); + + ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = + ArgumentCaptor.forClass( + CarrierTextController.CarrierTextCallbackInfo.class); + + mCarrierTextController.updateCarrierText(); + mTestableLooper.processAllMessages(); + verify(mCarrierTextCallback).updateCarrierInfo(captor.capture()); + + assertEquals(TEST_CARRIER, + captor.getValue().carrierText); + } + + @Test + public void testCarrierText_threeSubsMiddleDisabled() { + reset(mCarrierTextCallback); + List<SubscriptionInfo> list = new ArrayList<>(); + list.add(TEST_SUBSCRIPTION); + list.add(TEST_SUBSCRIPTION); + list.add(TEST_SUBSCRIPTION); + when(mKeyguardUpdateMonitor.getSimState(anyInt())) + .thenReturn(IccCardConstants.State.READY) + .thenReturn(IccCardConstants.State.NOT_READY) + .thenReturn(IccCardConstants.State.READY); + when(mKeyguardUpdateMonitor.getSubscriptionInfo(anyBoolean())).thenReturn(list); + mKeyguardUpdateMonitor.mServiceStates = new HashMap<>(); + + // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the + // same answer as KeyguardUpdateMonitor. Remove when this is addressed + when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list); + + ArgumentCaptor<CarrierTextController.CarrierTextCallbackInfo> captor = + ArgumentCaptor.forClass( + CarrierTextController.CarrierTextCallbackInfo.class); + + mCarrierTextController.updateCarrierText(); + mTestableLooper.processAllMessages(); + verify(mCarrierTextCallback).updateCarrierInfo(captor.capture()); + + assertEquals(TEST_CARRIER + SEPARATOR + TEST_CARRIER, + captor.getValue().carrierText); + } + public static class TestCarrierTextController extends CarrierTextController { private KeyguardUpdateMonitor mKUM; diff --git a/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java index 17fbe09e07b3..76f1684aae7a 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/clock/ClockManagerTest.java @@ -31,11 +31,14 @@ import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; import android.view.LayoutInflater; +import androidx.lifecycle.MutableLiveData; + import com.android.systemui.SysuiTestCase; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerFake; import com.android.systemui.plugins.ClockPlugin; +import com.android.systemui.settings.CurrentUserObservable; import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.util.InjectionInflationController; @@ -49,21 +52,26 @@ import org.mockito.MockitoAnnotations; @SmallTest @RunWith(AndroidTestingRunner.class) -@RunWithLooper +// Need to run tests on main looper because LiveData operations such as setData, observe, +// removeObserver cannot be invoked on a background thread. +@RunWithLooper(setAsMainLooper = true) public final class ClockManagerTest extends SysuiTestCase { private static final String BUBBLE_CLOCK = BubbleClockController.class.getName(); private static final Class<?> BUBBLE_CLOCK_CLASS = BubbleClockController.class; - private static final int USER_ID = 0; + private static final int MAIN_USER_ID = 0; + private static final int SECONDARY_USER_ID = 11; private static final Uri SETTINGS_URI = null; private ClockManager mClockManager; private ContentObserver mContentObserver; private DockManagerFake mFakeDockManager; + private MutableLiveData<Integer> mCurrentUser; @Mock InjectionInflationController mMockInjectionInflationController; @Mock PluginManager mMockPluginManager; @Mock SysuiColorExtractor mMockColorExtractor; @Mock ContentResolver mMockContentResolver; + @Mock CurrentUserObservable mMockCurrentUserObserable; @Mock SettingsWrapper mMockSettingsWrapper; @Mock ClockManager.ClockChangedListener mMockListener1; @Mock ClockManager.ClockChangedListener mMockListener2; @@ -78,9 +86,13 @@ public final class ClockManagerTest extends SysuiTestCase { mFakeDockManager = new DockManagerFake(); getContext().putComponent(DockManager.class, mFakeDockManager); + mCurrentUser = new MutableLiveData<>(); + mCurrentUser.setValue(MAIN_USER_ID); + when(mMockCurrentUserObserable.getCurrentUser()).thenReturn(mCurrentUser); + mClockManager = new ClockManager(getContext(), mMockInjectionInflationController, mMockPluginManager, mMockColorExtractor, mMockContentResolver, - mMockSettingsWrapper); + mMockCurrentUserObserable, mMockSettingsWrapper); mClockManager.addOnClockChangedListener(mMockListener1); mClockManager.addOnClockChangedListener(mMockListener2); @@ -113,7 +125,7 @@ public final class ClockManagerTest extends SysuiTestCase { when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(null); when(mMockSettingsWrapper.getDockedClockFace(anyInt())).thenReturn(null); // WHEN settings change event is fired - mContentObserver.onChange(false, SETTINGS_URI, USER_ID); + mContentObserver.onChange(false, SETTINGS_URI, MAIN_USER_ID); // THEN the result is null, indicated the default clock face should be used. assertThat(mClockManager.getCurrentClock()).isNull(); } @@ -123,7 +135,7 @@ public final class ClockManagerTest extends SysuiTestCase { // GIVEN that settings is set to the bubble clock face when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(BUBBLE_CLOCK); // WHEN settings change event is fired - mContentObserver.onChange(false, SETTINGS_URI, USER_ID); + mContentObserver.onChange(false, SETTINGS_URI, MAIN_USER_ID); // THEN the plugin is the bubble clock face. assertThat(mClockManager.getCurrentClock()).isInstanceOf(BUBBLE_CLOCK_CLASS); } @@ -133,7 +145,7 @@ public final class ClockManagerTest extends SysuiTestCase { // GIVEN that settings is set to the bubble clock face when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(BUBBLE_CLOCK); // WHEN settings change event is fired - mContentObserver.onChange(false, SETTINGS_URI, USER_ID); + mContentObserver.onChange(false, SETTINGS_URI, MAIN_USER_ID); // THEN the plugin is the bubble clock face. ArgumentCaptor<ClockPlugin> captor = ArgumentCaptor.forClass(ClockPlugin.class); verify(mMockListener1).onClockChanged(captor.capture()); @@ -145,7 +157,7 @@ public final class ClockManagerTest extends SysuiTestCase { // GIVEN that settings is set to the bubble clock face when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn(BUBBLE_CLOCK); // WHEN settings change event is fired - mContentObserver.onChange(false, SETTINGS_URI, USER_ID); + mContentObserver.onChange(false, SETTINGS_URI, MAIN_USER_ID); // THEN the listeners receive separate instances of the Bubble clock plugin. ArgumentCaptor<ClockPlugin> captor1 = ArgumentCaptor.forClass(ClockPlugin.class); ArgumentCaptor<ClockPlugin> captor2 = ArgumentCaptor.forClass(ClockPlugin.class); @@ -162,7 +174,7 @@ public final class ClockManagerTest extends SysuiTestCase { // custom clock face. when(mMockSettingsWrapper.getLockScreenCustomClockFace(anyInt())).thenReturn("bad value"); // WHEN settings change event is fired - mContentObserver.onChange(false, SETTINGS_URI, USER_ID); + mContentObserver.onChange(false, SETTINGS_URI, MAIN_USER_ID); // THEN the result is null. assertThat(mClockManager.getCurrentClock()).isNull(); } @@ -206,4 +218,35 @@ public final class ClockManagerTest extends SysuiTestCase { // THEN the plugin is the bubble clock face. assertThat(mClockManager.getCurrentClock()).isInstanceOf(BUBBLE_CLOCK_CLASS); } + + @Test + public void onUserChanged_defaultClock() { + // WHEN the user changes + mCurrentUser.setValue(SECONDARY_USER_ID); + // THEN the plugin is null for the default clock face + assertThat(mClockManager.getCurrentClock()).isNull(); + } + + @Test + public void onUserChanged_customClock() { + // GIVEN that a second user has selected the bubble clock face + when(mMockSettingsWrapper.getLockScreenCustomClockFace(SECONDARY_USER_ID)).thenReturn( + BUBBLE_CLOCK); + // WHEN the user changes + mCurrentUser.setValue(SECONDARY_USER_ID); + // THEN the plugin is the bubble clock face. + assertThat(mClockManager.getCurrentClock()).isInstanceOf(BUBBLE_CLOCK_CLASS); + } + + @Test + public void onUserChanged_docked() { + // GIVEN device is docked + mFakeDockManager.setDockEvent(DockManager.STATE_DOCKED); + // AND the second user as selected the bubble clock for the dock + when(mMockSettingsWrapper.getDockedClockFace(SECONDARY_USER_ID)).thenReturn(BUBBLE_CLOCK); + // WHEN the user changes + mCurrentUser.setValue(SECONDARY_USER_ID); + // THEN the plugin is the bubble clock face. + assertThat(mClockManager.getCurrentClock()).isInstanceOf(BUBBLE_CLOCK_CLASS); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java index 40a53571ddf0..8b0ba9448d2b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java @@ -16,6 +16,7 @@ package com.android.systemui.bubbles; +import static android.app.Notification.FLAG_BUBBLE; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static com.google.common.truth.Truth.assertThat; @@ -25,6 +26,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -47,15 +49,18 @@ import androidx.test.filters.SmallTest; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; +import com.android.systemui.statusbar.NotificationPresenter; import com.android.systemui.statusbar.NotificationTestHelper; import com.android.systemui.statusbar.notification.NotificationEntryListener; import com.android.systemui.statusbar.notification.NotificationEntryManager; +import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider; import com.android.systemui.statusbar.notification.collection.NotificationData; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.StatusBarWindowController; import com.android.systemui.statusbar.policy.ConfigurationController; +import com.android.systemui.statusbar.policy.HeadsUpManager; import org.junit.Before; import org.junit.Test; @@ -138,7 +143,7 @@ public class BubbleControllerTest extends SysuiTestCase { // Some bubbles want to suppress notifs Notification.BubbleMetadata suppressNotifMetadata = - getBuilder().setSuppressInitialNotification(true).build(); + getBuilder().setSuppressNotification(true).build(); mSuppressNotifRow = mNotificationTestHelper.createBubble(suppressNotifMetadata, FOREGROUND_TEST_PKG_NAME); @@ -146,9 +151,15 @@ public class BubbleControllerTest extends SysuiTestCase { when(mNotificationEntryManager.getNotificationData()).thenReturn(mNotificationData); when(mNotificationData.getChannel(mRow.getEntry().key)).thenReturn(mRow.getEntry().channel); + TestableNotificationInterruptionStateProvider interruptionStateProvider = + new TestableNotificationInterruptionStateProvider(mContext); + interruptionStateProvider.setUpWithPresenter( + mock(NotificationPresenter.class), + mock(HeadsUpManager.class), + mock(NotificationInterruptionStateProvider.HeadsUpSuppressor.class)); mBubbleData = new BubbleData(mContext); mBubbleController = new TestableBubbleController(mContext, mStatusBarWindowController, - mBubbleData, mConfigurationController); + mBubbleData, mConfigurationController, interruptionStateProvider); mBubbleController.setBubbleStateChangeListener(mBubbleStateChangeListener); mBubbleController.setExpandListener(mBubbleExpandListener); @@ -487,12 +498,27 @@ public class BubbleControllerTest extends SysuiTestCase { verify(mDeleteIntent, times(2)).send(); } + @Test + public void testRemoveBubble_noLongerBubbleAfterUpdate() + throws PendingIntent.CanceledException { + mBubbleController.updateBubble(mRow.getEntry()); + assertTrue(mBubbleController.hasBubbles()); + + mRow.getEntry().notification.getNotification().flags &= ~FLAG_BUBBLE; + mEntryListener.onPreEntryUpdated(mRow.getEntry()); + + assertFalse(mBubbleController.hasBubbles()); + verify(mDeleteIntent, never()).send(); + } + static class TestableBubbleController extends BubbleController { // Let's assume surfaces can be synchronized immediately. TestableBubbleController(Context context, StatusBarWindowController statusBarWindowController, BubbleData data, - ConfigurationController configurationController) { - super(context, statusBarWindowController, data, Runnable::run, configurationController); + ConfigurationController configurationController, + NotificationInterruptionStateProvider interruptionStateProvider) { + super(context, statusBarWindowController, data, Runnable::run, + configurationController, interruptionStateProvider); } @Override @@ -501,6 +527,15 @@ public class BubbleControllerTest extends SysuiTestCase { } } + public static class TestableNotificationInterruptionStateProvider extends + NotificationInterruptionStateProvider { + + public TestableNotificationInterruptionStateProvider(Context context) { + super(context); + mUseHeadsUp = true; + } + } + /** * @return basic {@link android.app.Notification.BubbleMetadata.Builder} */ diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/ListGridLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/ListGridLayoutTest.java new file mode 100644 index 000000000000..26f1de857302 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/ListGridLayoutTest.java @@ -0,0 +1,271 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.globalactions; + +import static junit.framework.Assert.assertEquals; + +import android.testing.AndroidTestingRunner; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.test.filters.SmallTest; + +import com.android.systemui.R; +import com.android.systemui.SysuiTestCase; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +/** + * Tests for {@link ListGridLayout}. + */ +@SmallTest +@RunWith(AndroidTestingRunner.class) +public class ListGridLayoutTest extends SysuiTestCase { + + private ListGridLayout mListGridLayout; + + @Before + public void setUp() throws Exception { + GlobalActionsGridLayout globalActions = (GlobalActionsGridLayout) + LayoutInflater.from(mContext).inflate(R.layout.global_actions_grid, null); + mListGridLayout = globalActions.getListView(); + } + + @Test + public void testInflation() { + assertEquals(3, mListGridLayout.getChildCount()); + } + + @Test + public void testGetRowCount() { + // above expected range + mListGridLayout.setExpectedCount(99); + assertEquals(3, mListGridLayout.getRowCount()); + + mListGridLayout.setExpectedCount(9); + assertEquals(3, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(8); + assertEquals(3, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(7); + assertEquals(3, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(6); + assertEquals(2, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(5); + assertEquals(2, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(4); + assertEquals(2, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(3); + assertEquals(1, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(2); + assertEquals(1, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(1); + assertEquals(1, mListGridLayout.getRowCount()); + mListGridLayout.setExpectedCount(0); + assertEquals(0, mListGridLayout.getRowCount()); + + // below expected range + mListGridLayout.setExpectedCount(-1); + assertEquals(0, mListGridLayout.getRowCount()); + } + + @Test + public void testGetColumnCount() { + // above expected range + mListGridLayout.setExpectedCount(99); + + assertEquals(3, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(9); + assertEquals(3, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(8); + assertEquals(3, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(7); + assertEquals(3, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(6); + assertEquals(3, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(5); + assertEquals(3, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(4); + assertEquals(2, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(3); + assertEquals(3, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(2); + assertEquals(2, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(1); + assertEquals(1, mListGridLayout.getColumnCount()); + mListGridLayout.setExpectedCount(0); + assertEquals(0, mListGridLayout.getColumnCount()); + + // below expected range + mListGridLayout.setExpectedCount(-1); + assertEquals(0, mListGridLayout.getColumnCount()); + } + + @Test + public void testGetParentView_default() { + mListGridLayout.setExpectedCount(9); + + // below valid range + assertEquals(null, + mListGridLayout.getParentView(-1, false, false)); + + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(0, false, false)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(1, false, false)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(2, false, false)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(3, false, false)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(4, false, false)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(5, false, false)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(6, false, false)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(7, false, false)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(8, false, false)); + + // above valid range + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(9, false, false)); + } + + @Test + public void testGetParentView_reverseSublists() { + mListGridLayout.setExpectedCount(9); + + // below valid range + assertEquals(null, + mListGridLayout.getParentView(-1, true, false)); + + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(0, true, false)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(1, true, false)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(2, true, false)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(3, true, false)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(4, true, false)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(5, true, false)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(6, true, false)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(7, true, false)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(8, true, false)); + + // above valid range + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(9, true, false)); + } + + @Test + public void testGetParentView_swapRowsAndColumns() { + mListGridLayout.setExpectedCount(9); + + // below valid range + assertEquals(null, + mListGridLayout.getParentView(-1, false, true)); + + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(0, false, true)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(1, false, true)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(2, false, true)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(3, false, true)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(4, false, true)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(5, false, true)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(6, false, true)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(7, false, true)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(8, false, true)); + + // above valid range + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(9, false, true)); + } + + @Test + public void testGetParentView_swapRowsAndColumnsAndReverseSublists() { + mListGridLayout.setExpectedCount(9); + + // below valid range + assertEquals(null, + mListGridLayout.getParentView(-1, true, true)); + + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(0, true, true)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(1, true, true)); + assertEquals(mListGridLayout.getChildAt(2), + mListGridLayout.getParentView(2, true, true)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(3, true, true)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(4, true, true)); + assertEquals(mListGridLayout.getChildAt(1), + mListGridLayout.getParentView(5, true, true)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(6, true, true)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(7, true, true)); + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(8, true, true)); + + // above valid range + assertEquals(mListGridLayout.getChildAt(0), + mListGridLayout.getParentView(9, true, true)); + } + + @Test + public void testRemoveAllItems() { + ViewGroup row1 = (ViewGroup) mListGridLayout.getChildAt(0); + ViewGroup row2 = (ViewGroup) mListGridLayout.getChildAt(1); + ViewGroup row3 = (ViewGroup) mListGridLayout.getChildAt(2); + View item1 = new View(mContext, null); + View item2 = new View(mContext, null); + View item3 = new View(mContext, null); + + row1.addView(item1); + row2.addView(item2); + row3.addView(item3); + + assertEquals(1, row1.getChildCount()); + assertEquals(1, row2.getChildCount()); + assertEquals(1, row3.getChildCount()); + + mListGridLayout.removeAllItems(); + + assertEquals(0, row1.getChildCount()); + assertEquals(0, row2.getChildCount()); + assertEquals(0, row2.getChildCount()); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java index 5928a07487d9..161b40979e11 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java @@ -40,6 +40,7 @@ import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; import android.testing.TestableResources; +import com.android.settingslib.fuelgauge.Estimate; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.power.PowerUI.WarningsUI; @@ -358,7 +359,7 @@ public class PowerUITest extends SysuiTestCase { @Test public void testRefreshEstimateIfNeeded_onlyQueriesEstimateOnBatteryLevelChangeOrNull() { mPowerUI.start(); - Estimate estimate = new Estimate(BELOW_HYBRID_THRESHOLD, true); + Estimate estimate = new Estimate(BELOW_HYBRID_THRESHOLD, true, 0); when(mEnhancedEstimates.isHybridNotificationEnabled()).thenReturn(true); when(mEnhancedEstimates.getLowWarningThreshold()).thenReturn(PowerUI.THREE_HOURS_IN_MILLIS); when(mEnhancedEstimates.getSevereWarningThreshold()).thenReturn(ONE_HOUR_MILLIS); @@ -371,21 +372,21 @@ public class PowerUITest extends SysuiTestCase { assertThat(refreshedEstimate.getEstimateMillis()).isEqualTo(BELOW_HYBRID_THRESHOLD); BatteryStateSnapshot snapshot = new BatteryStateSnapshot( BATTERY_LEVEL_10, false, false, 0, BatteryManager.BATTERY_HEALTH_GOOD, - 0, 0, -1, 0, 0, false, true); + 0, 0, -1, 0, 0, 0, false, true); mPowerUI.mLastBatteryStateSnapshot = snapshot; // query again since the estimate was -1 - estimate = new Estimate(BELOW_SEVERE_HYBRID_THRESHOLD, true); + estimate = new Estimate(BELOW_SEVERE_HYBRID_THRESHOLD, true, 0); when(mEnhancedEstimates.getEstimate()).thenReturn(estimate); refreshedEstimate = mPowerUI.refreshEstimateIfNeeded(); assertThat(refreshedEstimate.getEstimateMillis()).isEqualTo(BELOW_SEVERE_HYBRID_THRESHOLD); snapshot = new BatteryStateSnapshot( BATTERY_LEVEL_10, false, false, 0, BatteryManager.BATTERY_HEALTH_GOOD, 0, - 0, BELOW_SEVERE_HYBRID_THRESHOLD, 0, 0, false, true); + 0, BELOW_SEVERE_HYBRID_THRESHOLD, 0, 0, 0, false, true); mPowerUI.mLastBatteryStateSnapshot = snapshot; // Battery level hasn't changed, so we don't query again - estimate = new Estimate(BELOW_HYBRID_THRESHOLD, true); + estimate = new Estimate(BELOW_HYBRID_THRESHOLD, true, 0); when(mEnhancedEstimates.getEstimate()).thenReturn(estimate); refreshedEstimate = mPowerUI.refreshEstimateIfNeeded(); assertThat(refreshedEstimate.getEstimateMillis()).isEqualTo(BELOW_SEVERE_HYBRID_THRESHOLD); @@ -543,13 +544,14 @@ public class PowerUITest extends SysuiTestCase { public boolean mIsBasedOnUsage = true; public boolean mIsHybrid = true; public boolean mIsLowLevelWarningEnabled = true; + private long mAverageTimeToDischargeMillis = Duration.ofHours(24).toMillis(); public BatteryStateSnapshot get() { if (mIsHybrid) { return new BatteryStateSnapshot(mBatteryLevel, mIsPowerSaver, mPlugged, mBucket, mBatteryStatus, mSevereLevelThreshold, mLowLevelThreshold, - mTimeRemainingMillis, mSevereThresholdMillis, mLowThresholdMillis, - mIsBasedOnUsage, mIsLowLevelWarningEnabled); + mTimeRemainingMillis, mAverageTimeToDischargeMillis, mSevereThresholdMillis, + mLowThresholdMillis, mIsBasedOnUsage, mIsLowLevelWarningEnabled); } else { return new BatteryStateSnapshot(mBatteryLevel, mIsPowerSaver, mPlugged, mBucket, mBatteryStatus, mSevereLevelThreshold, mLowLevelThreshold); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java index 8cc1571b925f..e4b90c54d5b3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java @@ -178,7 +178,10 @@ public class NotificationTestHelper { Notification n = createNotification(false /* isGroupSummary */, null /* groupKey */, bubbleMetadata); n.flags |= FLAG_BUBBLE; - return generateRow(n, pkg, UID, USER_HANDLE, 0 /* extraInflationFlags */, IMPORTANCE_HIGH); + ExpandableNotificationRow row = generateRow(n, pkg, UID, USER_HANDLE, + 0 /* extraInflationFlags */, IMPORTANCE_HIGH); + row.getEntry().canBubble = true; + return row; } /** diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java index 6a0d61dc13c9..3ae57e391005 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java @@ -14,18 +14,38 @@ package com.android.systemui.statusbar.phone; +import static android.app.StatusBarManager.NAVIGATION_HINT_BACK_ALT; +import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN; +import static android.inputmethodservice.InputMethodService.BACK_DISPOSITION_DEFAULT; +import static android.inputmethodservice.InputMethodService.IME_VISIBLE; +import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import android.annotation.LayoutRes; +import android.annotation.Nullable; import android.app.Fragment; +import android.app.FragmentController; +import android.app.FragmentHostCallback; import android.content.Context; +import android.hardware.display.DisplayManagerGlobal; import android.os.Bundle; +import android.os.Handler; import android.os.Looper; import android.testing.AndroidTestingRunner; import android.testing.LeakCheck.Tracker; +import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; import android.view.Display; +import android.view.DisplayInfo; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import android.view.WindowManager; import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener; @@ -34,6 +54,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.logging.MetricsLogger; import com.android.systemui.Dependency; import com.android.systemui.SysuiBaseFragmentTest; +import com.android.systemui.SysuiTestableContext; import com.android.systemui.assist.AssistManager; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.Recents; @@ -50,9 +71,16 @@ import org.junit.runner.RunWith; @RunWithLooper() @SmallTest public class NavigationBarFragmentTest extends SysuiBaseFragmentTest { + private static final int EXTERNAL_DISPLAY_ID = 2; + private static final int NAV_BAR_VIEW_ID = 43; + + private Fragment mFragmentExternalDisplay; + private FragmentController mControllerExternalDisplay; + private SysuiTestableContext mSysuiTestableContextExternal; private OverviewProxyService mOverviewProxyService = mDependency.injectMockDependency(OverviewProxyService.class); + private CommandQueue mCommandQueue; private AccessibilityManagerWrapper mAccessibilityWrapper = new AccessibilityManagerWrapper(mContext) { Tracker mTracker = mLeakCheck.getTracker("accessibility_manager"); @@ -73,15 +101,51 @@ public class NavigationBarFragmentTest extends SysuiBaseFragmentTest { } protected void createRootView() { - mView = new NavigationBarFrame(mContext); + mView = new NavigationBarFrame(mSysuiContext); + mView.setId(NAV_BAR_VIEW_ID); } @Before - public void setup() { - mSysuiContext.putComponent(CommandQueue.class, mock(CommandQueue.class)); + public void setupFragment() throws Exception { + setupSysuiDependency(); + createRootView(); + TestableLooper.get(this).runWithLooper(() -> { + mHandler = new Handler(); + + mFragment = instantiate(mSysuiContext, NavigationBarFragment.class.getName(), null); + mFragments = FragmentController.createController( + new HostCallbacksForExternalDisplay(mSysuiContext)); + mFragments.attachHost(null); + mFragments.getFragmentManager().beginTransaction() + .replace(NAV_BAR_VIEW_ID, mFragment) + .commit(); + mControllerExternalDisplay = FragmentController.createController( + new HostCallbacksForExternalDisplay(mSysuiTestableContextExternal)); + mControllerExternalDisplay.attachHost(null); + mFragmentExternalDisplay = instantiate(mSysuiTestableContextExternal, + NavigationBarFragment.class.getName(), null); + mControllerExternalDisplay.getFragmentManager().beginTransaction() + .replace(NAV_BAR_VIEW_ID, mFragmentExternalDisplay) + .commit(); + }); + } + + private void setupSysuiDependency() { + mCommandQueue = new CommandQueue(mContext); + mSysuiContext.putComponent(CommandQueue.class, mCommandQueue); mSysuiContext.putComponent(StatusBar.class, mock(StatusBar.class)); mSysuiContext.putComponent(Recents.class, mock(Recents.class)); mSysuiContext.putComponent(Divider.class, mock(Divider.class)); + + Display display = new Display(DisplayManagerGlobal.getInstance(), EXTERNAL_DISPLAY_ID, + new DisplayInfo(), DEFAULT_DISPLAY_ADJUSTMENTS); + mSysuiTestableContextExternal = (SysuiTestableContext) mSysuiContext.createDisplayContext( + display); + mSysuiTestableContextExternal.putComponent(CommandQueue.class, mCommandQueue); + mSysuiTestableContextExternal.putComponent(StatusBar.class, mock(StatusBar.class)); + mSysuiTestableContextExternal.putComponent(Recents.class, mock(Recents.class)); + mSysuiTestableContextExternal.putComponent(Divider.class, mock(Divider.class)); + injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES); WindowManager windowManager = mock(WindowManager.class); Display defaultDisplay = mContext.getSystemService(WindowManager.class).getDefaultDisplay(); @@ -102,15 +166,111 @@ public class NavigationBarFragmentTest extends SysuiBaseFragmentTest { navigationBarFragment.onHomeLongClick(navigationBarFragment.getView()); } + @Test + public void testSetImeWindowStatusWhenImeSwitchOnDisplay() { + // Create default & external NavBar fragment. + NavigationBarFragment defaultNavBar = (NavigationBarFragment) mFragment; + NavigationBarFragment externalNavBar = (NavigationBarFragment) mFragmentExternalDisplay; + mFragments.dispatchCreate(); + processAllMessages(); + mFragments.dispatchResume(); + processAllMessages(); + mControllerExternalDisplay.dispatchCreate(); + processAllMessages(); + mControllerExternalDisplay.dispatchResume(); + processAllMessages(); + + // Set IME window status for default NavBar. + mCommandQueue.setImeWindowStatus(DEFAULT_DISPLAY, null, IME_VISIBLE, + BACK_DISPOSITION_DEFAULT, true); + Handler.getMain().runWithScissors(() -> { }, 500); + + // Verify IME window state will be updated in default NavBar & external NavBar state reset. + assertEquals(NAVIGATION_HINT_BACK_ALT | NAVIGATION_HINT_IME_SHOWN, + defaultNavBar.getNavigationIconHints()); + assertFalse((externalNavBar.getNavigationIconHints() & NAVIGATION_HINT_BACK_ALT) != 0); + assertFalse((externalNavBar.getNavigationIconHints() & NAVIGATION_HINT_IME_SHOWN) != 0); + + // Set IME window status for external NavBar. + mCommandQueue.setImeWindowStatus(EXTERNAL_DISPLAY_ID, null, + IME_VISIBLE, BACK_DISPOSITION_DEFAULT, true); + Handler.getMain().runWithScissors(() -> { }, 500); + + // Verify IME window state will be updated in external NavBar & default NavBar state reset. + assertEquals(NAVIGATION_HINT_BACK_ALT | NAVIGATION_HINT_IME_SHOWN, + externalNavBar.getNavigationIconHints()); + assertFalse((defaultNavBar.getNavigationIconHints() & NAVIGATION_HINT_BACK_ALT) != 0); + assertFalse((defaultNavBar.getNavigationIconHints() & NAVIGATION_HINT_IME_SHOWN) != 0); + } + @Override protected Fragment instantiate(Context context, String className, Bundle arguments) { DeviceProvisionedController deviceProvisionedController = mock(DeviceProvisionedController.class); assertNotNull(mAccessibilityWrapper); - return new NavigationBarFragment(mAccessibilityWrapper, + return new NavigationBarFragment( + context.getDisplayId() == DEFAULT_DISPLAY ? mAccessibilityWrapper + : mock(AccessibilityManagerWrapper.class), deviceProvisionedController, new MetricsLogger(), - new AssistManager(deviceProvisionedController, mContext), + mock(AssistManager.class), mOverviewProxyService); } + + private class HostCallbacksForExternalDisplay extends + FragmentHostCallback<NavigationBarFragmentTest> { + private Context mDisplayContext; + + HostCallbacksForExternalDisplay(Context context) { + super(context, mHandler, 0); + mDisplayContext = context; + } + + @Override + public NavigationBarFragmentTest onGetHost() { + return NavigationBarFragmentTest.this; + } + + @Override + public Fragment instantiate(Context context, String className, Bundle arguments) { + return NavigationBarFragmentTest.this.instantiate(context, className, arguments); + } + + @Override + public View onFindViewById(int id) { + return mView.findViewById(id); + } + + @Override + public LayoutInflater onGetLayoutInflater() { + return new LayoutInflaterWrapper(mDisplayContext); + } + } + + private static class LayoutInflaterWrapper extends LayoutInflater { + protected LayoutInflaterWrapper(Context context) { + super(context); + } + + @Override + public LayoutInflater cloneInContext(Context newContext) { + return null; + } + + @Override + public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, + boolean attachToRoot) { + NavigationBarView view = mock(NavigationBarView.class); + when(view.getDisplay()).thenReturn(mContext.getDisplay()); + when(view.getBackButton()).thenReturn(mock(ButtonDispatcher.class)); + when(view.getHomeButton()).thenReturn(mock(ButtonDispatcher.class)); + when(view.getRecentsButton()).thenReturn(mock(ButtonDispatcher.class)); + when(view.getAccessibilityButton()).thenReturn(mock(ButtonDispatcher.class)); + when(view.getRotateSuggestionButton()).thenReturn(mock(RotationContextButton.class)); + when(view.getBarTransitions()).thenReturn(mock(BarTransitions.class)); + when(view.getLightTransitionsController()).thenReturn( + mock(LightBarTransitionsController.class)); + return view; + } + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index 43bc21b1943f..fb16465d3486 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -681,6 +681,25 @@ public class StatusBarTest extends SysuiTestCase { } @Test + public void testPulseWhileDozingWithDockingReason_suppressWakeUpGesture() { + // Keep track of callback to be able to stop the pulse + final DozeHost.PulseCallback[] pulseCallback = new DozeHost.PulseCallback[1]; + doAnswer(invocation -> { + pulseCallback[0] = invocation.getArgument(0); + return null; + }).when(mDozeScrimController).pulse(any(), anyInt()); + + // Starting a pulse while docking should suppress wakeup gesture + mStatusBar.mDozeServiceHost.pulseWhileDozing(mock(DozeHost.PulseCallback.class), + DozeLog.PULSE_REASON_DOCKING); + verify(mStatusBarWindowView).suppressWakeUpGesture(eq(true)); + + // Ending a pulse should restore wakeup gesture + pulseCallback[0].onPulseFinished(); + verify(mStatusBarWindowView).suppressWakeUpGesture(eq(false)); + } + + @Test public void testSetState_changesIsFullScreenUserSwitcherState() { mStatusBar.setBarStateForTest(StatusBarState.KEYGUARD); assertFalse(mStatusBar.isFullScreenUserSwitcherState()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BlockingQueueIntentReceiver.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BlockingQueueIntentReceiver.java index 76a3c95cad0a..7c4629871658 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BlockingQueueIntentReceiver.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/BlockingQueueIntentReceiver.java @@ -34,4 +34,8 @@ public class BlockingQueueIntentReceiver extends BroadcastReceiver { public Intent waitForIntent() throws InterruptedException { return mQueue.poll(10, TimeUnit.SECONDS); } + + public Intent waitForIntentShortDelay() throws InterruptedException { + return mQueue.poll(3, TimeUnit.SECONDS); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java index de1072d450f7..2462fb3ca589 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/InflatedSmartRepliesTest.java @@ -43,6 +43,8 @@ import com.android.systemui.shared.system.DevicePolicyManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.policy.InflatedSmartReplies.SmartRepliesAndActions; +import com.android.systemui.statusbar.policy.SmartReplyView.SmartActions; +import com.android.systemui.statusbar.policy.SmartReplyView.SmartReplies; import org.junit.Before; import org.junit.Test; @@ -51,6 +53,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; @SmallTest @@ -322,6 +325,72 @@ public class InflatedSmartRepliesTest extends SysuiTestCase { mEntry.systemGeneratedSmartActions); } + @Test + public void areSuggestionsSimilar_trueForSimilar() { + CharSequence[] leftReplies = new CharSequence[] { "first reply", "second reply"}; + CharSequence[] rightReplies = new CharSequence[] { "first reply", "second reply"}; + List<Notification.Action> leftActions = Arrays.asList( + createAction("firstAction"), + createAction("secondAction")); + List<Notification.Action> rightActions = Arrays.asList( + createAction("firstAction"), + createAction("secondAction")); + + SmartRepliesAndActions leftRepliesAndActions = new SmartRepliesAndActions( + new SmartReplies(leftReplies, null, null, false /* fromAssistant */), + new SmartActions(leftActions, false /* fromAssistant */)); + SmartRepliesAndActions rightRepliesAndActions = new SmartRepliesAndActions( + new SmartReplies(rightReplies, null, null, false /* fromAssistant */), + new SmartActions(rightActions, false /* fromAssistant */)); + + assertThat(InflatedSmartReplies.areSuggestionsSimilar( + leftRepliesAndActions, rightRepliesAndActions)).isTrue(); + } + + @Test + public void areSuggestionsSimilar_falseForDifferentReplies() { + CharSequence[] leftReplies = new CharSequence[] { "first reply"}; + CharSequence[] rightReplies = new CharSequence[] { "first reply", "second reply"}; + List<Notification.Action> leftActions = Arrays.asList( + createAction("firstAction"), + createAction("secondAction")); + List<Notification.Action> rightActions = Arrays.asList( + createAction("firstAction"), + createAction("secondAction")); + + SmartRepliesAndActions leftRepliesAndActions = new SmartRepliesAndActions( + new SmartReplies(leftReplies, null, null, false /* fromAssistant */), + new SmartActions(leftActions, false /* fromAssistant */)); + SmartRepliesAndActions rightRepliesAndActions = new SmartRepliesAndActions( + new SmartReplies(rightReplies, null, null, false /* fromAssistant */), + new SmartActions(rightActions, false /* fromAssistant */)); + + assertThat(InflatedSmartReplies.areSuggestionsSimilar( + leftRepliesAndActions, rightRepliesAndActions)).isFalse(); + } + + @Test + public void areSuggestionsSimilar_falseForDifferentActions() { + CharSequence[] leftReplies = new CharSequence[] { "first reply", "second reply"}; + CharSequence[] rightReplies = new CharSequence[] { "first reply", "second reply"}; + List<Notification.Action> leftActions = Arrays.asList( + createAction("firstAction"), + createAction("secondAction")); + List<Notification.Action> rightActions = Arrays.asList( + createAction("firstAction"), + createAction("not secondAction")); + + SmartRepliesAndActions leftRepliesAndActions = new SmartRepliesAndActions( + new SmartReplies(leftReplies, null, null, false /* fromAssistant */), + new SmartActions(leftActions, false /* fromAssistant */)); + SmartRepliesAndActions rightRepliesAndActions = new SmartRepliesAndActions( + new SmartReplies(rightReplies, null, null, false /* fromAssistant */), + new SmartActions(rightActions, false /* fromAssistant */)); + + assertThat(InflatedSmartReplies.areSuggestionsSimilar( + leftRepliesAndActions, rightRepliesAndActions)).isFalse(); + } + private void setupAppGeneratedReplies(CharSequence[] smartReplies) { setupAppGeneratedReplies(smartReplies, true /* allowSystemGeneratedReplies */); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java index 3edfb56fbaac..fb2b7dced7c2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyConstantsTest.java @@ -211,6 +211,18 @@ public class SmartReplyConstantsTest extends SysuiTestCase { assertEquals(10, mConstants.getMaxNumActions()); } + @Test + public void testOnClickInitDelayWithNoConfig() { + assertEquals(200, mConstants.getOnClickInitDelay()); + } + + @Test + public void testOnClickInitDelaySet() { + overrideSetting(SystemUiDeviceConfigFlags.SSIN_ONCLICK_INIT_DELAY, "50"); + triggerConstantsOnChange(); + assertEquals(50, mConstants.getOnClickInitDelay()); + } + private void overrideSetting(String propertyName, String value) { DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, propertyName, value, false /* makeDefault */); @@ -239,5 +251,7 @@ public class SmartReplyConstantsTest extends SysuiTestCase { false /* makeDefault */); DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.SSIN_MAX_NUM_ACTIONS, null, false /* makeDefault */); + DeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.SSIN_ONCLICK_INIT_DELAY, null, false /* makeDefault */); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyViewTest.java index 0ce1df3d19f4..01f3c923832f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/SmartReplyViewTest.java @@ -24,6 +24,7 @@ import static junit.framework.Assert.fail; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -120,6 +121,8 @@ public class SmartReplyViewTest extends SysuiTestCase { when(mConstants.getMinNumSystemGeneratedReplies()).thenReturn(0); when(mConstants.getMaxSqueezeRemeasureAttempts()).thenReturn(3); when(mConstants.getMaxNumActions()).thenReturn(-1); + // Ensure there's no delay before we can click smart suggestions. + when(mConstants.getOnClickInitDelay()).thenReturn(0L); final Resources res = mContext.getResources(); mSingleLinePaddingHorizontal = res.getDimensionPixelSize( @@ -164,7 +167,7 @@ public class SmartReplyViewTest extends SysuiTestCase { mView.getChildAt(2).performClick(); - assertNull(mReceiver.waitForIntent()); + assertNull(mReceiver.waitForIntentShortDelay()); } @Test @@ -176,7 +179,7 @@ public class SmartReplyViewTest extends SysuiTestCase { mView.getChildAt(2).performClick(); // No intent until the screen is unlocked. - assertNull(mReceiver.waitForIntent()); + assertNull(mReceiver.waitForIntentShortDelay()); actionRef.get().onDismiss(); @@ -204,6 +207,48 @@ public class SmartReplyViewTest extends SysuiTestCase { } @Test + public void testTapSmartReply_beforeInitDelay_blocked() throws InterruptedException { + // 100 seconds is easily enough for our click to always be blocked. + when(mConstants.getOnClickInitDelay()).thenReturn(100L * 1000L); + setSmartReplies(TEST_CHOICES); + + mView.getChildAt(2).performClick(); + + assertNull(mReceiver.waitForIntentShortDelay()); + } + + @Test + public void testTapSmartReply_afterInitDelay_clickReceived() throws InterruptedException { + final long delayMs = 50L; // Using a small delay to not delay the test suite too much. + when(mConstants.getOnClickInitDelay()).thenReturn(delayMs); + setSmartReplies(TEST_CHOICES); + + Thread.sleep(delayMs); + mView.getChildAt(2).performClick(); + + // Now the intent should arrive. + Intent resultIntent = mReceiver.waitForIntent(); + assertEquals(TEST_CHOICES[2], + RemoteInput.getResultsFromIntent(resultIntent).get(TEST_RESULT_KEY)); + assertEquals(RemoteInput.SOURCE_CHOICE, RemoteInput.getResultsSource(resultIntent)); + } + + @Test + public void testTapSmartReply_withoutDelayedOnClickListener_bypassesDelay() + throws InterruptedException { + // 100 seconds is easily enough for our click to always be blocked. + when(mConstants.getOnClickInitDelay()).thenReturn(100L * 1000L); + setSmartReplies(TEST_CHOICES, false /* useDelayedOnClickListener */); + + mView.getChildAt(2).performClick(); + + Intent resultIntent = mReceiver.waitForIntent(); + assertEquals(TEST_CHOICES[2], + RemoteInput.getResultsFromIntent(resultIntent).get(TEST_RESULT_KEY)); + assertEquals(RemoteInput.SOURCE_CHOICE, RemoteInput.getResultsSource(resultIntent)); + } + + @Test public void testMeasure_empty() { mView.measure(WIDTH_SPEC, HEIGHT_SPEC); assertEquals(500, mView.getMeasuredWidthAndState()); @@ -403,18 +448,25 @@ public class SmartReplyViewTest extends SysuiTestCase { } private void setSmartReplies(CharSequence[] choices) { + setSmartReplies(choices, true /* useDelayedOnClickListener */); + } + + private void setSmartReplies(CharSequence[] choices, boolean useDelayedOnClickListener) { mView.resetSmartSuggestions(mContainer); - List<Button> replyButtons = inflateSmartReplies(choices, false /* fromAssistant */); + List<Button> replyButtons = inflateSmartReplies(choices, false /* fromAssistant */, + useDelayedOnClickListener); mView.addPreInflatedButtons(replyButtons); } - private List<Button> inflateSmartReplies(CharSequence[] choices, boolean fromAssistant) { + private List<Button> inflateSmartReplies(CharSequence[] choices, boolean fromAssistant, + boolean useDelayedOnClickListener) { PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, new Intent(TEST_ACTION), 0); RemoteInput input = new RemoteInput.Builder(TEST_RESULT_KEY).setChoices(choices).build(); SmartReplyView.SmartReplies smartReplies = new SmartReplyView.SmartReplies(choices, input, pendingIntent, fromAssistant); - return mView.inflateRepliesFromRemoteInput(smartReplies, mLogger, mEntry); + return mView.inflateRepliesFromRemoteInput(smartReplies, mLogger, mEntry, + useDelayedOnClickListener); } private Notification.Action createAction(String actionTitle) { @@ -432,28 +484,37 @@ public class SmartReplyViewTest extends SysuiTestCase { } private void setSmartActions(String[] actionTitles) { + setSmartActions(actionTitles, true /* useDelayedOnClickListener */); + } + + private void setSmartActions(String[] actionTitles, boolean useDelayedOnClickListener) { mView.resetSmartSuggestions(mContainer); List<Button> actions = mView.inflateSmartActions( new SmartReplyView.SmartActions(createActions(actionTitles), false), mLogger, mEntry, - mHeadsUpManager); + mHeadsUpManager, + useDelayedOnClickListener); mView.addPreInflatedButtons(actions); } private void setSmartRepliesAndActions(CharSequence[] choices, String[] actionTitles) { - setSmartRepliesAndActions(choices, actionTitles, false /* fromAssistant */); + setSmartRepliesAndActions(choices, actionTitles, false /* fromAssistant */, + true /* useDelayedOnClickListener */); } private void setSmartRepliesAndActions( - CharSequence[] choices, String[] actionTitles, boolean fromAssistant) { + CharSequence[] choices, String[] actionTitles, boolean fromAssistant, + boolean useDelayedOnClickListener) { mView.resetSmartSuggestions(mContainer); - List<Button> smartSuggestions = inflateSmartReplies(choices, fromAssistant); + List<Button> smartSuggestions = inflateSmartReplies(choices, fromAssistant, + useDelayedOnClickListener); smartSuggestions.addAll(mView.inflateSmartActions( new SmartReplyView.SmartActions(createActions(actionTitles), fromAssistant), mLogger, mEntry, - mHeadsUpManager)); + mHeadsUpManager, + useDelayedOnClickListener)); mView.addPreInflatedButtons(smartSuggestions); } @@ -491,7 +552,8 @@ public class SmartReplyViewTest extends SysuiTestCase { new SmartReplyView.SmartReplies(choices, null, null, false); for (int i = 0; i < choices.length; ++i) { Button current = SmartReplyView.inflateReplyButton(mView, mContext, i, smartReplies, - null /* SmartReplyController */, null /* NotificationEntry */); + null /* SmartReplyController */, null /* NotificationEntry */, + true /* useDelayedOnClickListener */); current.setPadding(paddingHorizontal, current.getPaddingTop(), paddingHorizontal, current.getPaddingBottom()); if (previous != null) { @@ -576,6 +638,40 @@ public class SmartReplyViewTest extends SysuiTestCase { } @Test + public void testTapSmartAction_beforeInitDelay_blocked() throws InterruptedException { + // 100 seconds is easily enough for our click to always be blocked. + when(mConstants.getOnClickInitDelay()).thenReturn(100L * 1000L); + setSmartActions(TEST_ACTION_TITLES); + + mView.getChildAt(2).performClick(); + + verify(mActivityStarter, never()).startPendingIntentDismissingKeyguard(any(), any()); + } + + @Test + public void testTapSmartAction_afterInitDelay_clickReceived() throws InterruptedException { + final long delayMs = 50L; // Using a small delay to not delay the test suite too much. + when(mConstants.getOnClickInitDelay()).thenReturn(delayMs); + setSmartActions(TEST_ACTION_TITLES); + + Thread.sleep(delayMs); + mView.getChildAt(2).performClick(); + + verify(mActivityStarter, times(1)).startPendingIntentDismissingKeyguard(any(), any()); + } + + @Test + public void testTapSmartAction_withoutDelayedOnClickListener_bypassesDelay() { + // 100 seconds is easily enough for our click to always be blocked. + when(mConstants.getOnClickInitDelay()).thenReturn(100L * 1000L); + setSmartActions(TEST_ACTION_TITLES, false /* useDelayedOnClickListener */); + + mView.getChildAt(2).performClick(); + + verify(mActivityStarter, times(1)).startPendingIntentDismissingKeyguard(any(), any()); + } + + @Test public void testMeasure_shortSmartActions() { String[] actions = new String[] {"Hi", "Hello", "Bye"}; // All choices should be displayed as SINGLE-line smart action buttons. @@ -759,7 +855,7 @@ public class SmartReplyViewTest extends SysuiTestCase { private Button inflateActionButton(Notification.Action action) { return SmartReplyView.inflateActionButton(mView, getContext(), 0, new SmartReplyView.SmartActions(Collections.singletonList(action), false), - mLogger, mEntry, mHeadsUpManager); + mLogger, mEntry, mHeadsUpManager, true /* useDelayedOnClickListener */); } @Test @@ -965,7 +1061,8 @@ public class SmartReplyViewTest extends SysuiTestCase { createActions(new String[] {"action1"})); expectedView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); - setSmartRepliesAndActions(choices, actions, true /* fromAssistant */); + setSmartRepliesAndActions( + choices, actions, true /* fromAssistant */, true /* useDelayedOnClickListener */); mView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); assertEqualMeasures(expectedView, mView); @@ -988,7 +1085,8 @@ public class SmartReplyViewTest extends SysuiTestCase { createActions(new String[] {"action1"})); expectedView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); - setSmartRepliesAndActions(choices, actions, true /* fromAssistant */); + setSmartRepliesAndActions( + choices, actions, true /* fromAssistant */, true /* useDelayedOnClickListener */); mView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); assertEqualMeasures(expectedView, mView); @@ -1017,7 +1115,8 @@ public class SmartReplyViewTest extends SysuiTestCase { createActions(new String[] {"Short action"})); expectedView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); - setSmartRepliesAndActions(choices, actions, true /* fromAssistant */); + setSmartRepliesAndActions( + choices, actions, true /* fromAssistant */, true /* useDelayedOnClickListener */); mView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); assertEqualMeasures(expectedView, mView); diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto index 15d30e463cc3..834987cb6438 100644 --- a/proto/src/wifi.proto +++ b/proto/src/wifi.proto @@ -474,9 +474,6 @@ message WifiLog { // Number of times the SarManager failed to register SAR sensor listener optional int32 num_sar_sensor_registration_failures = 122; - // Histogram of the EAP method type of all installed Passpoint profiles - repeated PasspointProfileTypeCount installed_passpoint_profile_type = 123; - // Hardware revision (EVT, DVT, PVT etc.) optional string hardware_revision = 124; @@ -548,6 +545,12 @@ message WifiLog { // Passpoint provison metrics optional PasspointProvisionStats passpoint_provision_stats = 147; + + // Histogram of the EAP method type of all installed Passpoint profiles for R1 + repeated PasspointProfileTypeCount installed_passpoint_profile_type_for_r1 = 123; + + // Histogram of the EAP method type of all installed Passpoint profiles for R2 + repeated PasspointProfileTypeCount installed_passpoint_profile_type_for_r2 = 148; } // Information that gets logged for every WiFi connection. diff --git a/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java b/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java index 55a062187bb1..ecea251cc1ac 100644 --- a/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java +++ b/services/contentsuggestions/java/com/android/server/contentsuggestions/ContentSuggestionsManagerService.java @@ -16,7 +16,9 @@ package com.android.server.contentsuggestions; +import static android.Manifest.permission.BIND_CONTENT_SUGGESTIONS_SERVICE; import static android.Manifest.permission.MANAGE_CONTENT_SUGGESTIONS; +import static android.content.pm.PackageManager.PERMISSION_GRANTED; import android.annotation.NonNull; import android.annotation.Nullable; @@ -92,16 +94,11 @@ public class ContentSuggestionsManagerService extends return MAX_TEMP_SERVICE_DURATION_MS; } - private boolean isCallerRecents(int userId) { - if (mServiceNameResolver.isTemporary(userId)) { - // If a temporary service is set then skip the recents check - return true; - } - return mActivityTaskManagerInternal.isCallerRecents(Binder.getCallingUid()); - } - - private void enforceCallerIsRecents(int userId, String func) { - if (isCallerRecents(userId)) { + private void enforceCaller(int userId, String func) { + Context ctx = getContext(); + if (ctx.checkCallingPermission(BIND_CONTENT_SUGGESTIONS_SERVICE) == PERMISSION_GRANTED + || mServiceNameResolver.isTemporary(userId) + || mActivityTaskManagerInternal.isCallerRecents(Binder.getCallingUid())) { return; } @@ -122,7 +119,7 @@ public class ContentSuggestionsManagerService extends if (imageContextRequestExtras == null) { throw new IllegalArgumentException("Expected non-null imageContextRequestExtras"); } - enforceCallerIsRecents(UserHandle.getCallingUserId(), "provideContextImage"); + enforceCaller(UserHandle.getCallingUserId(), "provideContextImage"); synchronized (mLock) { final ContentSuggestionsPerUserService service = getServiceForUserLocked(userId); @@ -141,7 +138,7 @@ public class ContentSuggestionsManagerService extends int userId, @NonNull SelectionsRequest selectionsRequest, @NonNull ISelectionsCallback selectionsCallback) { - enforceCallerIsRecents(UserHandle.getCallingUserId(), "suggestContentSelections"); + enforceCaller(UserHandle.getCallingUserId(), "suggestContentSelections"); synchronized (mLock) { final ContentSuggestionsPerUserService service = getServiceForUserLocked(userId); @@ -160,7 +157,7 @@ public class ContentSuggestionsManagerService extends int userId, @NonNull ClassificationsRequest classificationsRequest, @NonNull IClassificationsCallback callback) { - enforceCallerIsRecents(UserHandle.getCallingUserId(), "classifyContentSelections"); + enforceCaller(UserHandle.getCallingUserId(), "classifyContentSelections"); synchronized (mLock) { final ContentSuggestionsPerUserService service = getServiceForUserLocked(userId); @@ -177,7 +174,7 @@ public class ContentSuggestionsManagerService extends @Override public void notifyInteraction( int userId, @NonNull String requestId, @NonNull Bundle bundle) { - enforceCallerIsRecents(UserHandle.getCallingUserId(), "notifyInteraction"); + enforceCaller(UserHandle.getCallingUserId(), "notifyInteraction"); synchronized (mLock) { final ContentSuggestionsPerUserService service = getServiceForUserLocked(userId); @@ -194,7 +191,7 @@ public class ContentSuggestionsManagerService extends @Override public void isEnabled(int userId, @NonNull IResultReceiver receiver) throws RemoteException { - enforceCallerIsRecents(UserHandle.getCallingUserId(), "isEnabled"); + enforceCaller(UserHandle.getCallingUserId(), "isEnabled"); boolean isDisabled; synchronized (mLock) { diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index e4c39ccd629c..6c3a169b852b 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -47,6 +47,7 @@ import static android.system.OsConstants.IPPROTO_UDP; import static com.android.internal.util.Preconditions.checkNotNull; +import android.annotation.NonNull; import android.annotation.Nullable; import android.app.BroadcastOptions; import android.app.NotificationManager; @@ -632,7 +633,8 @@ public class ConnectivityService extends IConnectivityManager.Stub * the first network for a given type changes, or if the default network * changes. */ - private class LegacyTypeTracker { + @VisibleForTesting + static class LegacyTypeTracker { private static final boolean DBG = true; private static final boolean VDBG = false; @@ -658,10 +660,12 @@ public class ConnectivityService extends IConnectivityManager.Stub * - dump is thread-safe with respect to concurrent add and remove calls. */ private final ArrayList<NetworkAgentInfo> mTypeLists[]; + @NonNull + private final ConnectivityService mService; - public LegacyTypeTracker() { - mTypeLists = (ArrayList<NetworkAgentInfo>[]) - new ArrayList[ConnectivityManager.MAX_NETWORK_TYPE + 1]; + LegacyTypeTracker(@NonNull ConnectivityService service) { + mService = service; + mTypeLists = new ArrayList[ConnectivityManager.MAX_NETWORK_TYPE + 1]; } public void addSupportedType(int type) { @@ -710,10 +714,10 @@ public class ConnectivityService extends IConnectivityManager.Stub } // Send a broadcast if this is the first network of its type or if it's the default. - final boolean isDefaultNetwork = isDefaultNetwork(nai); + final boolean isDefaultNetwork = mService.isDefaultNetwork(nai); if ((list.size() == 1) || isDefaultNetwork) { maybeLogBroadcast(nai, DetailedState.CONNECTED, type, isDefaultNetwork); - sendLegacyNetworkBroadcast(nai, DetailedState.CONNECTED, type); + mService.sendLegacyNetworkBroadcast(nai, DetailedState.CONNECTED, type); } } @@ -735,15 +739,15 @@ public class ConnectivityService extends IConnectivityManager.Stub if (wasFirstNetwork || wasDefault) { maybeLogBroadcast(nai, state, type, wasDefault); - sendLegacyNetworkBroadcast(nai, state, type); + mService.sendLegacyNetworkBroadcast(nai, state, type); } if (!list.isEmpty() && wasFirstNetwork) { if (DBG) log("Other network available for type " + type + ", sending connected broadcast"); final NetworkAgentInfo replacement = list.get(0); - maybeLogBroadcast(replacement, state, type, isDefaultNetwork(replacement)); - sendLegacyNetworkBroadcast(replacement, state, type); + maybeLogBroadcast(replacement, state, type, mService.isDefaultNetwork(replacement)); + mService.sendLegacyNetworkBroadcast(replacement, state, type); } } @@ -758,7 +762,7 @@ public class ConnectivityService extends IConnectivityManager.Stub // send out another legacy broadcast - currently only used for suspend/unsuspend // toggle public void update(NetworkAgentInfo nai) { - final boolean isDefault = isDefaultNetwork(nai); + final boolean isDefault = mService.isDefaultNetwork(nai); final DetailedState state = nai.networkInfo.getDetailedState(); for (int type = 0; type < mTypeLists.length; type++) { final ArrayList<NetworkAgentInfo> list = mTypeLists[type]; @@ -766,7 +770,7 @@ public class ConnectivityService extends IConnectivityManager.Stub final boolean isFirst = contains && (nai == list.get(0)); if (isFirst || contains && isDefault) { maybeLogBroadcast(nai, state, type, isDefault); - sendLegacyNetworkBroadcast(nai, state, type); + mService.sendLegacyNetworkBroadcast(nai, state, type); } } } @@ -802,7 +806,7 @@ public class ConnectivityService extends IConnectivityManager.Stub pw.println(); } } - private LegacyTypeTracker mLegacyTypeTracker = new LegacyTypeTracker(); + private final LegacyTypeTracker mLegacyTypeTracker = new LegacyTypeTracker(this); /** * Helper class which parses out priority arguments and dumps sections according to their @@ -5357,7 +5361,8 @@ public class ConnectivityService extends IConnectivityManager.Stub } } - private boolean isDefaultNetwork(NetworkAgentInfo nai) { + @VisibleForTesting + protected boolean isDefaultNetwork(NetworkAgentInfo nai) { return nai == getDefaultNetwork(); } @@ -6565,7 +6570,8 @@ public class ConnectivityService extends IConnectivityManager.Stub } } - private void sendLegacyNetworkBroadcast(NetworkAgentInfo nai, DetailedState state, int type) { + @VisibleForTesting + protected void sendLegacyNetworkBroadcast(NetworkAgentInfo nai, DetailedState state, int type) { // The NetworkInfo we actually send out has no bearing on the real // state of affairs. For example, if the default connection is mobile, // and a request for HIPRI has just gone away, we need to pretend that diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java index 3410d8d86852..44fc45e13218 100644 --- a/services/core/java/com/android/server/LocationManagerService.java +++ b/services/core/java/com/android/server/LocationManagerService.java @@ -88,6 +88,7 @@ import android.util.ArraySet; import android.util.EventLog; import android.util.Log; import android.util.Slog; +import android.util.TimeUtils; import com.android.internal.annotations.GuardedBy; import com.android.internal.content.PackageMonitor; @@ -3567,6 +3568,10 @@ public class LocationManagerService extends ILocationManager.Stub { return; } pw.println("Current Location Manager state:"); + pw.print(" Current System Time: " + + TimeUtils.logTimeOfDay(System.currentTimeMillis())); + pw.println(", Current Elapsed Time: " + + TimeUtils.formatDuration(SystemClock.elapsedRealtime())); pw.println(" Current user: " + mCurrentUserId + " " + Arrays.toString( mCurrentUserProfiles)); pw.println(" Location mode: " + isLocationEnabled()); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 0b602829d8d0..6da7f5fc98d8 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -7894,8 +7894,9 @@ public class ActivityManagerService extends IActivityManager.Stub synchronized (this) { boolean isDebuggable = "1".equals(SystemProperties.get(SYSTEM_DEBUGGABLE, "0")); if (!isDebuggable) { - if ((app.flags & ApplicationInfo.FLAG_DEBUGGABLE) == 0) { - throw new SecurityException("Process not debuggable: " + app.packageName); + if (!app.isProfileableByShell()) { + throw new SecurityException("Process not debuggable, " + + "and not profileable by shell: " + app.packageName); } } mProfileData.setProfileApp(processName); diff --git a/services/core/java/com/android/server/am/EventLogTags.logtags b/services/core/java/com/android/server/am/EventLogTags.logtags index e65a4e50198b..7c2ea3fc57f2 100644 --- a/services/core/java/com/android/server/am/EventLogTags.logtags +++ b/services/core/java/com/android/server/am/EventLogTags.logtags @@ -139,3 +139,8 @@ option java_package com.android.server.am # The task is being compacted 30063 am_compact (Pid|1|5),(Process Name|3),(Action|3),(BeforeRssTotal|2|2),(BeforeRssFile|2|2),(BeforeRssAnon|2|2),(BeforeRssSwap|2|2),(DeltaRssTotal|2|2),(DeltaRssFile|2|2),(DeltaRssAnon|2|2),(DeltaRssSwap|2|2),(Time|2|3),(LastAction|1|2),(LastActionTimestamp|2|3),(setAdj|1|2),(procState|1|2),(BeforeZRAMFree|2|2),(DeltaZRAMFree|2|2) + +# The activity's onTopResumedActivityChanged(true) has been called. +30064 am_on_top_resumed_gained_called (User|1|5),(Component Name|3),(Reason|3) +# The activity's onTopResumedActivityChanged(false) has been called. +30065 am_on_top_resumed_lost_called (User|1|5),(Component Name|3),(Reason|3) diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index 1bcc4c8a6d08..a93f2187db08 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -3172,15 +3172,28 @@ public final class ProcessList { @GuardedBy("mService") void sendPackageBroadcastLocked(int cmd, String[] packages, int userId) { + boolean foundProcess = false; for (int i = mLruProcesses.size() - 1; i >= 0; i--) { ProcessRecord r = mLruProcesses.get(i); if (r.thread != null && (userId == UserHandle.USER_ALL || r.userId == userId)) { try { + for (int index = packages.length - 1; index >= 0 && !foundProcess; index--) { + if (packages[index].equals(r.info.packageName)) { + foundProcess = true; + } + } r.thread.dispatchPackageBroadcast(cmd, packages); } catch (RemoteException ex) { } } } + + if (!foundProcess) { + try { + AppGlobals.getPackageManager().notifyPackagesReplacedReceived(packages); + } catch (RemoteException ignored) { + } + } } /** Returns the uid's process state or PROCESS_STATE_NONEXISTENT if not running */ diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java index c573332235d8..4ce6d91d25b0 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java +++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java @@ -43,7 +43,6 @@ import android.util.Log; import com.android.internal.annotations.GuardedBy; -import java.util.ArrayList; /** @hide */ /*package*/ final class AudioDeviceBroker { @@ -376,24 +375,29 @@ import java.util.ArrayList; mAudioService.postAccessoryPlugMediaUnmute(device); } - /*package*/ AudioService.VolumeStreamState getStreamState(int streamType) { - return mAudioService.getStreamState(streamType); + /*package*/ int getVssVolumeForDevice(int streamType, int device) { + return mAudioService.getVssVolumeForDevice(streamType, device); } - /*package*/ ArrayList<AudioService.SetModeDeathHandler> getSetModeDeathHandlers() { - return mAudioService.mSetModeDeathHandlers; + /*package*/ int getModeOwnerPid() { + return mAudioService.getModeOwnerPid(); } /*package*/ int getDeviceForStream(int streamType) { return mAudioService.getDeviceForStream(streamType); } - /*package*/ void setDeviceVolume(AudioService.VolumeStreamState streamState, int device) { - mAudioService.setDeviceVolume(streamState, device); + /*package*/ void postApplyVolumeOnDevice(int streamType, int device, String caller) { + mAudioService.postApplyVolumeOnDevice(streamType, device, caller); } - /*packages*/ void observeDevicesForAllStreams() { - mAudioService.observeDevicesForAllStreams(); + /*package*/ void postSetVolumeIndexOnDevice(int streamType, int vssVolIndex, int device, + String caller) { + mAudioService.postSetVolumeIndexOnDevice(streamType, vssVolIndex, device, caller); + } + + /*packages*/ void postObserveDevicesForAllStreams() { + mAudioService.postObserveDevicesForAllStreams(); } /*package*/ boolean isInCommunication() { diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java index 91b51b4989d8..f9dbdd5b13db 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java +++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java @@ -198,14 +198,10 @@ public final class AudioDeviceInventory { } } if (a2dpVolume != -1) { - AudioService.VolumeStreamState streamState = - mDeviceBroker.getStreamState(AudioSystem.STREAM_MUSIC); - // Convert index to internal representation in VolumeStreamState - a2dpVolume = a2dpVolume * 10; - streamState.setIndex(a2dpVolume, AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, - "onSetA2dpSinkConnectionState"); - mDeviceBroker.setDeviceVolume( - streamState, AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP); + mDeviceBroker.postSetVolumeIndexOnDevice(AudioSystem.STREAM_MUSIC, + // convert index to internal representation in VolumeStreamState + a2dpVolume * 10, + AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, "onSetA2dpSinkConnectionState"); } makeA2dpDeviceAvailable(address, BtHelper.getName(btDevice), "onSetA2dpSinkConnectionState", a2dpCodec); @@ -302,14 +298,11 @@ public final class AudioDeviceInventory { if (event == BtHelper.EVENT_ACTIVE_DEVICE_CHANGE) { // Device is connected if (a2dpVolume != -1) { - final AudioService.VolumeStreamState streamState = - mDeviceBroker.getStreamState(AudioSystem.STREAM_MUSIC); - // Convert index to internal representation in VolumeStreamState - a2dpVolume = a2dpVolume * 10; - streamState.setIndex(a2dpVolume, AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, + mDeviceBroker.postSetVolumeIndexOnDevice(AudioSystem.STREAM_MUSIC, + // convert index to internal representation in VolumeStreamState + a2dpVolume * 10, + AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, "onBluetoothA2dpActiveDeviceChange"); - mDeviceBroker.setDeviceVolume( - streamState, AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP); } } else if (event == BtHelper.EVENT_DEVICE_CONFIG_CHANGE) { if (di.mDeviceCodecFormat != a2dpCodec) { @@ -352,7 +345,7 @@ public final class AudioDeviceInventory { } } mRoutesObservers.finishBroadcast(); - mDeviceBroker.observeDevicesForAllStreams(); + mDeviceBroker.postObserveDevicesForAllStreams(); } private static final int DEVICE_OVERRIDE_A2DP_ROUTE_ON_PLUG = @@ -655,8 +648,6 @@ public final class AudioDeviceInventory { int a2dpCodec) { // enable A2DP before notifying A2DP connection to avoid unnecessary processing in // audio policy manager - AudioService.VolumeStreamState streamState = - mDeviceBroker.getStreamState(AudioSystem.STREAM_MUSIC); mDeviceBroker.setBluetoothA2dpOnInt(true, eventSource); AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, AudioSystem.DEVICE_STATE_AVAILABLE, address, name, a2dpCodec); @@ -727,8 +718,8 @@ public final class AudioDeviceInventory { @GuardedBy("mConnectedDevices") private void makeHearingAidDeviceAvailable(String address, String name, String eventSource) { - final int hearingAidVolIndex = mDeviceBroker.getStreamState(AudioSystem.STREAM_MUSIC) - .getIndex(AudioSystem.DEVICE_OUT_HEARING_AID); + final int hearingAidVolIndex = mDeviceBroker.getVssVolumeForDevice(AudioSystem.STREAM_MUSIC, + AudioSystem.DEVICE_OUT_HEARING_AID); mDeviceBroker.postSetHearingAidVolumeIndex(hearingAidVolIndex, AudioSystem.STREAM_MUSIC); AudioSystem.setDeviceConnectionState(AudioSystem.DEVICE_OUT_HEARING_AID, @@ -739,9 +730,8 @@ public final class AudioDeviceInventory { new DeviceInfo(AudioSystem.DEVICE_OUT_HEARING_AID, name, address, AudioSystem.AUDIO_FORMAT_DEFAULT)); mDeviceBroker.postAccessoryPlugMediaUnmute(AudioSystem.DEVICE_OUT_HEARING_AID); - mDeviceBroker.setDeviceVolume( - mDeviceBroker.getStreamState(AudioSystem.STREAM_MUSIC), - AudioSystem.DEVICE_OUT_HEARING_AID); + mDeviceBroker.postApplyVolumeOnDevice(AudioSystem.STREAM_MUSIC, + AudioSystem.DEVICE_OUT_HEARING_AID, "makeHearingAidDeviceAvailable"); setCurrentAudioRouteNameIfPossible(name); } diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index d30a9d2b158e..b6879a3def03 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -258,6 +258,8 @@ public class AudioService extends IAudioService.Stub private static final int MSG_DISPATCH_AUDIO_SERVER_STATE = 23; private static final int MSG_ENABLE_SURROUND_FORMATS = 24; private static final int MSG_UPDATE_RINGER_MODE = 25; + private static final int MSG_SET_DEVICE_STREAM_VOLUME = 26; + private static final int MSG_OBSERVE_DEVICES_FOR_ALL_STREAMS = 27; // start of messages handled under wakelock // these messages can only be queued, i.e. sent with queueMsgUnderWakeLock(), // and not with sendMsg(..., ..., SENDMSG_QUEUE, ...) @@ -274,8 +276,8 @@ public class AudioService extends IAudioService.Stub /** @see VolumeStreamState */ private VolumeStreamState[] mStreamStates; - /*package*/ VolumeStreamState getStreamState(int stream) { - return mStreamStates[stream]; + /*package*/ int getVssVolumeForDevice(int stream, int device) { + return mStreamStates[stream].getIndex(device); } private SettingsObserver mSettingsObserver; @@ -508,13 +510,14 @@ public class AudioService extends IAudioService.Stub // Used to play ringtones outside system_server private volatile IRingtonePlayer mRingtonePlayer; - // Devices for which the volume is fixed and VolumePanel slider should be disabled + // Devices for which the volume is fixed (volume is either max or muted) int mFixedVolumeDevices = AudioSystem.DEVICE_OUT_HDMI | AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET | AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET | AudioSystem.DEVICE_OUT_HDMI_ARC | AudioSystem.DEVICE_OUT_SPDIF | AudioSystem.DEVICE_OUT_AUX_LINE; + // Devices for which the volume is always max, no volume panel int mFullVolumeDevices = 0; private final boolean mMonitorRotation; @@ -859,6 +862,11 @@ public class AudioService extends IAudioService.Stub mFixedVolumeDevices &= ~AudioSystem.DEVICE_ALL_HDMI_SYSTEM_AUDIO_AND_SPEAKER; } mHdmiPlaybackClient = mHdmiManager.getPlaybackClient(); + if (mHdmiPlaybackClient != null) { + // not a television: HDMI output will be always at max + mFixedVolumeDevices &= ~AudioSystem.DEVICE_OUT_HDMI; + mFullVolumeDevices |= AudioSystem.DEVICE_OUT_HDMI; + } mHdmiCecSink = false; mHdmiAudioSystemClient = mHdmiManager.getAudioSystemClient(); } @@ -1065,7 +1073,6 @@ public class AudioService extends IAudioService.Stub } if (isPlatformTelevision()) { - mFixedVolumeDevices |= AudioSystem.DEVICE_OUT_HDMI; checkAllFixedVolumeDevices(); synchronized (mHdmiClientLock) { if (mHdmiManager != null && mHdmiPlaybackClient != null) { @@ -1656,7 +1663,7 @@ public class AudioService extends IAudioService.Stub flags &= ~AudioManager.FLAG_FIXED_VOLUME; if ((streamTypeAlias == AudioSystem.STREAM_MUSIC) && - ((device & mFixedVolumeDevices) != 0)) { + ((device & mFixedVolumeDevices) != 0)) { flags |= AudioManager.FLAG_FIXED_VOLUME; // Always toggle between max safe volume and 0 for fixed volume devices where safe @@ -1733,8 +1740,9 @@ public class AudioService extends IAudioService.Stub !checkSafeMediaVolume(streamTypeAlias, aliasIndex + step, device)) { Log.e(TAG, "adjustStreamVolume() safe volume index = " + oldIndex); mVolumeController.postDisplaySafeVolumeWarning(flags); - } else if (streamState.adjustIndex(direction * step, device, caller) - || streamState.mIsMuted) { + } else if (((device & mFullVolumeDevices) == 0) + && (streamState.adjustIndex(direction * step, device, caller) + || streamState.mIsMuted)) { // Post message to set system volume (it in turn will post a // message to persist). if (streamState.mIsMuted) { @@ -1785,9 +1793,10 @@ public class AudioService extends IAudioService.Stub synchronized (mHdmiClientLock) { if (mHdmiManager != null) { // mHdmiCecSink true => mHdmiPlaybackClient != null - if (mHdmiCecSink && - streamTypeAlias == AudioSystem.STREAM_MUSIC && - oldIndex != newIndex) { + if (mHdmiCecSink + && streamTypeAlias == AudioSystem.STREAM_MUSIC + // vol change on a full volume device + && ((device & mFullVolumeDevices) != 0)) { int keyCode = (direction == -1) ? KeyEvent.KEYCODE_VOLUME_DOWN : KeyEvent.KEYCODE_VOLUME_UP; final long ident = Binder.clearCallingIdentity(); @@ -1814,7 +1823,7 @@ public class AudioService extends IAudioService.Stub } } int index = mStreamStates[streamType].getIndex(device); - sendVolumeUpdate(streamType, oldIndex, index, flags); + sendVolumeUpdate(streamType, oldIndex, index, flags, device); } // Called after a delay when volume down is pressed while muted @@ -1824,7 +1833,7 @@ public class AudioService extends IAudioService.Stub final int device = getDeviceForStream(stream); final int index = mStreamStates[stream].getIndex(device); - sendVolumeUpdate(stream, index, index, flags); + sendVolumeUpdate(stream, index, index, flags, device); } private void setSystemAudioVolume(int oldVolume, int newVolume, int maxVolume, int flags) { @@ -1835,7 +1844,9 @@ public class AudioService extends IAudioService.Stub || mHdmiTvClient == null || oldVolume == newVolume || (flags & AudioManager.FLAG_HDMI_SYSTEM_AUDIO_VOLUME) != 0 - || !mHdmiSystemAudioSupported) return; + || !mHdmiSystemAudioSupported) { + return; + } final long token = Binder.clearCallingIdentity(); try { mHdmiTvClient.setSystemAudioVolume(oldVolume, newVolume, maxVolume); @@ -2149,7 +2160,7 @@ public class AudioService extends IAudioService.Stub Binder.restoreCallingIdentity(identity); } } - sendVolumeUpdate(streamType, oldIndex, index, flags); + sendVolumeUpdate(streamType, oldIndex, index, flags, device); } @@ -2303,18 +2314,22 @@ public class AudioService extends IAudioService.Stub } // UI update and Broadcast Intent - protected void sendVolumeUpdate(int streamType, int oldIndex, int index, int flags) { + protected void sendVolumeUpdate(int streamType, int oldIndex, int index, int flags, int device) + { streamType = mStreamVolumeAlias[streamType]; if (streamType == AudioSystem.STREAM_MUSIC) { - flags = updateFlagsForSystemAudio(flags); + flags = updateFlagsForTvPlatform(flags); + if ((device & mFullVolumeDevices) != 0) { + flags &= ~AudioManager.FLAG_SHOW_UI; + } } mVolumeController.postVolumeChanged(streamType, flags); } // If Hdmi-CEC system audio mode is on, we show volume bar only when TV // receives volume notification from Audio Receiver. - private int updateFlagsForSystemAudio(int flags) { + private int updateFlagsForTvPlatform(int flags) { synchronized (mHdmiClientLock) { if (mHdmiTvClient != null) { if (mHdmiSystemAudioSupported && @@ -2328,7 +2343,7 @@ public class AudioService extends IAudioService.Stub // UI update and Broadcast Intent private void sendMasterMuteUpdate(boolean muted, int flags) { - mVolumeController.postMasterMuteChanged(updateFlagsForSystemAudio(flags)); + mVolumeController.postMasterMuteChanged(updateFlagsForTvPlatform(flags)); broadcastMasterMuteStatus(muted); } @@ -2355,6 +2370,9 @@ public class AudioService extends IAudioService.Stub int device, boolean force, String caller) { + if ((device & mFullVolumeDevices) != 0) { + return; + } VolumeStreamState streamState = mStreamStates[streamType]; if (streamState.setIndex(index, device, caller) || force) { @@ -2920,7 +2938,21 @@ public class AudioService extends IAudioService.Stub } - /*package*/ class SetModeDeathHandler implements IBinder.DeathRecipient { + /** + * Return the pid of the current audio mode owner + * @return 0 if nobody owns the mode + */ + /*package*/ int getModeOwnerPid() { + int modeOwnerPid = 0; + try { + modeOwnerPid = mSetModeDeathHandlers.get(0).getPid(); + } catch (Exception e) { + // nothing to do, modeOwnerPid is not modified + } + return modeOwnerPid; + } + + private class SetModeDeathHandler implements IBinder.DeathRecipient { private IBinder mCb; // To be notified of client's death private int mPid; private int mMode = AudioSystem.MODE_NORMAL; // Current mode set by this client @@ -4080,8 +4112,14 @@ public class AudioService extends IAudioService.Stub } } + /*package*/ void postObserveDevicesForAllStreams() { + sendMsg(mAudioHandler, + MSG_OBSERVE_DEVICES_FOR_ALL_STREAMS, + SENDMSG_QUEUE, 0 /*arg1*/, 0 /*arg2*/, null /*obj*/, + 0 /*delay*/); + } - /*package*/ void observeDevicesForAllStreams() { + private void onObserveDevicesForAllStreams() { observeDevicesForStreams(-1); } @@ -4254,7 +4292,7 @@ public class AudioService extends IAudioService.Stub // 2 mSetModeLock // 3 mSettingsLock // 4 VolumeStreamState.class - public class VolumeStreamState { + private class VolumeStreamState { private final int mStreamType; private int mIndexMin; private int mIndexMax; @@ -4724,6 +4762,74 @@ public class AudioService extends IAudioService.Stub } } + private static final class DeviceVolumeUpdate { + final int mStreamType; + final int mDevice; + final @NonNull String mCaller; + private static final int NO_NEW_INDEX = -2049; + private final int mVssVolIndex; + + // Constructor with volume index, meant to cause this volume to be set and applied for the + // given stream type on the given device + DeviceVolumeUpdate(int streamType, int vssVolIndex, int device, @NonNull String caller) { + mStreamType = streamType; + mVssVolIndex = vssVolIndex; + mDevice = device; + mCaller = caller; + } + + // Constructor with no volume index, meant to cause re-apply of volume for the given + // stream type on the given device + DeviceVolumeUpdate(int streamType, int device, @NonNull String caller) { + mStreamType = streamType; + mVssVolIndex = NO_NEW_INDEX; + mDevice = device; + mCaller = caller; + } + + boolean hasVolumeIndex() { + return mVssVolIndex != NO_NEW_INDEX; + } + + int getVolumeIndex() throws IllegalStateException { + Preconditions.checkState(mVssVolIndex != NO_NEW_INDEX); + return mVssVolIndex; + } + } + + /*package*/ void postSetVolumeIndexOnDevice(int streamType, int vssVolIndex, int device, + String caller) { + sendMsg(mAudioHandler, + MSG_SET_DEVICE_STREAM_VOLUME, + SENDMSG_QUEUE, 0 /*arg1*/, 0 /*arg2*/, + new DeviceVolumeUpdate(streamType, vssVolIndex, device, caller), + 0 /*delay*/); + } + + /*package*/ void postApplyVolumeOnDevice(int streamType, int device, @NonNull String caller) { + sendMsg(mAudioHandler, + MSG_SET_DEVICE_STREAM_VOLUME, + SENDMSG_QUEUE, 0 /*arg1*/, 0 /*arg2*/, + new DeviceVolumeUpdate(streamType, device, caller), + 0 /*delay*/); + } + + private void onSetVolumeIndexOnDevice(@NonNull DeviceVolumeUpdate update) { + synchronized (VolumeStreamState.class) { + final VolumeStreamState streamState = mStreamStates[update.mStreamType]; + if (update.hasVolumeIndex()) { + final int index = update.getVolumeIndex(); + streamState.setIndex(index, update.mDevice, update.mCaller); + sVolumeLogger.log(new AudioEventLogger.StringEvent(update.mCaller + " dev:0x" + + Integer.toHexString(update.mDevice) + " volIdx:" + index)); + } else { + sVolumeLogger.log(new AudioEventLogger.StringEvent(update.mCaller + + " update vol on dev:0x" + Integer.toHexString(update.mDevice))); + } + setDeviceVolume(streamState, update.mDevice); + } + } + /*package*/ void setDeviceVolume(VolumeStreamState streamState, int device) { final boolean isAvrcpAbsVolSupported = mDeviceBroker.isAvrcpAbsoluteVolumeSupported(); @@ -5164,6 +5270,14 @@ public class AudioService extends IAudioService.Stub case MSG_UPDATE_RINGER_MODE: onUpdateRingerModeServiceInt(); break; + + case MSG_SET_DEVICE_STREAM_VOLUME: + onSetVolumeIndexOnDevice((DeviceVolumeUpdate) msg.obj); + break; + + case MSG_OBSERVE_DEVICES_FOR_ALL_STREAMS: + onObserveDevicesForAllStreams(); + break; } } } @@ -5810,9 +5924,14 @@ public class AudioService extends IAudioService.Stub } //========================================================================================== - // Hdmi Cec system audio mode. - // If Hdmi Cec's system audio mode is on, audio service should send the volume change - // to HdmiControlService so that the audio receiver can handle it. + // Hdmi CEC: + // - System audio mode: + // If Hdmi Cec's system audio mode is on, audio service should send the volume change + // to HdmiControlService so that the audio receiver can handle it. + // - CEC sink: + // OUT_HDMI becomes a "full volume device", i.e. output is always at maximum level + // and volume changes won't be taken into account on this device. Volume adjustments + // are transformed into key events for the HDMI playback client. //========================================================================================== private class MyDisplayStatusCallback implements HdmiPlaybackClient.DisplayStatusCallback { @@ -5821,8 +5940,18 @@ public class AudioService extends IAudioService.Stub if (mHdmiManager != null) { mHdmiCecSink = (status != HdmiControlManager.POWER_STATUS_UNKNOWN); // Television devices without CEC service apply software volume on HDMI output - if (isPlatformTelevision() && !mHdmiCecSink) { - mFixedVolumeDevices &= ~AudioSystem.DEVICE_OUT_HDMI; + if (mHdmiCecSink) { + if (DEBUG_VOL) { + Log.d(TAG, "CEC sink: setting HDMI as full vol device"); + } + mFullVolumeDevices |= AudioSystem.DEVICE_OUT_HDMI; + } else { + if (DEBUG_VOL) { + Log.d(TAG, "TV, no CEC: setting HDMI as regular vol device"); + } + // Android TV devices without CEC service apply software volume on + // HDMI output + mFullVolumeDevices &= ~AudioSystem.DEVICE_OUT_HDMI; } checkAllFixedVolumeDevices(); } diff --git a/services/core/java/com/android/server/audio/BtHelper.java b/services/core/java/com/android/server/audio/BtHelper.java index 332ff362392a..068c3d8a1264 100644 --- a/services/core/java/com/android/server/audio/BtHelper.java +++ b/services/core/java/com/android/server/audio/BtHelper.java @@ -765,8 +765,7 @@ public class BtHelper { broadcastScoConnectionState(AudioManager.SCO_AUDIO_STATE_CONNECTING); // Accept SCO audio activation only in NORMAL audio mode or if the mode is // currently controlled by the same client process. - int modeOwnerPid = mDeviceBroker.getSetModeDeathHandlers().isEmpty() - ? 0 : mDeviceBroker.getSetModeDeathHandlers().get(0).getPid(); + final int modeOwnerPid = mDeviceBroker.getModeOwnerPid(); if (modeOwnerPid != 0 && (modeOwnerPid != mCreatorPid)) { Log.w(TAG, "requestScoState: audio mode is not NORMAL and modeOwnerPid " + modeOwnerPid + " != creatorPid " + mCreatorPid); diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java index b140c1b25320..33c84d161a90 100644 --- a/services/core/java/com/android/server/connectivity/Tethering.java +++ b/services/core/java/com/android/server/connectivity/Tethering.java @@ -237,13 +237,17 @@ public class Tethering extends BaseNetworkObserver { mLog.log("OBSERVED UiEnitlementFailed"); stopTethering(downstream); }); + mEntitlementMgr.setTetheringConfigurationFetcher(() -> { + maybeDefaultDataSubChanged(); + return mConfig; + }); mCarrierConfigChange = new VersionedBroadcastListener( "CarrierConfigChangeListener", mContext, mHandler, filter, (Intent ignored) -> { mLog.log("OBSERVED carrier config change"); updateConfiguration(); - mEntitlementMgr.reevaluateSimCardProvisioning(); + mEntitlementMgr.reevaluateSimCardProvisioning(mConfig); }); filter = new IntentFilter(); @@ -252,12 +256,12 @@ public class Tethering extends BaseNetworkObserver { "DefaultSubscriptionChangeListener", mContext, mHandler, filter, (Intent ignored) -> { mLog.log("OBSERVED default data subscription change"); - updateConfiguration(); + maybeDefaultDataSubChanged(); // To avoid launch unexpected provisioning checks, ignore re-provisioning when // no CarrierConfig loaded yet. Assume reevaluateSimCardProvisioning() will be // triggered again when CarrierConfig is loaded. - if (mEntitlementMgr.getCarrierConfig() != null) { - mEntitlementMgr.reevaluateSimCardProvisioning(); + if (mEntitlementMgr.getCarrierConfig(mConfig) != null) { + mEntitlementMgr.reevaluateSimCardProvisioning(mConfig); } else { mLog.log("IGNORED reevaluate provisioning due to no carrier config loaded"); } @@ -301,17 +305,26 @@ public class Tethering extends BaseNetworkObserver { // NOTE: This is always invoked on the mLooper thread. private void updateConfiguration() { final int subId = mDeps.getDefaultDataSubscriptionId(); + updateConfiguration(subId); + } + + private void updateConfiguration(final int subId) { mConfig = new TetheringConfiguration(mContext, mLog, subId); mUpstreamNetworkMonitor.updateMobileRequiresDun(mConfig.isDunRequired); - mEntitlementMgr.updateConfiguration(mConfig); } - private void maybeUpdateConfiguration() { + private void maybeDunSettingChanged() { final boolean isDunRequired = TetheringConfiguration.checkDunRequired(mContext); if (isDunRequired == mConfig.isDunRequired) return; updateConfiguration(); } + private void maybeDefaultDataSubChanged() { + final int subId = mDeps.getDefaultDataSubscriptionId(); + if (subId == mConfig.subId) return; + updateConfiguration(subId); + } + @Override public void interfaceStatusChanged(String iface, boolean up) { // Never called directly: only called from interfaceLinkStateChanged. @@ -1183,7 +1196,7 @@ public class Tethering extends BaseNetworkObserver { protected void chooseUpstreamType(boolean tryCell) { // We rebuild configuration on ACTION_CONFIGURATION_CHANGED, but we // do not currently know how to watch for changes in DUN settings. - maybeUpdateConfiguration(); + maybeDunSettingChanged(); final TetheringConfiguration config = mConfig; final NetworkState ns = (config.chooseUpstreamAutomatically) diff --git a/services/core/java/com/android/server/connectivity/tethering/EntitlementManager.java b/services/core/java/com/android/server/connectivity/tethering/EntitlementManager.java index b0bbd72794d9..836f1e64aa9c 100644 --- a/services/core/java/com/android/server/connectivity/tethering/EntitlementManager.java +++ b/services/core/java/com/android/server/connectivity/tethering/EntitlementManager.java @@ -29,7 +29,6 @@ import static android.net.ConnectivityManager.TETHER_ERROR_PROVISION_FAILED; import static com.android.internal.R.string.config_wifi_tether_enable; -import android.annotation.Nullable; import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; @@ -76,6 +75,7 @@ public class EntitlementManager { protected static final String DISABLE_PROVISIONING_SYSPROP_KEY = "net.tethering.noprovisioning"; private static final String ACTION_PROVISIONING_ALARM = "com.android.server.connectivity.tethering.PROVISIONING_RECHECK_ALARM"; + private static final String EXTRA_SUBID = "subId"; // {@link ComponentName} of the Service used to run tether provisioning. private static final ComponentName TETHER_SERVICE = ComponentName.unflattenFromString( @@ -99,7 +99,6 @@ public class EntitlementManager { private final SharedLog mLog; private final SparseIntArray mEntitlementCacheValue; private final EntitlementHandler mHandler; - private @Nullable TetheringConfiguration mConfig; private final StateMachine mTetherMasterSM; // Key: ConnectivityManager.TETHERING_*(downstream). // Value: ConnectivityManager.TETHER_ERROR_{NO_ERROR or PROVISION_FAILED}(provisioning result). @@ -109,6 +108,7 @@ public class EntitlementManager { private boolean mUsingCellularAsUpstream = false; private boolean mNeedReRunProvisioningUi = false; private OnUiEntitlementFailedListener mListener; + private TetheringConfigurationFetcher mFetcher; public EntitlementManager(Context ctx, StateMachine tetherMasterSM, SharedLog log, int permissionChangeMessageCode, MockableSystemProperties systemProperties) { @@ -143,12 +143,18 @@ public class EntitlementManager { void onUiEntitlementFailed(int downstream); } - /** - * Pass a new TetheringConfiguration instance each time when - * Tethering#updateConfiguration() is called. - */ - public void updateConfiguration(TetheringConfiguration conf) { - mConfig = conf; + public void setTetheringConfigurationFetcher(final TetheringConfigurationFetcher fetcher) { + mFetcher = fetcher; + } + + /** Interface to fetch TetheringConfiguration. */ + public interface TetheringConfigurationFetcher { + /** + * Fetch current tethering configuration. This will be called to ensure whether entitlement + * check is needed. + * @return TetheringConfiguration instance. + */ + TetheringConfiguration fetchTetheringConfiguration(); } /** @@ -176,7 +182,8 @@ public class EntitlementManager { if (!mCurrentTethers.contains(type)) mCurrentTethers.add(type); - if (isTetherProvisioningRequired()) { + final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration(); + if (isTetherProvisioningRequired(config)) { // If provisioning is required and the result is not available yet, // cellular upstream should not be allowed. if (mCellularPermitted.size() == 0) { @@ -186,9 +193,9 @@ public class EntitlementManager { // till upstream change to cellular. if (mUsingCellularAsUpstream) { if (showProvisioningUi) { - runUiTetherProvisioning(type); + runUiTetherProvisioning(type, config.subId); } else { - runSilentTetherProvisioning(type); + runSilentTetherProvisioning(type, config.subId); } mNeedReRunProvisioningUi = false; } else { @@ -237,7 +244,8 @@ public class EntitlementManager { mUsingCellularAsUpstream = isCellular; if (mUsingCellularAsUpstream) { - handleMaybeRunProvisioning(); + final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration(); + handleMaybeRunProvisioning(config); } } @@ -246,8 +254,8 @@ public class EntitlementManager { mHandler.sendMessage(mHandler.obtainMessage(EVENT_MAYBE_RUN_PROVISIONING)); } - private void handleMaybeRunProvisioning() { - if (mCurrentTethers.size() == 0 || !isTetherProvisioningRequired()) { + private void handleMaybeRunProvisioning(final TetheringConfiguration config) { + if (mCurrentTethers.size() == 0 || !isTetherProvisioningRequired(config)) { return; } @@ -259,9 +267,9 @@ public class EntitlementManager { if (mCellularPermitted.indexOfKey(downstream) < 0) { if (mNeedReRunProvisioningUi) { mNeedReRunProvisioningUi = false; - runUiTetherProvisioning(downstream); + runUiTetherProvisioning(downstream, config.subId); } else { - runSilentTetherProvisioning(downstream); + runSilentTetherProvisioning(downstream, config.subId); } } } @@ -270,29 +278,31 @@ public class EntitlementManager { /** * Check if the device requires a provisioning check in order to enable tethering. * + * @param config an object that encapsulates the various tethering configuration elements. * @return a boolean - {@code true} indicating tether provisioning is required by the carrier. */ @VisibleForTesting - public boolean isTetherProvisioningRequired() { + protected boolean isTetherProvisioningRequired(final TetheringConfiguration config) { if (mSystemProperties.getBoolean(DISABLE_PROVISIONING_SYSPROP_KEY, false) - || mConfig.provisioningApp.length == 0) { + || config.provisioningApp.length == 0) { return false; } - if (carrierConfigAffirmsEntitlementCheckNotRequired()) { + if (carrierConfigAffirmsEntitlementCheckNotRequired(config)) { return false; } - return (mConfig.provisioningApp.length == 2); + return (config.provisioningApp.length == 2); } /** * Re-check tethering provisioning for all enabled tether types. * Reference ConnectivityManager.TETHERING_{@code *} for each tether type. * + * @param config an object that encapsulates the various tethering configuration elements. * Note: this method is only called from TetherMaster on the handler thread. * If there are new callers from different threads, the logic should move to * masterHandler to avoid race conditions. */ - public void reevaluateSimCardProvisioning() { + public void reevaluateSimCardProvisioning(final TetheringConfiguration config) { if (DBG) mLog.i("reevaluateSimCardProvisioning"); if (!mHandler.getLooper().isCurrentThread()) { @@ -303,24 +313,27 @@ public class EntitlementManager { mCellularPermitted.clear(); // TODO: refine provisioning check to isTetherProvisioningRequired() ?? - if (!mConfig.hasMobileHotspotProvisionApp() - || carrierConfigAffirmsEntitlementCheckNotRequired()) { - evaluateCellularPermission(); + if (!config.hasMobileHotspotProvisionApp() + || carrierConfigAffirmsEntitlementCheckNotRequired(config)) { + evaluateCellularPermission(config); return; } if (mUsingCellularAsUpstream) { - handleMaybeRunProvisioning(); + handleMaybeRunProvisioning(config); } } - /** Get carrier configuration bundle. */ - public PersistableBundle getCarrierConfig() { + /** + * Get carrier configuration bundle. + * @param config an object that encapsulates the various tethering configuration elements. + * */ + public PersistableBundle getCarrierConfig(final TetheringConfiguration config) { final CarrierConfigManager configManager = (CarrierConfigManager) mContext .getSystemService(Context.CARRIER_CONFIG_SERVICE); if (configManager == null) return null; - final PersistableBundle carrierConfig = configManager.getConfig(); + final PersistableBundle carrierConfig = configManager.getConfigForSubId(config.subId); if (CarrierConfigManager.isConfigForIdentifiedCarrier(carrierConfig)) { return carrierConfig; @@ -334,9 +347,10 @@ public class EntitlementManager { // // TODO: find a better way to express this, or alter the checking process // entirely so that this is more intuitive. - private boolean carrierConfigAffirmsEntitlementCheckNotRequired() { + private boolean carrierConfigAffirmsEntitlementCheckNotRequired( + final TetheringConfiguration config) { // Check carrier config for entitlement checks - final PersistableBundle carrierConfig = getCarrierConfig(); + final PersistableBundle carrierConfig = getCarrierConfig(config); if (carrierConfig == null) return false; // A CarrierConfigManager was found and it has a config. @@ -348,17 +362,19 @@ public class EntitlementManager { /** * Run no UI tethering provisioning check. * @param type tethering type from ConnectivityManager.TETHERING_{@code *} + * @param subId default data subscription ID. */ - protected void runSilentTetherProvisioning(int type) { + @VisibleForTesting + protected void runSilentTetherProvisioning(int type, int subId) { if (DBG) mLog.i("runSilentTetherProvisioning: " + type); // For silent provisioning, settings would stop tethering when entitlement fail. - ResultReceiver receiver = buildProxyReceiver(type, - false/* notifyFail */, null); + ResultReceiver receiver = buildProxyReceiver(type, false/* notifyFail */, null); Intent intent = new Intent(); intent.putExtra(EXTRA_ADD_TETHER_TYPE, type); intent.putExtra(EXTRA_RUN_PROVISION, true); intent.putExtra(EXTRA_PROVISION_CALLBACK, receiver); + intent.putExtra(EXTRA_SUBID, subId); intent.setComponent(TETHER_SERVICE); final long ident = Binder.clearCallingIdentity(); try { @@ -368,24 +384,25 @@ public class EntitlementManager { } } + private void runUiTetherProvisioning(int type, int subId) { + ResultReceiver receiver = buildProxyReceiver(type, true/* notifyFail */, null); + runUiTetherProvisioning(type, subId, receiver); + } + /** * Run the UI-enabled tethering provisioning check. * @param type tethering type from ConnectivityManager.TETHERING_{@code *} + * @param subId default data subscription ID. + * @param receiver to receive entitlement check result. */ @VisibleForTesting - protected void runUiTetherProvisioning(int type) { - ResultReceiver receiver = buildProxyReceiver(type, - true/* notifyFail */, null); - runUiTetherProvisioning(type, receiver); - } - - @VisibleForTesting - protected void runUiTetherProvisioning(int type, ResultReceiver receiver) { + protected void runUiTetherProvisioning(int type, int subId, ResultReceiver receiver) { if (DBG) mLog.i("runUiTetherProvisioning: " + type); Intent intent = new Intent(Settings.ACTION_TETHER_PROVISIONING); intent.putExtra(EXTRA_ADD_TETHER_TYPE, type); intent.putExtra(EXTRA_PROVISION_CALLBACK, receiver); + intent.putExtra(EXTRA_SUBID, subId); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); final long ident = Binder.clearCallingIdentity(); try { @@ -396,9 +413,9 @@ public class EntitlementManager { } // Not needed to check if this don't run on the handler thread because it's private. - private void scheduleProvisioningRechecks() { + private void scheduleProvisioningRechecks(final TetheringConfiguration config) { if (mProvisioningRecheckAlarm == null) { - final int period = mConfig.provisioningCheckPeriod; + final int period = config.provisioningCheckPeriod; if (period <= 0) return; Intent intent = new Intent(ACTION_PROVISIONING_ALARM); @@ -421,9 +438,9 @@ public class EntitlementManager { } } - private void evaluateCellularPermission() { + private void evaluateCellularPermission(final TetheringConfiguration config) { final boolean oldPermitted = mCellularUpstreamPermitted; - mCellularUpstreamPermitted = (!isTetherProvisioningRequired() + mCellularUpstreamPermitted = (!isTetherProvisioningRequired(config) || mCellularPermitted.indexOfValue(TETHER_ERROR_NO_ERROR) > -1); if (DBG) { @@ -438,7 +455,7 @@ public class EntitlementManager { // Only schedule periodic re-check when tether is provisioned // and the result is ok. if (mCellularUpstreamPermitted && mCellularPermitted.size() > 0) { - scheduleProvisioningRechecks(); + scheduleProvisioningRechecks(config); } else { cancelTetherProvisioningRechecks(); } @@ -457,7 +474,8 @@ public class EntitlementManager { if (!mCurrentTethers.contains(type)) return; mCellularPermitted.put(type, resultCode); - evaluateCellularPermission(); + final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration(); + evaluateCellularPermission(config); } /** @@ -467,7 +485,8 @@ public class EntitlementManager { protected void removeDownstreamMapping(int type) { mLog.i("removeDownstreamMapping: " + type); mCellularPermitted.delete(type); - evaluateCellularPermission(); + final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration(); + evaluateCellularPermission(config); } private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @@ -475,7 +494,8 @@ public class EntitlementManager { public void onReceive(Context context, Intent intent) { if (ACTION_PROVISIONING_ALARM.equals(intent.getAction())) { mLog.log("Received provisioning alarm"); - reevaluateSimCardProvisioning(); + final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration(); + reevaluateSimCardProvisioning(config); } } }; @@ -498,7 +518,8 @@ public class EntitlementManager { handleNotifyUpstream(toBool(msg.arg1)); break; case EVENT_MAYBE_RUN_PROVISIONING: - handleMaybeRunProvisioning(); + final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration(); + handleMaybeRunProvisioning(config); break; case EVENT_GET_ENTITLEMENT_VALUE: handleGetLatestTetheringEntitlementValue(msg.arg1, (ResultReceiver) msg.obj, @@ -636,7 +657,8 @@ public class EntitlementManager { private void handleGetLatestTetheringEntitlementValue(int downstream, ResultReceiver receiver, boolean showEntitlementUi) { - if (!isTetherProvisioningRequired()) { + final TetheringConfiguration config = mFetcher.fetchTetheringConfiguration(); + if (!isTetherProvisioningRequired(config)) { receiver.send(TETHER_ERROR_NO_ERROR, null); return; } @@ -647,7 +669,7 @@ public class EntitlementManager { receiver.send(cacheValue, null); } else { ResultReceiver proxy = buildProxyReceiver(downstream, false/* notifyFail */, receiver); - runUiTetherProvisioning(downstream, proxy); + runUiTetherProvisioning(downstream, config.subId, proxy); } } } diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java index 3c97c39f70a0..c2aade3b9d7a 100644 --- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java +++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java @@ -575,6 +575,12 @@ public class InputMethodManagerService extends IInputMethodManager.Stub */ int mCurTokenDisplayId = INVALID_DISPLAY; + /** + * The display ID of the input method indicates the fallback display which returned by + * {@link #computeImeDisplayIdForTarget}. + */ + private static final int FALLBACK_DISPLAY_ID = DEFAULT_DISPLAY; + final ImeDisplayValidator mImeDisplayValidator; /** @@ -625,7 +631,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub * currently invisible. * </dd> * </dl> - * <em>Do not update this value outside of setImeWindowStatus.</em> + * <em>Do not update this value outside of {@link #setImeWindowStatus(IBinder, int, int)} and + * {@link #unbindCurrentMethodLocked()}.</em> */ int mImeWindowVis; @@ -2124,12 +2131,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub */ static int computeImeDisplayIdForTarget(int displayId, @NonNull ImeDisplayValidator checker) { if (displayId == DEFAULT_DISPLAY || displayId == INVALID_DISPLAY) { - // We always assume that the default display id suitable to show the IME window. - return DEFAULT_DISPLAY; + return FALLBACK_DISPLAY_ID; } - // Show IME in default display when the display with IME target doesn't support system - // decorations. - return checker.displayCanShowIme(displayId) ? displayId : DEFAULT_DISPLAY; + // Show IME window on fallback display when the display is not allowed. + return checker.displayCanShowIme(displayId) ? displayId : FALLBACK_DISPLAY_ID; } @Override @@ -2198,6 +2203,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub mIWindowManager.removeWindowToken(mCurToken, mCurTokenDisplayId); } catch (RemoteException e) { } + // Set IME window status as invisible when unbind current method. + mImeWindowVis = 0; + mBackDisposition = InputMethodService.BACK_DISPOSITION_DEFAULT; + updateSystemUiLocked(mImeWindowVis, mBackDisposition); mCurToken = null; mCurTokenDisplayId = INVALID_DISPLAY; } @@ -2399,10 +2408,20 @@ public class InputMethodManagerService extends IInputMethodManager.Stub @BinderThread @SuppressWarnings("deprecation") private void setImeWindowStatus(@NonNull IBinder token, int vis, int backDisposition) { + final int topFocusedDisplayId = mWindowManagerInternal.getTopFocusedDisplayId(); + synchronized (mMethodMap) { if (!calledWithValidTokenLocked(token)) { return; } + // Skip update IME status when current token display is not same as focused display. + // Note that we still need to update IME status when focusing external display + // that does not support system decoration and fallback to show IME on default + // display since it is intentional behavior. + if (mCurTokenDisplayId != topFocusedDisplayId + && mCurTokenDisplayId != FALLBACK_DISPLAY_ID) { + return; + } mImeWindowVis = vis; mBackDisposition = backDisposition; updateSystemUiLocked(vis, backDisposition); @@ -2447,7 +2466,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub if (DEBUG) { Slog.d(TAG, "IME window vis: " + vis + " active: " + (vis & InputMethodService.IME_ACTIVE) - + " inv: " + (vis & InputMethodService.IME_INVISIBLE)); + + " inv: " + (vis & InputMethodService.IME_INVISIBLE) + + " displayId: " + mCurTokenDisplayId); } // TODO: Move this clearing calling identity block to setImeWindowStatus after making sure @@ -2461,7 +2481,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub // mImeWindowVis should be updated before calling shouldShowImeSwitcherLocked(). final boolean needsToShowImeSwitcher = shouldShowImeSwitcherLocked(vis); if (mStatusBar != null) { - mStatusBar.setImeWindowStatus(mCurToken, vis, backDisposition, + mStatusBar.setImeWindowStatus(mCurTokenDisplayId, mCurToken, vis, backDisposition, needsToShowImeSwitcher); } final InputMethodInfo imi = mMethodMap.get(mCurMethodId); diff --git a/services/core/java/com/android/server/job/JobServiceContext.java b/services/core/java/com/android/server/job/JobServiceContext.java index 8578bb78f80d..a349d875c1ff 100644 --- a/services/core/java/com/android/server/job/JobServiceContext.java +++ b/services/core/java/com/android/server/job/JobServiceContext.java @@ -248,7 +248,8 @@ public final class JobServiceContext implements ServiceConnection { scheduleOpTimeOutLocked(); final Intent intent = new Intent().setComponent(job.getServiceComponent()); boolean binding = mContext.bindServiceAsUser(intent, this, - Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND, + Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND + | Context.BIND_NOT_VISIBLE | Context.BIND_ADJUST_BELOW_PERCEPTIBLE, new UserHandle(job.getUserId())); if (!binding) { if (DEBUG) { diff --git a/services/core/java/com/android/server/job/controllers/QuotaController.java b/services/core/java/com/android/server/job/controllers/QuotaController.java index 1820acfaf293..ccd1db496675 100644 --- a/services/core/java/com/android/server/job/controllers/QuotaController.java +++ b/services/core/java/com/android/server/job/controllers/QuotaController.java @@ -29,6 +29,7 @@ import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.ActivityManagerInternal; import android.app.AlarmManager; +import android.app.AppGlobals; import android.app.IUidObserver; import android.app.usage.UsageStatsManagerInternal; import android.app.usage.UsageStatsManagerInternal.AppIdleStateChangeListener; @@ -49,6 +50,7 @@ import android.util.Log; import android.util.Slog; import android.util.SparseArray; import android.util.SparseBooleanArray; +import android.util.SparseSetArray; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; @@ -277,9 +279,9 @@ public final class QuotaController extends StateController { .append(", ") .append("bgJobCountInMaxPeriod=").append(bgJobCountInMaxPeriod).append(", ") .append("quotaCutoffTime=").append(quotaCutoffTimeElapsed).append(", ") - .append("jobCountExpirationTime").append(jobCountExpirationTimeElapsed) + .append("jobCountExpirationTime=").append(jobCountExpirationTimeElapsed) .append(", ") - .append("jobCountInAllowedTime").append(jobCountInAllowedTime) + .append("jobCountInAllowedTime=").append(jobCountInAllowedTime) .toString(); } @@ -338,6 +340,9 @@ public final class QuotaController extends StateController { /** List of UIDs currently in the foreground. */ private final SparseBooleanArray mForegroundUids = new SparseBooleanArray(); + /** Cached mapping of UIDs (for all users) to a list of packages in the UID. */ + private final SparseSetArray<String> mUidToPackageCache = new SparseSetArray<>(); + /** * List of jobs that started while the UID was in the TOP state. There will be no more than * 16 ({@link JobSchedulerService#MAX_JOB_CONTEXTS_COUNT}) running at once, so an ArraySet is @@ -421,6 +426,22 @@ public final class QuotaController extends StateController { } }; + private final BroadcastReceiver mPackageAddedReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (intent == null) { + return; + } + if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { + return; + } + final int uid = intent.getIntExtra(Intent.EXTRA_UID, -1); + synchronized (mLock) { + mUidToPackageCache.remove(uid); + } + } + }; + /** * The rolling window size for each standby bucket. Within each window, an app will have 10 * minutes to run its jobs. @@ -469,6 +490,9 @@ public final class QuotaController extends StateController { mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class); mAlarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); + final IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); + mContext.registerReceiverAsUser(mPackageAddedReceiver, UserHandle.ALL, filter, null, null); + // Set up the app standby bucketing tracker UsageStatsManagerInternal usageStats = LocalServices.getService( UsageStatsManagerInternal.class); @@ -502,10 +526,15 @@ public final class QuotaController extends StateController { @Override public void prepareForExecutionLocked(JobStatus jobStatus) { - if (DEBUG) Slog.d(TAG, "Prepping for " + jobStatus.toShortString()); + if (DEBUG) { + Slog.d(TAG, "Prepping for " + jobStatus.toShortString()); + } final int uid = jobStatus.getSourceUid(); if (mActivityManagerInternal.getUidProcessState(uid) <= ActivityManager.PROCESS_STATE_TOP) { + if (DEBUG) { + Slog.d(TAG, jobStatus.toShortString() + " is top started job"); + } mTopStartedJobs.add(jobStatus); // Top jobs won't count towards quota so there's no need to involve the Timer. return; @@ -518,7 +547,7 @@ public final class QuotaController extends StateController { timer = new Timer(uid, userId, packageName); mPkgTimers.add(userId, packageName, timer); } - timer.startTrackingJob(jobStatus); + timer.startTrackingJobLocked(jobStatus); } @Override @@ -645,7 +674,7 @@ public final class QuotaController extends StateController { if (timer != null) { if (timer.isActive()) { Slog.wtf(TAG, "onAppRemovedLocked called before Timer turned off."); - timer.dropEverything(); + timer.dropEverythingLocked(); } mPkgTimers.delete(userId, packageName); } @@ -657,6 +686,7 @@ public final class QuotaController extends StateController { } mExecutionStatsCache.delete(userId, packageName); mForegroundUids.delete(uid); + mUidToPackageCache.remove(uid); } @Override @@ -666,6 +696,7 @@ public final class QuotaController extends StateController { mTimingSessions.delete(userId); mInQuotaAlarmListeners.delete(userId); mExecutionStatsCache.delete(userId); + mUidToPackageCache.clear(); } private boolean isUidInForeground(int uid) { @@ -678,7 +709,7 @@ public final class QuotaController extends StateController { } /** @return true if the job was started while the app was in the TOP state. */ - private boolean isTopStartedJob(@NonNull final JobStatus jobStatus) { + private boolean isTopStartedJobLocked(@NonNull final JobStatus jobStatus) { return mTopStartedJobs.contains(jobStatus); } @@ -695,14 +726,14 @@ public final class QuotaController extends StateController { return jobStatus.getStandbyBucket(); } - private boolean isWithinQuotaLocked(@NonNull final JobStatus jobStatus) { + @VisibleForTesting + boolean isWithinQuotaLocked(@NonNull final JobStatus jobStatus) { final int standbyBucket = getEffectiveStandbyBucket(jobStatus); - Timer timer = mPkgTimers.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName()); // A job is within quota if one of the following is true: // 1. it was started while the app was in the TOP state // 2. the app is currently in the foreground // 3. the app overall is within its quota - return isTopStartedJob(jobStatus) + return isTopStartedJobLocked(jobStatus) || isUidInForeground(jobStatus.getSourceUid()) || isWithinQuotaLocked( jobStatus.getSourceUserId(), jobStatus.getSourcePackageName(), standbyBucket); @@ -1081,7 +1112,9 @@ public final class QuotaController extends StateController { if (earliestEndElapsed == Long.MAX_VALUE) { // Couldn't find a good time to clean up. Maybe this was called after we deleted all // timing sessions. - if (DEBUG) Slog.d(TAG, "Didn't find a time to schedule cleanup"); + if (DEBUG) { + Slog.d(TAG, "Didn't find a time to schedule cleanup"); + } return; } // Need to keep sessions for all apps up to the max period, regardless of their current @@ -1095,15 +1128,19 @@ public final class QuotaController extends StateController { mNextCleanupTimeElapsed = nextCleanupElapsed; mAlarmManager.set(AlarmManager.ELAPSED_REALTIME, nextCleanupElapsed, ALARM_TAG_CLEANUP, mSessionCleanupAlarmListener, mHandler); - if (DEBUG) Slog.d(TAG, "Scheduled next cleanup for " + mNextCleanupTimeElapsed); + if (DEBUG) { + Slog.d(TAG, "Scheduled next cleanup for " + mNextCleanupTimeElapsed); + } } private void handleNewChargingStateLocked() { final long nowElapsed = sElapsedRealtimeClock.millis(); final boolean isCharging = mChargeTracker.isCharging(); - if (DEBUG) Slog.d(TAG, "handleNewChargingStateLocked: " + isCharging); + if (DEBUG) { + Slog.d(TAG, "handleNewChargingStateLocked: " + isCharging); + } // Deal with Timers first. - mPkgTimers.forEach((t) -> t.onStateChanged(nowElapsed, isCharging)); + mPkgTimers.forEach((t) -> t.onStateChangedLocked(nowElapsed, isCharging)); // Now update jobs. maybeUpdateAllConstraintsLocked(); } @@ -1140,7 +1177,7 @@ public final class QuotaController extends StateController { boolean changed = false; for (int i = jobs.size() - 1; i >= 0; --i) { final JobStatus js = jobs.valueAt(i); - if (isTopStartedJob(js)) { + if (isTopStartedJobLocked(js)) { // Job was started while the app was in the TOP state so we should allow it to // finish. changed |= js.setQuotaConstraintSatisfied(true); @@ -1282,7 +1319,9 @@ public final class QuotaController extends StateController { if (!alarmListener.isWaiting() || inQuotaTimeElapsed < alarmListener.getTriggerTimeElapsed() - 3 * MINUTE_IN_MILLIS || alarmListener.getTriggerTimeElapsed() < inQuotaTimeElapsed) { - if (DEBUG) Slog.d(TAG, "Scheduling start alarm for " + pkgString); + if (DEBUG) { + Slog.d(TAG, "Scheduling start alarm for " + pkgString); + } // If the next time this app will have quota is at least 3 minutes before the // alarm is supposed to go off, reschedule the alarm. mAlarmManager.set(AlarmManager.ELAPSED_REALTIME, inQuotaTimeElapsed, @@ -1430,8 +1469,8 @@ public final class QuotaController extends StateController { mUid = uid; } - void startTrackingJob(@NonNull JobStatus jobStatus) { - if (isTopStartedJob(jobStatus)) { + void startTrackingJobLocked(@NonNull JobStatus jobStatus) { + if (isTopStartedJobLocked(jobStatus)) { // We intentionally don't pay attention to fg state changes after a TOP job has // started. if (DEBUG) { @@ -1440,27 +1479,28 @@ public final class QuotaController extends StateController { } return; } - if (DEBUG) Slog.v(TAG, "Starting to track " + jobStatus.toShortString()); - synchronized (mLock) { - // Always track jobs, even when charging. - mRunningBgJobs.add(jobStatus); - if (shouldTrackLocked()) { - mBgJobCount++; - incrementJobCount(mPkg.userId, mPkg.packageName, 1); - if (mRunningBgJobs.size() == 1) { - // Started tracking the first job. - mStartTimeElapsed = sElapsedRealtimeClock.millis(); - // Starting the timer means that all cached execution stats are now - // incorrect. - invalidateAllExecutionStatsLocked(mPkg.userId, mPkg.packageName); - scheduleCutoff(); - } + if (DEBUG) { + Slog.v(TAG, "Starting to track " + jobStatus.toShortString()); + } + // Always track jobs, even when charging. + mRunningBgJobs.add(jobStatus); + if (shouldTrackLocked()) { + mBgJobCount++; + incrementJobCount(mPkg.userId, mPkg.packageName, 1); + if (mRunningBgJobs.size() == 1) { + // Started tracking the first job. + mStartTimeElapsed = sElapsedRealtimeClock.millis(); + // Starting the timer means that all cached execution stats are now incorrect. + invalidateAllExecutionStatsLocked(mPkg.userId, mPkg.packageName); + scheduleCutoff(); } } } void stopTrackingJob(@NonNull JobStatus jobStatus) { - if (DEBUG) Slog.v(TAG, "Stopping tracking of " + jobStatus.toShortString()); + if (DEBUG) { + Slog.v(TAG, "Stopping tracking of " + jobStatus.toShortString()); + } synchronized (mLock) { if (mRunningBgJobs.size() == 0) { // maybeStopTrackingJobLocked can be called when an app cancels a job, so a @@ -1482,7 +1522,7 @@ public final class QuotaController extends StateController { * Stops tracking all jobs and cancels any pending alarms. This should only be called if * the Timer is not going to be used anymore. */ - void dropEverything() { + void dropEverythingLocked() { mRunningBgJobs.clear(); cancelCutoff(); } @@ -1531,25 +1571,23 @@ public final class QuotaController extends StateController { return !mChargeTracker.isCharging() && !mForegroundUids.get(mUid); } - void onStateChanged(long nowElapsed, boolean isQuotaFree) { - synchronized (mLock) { - if (isQuotaFree) { - emitSessionLocked(nowElapsed); - } else if (shouldTrackLocked()) { - // Start timing from unplug. - if (mRunningBgJobs.size() > 0) { - mStartTimeElapsed = nowElapsed; - // NOTE: this does have the unfortunate consequence that if the device is - // repeatedly plugged in and unplugged, or an app changes foreground state - // very frequently, the job count for a package may be artificially high. - mBgJobCount = mRunningBgJobs.size(); - incrementJobCount(mPkg.userId, mPkg.packageName, mBgJobCount); - // Starting the timer means that all cached execution stats are now - // incorrect. - invalidateAllExecutionStatsLocked(mPkg.userId, mPkg.packageName); - // Schedule cutoff since we're now actively tracking for quotas again. - scheduleCutoff(); - } + void onStateChangedLocked(long nowElapsed, boolean isQuotaFree) { + if (isQuotaFree) { + emitSessionLocked(nowElapsed); + } else if (!isActive() && shouldTrackLocked()) { + // Start timing from unplug. + if (mRunningBgJobs.size() > 0) { + mStartTimeElapsed = nowElapsed; + // NOTE: this does have the unfortunate consequence that if the device is + // repeatedly plugged in and unplugged, or an app changes foreground state + // very frequently, the job count for a package may be artificially high. + mBgJobCount = mRunningBgJobs.size(); + incrementJobCount(mPkg.userId, mPkg.packageName, mBgJobCount); + // Starting the timer means that all cached execution stats are now + // incorrect. + invalidateAllExecutionStatsLocked(mPkg.userId, mPkg.packageName); + // Schedule cutoff since we're now actively tracking for quotas again. + scheduleCutoff(); } } } @@ -1604,7 +1642,6 @@ public final class QuotaController extends StateController { pw.println(js.toShortString()); } } - pw.decreaseIndent(); } @@ -1667,7 +1704,9 @@ public final class QuotaController extends StateController { @Override public void onParoleStateChanged(final boolean isParoleOn) { mInParole = isParoleOn; - if (DEBUG) Slog.i(TAG, "Global parole state now " + (isParoleOn ? "ON" : "OFF")); + if (DEBUG) { + Slog.i(TAG, "Global parole state now " + (isParoleOn ? "ON" : "OFF")); + } // Update job bookkeeping out of band. BackgroundThread.getHandler().post(() -> { synchronized (mLock) { @@ -1712,7 +1751,9 @@ public final class QuotaController extends StateController { switch (msg.what) { case MSG_REACHED_QUOTA: { Package pkg = (Package) msg.obj; - if (DEBUG) Slog.d(TAG, "Checking if " + pkg + " has reached its quota."); + if (DEBUG) { + Slog.d(TAG, "Checking if " + pkg + " has reached its quota."); + } long timeRemainingMs = getRemainingExecutionTimeLocked(pkg.userId, pkg.packageName); @@ -1737,7 +1778,9 @@ public final class QuotaController extends StateController { break; } case MSG_CLEAN_UP_SESSIONS: - if (DEBUG) Slog.d(TAG, "Cleaning up timing sessions."); + if (DEBUG) { + Slog.d(TAG, "Cleaning up timing sessions."); + } deleteObsoleteSessionsLocked(); maybeScheduleCleanupAlarmLocked(); @@ -1745,7 +1788,9 @@ public final class QuotaController extends StateController { case MSG_CHECK_PACKAGE: { String packageName = (String) msg.obj; int userId = msg.arg1; - if (DEBUG) Slog.d(TAG, "Checking pkg " + string(userId, packageName)); + if (DEBUG) { + Slog.d(TAG, "Checking pkg " + string(userId, packageName)); + } if (maybeUpdateConstraintForPkgLocked(userId, packageName)) { mStateChangedListener.onControllerStateChanged(); } @@ -1767,13 +1812,28 @@ public final class QuotaController extends StateController { isQuotaFree = false; } // Update Timers first. - final int userIndex = mPkgTimers.indexOfKey(userId); - if (userIndex != -1) { - final int numPkgs = mPkgTimers.numPackagesForUser(userId); - for (int p = 0; p < numPkgs; ++p) { - Timer t = mPkgTimers.valueAt(userIndex, p); - if (t != null) { - t.onStateChanged(nowElapsed, isQuotaFree); + if (mPkgTimers.indexOfKey(userId) >= 0) { + ArraySet<String> packages = mUidToPackageCache.get(uid); + if (packages == null) { + try { + String[] pkgs = AppGlobals.getPackageManager() + .getPackagesForUid(uid); + if (pkgs != null) { + for (String pkg : pkgs) { + mUidToPackageCache.add(uid, pkg); + } + packages = mUidToPackageCache.get(uid); + } + } catch (RemoteException e) { + Slog.wtf(TAG, "Failed to get package list", e); + } + } + if (packages != null) { + for (int i = packages.size() - 1; i >= 0; --i) { + Timer t = mPkgTimers.get(userId, packages.valueAt(i)); + if (t != null) { + t.onStateChangedLocked(nowElapsed, isQuotaFree); + } } } } @@ -1883,6 +1943,17 @@ public final class QuotaController extends StateController { pw.println(mForegroundUids.toString()); pw.println(); + pw.println("Cached UID->package map:"); + pw.increaseIndent(); + for (int i = 0; i < mUidToPackageCache.size(); ++i) { + final int uid = mUidToPackageCache.keyAt(i); + pw.print(uid); + pw.print(": "); + pw.println(mUidToPackageCache.get(uid)); + } + pw.decreaseIndent(); + pw.println(); + mTrackedJobs.forEach((jobs) -> { for (int j = 0; j < jobs.size(); j++) { final JobStatus js = jobs.valueAt(j); @@ -1936,6 +2007,29 @@ public final class QuotaController extends StateController { } } } + + pw.println("Cached execution stats:"); + pw.increaseIndent(); + for (int u = 0; u < mExecutionStatsCache.numUsers(); ++u) { + final int userId = mExecutionStatsCache.keyAt(u); + for (int p = 0; p < mExecutionStatsCache.numPackagesForUser(userId); ++p) { + final String pkgName = mExecutionStatsCache.keyAt(u, p); + ExecutionStats[] stats = mExecutionStatsCache.valueAt(u, p); + + pw.println(string(userId, pkgName)); + pw.increaseIndent(); + for (int i = 0; i < stats.length; ++i) { + ExecutionStats executionStats = stats[i]; + if (executionStats != null) { + pw.print(JobStatus.bucketName(i)); + pw.print(": "); + pw.println(executionStats); + } + } + pw.decreaseIndent(); + } + } + pw.decreaseIndent(); } @Override @@ -1995,6 +2089,49 @@ public final class QuotaController extends StateController { } } + ExecutionStats[] stats = mExecutionStatsCache.get(userId, pkgName); + if (stats != null) { + for (int bucketIndex = 0; bucketIndex < stats.length; ++bucketIndex) { + ExecutionStats es = stats[bucketIndex]; + if (es == null) { + continue; + } + final long esToken = proto.start( + StateControllerProto.QuotaController.PackageStats.EXECUTION_STATS); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.STANDBY_BUCKET, + bucketIndex); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.EXPIRATION_TIME_ELAPSED, + es.expirationTimeElapsed); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.WINDOW_SIZE_MS, + es.windowSizeMs); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.EXECUTION_TIME_IN_WINDOW_MS, + es.executionTimeInWindowMs); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.BG_JOB_COUNT_IN_WINDOW, + es.bgJobCountInWindow); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.EXECUTION_TIME_IN_MAX_PERIOD_MS, + es.executionTimeInMaxPeriodMs); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.BG_JOB_COUNT_IN_MAX_PERIOD, + es.bgJobCountInMaxPeriod); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.QUOTA_CUTOFF_TIME_ELAPSED, + es.quotaCutoffTimeElapsed); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.JOB_COUNT_EXPIRATION_TIME_ELAPSED, + es.jobCountExpirationTimeElapsed); + proto.write( + StateControllerProto.QuotaController.ExecutionStats.JOB_COUNT_IN_ALLOWED_TIME, + es.jobCountInAllowedTime); + proto.end(esToken); + } + } + proto.end(psToken); } } diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java index 96fc6ec5907c..ec0f8b838087 100644 --- a/services/core/java/com/android/server/location/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/GnssLocationProvider.java @@ -66,6 +66,7 @@ import android.telephony.gsm.GsmCellLocation; import android.text.TextUtils; import android.util.Log; import android.util.StatsLog; +import android.util.TimeUtils; import com.android.internal.annotations.GuardedBy; import com.android.internal.app.IBatteryStats; @@ -332,9 +333,16 @@ public class GnssLocationProvider extends AbstractLocationProvider implements // true if low power mode for the GNSS chipset is part of the latest request. private boolean mLowPowerMode = false; - // true if we started navigation + // true if we started navigation in the HAL, only change value of this in setStarted private boolean mStarted; + // for logging of latest change, and warning of ongoing location after a stop + private long mStartedChangedElapsedRealtime; + + // threshold for delay in GNSS engine turning off before warning & error + private static final long LOCATION_OFF_DELAY_THRESHOLD_WARN_MILLIS = 2 * 1000; + private static final long LOCATION_OFF_DELAY_THRESHOLD_ERROR_MILLIS = 15 * 1000; + // capabilities reported through the top level IGnssCallback.hal private volatile int mTopHalCapabilities; @@ -927,6 +935,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mGnssMeasurementsProvider.onGpsEnabledChanged(); mGnssNavigationMessageProvider.onGpsEnabledChanged(); mGnssBatchingProvider.enable(); + if (mGnssVisibilityControl != null) { + mGnssVisibilityControl.onGpsEnabledChanged(mEnabled); + } } else { mEnabled = false; Log.w(TAG, "Failed to enable location provider"); @@ -943,6 +954,9 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mAlarmManager.cancel(mWakeupIntent); mAlarmManager.cancel(mTimeoutIntent); + if (mGnssVisibilityControl != null) { + mGnssVisibilityControl.onGpsEnabledChanged(mEnabled); + } mGnssBatchingProvider.disable(); // do this before releasing wakelock native_cleanup(); @@ -1192,7 +1206,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements if (DEBUG) Log.d(TAG, "startNavigating"); mTimeToFirstFix = 0; mLastFixTime = 0; - mStarted = true; + setStarted(true); mPositionMode = GPS_POSITION_MODE_STANDALONE; // Notify about suppressed output, if speed limit was previously exceeded. // Elsewhere, we check again with every speed output reported. @@ -1230,12 +1244,12 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mLowPowerMode = mProviderRequest.lowPowerMode; if (!setPositionMode(mPositionMode, GPS_POSITION_RECURRENCE_PERIODIC, interval, 0, 0, mLowPowerMode)) { - mStarted = false; + setStarted(false); Log.e(TAG, "set_position_mode failed in startNavigating()"); return; } if (!native_start()) { - mStarted = false; + setStarted(false); Log.e(TAG, "native_start failed in startNavigating()"); return; } @@ -1258,7 +1272,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private void stopNavigating() { if (DEBUG) Log.d(TAG, "stopNavigating"); if (mStarted) { - mStarted = false; + setStarted(false); native_stop(); mLastFixTime = 0; // native_stop() may reset the position mode in hardware. @@ -1270,6 +1284,13 @@ public class GnssLocationProvider extends AbstractLocationProvider implements } } + private void setStarted(boolean started) { + if (mStarted != started) { + mStarted = started; + mStartedChangedElapsedRealtime = SystemClock.elapsedRealtime(); + } + } + private void hibernate() { // stop GPS until our next fix interval arrives stopNavigating(); @@ -1319,6 +1340,21 @@ public class GnssLocationProvider extends AbstractLocationProvider implements mGnssMetrics.logMissedReports(mFixInterval, timeBetweenFixes); } } + } else { + // Warn or error about long delayed GNSS engine shutdown as this generally wastes + // power and sends location when not expected. + long locationAfterStartedFalseMillis = + SystemClock.elapsedRealtime() - mStartedChangedElapsedRealtime; + if (locationAfterStartedFalseMillis > LOCATION_OFF_DELAY_THRESHOLD_WARN_MILLIS) { + String logMessage = "Unexpected GNSS Location report " + + TimeUtils.formatDuration(locationAfterStartedFalseMillis) + + " after location turned off"; + if (locationAfterStartedFalseMillis > LOCATION_OFF_DELAY_THRESHOLD_ERROR_MILLIS) { + Log.e(TAG, logMessage); + } else { + Log.w(TAG, logMessage); + } + } } mLastFixTime = SystemClock.elapsedRealtime(); @@ -1538,7 +1574,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements private void restartLocationRequest() { if (DEBUG) Log.d(TAG, "restartLocationRequest"); - mStarted = false; + setStarted(false); updateRequirements(); } @@ -2152,7 +2188,10 @@ public class GnssLocationProvider extends AbstractLocationProvider implements @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { StringBuilder s = new StringBuilder(); - s.append(" mStarted=").append(mStarted).append('\n'); + s.append(" mStarted=").append(mStarted).append(" (changed "); + TimeUtils.formatDuration(SystemClock.elapsedRealtime() + - mStartedChangedElapsedRealtime, s); + s.append(" ago)").append('\n'); s.append(" mFixInterval=").append(mFixInterval).append('\n'); s.append(" mLowPowerMode=").append(mLowPowerMode).append('\n'); s.append(" mGnssMeasurementsProvider.isRegistered()=") diff --git a/services/core/java/com/android/server/location/GnssVisibilityControl.java b/services/core/java/com/android/server/location/GnssVisibilityControl.java index 24ee389a585b..60be70e30838 100644 --- a/services/core/java/com/android/server/location/GnssVisibilityControl.java +++ b/services/core/java/com/android/server/location/GnssVisibilityControl.java @@ -23,13 +23,10 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; -import android.database.ContentObserver; -import android.location.LocationManager; import android.os.Handler; import android.os.Looper; import android.os.PowerManager; import android.os.UserHandle; -import android.provider.Settings; import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; @@ -49,18 +46,14 @@ class GnssVisibilityControl { private static final String TAG = "GnssVisibilityControl"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); - // Constants related to non-framework (NFW) location access permission proxy apps. - private static final String NFW_PROXY_APP_PKG_ACTIVITY_NAME_SUFFIX = - ".NonFrameworkLocationAccessActivity"; - private static final String NFW_INTENT_ACTION_NFW_LOCATION_ACCESS_SUFFIX = - ".intent.action.NON_FRAMEWORK_LOCATION_ACCESS"; - private static final String NFW_INTENT_TYPE = "text/plain"; - private static final String LOCATION_PERMISSION_NAME = "android.permission.ACCESS_FINE_LOCATION"; private static final String[] NO_LOCATION_ENABLED_PROXY_APPS = new String[0]; + // Max wait time for synchronous method onGpsEnabledChanged() to run. + private static final long ON_GPS_ENABLED_CHANGED_TIMEOUT_MILLIS = 3 * 1000; + // Wakelocks private static final String WAKELOCK_KEY = TAG; private static final long WAKELOCK_TIMEOUT_MILLIS = 60 * 1000; @@ -72,7 +65,7 @@ class GnssVisibilityControl { private final Handler mHandler; private final Context mContext; - private boolean mIsDeviceLocationSettingsEnabled; + private boolean mIsGpsEnabled; // Number of non-framework location access proxy apps is expected to be small (< 5). private static final int ARRAY_MAP_INITIAL_CAPACITY_PROXY_APP_TO_LOCATION_PERMISSIONS = 7; @@ -95,6 +88,30 @@ class GnssVisibilityControl { runOnHandler(this::handleInitialize); } + void onGpsEnabledChanged(boolean isEnabled) { + // The GnssLocationProvider's methods: handleEnable() calls this method after native_init() + // and handleDisable() calls this method before native_cleanup(). This method must be + // executed synchronously so that the NFW location access permissions are disabled in + // the HAL before native_cleanup() method is called. + // + // NOTE: Since improper use of runWithScissors() method can result in deadlocks, the method + // doc recommends limiting its use to cases where some initialization steps need to be + // executed in sequence before continuing which fits this scenario. + if (mHandler.runWithScissors(() -> handleGpsEnabledChanged(isEnabled), + ON_GPS_ENABLED_CHANGED_TIMEOUT_MILLIS)) { + return; + } + + // After timeout, the method remains posted in the queue and hence future enable/disable + // calls to this method will all get executed in the correct sequence. But this timeout + // situation should not even arise because runWithScissors() will run in the caller's + // thread without blocking as it is the same thread as mHandler's thread. + if (!isEnabled) { + Log.w(TAG, "Native call to disable non-framework location access in GNSS HAL may" + + " get executed after native_cleanup()."); + } + } + void updateProxyApps(List<String> nfwLocationAccessProxyApps) { runOnHandler(() -> handleUpdateProxyApps(nfwLocationAccessProxyApps)); } @@ -110,12 +127,6 @@ class GnssVisibilityControl { private void handleInitialize() { disableNfwLocationAccess(); // Disable until config properties are loaded. listenForProxyAppsPackageUpdates(); - listenForDeviceLocationSettingsUpdate(); - mIsDeviceLocationSettingsEnabled = getDeviceLocationSettings(); - } - - private boolean getDeviceLocationSettings() { - return mContext.getSystemService(LocationManager.class).isLocationEnabled(); } private void listenForProxyAppsPackageUpdates() { @@ -145,18 +156,6 @@ class GnssVisibilityControl { }, UserHandle.ALL, intentFilter, null, mHandler); } - private void listenForDeviceLocationSettingsUpdate() { - mContext.getContentResolver().registerContentObserver( - Settings.Secure.getUriFor(Settings.Secure.LOCATION_MODE), - true, - new ContentObserver(mHandler) { - @Override - public void onChange(boolean selfChange) { - handleDeviceLocationSettingsUpdated(); - } - }, UserHandle.USER_ALL); - } - private void handleProxyAppPackageUpdate(String pkgName, String action) { final Boolean locationPermission = mProxyAppToLocationPermissions.get(pkgName); if (locationPermission == null) { @@ -213,22 +212,21 @@ class GnssVisibilityControl { return false; } - private void handleDeviceLocationSettingsUpdated() { - final boolean enabled = getDeviceLocationSettings(); - Log.i(TAG, "Device location settings enabled: " + enabled); + private void handleGpsEnabledChanged(boolean isEnabled) { + if (DEBUG) Log.d(TAG, "handleGpsEnabledChanged, isEnabled: " + isEnabled); - if (mIsDeviceLocationSettingsEnabled == enabled) { + if (mIsGpsEnabled == isEnabled) { return; } - mIsDeviceLocationSettingsEnabled = enabled; - if (!mIsDeviceLocationSettingsEnabled) { + mIsGpsEnabled = isEnabled; + if (!mIsGpsEnabled) { disableNfwLocationAccess(); return; } - // When device location settings was disabled, we already set the proxy app list - // to empty in GNSS HAL. Update only if the proxy app list is not empty. + // When GNSS was disabled, we already set the proxy app list to empty in GNSS HAL. + // Update only if the proxy app list is not empty. String[] locationPermissionEnabledProxyApps = getLocationPermissionEnabledProxyApps(); if (locationPermissionEnabledProxyApps.length != 0) { setNfwLocationAccessProxyAppsInGnssHal(locationPermissionEnabledProxyApps); @@ -335,7 +333,7 @@ class GnssVisibilityControl { } private void updateNfwLocationAccessProxyAppsInGnssHal() { - if (!mIsDeviceLocationSettingsEnabled) { + if (!mIsGpsEnabled) { return; // Keep non-framework location access disabled. } setNfwLocationAccessProxyAppsInGnssHal(getLocationPermissionEnabledProxyApps()); diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 6c111570938b..e5ecd49c67da 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -308,8 +308,7 @@ public class NotificationManagerService extends SystemService { static final String[] DEFAULT_ALLOWED_ADJUSTMENTS = new String[] { Adjustment.KEY_IMPORTANCE, Adjustment.KEY_CONTEXTUAL_ACTIONS, - Adjustment.KEY_TEXT_REPLIES, - Adjustment.KEY_USER_SENTIMENT}; + Adjustment.KEY_TEXT_REPLIES}; static final String[] NON_BLOCKABLE_DEFAULT_ROLES = new String[] { RoleManager.ROLE_DIALER, @@ -2864,8 +2863,7 @@ public class NotificationManagerService extends SystemService { // Reset notification preferences if (!fromApp) { - mPreferencesHelper.onPackagesChanged( - true, UserHandle.getCallingUserId(), packages, uids); + mPreferencesHelper.clearData(packageName, uid); } handleSavePolicyFile(); @@ -7325,7 +7323,7 @@ public class NotificationManagerService extends SystemService { private static final String ATT_USER_SET = "user_set"; // TODO: STOPSHIP (b/127994217) switch to final value when onboarding flow is implemented - private static final String TAG_ALLOWED_ADJUSTMENT_TYPES = "allowed_adjustments_tmp"; + private static final String TAG_ALLOWED_ADJUSTMENT_TYPES = "allowed_adjustments_tmp2"; private static final String ATT_TYPES = "types"; private final Object mLock = new Object(); diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java index 642fa7fc3ba6..9e16632bb6c4 100644 --- a/services/core/java/com/android/server/notification/PreferencesHelper.java +++ b/services/core/java/com/android/server/notification/PreferencesHelper.java @@ -1717,6 +1717,23 @@ public class PreferencesHelper implements RankingConfig { } } + public void clearData(String pkg, int uid) { + synchronized (mPackagePreferences) { + PackagePreferences p = getPackagePreferencesLocked(pkg, uid); + if (p != null) { + p.channels = new ArrayMap<>(); + p.groups = new ArrayMap<>(); + p.delegate = null; + p.lockedAppFields = DEFAULT_LOCKED_APP_FIELDS; + p.allowBubble = DEFAULT_ALLOW_BUBBLE; + p.importance = DEFAULT_IMPORTANCE; + p.priority = DEFAULT_PRIORITY; + p.visibility = DEFAULT_VISIBILITY; + p.showBadge = DEFAULT_SHOW_BADGE; + } + } + } + private LogMaker getChannelLog(NotificationChannel channel, String pkg) { return new LogMaker( com.android.internal.logging.nano.MetricsProto.MetricsEvent diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 1f5b99cb3349..981e0f58ef2b 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -940,13 +940,34 @@ public class ZenModeHelper { } } + private void applyCustomPolicy(ZenPolicy policy, ZenRule rule) { + if (rule.zenMode == NotificationManager.INTERRUPTION_FILTER_NONE) { + policy.apply(new ZenPolicy.Builder() + .disallowAllSounds() + .build()); + } else if (rule.zenMode + == NotificationManager.INTERRUPTION_FILTER_ALARMS) { + policy.apply(new ZenPolicy.Builder() + .disallowAllSounds() + .allowAlarms(true) + .allowMedia(true) + .build()); + } else { + policy.apply(rule.zenPolicy); + } + } + private void updateConsolidatedPolicy(String reason) { if (mConfig == null) return; synchronized (mConfig) { ZenPolicy policy = new ZenPolicy(); + if (mConfig.manualRule != null) { + applyCustomPolicy(policy, mConfig.manualRule); + } + for (ZenRule automaticRule : mConfig.automaticRules.values()) { if (automaticRule.isAutomaticActive()) { - policy.apply(automaticRule.zenPolicy); + applyCustomPolicy(policy, automaticRule); } } Policy newPolicy = mConfig.toNotificationPolicy(policy); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index c4d4106804e1..3c336eac1ae6 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -952,6 +952,9 @@ public class PackageManagerService extends IPackageManager.Stub ActivityInfo mInstantAppInstallerActivity; final ResolveInfo mInstantAppInstallerInfo = new ResolveInfo(); + private final Map<String, Pair<PackageInstalledInfo, IPackageInstallObserver2>> + mNoKillInstallObservers = Collections.synchronizedMap(new HashMap<>()); + final SparseArray<IntentFilterVerificationState> mIntentFilterVerificationStates = new SparseArray<>(); @@ -1319,6 +1322,11 @@ public class PackageManagerService extends IPackageManager.Stub static final int INSTANT_APP_RESOLUTION_PHASE_TWO = 20; static final int ENABLE_ROLLBACK_STATUS = 21; static final int ENABLE_ROLLBACK_TIMEOUT = 22; + static final int DEFERRED_NO_KILL_POST_DELETE = 23; + static final int DEFERRED_NO_KILL_INSTALL_OBSERVER = 24; + + static final int DEFERRED_NO_KILL_POST_DELETE_DELAY_MS = 3 * 1000; + static final int DEFERRED_NO_KILL_INSTALL_OBSERVER_DELAY_MS = 500; static final int WRITE_SETTINGS_DELAY = 10*1000; // 10 seconds @@ -1525,6 +1533,20 @@ public class PackageManagerService extends IPackageManager.Stub Trace.asyncTraceEnd(TRACE_TAG_PACKAGE_MANAGER, "postInstall", msg.arg1); } break; + case DEFERRED_NO_KILL_POST_DELETE: { + synchronized (mInstallLock) { + InstallArgs args = (InstallArgs) msg.obj; + if (args != null) { + args.doPostDeleteLI(true); + } + } + } break; + case DEFERRED_NO_KILL_INSTALL_OBSERVER: { + String packageName = (String) msg.obj; + if (packageName != null) { + notifyInstallObserver(packageName); + } + } break; case WRITE_SETTINGS: { Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); synchronized (mPackages) { @@ -1791,7 +1813,10 @@ public class PackageManagerService extends IPackageManager.Stub String[] grantedPermissions, List<String> whitelistedRestrictedPermissions, boolean launchedForRestore, String installerPackage, IPackageInstallObserver2 installObserver) { - if (res.returnCode == PackageManager.INSTALL_SUCCEEDED) { + final boolean succeeded = res.returnCode == PackageManager.INSTALL_SUCCEEDED; + final boolean update = res.removedInfo != null && res.removedInfo.removedPackage != null; + + if (succeeded) { // Send the removed broadcasts if (res.removedInfo != null) { res.removedInfo.sendPackageRemovedBroadcasts(killApp); @@ -1819,8 +1844,6 @@ public class PackageManagerService extends IPackageManager.Stub mPermissionCallback); } - final boolean update = res.removedInfo != null - && res.removedInfo.removedPackage != null; final String installerPackageName = res.installerPackageName != null ? res.installerPackageName @@ -2029,11 +2052,18 @@ public class PackageManagerService extends IPackageManager.Stub getUnknownSourcesSettings()); // Remove the replaced package's older resources safely now - // We delete after a gc for applications on sdcard. - if (res.removedInfo != null && res.removedInfo.args != null) { - Runtime.getRuntime().gc(); - synchronized (mInstallLock) { - res.removedInfo.args.doPostDeleteLI(true); + InstallArgs args = res.removedInfo != null ? res.removedInfo.args : null; + if (args != null) { + if (!killApp) { + // If we didn't kill the app, defer the deletion of code/resource files, since + // they may still be in use by the running application. This mitigates problems + // in cases where resources or code is loaded by a new Activity before + // ApplicationInfo changes have propagated to all application threads. + scheduleDeferredNoKillPostDelete(args); + } else { + synchronized (mInstallLock) { + args.doPostDeleteLI(true); + } } } else { // Force a gc to clear up things. Ask for a background one, it's fine to go on @@ -2056,18 +2086,62 @@ public class PackageManagerService extends IPackageManager.Stub } } - // If someone is watching installs - notify them + final boolean deferInstallObserver = succeeded && update && !killApp; + if (deferInstallObserver) { + scheduleDeferredNoKillInstallObserver(res, installObserver); + } else { + notifyInstallObserver(res, installObserver); + } + } + + @Override + public void notifyPackagesReplacedReceived(String[] packages) { + final int callingUid = Binder.getCallingUid(); + final int callingUserId = UserHandle.getUserId(callingUid); + + for (String packageName : packages) { + PackageSetting setting = mSettings.mPackages.get(packageName); + if (setting != null && filterAppAccessLPr(setting, callingUid, callingUserId)) { + notifyInstallObserver(packageName); + } + } + } + + private void notifyInstallObserver(String packageName) { + Pair<PackageInstalledInfo, IPackageInstallObserver2> pair = + mNoKillInstallObservers.remove(packageName); + + if (pair != null) { + notifyInstallObserver(pair.first, pair.second); + } + } + + private void notifyInstallObserver(PackageInstalledInfo info, + IPackageInstallObserver2 installObserver) { if (installObserver != null) { try { - Bundle extras = extrasForInstallResult(res); - installObserver.onPackageInstalled(res.name, res.returnCode, - res.returnMsg, extras); + Bundle extras = extrasForInstallResult(info); + installObserver.onPackageInstalled(info.name, info.returnCode, + info.returnMsg, extras); } catch (RemoteException e) { Slog.i(TAG, "Observer no longer exists."); } } } + private void scheduleDeferredNoKillPostDelete(InstallArgs args) { + Message message = mHandler.obtainMessage(DEFERRED_NO_KILL_POST_DELETE, args); + mHandler.sendMessageDelayed(message, DEFERRED_NO_KILL_POST_DELETE_DELAY_MS); + } + + private void scheduleDeferredNoKillInstallObserver(PackageInstalledInfo info, + IPackageInstallObserver2 observer) { + String packageName = info.pkg.packageName; + mNoKillInstallObservers.put(packageName, Pair.create(info, observer)); + Message message = mHandler.obtainMessage(DEFERRED_NO_KILL_INSTALL_OBSERVER, packageName); + mHandler.sendMessageDelayed(message, DEFERRED_NO_KILL_INSTALL_OBSERVER_DELAY_MS); + } + /** * Gets the type of the external storage a package is installed on. * @param packageVolume The storage volume of the package. diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index db2fba97f4ac..2a9cb8998cac 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -2687,7 +2687,7 @@ public final class Settings { private void writePackageListLPrInternal(int creatingUserId) { // Only derive GIDs for active users (not dying) - final List<UserInfo> users = UserManagerService.getInstance().getUsers(true); + final List<UserInfo> users = getUsers(UserManagerService.getInstance(), true); int[] userIds = new int[users.size()]; for (int i = 0; i < userIds.length; i++) { userIds[i] = users.get(i).id; @@ -4357,10 +4357,26 @@ public final class Settings { return pkgSetting.getHarmfulAppWarning(userId); } + /** + * Return all users on the device, including partial or dying users. + * @param userManager UserManagerService instance + * @return the list of users + */ private static List<UserInfo> getAllUsers(UserManagerService userManager) { + return getUsers(userManager, false); + } + + /** + * Return the list of users on the device. Clear the calling identity before calling into + * UserManagerService. + * @param userManager UserManagerService instance + * @param excludeDying Indicates whether to exclude any users marked for deletion. + * @return the list of users + */ + private static List<UserInfo> getUsers(UserManagerService userManager, boolean excludeDying) { long id = Binder.clearCallingIdentity(); try { - return userManager.getUsers(false); + return userManager.getUsers(excludeDying); } catch (NullPointerException npe) { // packagemanager not yet initialized } finally { diff --git a/services/core/java/com/android/server/pm/permission/TEST_MAPPING b/services/core/java/com/android/server/pm/permission/TEST_MAPPING index 2280d3fd9134..05e9b93bcf5a 100644 --- a/services/core/java/com/android/server/pm/permission/TEST_MAPPING +++ b/services/core/java/com/android/server/pm/permission/TEST_MAPPING @@ -1,14 +1,6 @@ { "presubmit": [ { - "name": "GtsPermissionTestCases", - "options": [ - { - "include-filter": "com.google.android.permission.gts.DefaultPermissionGrantPolicyTest" - } - ] - }, - { "name": "CtsPermissionTestCases", "options": [ { @@ -31,4 +23,4 @@ ] } ] -}
\ No newline at end of file +} diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index d0ca861d8d3b..9b4293d484bc 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -256,6 +256,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Whether to allow devices placed in vr headset viewers to have an alternative Home intent. static final boolean ENABLE_VR_HEADSET_HOME_CAPTURE = true; + // must match: config_shortPressOnPowerBehavior in config.xml static final int SHORT_PRESS_POWER_NOTHING = 0; static final int SHORT_PRESS_POWER_GO_TO_SLEEP = 1; static final int SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP = 2; @@ -263,29 +264,34 @@ public class PhoneWindowManager implements WindowManagerPolicy { static final int SHORT_PRESS_POWER_GO_HOME = 4; static final int SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME = 5; + // must match: config_LongPressOnPowerBehavior in config.xml static final int LONG_PRESS_POWER_NOTHING = 0; static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1; static final int LONG_PRESS_POWER_SHUT_OFF = 2; static final int LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM = 3; static final int LONG_PRESS_POWER_GO_TO_VOICE_ASSIST = 4; + static final int LONG_PRESS_POWER_ASSISTANT = 5; // Settings.Secure.ASSISTANT + // must match: config_veryLongPresOnPowerBehavior in config.xml static final int VERY_LONG_PRESS_POWER_NOTHING = 0; static final int VERY_LONG_PRESS_POWER_GLOBAL_ACTIONS = 1; + // must match: config_doublePressOnPowerBehavior in config.xml static final int MULTI_PRESS_POWER_NOTHING = 0; static final int MULTI_PRESS_POWER_THEATER_MODE = 1; static final int MULTI_PRESS_POWER_BRIGHTNESS_BOOST = 2; + // must match: config_longPressOnBackBehavior in config.xml static final int LONG_PRESS_BACK_NOTHING = 0; static final int LONG_PRESS_BACK_GO_TO_VOICE_ASSIST = 1; - // These need to match the documentation/constant in - // core/res/res/values/config.xml + // must match: config_longPressOnHomeBehavior in config.xml static final int LONG_PRESS_HOME_NOTHING = 0; static final int LONG_PRESS_HOME_ALL_APPS = 1; static final int LONG_PRESS_HOME_ASSIST = 2; static final int LAST_LONG_PRESS_HOME_BEHAVIOR = LONG_PRESS_HOME_ASSIST; + // must match: config_doubleTapOnHomeBehavior in config.xml static final int DOUBLE_TAP_HOME_NOTHING = 0; static final int DOUBLE_TAP_HOME_RECENT_SYSTEM_UI = 1; @@ -770,6 +776,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { resolver.registerContentObserver(Settings.Secure.getUriFor( Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED), false, this, UserHandle.USER_ALL); + resolver.registerContentObserver(Settings.Global.getUriFor( + Settings.Global.POWER_BUTTON_LONG_PRESS), false, this, + UserHandle.USER_ALL); + resolver.registerContentObserver(Settings.Global.getUriFor( + Settings.Global.POWER_BUTTON_VERY_LONG_PRESS), false, this, + UserHandle.USER_ALL); updateSettings(); } @@ -1195,38 +1207,38 @@ public class PhoneWindowManager implements WindowManagerPolicy { private void powerLongPress() { final int behavior = getResolvedLongPressOnPowerBehavior(); switch (behavior) { - case LONG_PRESS_POWER_NOTHING: - break; - case LONG_PRESS_POWER_GLOBAL_ACTIONS: - mPowerKeyHandled = true; - performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false, - "Power - Long Press - Global Actions"); - showGlobalActionsInternal(); - break; - case LONG_PRESS_POWER_SHUT_OFF: - case LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM: - mPowerKeyHandled = true; - performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false, - "Power - Long Press - Shut Off"); - sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS); - mWindowManagerFuncs.shutdown(behavior == LONG_PRESS_POWER_SHUT_OFF); - break; - case LONG_PRESS_POWER_GO_TO_VOICE_ASSIST: - mPowerKeyHandled = true; - performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false, - "Power - Long Press - Go To Voice Assist"); - final boolean keyguardActive = mKeyguardDelegate == null - ? false - : mKeyguardDelegate.isShowing(); - if (!keyguardActive) { - Intent intent = new Intent(Intent.ACTION_VOICE_ASSIST); - if (mAllowStartActivityForLongPressOnPowerDuringSetup) { - mContext.startActivityAsUser(intent, UserHandle.CURRENT_OR_SELF); - } else { - startActivityAsUser(intent, UserHandle.CURRENT_OR_SELF); - } - } - break; + case LONG_PRESS_POWER_NOTHING: + break; + case LONG_PRESS_POWER_GLOBAL_ACTIONS: + mPowerKeyHandled = true; + performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false, + "Power - Long Press - Global Actions"); + showGlobalActionsInternal(); + break; + case LONG_PRESS_POWER_SHUT_OFF: + case LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM: + mPowerKeyHandled = true; + performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false, + "Power - Long Press - Shut Off"); + sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS); + mWindowManagerFuncs.shutdown(behavior == LONG_PRESS_POWER_SHUT_OFF); + break; + case LONG_PRESS_POWER_GO_TO_VOICE_ASSIST: + mPowerKeyHandled = true; + performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false, + "Power - Long Press - Go To Voice Assist"); + // Some devices allow the voice assistant intent during setup (and use that intent + // to launch something else, like Settings). So we explicitly allow that via the + // config_allowStartActivityForLongPressOnPowerInSetup resource in config.xml. + launchVoiceAssist(mAllowStartActivityForLongPressOnPowerDuringSetup); + break; + case LONG_PRESS_POWER_ASSISTANT: + mPowerKeyHandled = true; + performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false, + "Power - Long Press - Go To Assistant"); + final int powerKeyDeviceId = Integer.MIN_VALUE; + launchAssistAction(null, powerKeyDeviceId); + break; } } @@ -1250,13 +1262,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { case LONG_PRESS_BACK_NOTHING: break; case LONG_PRESS_BACK_GO_TO_VOICE_ASSIST: - final boolean keyguardActive = mKeyguardDelegate == null - ? false - : mKeyguardDelegate.isShowing(); - if (!keyguardActive) { - Intent intent = new Intent(Intent.ACTION_VOICE_ASSIST); - startActivityAsUser(intent, UserHandle.CURRENT_OR_SELF); - } + launchVoiceAssist(false /* allowDuringSetup */); break; } } @@ -1999,6 +2005,15 @@ public class PhoneWindowManager implements WindowManagerPolicy { mHasSoftInput = hasSoftInput; updateRotation = true; } + + mLongPressOnPowerBehavior = Settings.Global.getInt(resolver, + Settings.Global.POWER_BUTTON_LONG_PRESS, + mContext.getResources().getInteger( + com.android.internal.R.integer.config_longPressOnPowerBehavior)); + mVeryLongPressOnPowerBehavior = Settings.Global.getInt(resolver, + Settings.Global.POWER_BUTTON_VERY_LONG_PRESS, + mContext.getResources().getInteger( + com.android.internal.R.integer.config_veryLongPressOnPowerBehavior)); } if (updateRotation) { updateRotation(true); @@ -3225,6 +3240,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { return 0; } + // There are several different flavors of "assistant" that can be launched from + // various parts of the UI. + + /** starts ACTION_SEARCH_LONG_PRESS, usually a voice search prompt */ private void launchAssistLongPressAction() { performHapticFeedback(HapticFeedbackConstants.LONG_PRESS, false, "Assist - Long Press"); @@ -3246,6 +3265,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } + /** Asks the status bar to startAssist(), usually a full "assistant" interface */ private void launchAssistAction(String hint, int deviceId) { sendCloseSystemWindows(SYSTEM_DIALOG_REASON_ASSIST); if (!isUserSetupComplete()) { @@ -3276,12 +3296,30 @@ public class PhoneWindowManager implements WindowManagerPolicy { } } + /** Launches ACTION_VOICE_ASSIST. Does nothing on keyguard. */ + private void launchVoiceAssist(boolean allowDuringSetup) { + final boolean keyguardActive = mKeyguardDelegate == null + ? false + : mKeyguardDelegate.isShowing(); + if (!keyguardActive) { + Intent intent = new Intent(Intent.ACTION_VOICE_ASSIST); + startActivityAsUser(intent, null, UserHandle.CURRENT_OR_SELF, + allowDuringSetup); + } + + } + private void startActivityAsUser(Intent intent, UserHandle handle) { startActivityAsUser(intent, null, handle); } private void startActivityAsUser(Intent intent, Bundle bundle, UserHandle handle) { - if (isUserSetupComplete()) { + startActivityAsUser(intent, bundle, handle, false /* allowDuringSetup */); + } + + private void startActivityAsUser(Intent intent, Bundle bundle, UserHandle handle, + boolean allowDuringSetup) { + if (allowDuringSetup || isUserSetupComplete()) { mContext.startActivityAsUser(intent, bundle, handle); } else { Slog.i(TAG, "Not starting activity because user setup is in progress: " + intent); @@ -5541,6 +5579,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { return "LONG_PRESS_POWER_SHUT_OFF"; case LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM: return "LONG_PRESS_POWER_SHUT_OFF_NO_CONFIRM"; + case LONG_PRESS_POWER_GO_TO_VOICE_ASSIST: + return "LONG_PRESS_POWER_GO_TO_VOICE_ASSIST"; + case LONG_PRESS_POWER_ASSISTANT: + return "LONG_PRESS_POWER_ASSISTANT"; default: return Integer.toString(behavior); } diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java index 0caeb10177b7..1edb93a0cdb9 100644 --- a/services/core/java/com/android/server/stats/StatsCompanionService.java +++ b/services/core/java/com/android/server/stats/StatsCompanionService.java @@ -2563,9 +2563,8 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { private static final class ThermalEventListener extends IThermalEventListener.Stub { @Override public void notifyThrottling(Temperature temp) { - StatsLog.write(StatsLog.THERMAL_THROTTLING, temp.getType(), - StatsLog.THERMAL_THROTTLING_STATE_CHANGED__STATE__UNKNOWN, - temp.getValue(), temp.getStatus(), temp.getName()); + StatsLog.write(StatsLog.THERMAL_THROTTLING_SEVERITY_STATE_CHANGED, temp.getType(), + temp.getName(), (int) (temp.getValue() * 10), temp.getStatus()); } } diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index aaf3df39d429..9cbf00b85e8b 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -843,10 +843,9 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D } } - // TODO(b/117478341): support back button change when IME is showing on a external display. @Override - public void setImeWindowStatus(final IBinder token, final int vis, final int backDisposition, - final boolean showImeSwitcher) { + public void setImeWindowStatus(int displayId, final IBinder token, final int vis, + final int backDisposition, final boolean showImeSwitcher) { enforceStatusBar(); if (SPEW) { @@ -857,18 +856,13 @@ public class StatusBarManagerService extends IStatusBarService.Stub implements D // In case of IME change, we need to call up setImeWindowStatus() regardless of // mImeWindowVis because mImeWindowVis may not have been set to false when the // previous IME was destroyed. - // TODO(b/117478341): support back button change when IME is showing on a external - // display. - getUiState(DEFAULT_DISPLAY) - .setImeWindowState(vis, backDisposition, showImeSwitcher, token); + getUiState(displayId).setImeWindowState(vis, backDisposition, showImeSwitcher, token); mHandler.post(() -> { if (mBar == null) return; try { - // TODO(b/117478341): support back button change when IME is showing on a - // external display. mBar.setImeWindowStatus( - DEFAULT_DISPLAY, token, vis, backDisposition, showImeSwitcher); + displayId, token, vis, backDisposition, showImeSwitcher); } catch (RemoteException ex) { } }); } diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java index 76b0351fe1f6..4ed07c351847 100644 --- a/services/core/java/com/android/server/wm/ActivityStack.java +++ b/services/core/java/com/android/server/wm/ActivityStack.java @@ -4089,11 +4089,14 @@ class ActivityStack extends ConfigurationContainer { // The activity that we are finishing may be over the lock screen. In this case, we do not // want to consider activities that cannot be shown on the lock screen as running and should // proceed with finishing the activity if there is no valid next top running activity. + // Note that if this finishing activity is floating task, we don't need to wait the + // next activity resume and can destroy it directly. final ActivityDisplay display = getDisplay(); final ActivityRecord next = display.topRunningActivity(true /* considerKeyguardState */); + final boolean isFloating = r.getConfiguration().windowConfiguration.tasksAreFloating(); if (mode == FINISH_AFTER_VISIBLE && (r.visible || r.nowVisible) - && next != null && !next.nowVisible) { + && next != null && !next.nowVisible && !isFloating) { if (!mStackSupervisor.mStoppingActivities.contains(r)) { addToStopping(r, false /* scheduleIdle */, false /* idleDelayed */); } diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java index 9d80425435ef..78c5dbddee41 100644 --- a/services/core/java/com/android/server/wm/WindowManagerInternal.java +++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java @@ -476,6 +476,11 @@ public abstract class WindowManagerInternal { public abstract int getDisplayIdForWindow(IBinder windowToken); /** + * @return The top focused display ID. + */ + public abstract int getTopFocusedDisplayId(); + + /** * Checks whether this display should support showing system decorations. */ public abstract boolean shouldShowSystemDecorOnDisplay(int displayId); diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8ed2a15b2b98..d46aa7bdcaeb 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -7340,6 +7340,13 @@ public class WindowManagerService extends IWindowManager.Stub } @Override + public int getTopFocusedDisplayId() { + synchronized (mGlobalLock) { + return mRoot.getTopFocusedDisplayContent().getDisplayId(); + } + } + + @Override public boolean shouldShowSystemDecorOnDisplay(int displayId) { synchronized (mGlobalLock) { return WindowManagerService.this.shouldShowSystemDecors(displayId); diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 8e18683d3e76..4105487c88ca 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -2861,6 +2861,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP } mDestroying = false; destroyedSomething = true; + + // Since mDestroying will affect AppWindowToken#allDrawn, we need to perform another + // traversal in case we are waiting on this window to start the transition. + if (getDisplayContent().mAppTransition.isTransitionSet() + && getDisplayContent().mOpeningApps.contains(mAppToken)) { + mWmService.mWindowPlacerLocked.requestTraversal(); + } } return destroyedSomething; diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java index 08f6a372de86..f492d13f371f 100644 --- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java @@ -58,6 +58,7 @@ import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.IPackageManager; import android.content.pm.PackageManagerInternal; import android.os.BatteryManager; import android.os.BatteryManagerInternal; @@ -224,50 +225,55 @@ public class QuotaControllerTest { } private void setProcessState(int procState) { + setProcessState(procState, mSourceUid); + } + + private void setProcessState(int procState, int uid) { try { - doReturn(procState).when(mActivityMangerInternal).getUidProcessState(mSourceUid); + doReturn(procState).when(mActivityMangerInternal).getUidProcessState(uid); SparseBooleanArray foregroundUids = mQuotaController.getForegroundUids(); spyOn(foregroundUids); - mUidObserver.onUidStateChanged(mSourceUid, procState, 0); + mUidObserver.onUidStateChanged(uid, procState, 0); if (procState <= ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE) { - verify(foregroundUids, timeout(SECOND_IN_MILLIS).times(1)) - .put(eq(mSourceUid), eq(true)); - assertTrue(foregroundUids.get(mSourceUid)); + verify(foregroundUids, timeout(2 * SECOND_IN_MILLIS).times(1)) + .put(eq(uid), eq(true)); + assertTrue(foregroundUids.get(uid)); } else { - verify(foregroundUids, timeout(SECOND_IN_MILLIS).times(1)).delete(eq(mSourceUid)); - assertFalse(foregroundUids.get(mSourceUid)); + verify(foregroundUids, timeout(2 * SECOND_IN_MILLIS).times(1)).delete(eq(uid)); + assertFalse(foregroundUids.get(uid)); } } catch (RemoteException e) { fail("registerUidObserver threw exception: " + e.getMessage()); } } - private void setStandbyBucket(int bucketIndex) { - int bucket; + private int bucketIndexToUsageStatsBucket(int bucketIndex) { switch (bucketIndex) { case ACTIVE_INDEX: - bucket = UsageStatsManager.STANDBY_BUCKET_ACTIVE; - break; + return UsageStatsManager.STANDBY_BUCKET_ACTIVE; case WORKING_INDEX: - bucket = UsageStatsManager.STANDBY_BUCKET_WORKING_SET; - break; + return UsageStatsManager.STANDBY_BUCKET_WORKING_SET; case FREQUENT_INDEX: - bucket = UsageStatsManager.STANDBY_BUCKET_FREQUENT; - break; + return UsageStatsManager.STANDBY_BUCKET_FREQUENT; case RARE_INDEX: - bucket = UsageStatsManager.STANDBY_BUCKET_RARE; - break; + return UsageStatsManager.STANDBY_BUCKET_RARE; default: - bucket = UsageStatsManager.STANDBY_BUCKET_NEVER; + return UsageStatsManager.STANDBY_BUCKET_NEVER; } + } + + private void setStandbyBucket(int bucketIndex) { when(mUsageStatsManager.getAppStandbyBucket(eq(SOURCE_PACKAGE), eq(SOURCE_USER_ID), - anyLong())).thenReturn(bucket); + anyLong())).thenReturn(bucketIndexToUsageStatsBucket(bucketIndex)); } private void setStandbyBucket(int bucketIndex, JobStatus... jobs) { setStandbyBucket(bucketIndex); for (JobStatus job : jobs) { job.setStandbyBucket(bucketIndex); + when(mUsageStatsManager.getAppStandbyBucket( + eq(job.getSourcePackageName()), eq(job.getSourceUserId()), anyLong())) + .thenReturn(bucketIndexToUsageStatsBucket(bucketIndex)); } } @@ -283,8 +289,13 @@ public class QuotaControllerTest { new ComponentName(mContext, "TestQuotaJobService")) .setMinimumLatency(Math.abs(jobId) + 1) .build(); + return createJobStatus(testTag, SOURCE_PACKAGE, CALLING_UID, jobInfo); + } + + private JobStatus createJobStatus(String testTag, String packageName, int callingUid, + JobInfo jobInfo) { JobStatus js = JobStatus.createFromJobInfo( - jobInfo, CALLING_UID, SOURCE_PACKAGE, SOURCE_USER_ID, testTag); + jobInfo, callingUid, packageName, SOURCE_USER_ID, testTag); // Make sure tests aren't passing just because the default bucket is likely ACTIVE. js.setStandbyBucket(FREQUENT_INDEX); return js; @@ -935,6 +946,115 @@ public class QuotaControllerTest { } @Test + public void testIsWithinQuotaLocked_UnderDuration_UnderJobCount_MultiStateChange_BelowFGS() { + setDischarging(); + + JobStatus jobStatus = createJobStatus( + "testIsWithinQuotaLocked_UnderDuration_UnderJobCount_MultiStateChange_BelowFGS", 1); + setStandbyBucket(ACTIVE_INDEX, jobStatus); + setProcessState(ActivityManager.PROCESS_STATE_BACKUP); + + mQuotaController.maybeStartTrackingJobLocked(jobStatus, null); + mQuotaController.prepareForExecutionLocked(jobStatus); + for (int i = 0; i < 20; ++i) { + advanceElapsedClock(SECOND_IN_MILLIS); + setProcessState(ActivityManager.PROCESS_STATE_SERVICE); + setProcessState(ActivityManager.PROCESS_STATE_IMPORTANT_BACKGROUND); + } + mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false); + + advanceElapsedClock(15 * SECOND_IN_MILLIS); + + mQuotaController.maybeStartTrackingJobLocked(jobStatus, null); + mQuotaController.prepareForExecutionLocked(jobStatus); + for (int i = 0; i < 20; ++i) { + advanceElapsedClock(SECOND_IN_MILLIS); + setProcessState(ActivityManager.PROCESS_STATE_SERVICE); + setProcessState(ActivityManager.PROCESS_STATE_RECEIVER); + } + mQuotaController.maybeStopTrackingJobLocked(jobStatus, null, false); + + advanceElapsedClock(10 * MINUTE_IN_MILLIS + 30 * SECOND_IN_MILLIS); + + assertEquals(2, mQuotaController.getExecutionStatsLocked( + SOURCE_USER_ID, SOURCE_PACKAGE, ACTIVE_INDEX).jobCountInAllowedTime); + assertTrue(mQuotaController.isWithinQuotaLocked(jobStatus)); + } + + @Test + public void testIsWithinQuotaLocked_UnderDuration_UnderJobCount_MultiStateChange_SeparateApps() + throws Exception { + setDischarging(); + + final String unaffectedPkgName = "com.android.unaffected"; + final int unaffectedUid = 10987; + JobInfo unaffectedJobInfo = new JobInfo.Builder(1, + new ComponentName(unaffectedPkgName, "foo")) + .build(); + JobStatus unaffected = createJobStatus( + "testIsWithinQuotaLocked_UnderDuration_UnderJobCount_MultiStateChange_SeparateApps", + unaffectedPkgName, unaffectedUid, unaffectedJobInfo); + setStandbyBucket(FREQUENT_INDEX, unaffected); + setProcessState(ActivityManager.PROCESS_STATE_SERVICE, unaffectedUid); + + final String fgChangerPkgName = "com.android.foreground.changer"; + final int fgChangerUid = 10234; + JobInfo fgChangerJobInfo = new JobInfo.Builder(2, + new ComponentName(fgChangerPkgName, "foo")) + .build(); + JobStatus fgStateChanger = createJobStatus( + "testIsWithinQuotaLocked_UnderDuration_UnderJobCount_MultiStateChange_SeparateApps", + fgChangerPkgName, fgChangerUid, fgChangerJobInfo); + setStandbyBucket(ACTIVE_INDEX, fgStateChanger); + setProcessState(ActivityManager.PROCESS_STATE_BACKUP, fgChangerUid); + + IPackageManager packageManager = AppGlobals.getPackageManager(); + spyOn(packageManager); + doReturn(new String[]{unaffectedPkgName}) + .when(packageManager).getPackagesForUid(unaffectedUid); + doReturn(new String[]{fgChangerPkgName}) + .when(packageManager).getPackagesForUid(fgChangerUid); + + mQuotaController.maybeStartTrackingJobLocked(unaffected, null); + mQuotaController.prepareForExecutionLocked(unaffected); + + mQuotaController.maybeStartTrackingJobLocked(fgStateChanger, null); + mQuotaController.prepareForExecutionLocked(fgStateChanger); + for (int i = 0; i < 20; ++i) { + advanceElapsedClock(SECOND_IN_MILLIS); + setProcessState(ActivityManager.PROCESS_STATE_TOP, fgChangerUid); + setProcessState(ActivityManager.PROCESS_STATE_TOP_SLEEPING, fgChangerUid); + } + mQuotaController.maybeStopTrackingJobLocked(fgStateChanger, null, false); + + advanceElapsedClock(15 * SECOND_IN_MILLIS); + + mQuotaController.maybeStartTrackingJobLocked(fgStateChanger, null); + mQuotaController.prepareForExecutionLocked(fgStateChanger); + for (int i = 0; i < 20; ++i) { + advanceElapsedClock(SECOND_IN_MILLIS); + setProcessState(ActivityManager.PROCESS_STATE_TOP, fgChangerUid); + setProcessState(ActivityManager.PROCESS_STATE_TOP_SLEEPING, fgChangerUid); + } + mQuotaController.maybeStopTrackingJobLocked(fgStateChanger, null, false); + + mQuotaController.maybeStopTrackingJobLocked(unaffected, null, false); + + assertTrue(mQuotaController.isWithinQuotaLocked(unaffected)); + assertFalse(mQuotaController.isWithinQuotaLocked(fgStateChanger)); + assertEquals(1, + mQuotaController.getTimingSessions(SOURCE_USER_ID, unaffectedPkgName).size()); + assertEquals(42, + mQuotaController.getTimingSessions(SOURCE_USER_ID, fgChangerPkgName).size()); + for (int i = ACTIVE_INDEX; i < RARE_INDEX; ++i) { + assertEquals(42, mQuotaController.getExecutionStatsLocked( + SOURCE_USER_ID, fgChangerPkgName, i).jobCountInAllowedTime); + assertEquals(1, mQuotaController.getExecutionStatsLocked( + SOURCE_USER_ID, unaffectedPkgName, i).jobCountInAllowedTime); + } + } + + @Test public void testMaybeScheduleCleanupAlarmLocked() { // No sessions saved yet. mQuotaController.maybeScheduleCleanupAlarmLocked(); 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 b34bd2595287..1a06490195aa 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java @@ -1644,6 +1644,38 @@ public class PreferencesHelperTest extends UiServiceTestCase { } @Test + public void testClearData() { + ArraySet<String> pkg = new ArraySet<>(); + pkg.add(PKG_O); + mHelper.createNotificationChannel(PKG_O, UID_O, getChannel(), true, false); + mHelper.createNotificationChannelGroup( + PKG_O, UID_O, new NotificationChannelGroup("1", "bye"), true); + mHelper.lockChannelsForOEM(pkg.toArray(new String[]{})); + mHelper.updateDefaultApps(UserHandle.getUserId(UID_O), null, pkg); + mHelper.setNotificationDelegate(PKG_O, UID_O, "", 1); + mHelper.setImportance(PKG_O, UID_O, IMPORTANCE_NONE); + mHelper.setBubblesAllowed(PKG_O, UID_O, false); + mHelper.setShowBadge(PKG_O, UID_O, false); + mHelper.setAppImportanceLocked(PKG_O, UID_O); + + mHelper.clearData(PKG_O, UID_O); + + assertEquals(IMPORTANCE_UNSPECIFIED, mHelper.getImportance(PKG_O, UID_O)); + assertTrue(mHelper.areBubblesAllowed(PKG_O, UID_O)); + assertTrue(mHelper.canShowBadge(PKG_O, UID_O)); + assertNull(mHelper.getNotificationDelegate(PKG_O, UID_O)); + assertEquals(0, mHelper.getAppLockedFields(PKG_O, UID_O)); + assertEquals(0, mHelper.getNotificationChannels(PKG_O, UID_O, true).getList().size()); + assertEquals(0, mHelper.getNotificationChannelGroups(PKG_O, UID_O).size()); + + NotificationChannel channel = getChannel(); + mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false); + + assertTrue(channel.isImportanceLockedByCriticalDeviceFunction()); + assertTrue(channel.isImportanceLockedByOEM()); + } + + @Test public void testRecordDefaults() throws Exception { assertEquals(NotificationManager.IMPORTANCE_UNSPECIFIED, mHelper.getImportance(PKG_N_MR1, UID_N_MR1)); diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml index bfda2eac25c9..5136705ffbc2 100644 --- a/services/tests/wmtests/AndroidManifest.xml +++ b/services/tests/wmtests/AndroidManifest.xml @@ -42,6 +42,7 @@ android:testOnly="true" android:largeHeap="true"> <uses-library android:name="android.test.mock" android:required="true" /> + <uses-library android:name="android.test.runner" /> <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityA" /> <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityB" /> diff --git a/services/tests/wmtests/src/com/android/server/wm/PersisterQueueTests.java b/services/tests/wmtests/src/com/android/server/wm/PersisterQueueTests.java index 4e906bc9b6c3..4673992f64ef 100644 --- a/services/tests/wmtests/src/com/android/server/wm/PersisterQueueTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/PersisterQueueTests.java @@ -39,7 +39,6 @@ import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.Predicate; /** * Build/Install/Run: @@ -47,208 +46,222 @@ import java.util.function.Predicate; */ @MediumTest @Presubmit -public class PersisterQueueTests implements PersisterQueue.Listener { +public class PersisterQueueTests { private static final long INTER_WRITE_DELAY_MS = 50; private static final long PRE_TASK_DELAY_MS = 300; - // We allow at most 1s more than the expected timeout. - private static final long TIMEOUT_ALLOWANCE = 100; - - private static final Predicate<MatchingTestItem> TEST_ITEM_PREDICATE = item -> item.mMatching; - - private AtomicInteger mItemCount; - private CountDownLatch mSetUpLatch; - private volatile CountDownLatch mLatch; - private List<Boolean> mProbablyDoneResults; + // We allow at most 0.2s more than the expected timeout. + private static final long TIMEOUT_ALLOWANCE = 200; private final PersisterQueue mTarget = new PersisterQueue(INTER_WRITE_DELAY_MS, PRE_TASK_DELAY_MS); + private TestPersisterQueueListener mListener; + private TestWriteQueueItemFactory mFactory; + @Before public void setUp() throws Exception { - mItemCount = new AtomicInteger(0); - mProbablyDoneResults = new ArrayList<>(); - mSetUpLatch = new CountDownLatch(1); + mListener = new TestPersisterQueueListener(); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); + mTarget.addListener(mListener); + + mFactory = new TestWriteQueueItemFactory(); - mTarget.addListener(this); mTarget.startPersisting(); assertTrue("Target didn't call callback on start up.", - mSetUpLatch.await(TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); + mListener.waitForAllExpectedCallbackDone(TIMEOUT_ALLOWANCE)); } @After public void tearDown() throws Exception { mTarget.stopPersisting(); - mTarget.removeListener(this); + mTarget.removeListener(mListener); } @Test public void testCallCallbackOnStartUp() { // The onPreProcessItem() must be called on start up. - assertEquals(1, mProbablyDoneResults.size()); + assertEquals(1, mListener.mProbablyDoneResults.size()); // The last one must be called with probably done being true. - assertTrue("The last probablyDone must be true.", mProbablyDoneResults.get(0)); + assertTrue("The last probablyDone must be true.", mListener.mProbablyDoneResults.get(0)); } @Test public void testProcessOneItem() throws Exception { - mLatch = new CountDownLatch(1); + mFactory.setExpectedProcessedItemNumber(1); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); final long dispatchTime = SystemClock.uptimeMillis(); - mTarget.addItem(new TestItem(), false); - assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process item.", 1, mItemCount.get()); + mTarget.addItem(mFactory.createItem(), false); + assertTrue("Target didn't process item enough times.", + mFactory.waitForAllExpectedItemsProcessed(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process item.", 1, mFactory.getTotalProcessedItemCount()); final long processDuration = SystemClock.uptimeMillis() - dispatchTime; assertTrue("Target didn't wait enough time before processing item. duration: " + processDuration + "ms pretask delay: " + PRE_TASK_DELAY_MS + "ms", processDuration >= PRE_TASK_DELAY_MS); + assertTrue("Target didn't call callback enough times.", + mListener.waitForAllExpectedCallbackDone(TIMEOUT_ALLOWANCE)); // Once before processing this item, once after that. - assertEquals(2, mProbablyDoneResults.size()); + assertEquals(2, mListener.mProbablyDoneResults.size()); // The last one must be called with probably done being true. - assertTrue("The last probablyDone must be true.", mProbablyDoneResults.get(1)); + assertTrue("The last probablyDone must be true.", mListener.mProbablyDoneResults.get(1)); } @Test public void testProcessOneItem_Flush() throws Exception { - mLatch = new CountDownLatch(1); + mFactory.setExpectedProcessedItemNumber(1); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); final long dispatchTime = SystemClock.uptimeMillis(); - mTarget.addItem(new TestItem(), true); - assertTrue("Target didn't call callback enough times.", - mLatch.await(TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process item.", 1, mItemCount.get()); + mTarget.addItem(mFactory.createItem(), true); + assertTrue("Target didn't process item enough times.", + mFactory.waitForAllExpectedItemsProcessed(TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process item.", 1, mFactory.getTotalProcessedItemCount()); final long processDuration = SystemClock.uptimeMillis() - dispatchTime; assertTrue("Target didn't process item immediately when flushing. duration: " + processDuration + "ms pretask delay: " + PRE_TASK_DELAY_MS + "ms", processDuration < PRE_TASK_DELAY_MS); + assertTrue("Target didn't call callback enough times.", + mFactory.waitForAllExpectedItemsProcessed(TIMEOUT_ALLOWANCE)); // Once before processing this item, once after that. - assertEquals(2, mProbablyDoneResults.size()); + assertEquals(2, mListener.mProbablyDoneResults.size()); // The last one must be called with probably done being true. - assertTrue("The last probablyDone must be true.", mProbablyDoneResults.get(1)); + assertTrue("The last probablyDone must be true.", mListener.mProbablyDoneResults.get(1)); } @Test public void testProcessTwoItems() throws Exception { - mLatch = new CountDownLatch(2); + mFactory.setExpectedProcessedItemNumber(2); + mListener.setExpectedOnPreProcessItemCallbackTimes(2); final long dispatchTime = SystemClock.uptimeMillis(); - mTarget.addItem(new TestItem(), false); - mTarget.addItem(new TestItem(), false); + mTarget.addItem(mFactory.createItem(), false); + mTarget.addItem(mFactory.createItem(), false); assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + INTER_WRITE_DELAY_MS + TIMEOUT_ALLOWANCE, - TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process all items.", 2, mItemCount.get()); + mFactory.waitForAllExpectedItemsProcessed(PRE_TASK_DELAY_MS + INTER_WRITE_DELAY_MS + + TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process all items.", 2, mFactory.getTotalProcessedItemCount()); final long processDuration = SystemClock.uptimeMillis() - dispatchTime; assertTrue("Target didn't wait enough time before processing item. duration: " + processDuration + "ms pretask delay: " + PRE_TASK_DELAY_MS + "ms inter write delay: " + INTER_WRITE_DELAY_MS + "ms", processDuration >= PRE_TASK_DELAY_MS + INTER_WRITE_DELAY_MS); - + assertTrue("Target didn't call the onPreProcess callback enough times", + mListener.waitForAllExpectedCallbackDone(TIMEOUT_ALLOWANCE)); // Once before processing this item, once after that. - assertEquals(3, mProbablyDoneResults.size()); + assertEquals(3, mListener.mProbablyDoneResults.size()); // The first one must be called with probably done being false. - assertFalse("The first probablyDone must be false.", mProbablyDoneResults.get(1)); + assertFalse("The first probablyDone must be false.", mListener.mProbablyDoneResults.get(1)); // The last one must be called with probably done being true. - assertTrue("The last probablyDone must be true.", mProbablyDoneResults.get(2)); + assertTrue("The last probablyDone must be true.", mListener.mProbablyDoneResults.get(2)); } @Test @FlakyTest(bugId = 128526085) public void testProcessTwoItems_OneAfterAnother() throws Exception { // First item - mLatch = new CountDownLatch(1); + mFactory.setExpectedProcessedItemNumber(1); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); long dispatchTime = SystemClock.uptimeMillis(); - mTarget.addItem(new TestItem(), false); - assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); + mTarget.addItem(mFactory.createItem(), false); + assertTrue("Target didn't process item enough times.", + mFactory.waitForAllExpectedItemsProcessed(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE)); long processDuration = SystemClock.uptimeMillis() - dispatchTime; assertTrue("Target didn't wait enough time before processing item." + processDuration + "ms pretask delay: " + PRE_TASK_DELAY_MS + "ms", processDuration >= PRE_TASK_DELAY_MS); - assertEquals("Target didn't process item.", 1, mItemCount.get()); + assertEquals("Target didn't process item.", 1, mFactory.getTotalProcessedItemCount()); + assertTrue("Target didn't call callback enough times.", + mListener.waitForAllExpectedCallbackDone(TIMEOUT_ALLOWANCE)); // Second item - mLatch = new CountDownLatch(1); + mFactory.setExpectedProcessedItemNumber(1); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); dispatchTime = SystemClock.uptimeMillis(); // Synchronize on the instance to make sure we schedule the item after it starts to wait for // task indefinitely. synchronized (mTarget) { - mTarget.addItem(new TestItem(), false); + mTarget.addItem(mFactory.createItem(), false); } - assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process all items.", 2, mItemCount.get()); + assertTrue("Target didn't process item enough times.", + mFactory.waitForAllExpectedItemsProcessed(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process all items.", 2, mFactory.getTotalProcessedItemCount()); processDuration = SystemClock.uptimeMillis() - dispatchTime; assertTrue("Target didn't wait enough time before processing item. Process time: " + processDuration + "ms pre task delay: " + PRE_TASK_DELAY_MS + "ms", processDuration >= PRE_TASK_DELAY_MS); + assertTrue("Target didn't call callback enough times.", + mListener.waitForAllExpectedCallbackDone(TIMEOUT_ALLOWANCE)); // Once before processing this item, once after that. - assertEquals(3, mProbablyDoneResults.size()); + assertEquals(3, mListener.mProbablyDoneResults.size()); // The last one must be called with probably done being true. - assertTrue("The last probablyDone must be true.", mProbablyDoneResults.get(2)); + assertTrue("The last probablyDone must be true.", mListener.mProbablyDoneResults.get(2)); } @Test public void testFindLastItemNotReturnDifferentType() { synchronized (mTarget) { - mTarget.addItem(new TestItem(), false); - assertNull(mTarget.findLastItem(TEST_ITEM_PREDICATE, MatchingTestItem.class)); + mTarget.addItem(mFactory.createItem(), false); + assertNull(mTarget.findLastItem(TestItem::shouldKeepOnFilter, + FilterableTestItem.class)); } } @Test public void testFindLastItemNotReturnMismatchItem() { synchronized (mTarget) { - mTarget.addItem(new MatchingTestItem(false), false); - assertNull(mTarget.findLastItem(TEST_ITEM_PREDICATE, MatchingTestItem.class)); + mTarget.addItem(mFactory.createFilterableItem(false), false); + assertNull(mTarget.findLastItem(TestItem::shouldKeepOnFilter, + FilterableTestItem.class)); } } @Test public void testFindLastItemReturnMatchedItem() { synchronized (mTarget) { - final MatchingTestItem item = new MatchingTestItem(true); + final FilterableTestItem item = mFactory.createFilterableItem(true); mTarget.addItem(item, false); - assertSame(item, mTarget.findLastItem(TEST_ITEM_PREDICATE, MatchingTestItem.class)); + assertSame(item, mTarget.findLastItem(TestItem::shouldKeepOnFilter, + FilterableTestItem.class)); } } @Test public void testRemoveItemsNotRemoveDifferentType() throws Exception { - mLatch = new CountDownLatch(1); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); synchronized (mTarget) { - mTarget.addItem(new TestItem(), false); - mTarget.removeItems(TEST_ITEM_PREDICATE, MatchingTestItem.class); + mTarget.addItem(mFactory.createItem(), false); + mTarget.removeItems(TestItem::shouldKeepOnFilter, FilterableTestItem.class); } assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process item.", 1, mItemCount.get()); + mListener.waitForAllExpectedCallbackDone(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process item.", 1, mFactory.getTotalProcessedItemCount()); } @Test public void testRemoveItemsNotRemoveMismatchedItem() throws Exception { - mLatch = new CountDownLatch(1); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); synchronized (mTarget) { - mTarget.addItem(new MatchingTestItem(false), false); - mTarget.removeItems(TEST_ITEM_PREDICATE, MatchingTestItem.class); + mTarget.addItem(mFactory.createFilterableItem(false), false); + mTarget.removeItems(TestItem::shouldKeepOnFilter, FilterableTestItem.class); } assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process item.", 1, mItemCount.get()); + mListener.waitForAllExpectedCallbackDone(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process item.", 1, mFactory.getTotalProcessedItemCount()); } @Test public void testUpdateLastOrAddItemUpdatesMatchedItem() throws Exception { - mLatch = new CountDownLatch(1); - final MatchingTestItem scheduledItem = new MatchingTestItem(true); - final MatchingTestItem expected = new MatchingTestItem(true); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); + final FilterableTestItem scheduledItem = mFactory.createFilterableItem(true); + final FilterableTestItem expected = mFactory.createFilterableItem(true); synchronized (mTarget) { mTarget.addItem(scheduledItem, false); mTarget.updateLastOrAddItem(expected, false); @@ -256,15 +269,15 @@ public class PersisterQueueTests implements PersisterQueue.Listener { assertSame(expected, scheduledItem.mUpdateFromItem); assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process item.", 1, mItemCount.get()); + mListener.waitForAllExpectedCallbackDone(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process item.", 1, mFactory.getTotalProcessedItemCount()); } @Test public void testUpdateLastOrAddItemUpdatesAddItemWhenNoMatch() throws Exception { - mLatch = new CountDownLatch(2); - final MatchingTestItem scheduledItem = new MatchingTestItem(false); - final MatchingTestItem expected = new MatchingTestItem(true); + mListener.setExpectedOnPreProcessItemCallbackTimes(2); + final FilterableTestItem scheduledItem = mFactory.createFilterableItem(false); + final FilterableTestItem expected = mFactory.createFilterableItem(true); synchronized (mTarget) { mTarget.addItem(scheduledItem, false); mTarget.updateLastOrAddItem(expected, false); @@ -272,73 +285,132 @@ public class PersisterQueueTests implements PersisterQueue.Listener { assertNull(scheduledItem.mUpdateFromItem); assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + INTER_WRITE_DELAY_MS + TIMEOUT_ALLOWANCE, - TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process item.", 2, mItemCount.get()); + mListener.waitForAllExpectedCallbackDone(PRE_TASK_DELAY_MS + INTER_WRITE_DELAY_MS + + TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process item.", 2, mFactory.getTotalProcessedItemCount()); } @Test public void testRemoveItemsRemoveMatchedItem() throws Exception { - mLatch = new CountDownLatch(1); + mListener.setExpectedOnPreProcessItemCallbackTimes(1); synchronized (mTarget) { - mTarget.addItem(new TestItem(), false); - mTarget.addItem(new MatchingTestItem(true), false); - mTarget.removeItems(TEST_ITEM_PREDICATE, MatchingTestItem.class); + mTarget.addItem(mFactory.createItem(), false); + mTarget.addItem(mFactory.createFilterableItem(true), false); + mTarget.removeItems(TestItem::shouldKeepOnFilter, FilterableTestItem.class); } assertTrue("Target didn't call callback enough times.", - mLatch.await(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE, TimeUnit.MILLISECONDS)); - assertEquals("Target didn't process item.", 1, mItemCount.get()); + mListener.waitForAllExpectedCallbackDone(PRE_TASK_DELAY_MS + TIMEOUT_ALLOWANCE)); + assertEquals("Target didn't process item.", 1, mFactory.getTotalProcessedItemCount()); } @Test public void testFlushWaitSynchronously() { final long dispatchTime = SystemClock.uptimeMillis(); - mTarget.addItem(new TestItem(), false); - mTarget.addItem(new TestItem(), false); + mTarget.addItem(mFactory.createItem(), false); + mTarget.addItem(mFactory.createItem(), false); mTarget.flush(); assertEquals("Flush should wait until all items are processed before return.", - 2, mItemCount.get()); + 2, mFactory.getTotalProcessedItemCount()); final long processTime = SystemClock.uptimeMillis() - dispatchTime; assertWithMessage("Flush should trigger immediate flush without delays. processTime: " + processTime).that(processTime).isLessThan(TIMEOUT_ALLOWANCE); } - @Override - public void onPreProcessItem(boolean queueEmpty) { - mProbablyDoneResults.add(queueEmpty); + private static class TestWriteQueueItemFactory { + private final AtomicInteger mItemCount = new AtomicInteger(0);; + private CountDownLatch mLatch; + + int getTotalProcessedItemCount() { + return mItemCount.get(); + } + + void setExpectedProcessedItemNumber(int countDown) { + mLatch = new CountDownLatch(countDown); + } + + boolean waitForAllExpectedItemsProcessed(long timeoutInMilliseconds) + throws InterruptedException { + return mLatch.await(timeoutInMilliseconds, TimeUnit.MILLISECONDS); + } - final CountDownLatch latch = mLatch; - if (latch != null) { - latch.countDown(); + TestItem createItem() { + return new TestItem(mItemCount, mLatch); } - mSetUpLatch.countDown(); + FilterableTestItem createFilterableItem(boolean shouldKeepOnFilter) { + return new FilterableTestItem(shouldKeepOnFilter, mItemCount, mLatch); + } } - private class TestItem<T extends TestItem<T>> implements PersisterQueue.WriteQueueItem<T> { + private static class TestItem<T extends TestItem<T>> + implements PersisterQueue.WriteQueueItem<T> { + private AtomicInteger mItemCount; + private CountDownLatch mLatch; + + TestItem(AtomicInteger itemCount, CountDownLatch latch) { + mItemCount = itemCount; + mLatch = latch; + } + @Override public void process() { mItemCount.getAndIncrement(); + if (mLatch != null) { + // Count down the latch at the last step is necessary, as it's a kind of lock to the + // next assert in many test cases. + mLatch.countDown(); + } + } + + boolean shouldKeepOnFilter() { + return true; } } - private class MatchingTestItem extends TestItem<MatchingTestItem> { - private boolean mMatching; + private static class FilterableTestItem extends TestItem<FilterableTestItem> { + private boolean mShouldKeepOnFilter; - private MatchingTestItem mUpdateFromItem; + private FilterableTestItem mUpdateFromItem; - private MatchingTestItem(boolean matching) { - mMatching = matching; + private FilterableTestItem(boolean shouldKeepOnFilter, AtomicInteger mItemCount, + CountDownLatch mLatch) { + super(mItemCount, mLatch); + mShouldKeepOnFilter = shouldKeepOnFilter; } @Override - public boolean matches(MatchingTestItem item) { - return item.mMatching; + public boolean matches(FilterableTestItem item) { + return item.mShouldKeepOnFilter; } @Override - public void updateFrom(MatchingTestItem item) { + public void updateFrom(FilterableTestItem item) { mUpdateFromItem = item; } + + @Override + boolean shouldKeepOnFilter() { + return mShouldKeepOnFilter; + } + } + + private class TestPersisterQueueListener implements PersisterQueue.Listener { + CountDownLatch mCallbackLatch; + final List<Boolean> mProbablyDoneResults = new ArrayList<>(); + + @Override + public void onPreProcessItem(boolean queueEmpty) { + mProbablyDoneResults.add(queueEmpty); + mCallbackLatch.countDown(); + } + + void setExpectedOnPreProcessItemCallbackTimes(int countDown) { + mCallbackLatch = new CountDownLatch(countDown); + } + + boolean waitForAllExpectedCallbackDone(long timeoutInMilliseconds) + throws InterruptedException { + return mCallbackLatch.await(timeoutInMilliseconds, TimeUnit.MILLISECONDS); + } } } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 0edf08ed73b2..ccf49c919db8 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -10343,11 +10343,12 @@ public class TelephonyManager { } /** - * Determine whether the emergency assistance feature is available on the device. + * Returns whether {@link TelephonyManager#ACTION_EMERGENCY_ASSISTANCE emergency assistance} is + * available on the device. * <p> * Requires permission: {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} * - * @return whether the emergency assistance feature is available on the device + * @return {@code true} if emergency assistance is available, {@code false} otherwise * * @hide */ diff --git a/tests/net/Android.bp b/tests/net/Android.bp index c8ef82ec9acc..3ff862c323e2 100644 --- a/tests/net/Android.bp +++ b/tests/net/Android.bp @@ -64,7 +64,7 @@ java_defaults { android_test { name: "FrameworksNetTests", defaults: ["FrameworksNetTests-jni-defaults"], - srcs: ["java/**/*.java"], + srcs: ["java/**/*.java", "java/**/*.kt"], platform_apis: true, test_suites: ["device-tests"], certificate: "platform", diff --git a/tests/net/java/com/android/server/LegacyTypeTrackerTest.kt b/tests/net/java/com/android/server/LegacyTypeTrackerTest.kt new file mode 100644 index 000000000000..d983b6544b4f --- /dev/null +++ b/tests/net/java/com/android/server/LegacyTypeTrackerTest.kt @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server + +import android.net.ConnectivityManager.TYPE_ETHERNET +import android.net.ConnectivityManager.TYPE_MOBILE +import android.net.ConnectivityManager.TYPE_WIFI +import android.net.ConnectivityManager.TYPE_WIMAX +import androidx.test.filters.SmallTest +import androidx.test.runner.AndroidJUnit4 +import com.android.server.ConnectivityService.LegacyTypeTracker +import com.android.server.connectivity.NetworkAgentInfo +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNull +import org.junit.Assert.assertSame +import org.junit.Assert.assertTrue +import org.junit.Assert.fail +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.ArgumentMatchers.any +import org.mockito.Mockito.doReturn +import org.mockito.Mockito.mock + +const val UNSUPPORTED_TYPE = TYPE_WIMAX + +@RunWith(AndroidJUnit4::class) +@SmallTest +class LegacyTypeTrackerTest { + private val supportedTypes = arrayOf(TYPE_MOBILE, TYPE_WIFI, TYPE_ETHERNET) + + private val mMockService = mock(ConnectivityService::class.java).apply { + doReturn(false).`when`(this).isDefaultNetwork(any()) + } + private val mTracker = LegacyTypeTracker(mMockService).apply { + supportedTypes.forEach { + addSupportedType(it) + } + } + + @Test + fun testSupportedTypes() { + try { + mTracker.addSupportedType(supportedTypes[0]) + fail("Expected IllegalStateException") + } catch (expected: IllegalStateException) {} + supportedTypes.forEach { + assertTrue(mTracker.isTypeSupported(it)) + } + assertFalse(mTracker.isTypeSupported(UNSUPPORTED_TYPE)) + } + + @Test + fun testAddNetwork() { + val mobileNai = mock(NetworkAgentInfo::class.java) + val wifiNai = mock(NetworkAgentInfo::class.java) + mTracker.add(TYPE_MOBILE, mobileNai) + mTracker.add(TYPE_WIFI, wifiNai) + assertSame(mTracker.getNetworkForType(TYPE_MOBILE), mobileNai) + assertSame(mTracker.getNetworkForType(TYPE_WIFI), wifiNai) + // Make sure adding a second NAI does not change the results. + val secondMobileNai = mock(NetworkAgentInfo::class.java) + mTracker.add(TYPE_MOBILE, secondMobileNai) + assertSame(mTracker.getNetworkForType(TYPE_MOBILE), mobileNai) + assertSame(mTracker.getNetworkForType(TYPE_WIFI), wifiNai) + // Make sure removing a network that wasn't added for this type is a no-op. + mTracker.remove(TYPE_MOBILE, wifiNai, false /* wasDefault */) + assertSame(mTracker.getNetworkForType(TYPE_MOBILE), mobileNai) + assertSame(mTracker.getNetworkForType(TYPE_WIFI), wifiNai) + // Remove the top network for mobile and make sure the second one becomes the network + // of record for this type. + mTracker.remove(TYPE_MOBILE, mobileNai, false /* wasDefault */) + assertSame(mTracker.getNetworkForType(TYPE_MOBILE), secondMobileNai) + assertSame(mTracker.getNetworkForType(TYPE_WIFI), wifiNai) + // Make sure adding a network for an unsupported type does not register it. + mTracker.add(UNSUPPORTED_TYPE, mobileNai) + assertNull(mTracker.getNetworkForType(UNSUPPORTED_TYPE)) + } +} diff --git a/tests/net/java/com/android/server/connectivity/tethering/EntitlementManagerTest.java b/tests/net/java/com/android/server/connectivity/tethering/EntitlementManagerTest.java index d28ab708f051..2b2e8a72ab04 100644 --- a/tests/net/java/com/android/server/connectivity/tethering/EntitlementManagerTest.java +++ b/tests/net/java/com/android/server/connectivity/tethering/EntitlementManagerTest.java @@ -29,6 +29,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.mockito.Matchers.anyBoolean; +import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.times; @@ -93,6 +94,7 @@ public final class EntitlementManagerTest { private TestStateMachine mSM; private WrappedEntitlementManager mEnMgr; + private TetheringConfiguration mConfig; private class MockContext extends BroadcastInterceptingContext { MockContext(Context base) { @@ -127,13 +129,13 @@ public final class EntitlementManagerTest { } @Override - protected void runUiTetherProvisioning(int type, ResultReceiver receiver) { + protected void runUiTetherProvisioning(int type, int subId, ResultReceiver receiver) { uiProvisionCount++; receiver.send(fakeEntitlementResult, null); } @Override - protected void runSilentTetherProvisioning(int type) { + protected void runSilentTetherProvisioning(int type, int subId) { silentProvisionCount++; addDownstreamMapping(type, fakeEntitlementResult); } @@ -162,8 +164,10 @@ public final class EntitlementManagerTest { mEnMgr = new WrappedEntitlementManager(mMockContext, mSM, mLog, EVENT_EM_UPDATE, mSystemProperties); mEnMgr.setOnUiEntitlementFailedListener(mEntitlementFailedListener); - mEnMgr.updateConfiguration( - new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID)); + mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID); + mEnMgr.setTetheringConfigurationFetcher(() -> { + return mConfig; + }); } @After @@ -186,17 +190,16 @@ public final class EntitlementManagerTest { // Act like the CarrierConfigManager is present and ready unless told otherwise. when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE)) .thenReturn(mCarrierConfigManager); - when(mCarrierConfigManager.getConfig()).thenReturn(mCarrierConfig); + when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mCarrierConfig); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_REQUIRE_ENTITLEMENT_CHECKS_BOOL, true); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, true); + mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID); } @Test public void canRequireProvisioning() { setupForRequiredProvisioning(); - mEnMgr.updateConfiguration( - new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID)); - assertTrue(mEnMgr.isTetherProvisioningRequired()); + assertTrue(mEnMgr.isTetherProvisioningRequired(mConfig)); } @Test @@ -204,31 +207,27 @@ public final class EntitlementManagerTest { setupForRequiredProvisioning(); when(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE)) .thenReturn(null); - mEnMgr.updateConfiguration( - new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID)); + mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID); // Couldn't get the CarrierConfigManager, but still had a declared provisioning app. // Therefore provisioning still be required. - assertTrue(mEnMgr.isTetherProvisioningRequired()); + assertTrue(mEnMgr.isTetherProvisioningRequired(mConfig)); } @Test public void toleratesCarrierConfigMissing() { setupForRequiredProvisioning(); when(mCarrierConfigManager.getConfig()).thenReturn(null); - mEnMgr.updateConfiguration( - new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID)); + mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID); // We still have a provisioning app configured, so still require provisioning. - assertTrue(mEnMgr.isTetherProvisioningRequired()); + assertTrue(mEnMgr.isTetherProvisioningRequired(mConfig)); } @Test public void toleratesCarrierConfigNotLoaded() { setupForRequiredProvisioning(); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_CARRIER_CONFIG_APPLIED_BOOL, false); - mEnMgr.updateConfiguration( - new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID)); // We still have a provisioning app configured, so still require provisioning. - assertTrue(mEnMgr.isTetherProvisioningRequired()); + assertTrue(mEnMgr.isTetherProvisioningRequired(mConfig)); } @Test @@ -236,14 +235,12 @@ public final class EntitlementManagerTest { setupForRequiredProvisioning(); when(mResources.getStringArray(R.array.config_mobile_hotspot_provision_app)) .thenReturn(null); - mEnMgr.updateConfiguration( - new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID)); - assertFalse(mEnMgr.isTetherProvisioningRequired()); + mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID); + assertFalse(mEnMgr.isTetherProvisioningRequired(mConfig)); when(mResources.getStringArray(R.array.config_mobile_hotspot_provision_app)) .thenReturn(new String[] {"malformedApp"}); - mEnMgr.updateConfiguration( - new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID)); - assertFalse(mEnMgr.isTetherProvisioningRequired()); + mConfig = new TetheringConfiguration(mMockContext, mLog, INVALID_SUBSCRIPTION_ID); + assertFalse(mEnMgr.isTetherProvisioningRequired(mConfig)); } @Test @@ -265,8 +262,6 @@ public final class EntitlementManagerTest { mEnMgr.reset(); setupForRequiredProvisioning(); - mEnMgr.updateConfiguration(new TetheringConfiguration(mMockContext, mLog, - INVALID_SUBSCRIPTION_ID)); // 2. No cache value and don't need to run entitlement check. receiver = new ResultReceiver(null) { @Override @@ -361,8 +356,6 @@ public final class EntitlementManagerTest { public void verifyPermissionResult() { setupForRequiredProvisioning(); mEnMgr.notifyUpstream(true); - mEnMgr.updateConfiguration(new TetheringConfiguration(mMockContext, mLog, - INVALID_SUBSCRIPTION_ID)); mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISION_FAILED; mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, true); mLooper.dispatchAll(); @@ -379,8 +372,6 @@ public final class EntitlementManagerTest { public void verifyPermissionIfAllNotApproved() { setupForRequiredProvisioning(); mEnMgr.notifyUpstream(true); - mEnMgr.updateConfiguration(new TetheringConfiguration(mMockContext, mLog, - INVALID_SUBSCRIPTION_ID)); mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISION_FAILED; mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, true); mLooper.dispatchAll(); @@ -399,8 +390,6 @@ public final class EntitlementManagerTest { public void verifyPermissionIfAnyApproved() { setupForRequiredProvisioning(); mEnMgr.notifyUpstream(true); - mEnMgr.updateConfiguration(new TetheringConfiguration(mMockContext, mLog, - INVALID_SUBSCRIPTION_ID)); mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR; mEnMgr.startProvisioningIfNeeded(TETHERING_WIFI, true); mLooper.dispatchAll(); @@ -419,8 +408,6 @@ public final class EntitlementManagerTest { @Test public void testRunTetherProvisioning() { setupForRequiredProvisioning(); - mEnMgr.updateConfiguration(new TetheringConfiguration(mMockContext, mLog, - INVALID_SUBSCRIPTION_ID)); // 1. start ui provisioning, upstream is mobile mEnMgr.fakeEntitlementResult = TETHER_ERROR_NO_ERROR; mEnMgr.notifyUpstream(true); @@ -458,7 +445,7 @@ public final class EntitlementManagerTest { // 5. tear down mobile, then switch SIM mEnMgr.notifyUpstream(false); mLooper.dispatchAll(); - mEnMgr.reevaluateSimCardProvisioning(); + mEnMgr.reevaluateSimCardProvisioning(mConfig); assertEquals(0, mEnMgr.uiProvisionCount); assertEquals(0, mEnMgr.silentProvisionCount); mEnMgr.reset(); @@ -474,8 +461,6 @@ public final class EntitlementManagerTest { @Test public void testCallStopTetheringWhenUiProvisioningFail() { setupForRequiredProvisioning(); - mEnMgr.updateConfiguration(new TetheringConfiguration(mMockContext, mLog, - INVALID_SUBSCRIPTION_ID)); verify(mEntitlementFailedListener, times(0)).onUiEntitlementFailed(TETHERING_WIFI); mEnMgr.fakeEntitlementResult = TETHER_ERROR_PROVISION_FAILED; mEnMgr.notifyUpstream(true); @@ -486,7 +471,6 @@ public final class EntitlementManagerTest { verify(mEntitlementFailedListener, times(1)).onUiEntitlementFailed(TETHERING_WIFI); } - public class TestStateMachine extends StateMachine { public final ArrayList<Message> messages = new ArrayList<>(); private final State diff --git a/tests/testables/src/android/testing/BaseFragmentTest.java b/tests/testables/src/android/testing/BaseFragmentTest.java index 9f60cce61bce..6cd88b51cb82 100644 --- a/tests/testables/src/android/testing/BaseFragmentTest.java +++ b/tests/testables/src/android/testing/BaseFragmentTest.java @@ -52,7 +52,7 @@ public abstract class BaseFragmentTest { private static final int VIEW_ID = 42; private final Class<? extends Fragment> mCls; - private Handler mHandler; + protected Handler mHandler; protected FrameLayout mView; protected FragmentController mFragments; protected Fragment mFragment; |