diff options
269 files changed, 5854 insertions, 1810 deletions
diff --git a/Android.bp b/Android.bp index 33b6209a6d67..7658fb2cc2c8 100644 --- a/Android.bp +++ b/Android.bp @@ -1039,7 +1039,7 @@ doc_defaults { "ext", "framework", "voip-common", - "android.test.mock", + "android.test.mock.impl", ], local_sourcepaths: frameworks_base_subdirs, html_dirs: [ @@ -1474,13 +1474,13 @@ doc_defaults { "ext", "framework", "voip-common", - "android.test.mock", + "android.test.mock.impl", ], local_sourcepaths: frameworks_base_subdirs, installable: false, metalava_enabled: true, metalava_annotations_enabled: true, - metalava_previous_api: ":public-api-for-metalava-annotations", + metalava_previous_api: ":last-released-public-api", metalava_merge_annotations_dirs: [ "metalava-manual", "ojluni-annotated-stubs", diff --git a/api/current.txt b/api/current.txt index 19a0f31136e8..300ab3af79c4 100644 --- a/api/current.txt +++ b/api/current.txt @@ -15190,7 +15190,7 @@ package android.graphics.drawable.shapes { package android.graphics.fonts { - public class Font { + public final class Font { method public android.graphics.fonts.FontVariationAxis[] getAxes(); method public int getTtcIndex(); method public int getWeight(); @@ -15208,12 +15208,12 @@ package android.graphics.fonts { public static class Font.Builder { ctor public Font.Builder(java.nio.ByteBuffer); - ctor public Font.Builder(java.io.File) throws java.io.IOException; - ctor public Font.Builder(java.io.FileDescriptor) throws java.io.IOException; - ctor public Font.Builder(java.io.FileDescriptor, long, long) throws java.io.IOException; - ctor public Font.Builder(android.content.res.AssetManager, java.lang.String) throws java.io.IOException; - ctor public Font.Builder(android.content.res.Resources, int) throws java.io.IOException; - method public android.graphics.fonts.Font build(); + ctor public Font.Builder(java.io.File); + ctor public Font.Builder(java.io.FileDescriptor); + ctor public Font.Builder(java.io.FileDescriptor, long, long); + ctor public Font.Builder(android.content.res.AssetManager, java.lang.String); + ctor public Font.Builder(android.content.res.Resources, int); + method public android.graphics.fonts.Font build() throws java.io.IOException; method public android.graphics.fonts.Font.Builder setFontVariationSettings(java.lang.String); method public android.graphics.fonts.Font.Builder setFontVariationSettings(android.graphics.fonts.FontVariationAxis[]); method public android.graphics.fonts.Font.Builder setItalic(boolean); @@ -15221,9 +15221,9 @@ package android.graphics.fonts { method public android.graphics.fonts.Font.Builder setWeight(int); } - public class FontFamily { + public final class FontFamily { method public android.graphics.fonts.Font getFont(int); - method public int getFontCount(); + method public int getSize(); } public static class FontFamily.Builder { @@ -46512,7 +46512,7 @@ package android.view { method public final deprecated boolean dispatch(android.view.KeyEvent.Callback); method public final boolean dispatch(android.view.KeyEvent.Callback, android.view.KeyEvent.DispatcherState, java.lang.Object); method public final int getAction(); - method public final java.lang.String getCharacters(); + method public final deprecated java.lang.String getCharacters(); method public static int getDeadChar(int, int); method public final int getDeviceId(); method public char getDisplayLabel(); @@ -46561,7 +46561,7 @@ package android.view { method public final void startTracking(); method public void writeToParcel(android.os.Parcel, int); field public static final int ACTION_DOWN = 0; // 0x0 - field public static final int ACTION_MULTIPLE = 2; // 0x2 + field public static final deprecated int ACTION_MULTIPLE = 2; // 0x2 field public static final int ACTION_UP = 1; // 0x1 field public static final android.os.Parcelable.Creator<android.view.KeyEvent> CREATOR; field public static final int FLAG_CANCELED = 32; // 0x20 diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt index 528c4dffa523..0e0a8c77eac6 100644 --- a/config/hiddenapi-light-greylist.txt +++ b/config/hiddenapi-light-greylist.txt @@ -177,7 +177,7 @@ Landroid/app/INotificationManager;->areNotificationsEnabledForPackage(Ljava/lang Landroid/app/INotificationManager;->cancelAllNotifications(Ljava/lang/String;I)V Landroid/app/INotificationManager;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V Landroid/app/INotificationManager;->cancelToast(Ljava/lang/String;Landroid/app/ITransientNotification;)V -Landroid/app/INotificationManager;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;I)V +Landroid/app/INotificationManager;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;II)V Landroid/app/INotificationManager;->getActiveNotifications(Ljava/lang/String;)[Landroid/service/notification/StatusBarNotification; Landroid/app/INotificationManager;->getHistoricalNotifications(Ljava/lang/String;I)[Landroid/service/notification/StatusBarNotification; Landroid/app/INotificationManager;->getZenMode()I @@ -1986,11 +1986,6 @@ Landroid/R$styleable;->Window:[I Landroid/R$styleable;->Window_windowBackground:I Landroid/R$styleable;->Window_windowFrame:I Landroid/security/Credentials;->convertToPem([Ljava/security/cert/Certificate;)[B -Landroid/security/Credentials;->getInstance()Landroid/security/Credentials; -Landroid/security/Credentials;->install(Landroid/content/Context;Ljava/lang/String;[B)V -Landroid/security/Credentials;->install(Landroid/content/Context;Ljava/security/KeyPair;)V -Landroid/security/Credentials;->unlock(Landroid/content/Context;)V -Landroid/security/GateKeeper;->getSecureUserId()J Landroid/security/IKeyChainService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/IKeyChainService; Landroid/security/IKeyChainService;->requestPrivateKey(Ljava/lang/String;)Ljava/lang/String; Landroid/security/IKeystoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/IKeystoreService; @@ -2009,36 +2004,6 @@ Landroid/security/IKeystoreService;->reset()I Landroid/security/IKeystoreService;->sign(Ljava/lang/String;[B)[B Landroid/security/IKeystoreService;->ungrant(Ljava/lang/String;I)I Landroid/security/IKeystoreService;->verify(Ljava/lang/String;[B[B)I -Landroid/security/keymaster/ExportResult;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/security/keymaster/KeyCharacteristics;-><init>()V -Landroid/security/keymaster/KeyCharacteristics;->readFromParcel(Landroid/os/Parcel;)V -Landroid/security/keymaster/KeymasterArguments;-><init>()V -Landroid/security/keymaster/KeymasterArguments;->addEnum(II)V -Landroid/security/keymaster/KeymasterArguments;->addUnsignedInt(IJ)V -Landroid/security/keymaster/KeymasterArguments;->addUnsignedLong(ILjava/math/BigInteger;)V -Landroid/security/keymaster/KeymasterArguments;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/security/keymaster/KeymasterArguments;->readFromParcel(Landroid/os/Parcel;)V -Landroid/security/keymaster/KeymasterBlob;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/security/keymaster/OperationResult;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/security/KeyStore$State;->LOCKED:Landroid/security/KeyStore$State; -Landroid/security/KeyStore$State;->UNLOCKED:Landroid/security/KeyStore$State; -Landroid/security/keystore/AndroidKeyStoreProvider;->getKeyStoreOperationHandle(Ljava/lang/Object;)J -Landroid/security/keystore/KeyGenParameterSpec;->getUid()I -Landroid/security/keystore/KeyGenParameterSpec;->isUniqueIdIncluded()Z -Landroid/security/KeyStore;->delete(Ljava/lang/String;)Z -Landroid/security/KeyStore;->get(Ljava/lang/String;)[B -Landroid/security/KeyStore;->getApplicationContext()Landroid/content/Context; -Landroid/security/KeyStore;->getInstance()Landroid/security/KeyStore; -Landroid/security/KeyStore;->getKeyStoreException(I)Landroid/security/KeyStoreException; -Landroid/security/KeyStore;->isEmpty()Z -Landroid/security/KeyStore;->NO_ERROR:I -Landroid/security/KeyStore;->reset()Z -Landroid/security/KeyStore;->state()Landroid/security/KeyStore$State; -Landroid/security/KeyStore;->state(I)Landroid/security/KeyStore$State; -Landroid/security/KeyStore;->unlock(Ljava/lang/String;)Z -Landroid/security/KeystoreArguments;-><init>([[B)V -Landroid/security/KeystoreArguments;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/security/net/config/RootTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; Landroid/service/carrier/ICarrierMessagingCallback$Stub;-><init>()V Landroid/service/carrier/ICarrierMessagingService;->filterSms(Landroid/service/carrier/MessagePdu;Ljava/lang/String;IILandroid/service/carrier/ICarrierMessagingCallback;)V Landroid/service/dreams/IDreamManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamManager; diff --git a/config/hiddenapi-p-light-greylist.txt b/config/hiddenapi-p-light-greylist.txt index e360879ddc7b..e26a4c79320b 100644 --- a/config/hiddenapi-p-light-greylist.txt +++ b/config/hiddenapi-p-light-greylist.txt @@ -534,7 +534,7 @@ Landroid/app/INotificationManager$Stub;->asInterface(Landroid/os/IBinder;)Landro Landroid/app/INotificationManager;->cancelAllNotifications(Ljava/lang/String;I)V Landroid/app/INotificationManager;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V Landroid/app/INotificationManager;->cancelToast(Ljava/lang/String;Landroid/app/ITransientNotification;)V -Landroid/app/INotificationManager;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;I)V +Landroid/app/INotificationManager;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;II)V Landroid/app/IProcessObserver$Stub;-><init>()V Landroid/app/ISearchManager$Stub$Proxy;->getGlobalSearchActivity()Landroid/content/ComponentName; Landroid/app/ISearchManager$Stub$Proxy;->getWebSearchActivity()Landroid/content/ComponentName; diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java index be2e2faf3739..f0a0e88310f9 100644 --- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java +++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java @@ -30,7 +30,6 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.hardware.fingerprint.FingerprintManager; -import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; @@ -190,12 +189,10 @@ public class AccessibilityServiceInfo implements Parcelable { * content and also the accessibility service will receive accessibility events from * them. * <p> - * <strong>Note:</strong> For accessibility services targeting API version - * {@link Build.VERSION_CODES#JELLY_BEAN} or higher this flag has to be explicitly - * set for the system to regard views that are not important for accessibility. For - * accessibility services targeting API version lower than - * {@link Build.VERSION_CODES#JELLY_BEAN} this flag is ignored and all views are - * regarded for accessibility purposes. + * <strong>Note:</strong> For accessibility services targeting Android 4.1 (API level 16) or + * higher, this flag has to be explicitly set for the system to regard views that are not + * important for accessibility. For accessibility services targeting Android 4.0.4 (API level + * 15) or lower, this flag is ignored and all views are regarded for accessibility purposes. * </p> * <p> * Usually views not important for accessibility are layout managers that do not @@ -220,19 +217,19 @@ public class AccessibilityServiceInfo implements Parcelable { * flag does not guarantee that the device will not be in touch exploration * mode since there may be another enabled service that requested it. * <p> - * For accessibility services targeting API version higher than - * {@link Build.VERSION_CODES#JELLY_BEAN_MR1} that want to set - * this flag have to declare this capability in their meta-data by setting - * the attribute {@link android.R.attr#canRequestTouchExplorationMode - * canRequestTouchExplorationMode} to true, otherwise this flag will + * For accessibility services targeting Android 4.3 (API level 18) or higher + * that want to set this flag have to declare this capability in their + * meta-data by setting the attribute + * {@link android.R.attr#canRequestTouchExplorationMode + * canRequestTouchExplorationMode} to true. Otherwise, this flag will * be ignored. For how to declare the meta-data of a service refer to * {@value AccessibilityService#SERVICE_META_DATA}. * </p> * <p> - * Services targeting API version equal to or lower than - * {@link Build.VERSION_CODES#JELLY_BEAN_MR1} will work normally, i.e. - * the first time they are run, if this flag is specified, a dialog is - * shown to the user to confirm enabling explore by touch. + * Services targeting Android 4.2.2 (API level 17) or lower will work + * normally. In other words, the first time they are run, if this flag is + * specified, a dialog is shown to the user to confirm enabling explore by + * touch. * </p> * @see android.R.styleable#AccessibilityService_canRequestTouchExplorationMode */ @@ -388,10 +385,10 @@ public class AccessibilityServiceInfo implements Parcelable { public int feedbackType; /** - * The timeout after the most recent event of a given type before an + * The timeout, in milliseconds, after the most recent event of a given type before an * {@link AccessibilityService} is notified. * <p> - * <strong>Can be dynamically set at runtime.</strong>. + * <strong>Can be dynamically set at runtime.</strong> * </p> * <p> * <strong>Note:</strong> The event notification timeout is useful to avoid propagating diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index a056b24fb7b7..63c61d319a44 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -960,14 +960,15 @@ public class ActivityOptions { } /** - * Sets the bounds (window size) that the activity should be launched in. + * Sets the bounds (window size and position) that the activity should be launched in. * Rect position should be provided in pixels and in screen coordinates. - * Set to null explicitly for fullscreen. + * Set to {@code null} to explicitly launch fullscreen. * <p> - * <strong>NOTE:<strong/> This value is ignored on devices that don't have + * <strong>NOTE:</strong> This value is ignored on devices that don't have * {@link android.content.pm.PackageManager#FEATURE_FREEFORM_WINDOW_MANAGEMENT} or * {@link android.content.pm.PackageManager#FEATURE_PICTURE_IN_PICTURE} enabled. - * @param screenSpacePixelRect Launch bounds to use for the activity or null for fullscreen. + * @param screenSpacePixelRect launch bounds or {@code null} for fullscreen + * @return {@code this} {@link ActivityOptions} instance */ public ActivityOptions setLaunchBounds(@Nullable Rect screenSpacePixelRect) { mLaunchBounds = screenSpacePixelRect != null ? new Rect(screenSpacePixelRect) : null; diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index cd127102f83b..3171e3e3b992 100644 --- a/core/java/android/app/INotificationManager.aidl +++ b/core/java/android/app/INotificationManager.aidl @@ -43,7 +43,7 @@ interface INotificationManager void cancelAllNotifications(String pkg, int userId); void clearData(String pkg, int uid, boolean fromApp); - void enqueueToast(String pkg, ITransientNotification callback, int duration); + void enqueueToast(String pkg, ITransientNotification callback, int duration, int displayId); void cancelToast(String pkg, ITransientNotification callback); void finishToken(String pkg, ITransientNotification callback); diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java index 68869c65d7c9..6d1383ad54ef 100644 --- a/core/java/android/app/ResourcesManager.java +++ b/core/java/android/app/ResourcesManager.java @@ -125,10 +125,13 @@ public class ResourcesManager { } } + private static final boolean ENABLE_APK_ASSETS_CACHE = true; + /** * The ApkAssets we are caching and intend to hold strong references to. */ - private final LruCache<ApkKey, ApkAssets> mLoadedApkAssets = new LruCache<>(3); + private final LruCache<ApkKey, ApkAssets> mLoadedApkAssets = + (ENABLE_APK_ASSETS_CACHE) ? new LruCache<>(3) : null; /** * The ApkAssets that are being referenced in the wild that we can reuse, even if they aren't @@ -316,9 +319,12 @@ public class ResourcesManager { private @NonNull ApkAssets loadApkAssets(String path, boolean sharedLib, boolean overlay) throws IOException { final ApkKey newKey = new ApkKey(path, sharedLib, overlay); - ApkAssets apkAssets = mLoadedApkAssets.get(newKey); - if (apkAssets != null) { - return apkAssets; + ApkAssets apkAssets = null; + if (mLoadedApkAssets != null) { + apkAssets = mLoadedApkAssets.get(newKey); + if (apkAssets != null) { + return apkAssets; + } } // Optimistically check if this ApkAssets exists somewhere else. @@ -326,7 +332,10 @@ public class ResourcesManager { if (apkAssetsRef != null) { apkAssets = apkAssetsRef.get(); if (apkAssets != null) { - mLoadedApkAssets.put(newKey, apkAssets); + if (mLoadedApkAssets != null) { + mLoadedApkAssets.put(newKey, apkAssets); + } + return apkAssets; } else { // Clean up the reference. @@ -341,7 +350,11 @@ public class ResourcesManager { } else { apkAssets = ApkAssets.loadFromPath(path, false /*system*/, sharedLib); } - mLoadedApkAssets.put(newKey, apkAssets); + + if (mLoadedApkAssets != null) { + mLoadedApkAssets.put(newKey, apkAssets); + } + mCachedApkAssets.put(newKey, new WeakReference<>(apkAssets)); return apkAssets; } @@ -441,18 +454,22 @@ public class ResourcesManager { pw.println("ResourcesManager:"); pw.increaseIndent(); - pw.print("cached apks: total="); - pw.print(mLoadedApkAssets.size()); - pw.print(" created="); - pw.print(mLoadedApkAssets.createCount()); - pw.print(" evicted="); - pw.print(mLoadedApkAssets.evictionCount()); - pw.print(" hit="); - pw.print(mLoadedApkAssets.hitCount()); - pw.print(" miss="); - pw.print(mLoadedApkAssets.missCount()); - pw.print(" max="); - pw.print(mLoadedApkAssets.maxSize()); + if (mLoadedApkAssets != null) { + pw.print("cached apks: total="); + pw.print(mLoadedApkAssets.size()); + pw.print(" created="); + pw.print(mLoadedApkAssets.createCount()); + pw.print(" evicted="); + pw.print(mLoadedApkAssets.evictionCount()); + pw.print(" hit="); + pw.print(mLoadedApkAssets.hitCount()); + pw.print(" miss="); + pw.print(mLoadedApkAssets.missCount()); + pw.print(" max="); + pw.print(mLoadedApkAssets.maxSize()); + } else { + pw.print("cached apks: 0 [cache disabled]"); + } pw.println(); pw.print("total apks: "); diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java index 1275a852ee2b..caa99d5cb2a8 100644 --- a/core/java/android/hardware/camera2/CameraMetadata.java +++ b/core/java/android/hardware/camera2/CameraMetadata.java @@ -819,11 +819,11 @@ public abstract class CameraMetadata<TKey> { * camera in the list of supported camera devices.</p> * <p>This capability requires the camera device to support the following:</p> * <ul> - * <li>This camera device must list the following static metadata entries in {@link android.hardware.camera2.CameraCharacteristics }:<ul> - * <li>android.logicalMultiCamera.physicalIds</li> - * <li>{@link CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE android.logicalMultiCamera.sensorSyncType}</li> - * </ul> - * </li> + * <li>The IDs of underlying physical cameras are returned via + * {@link android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds }.</li> + * <li>This camera device must list static metadata + * {@link CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE android.logicalMultiCamera.sensorSyncType} in + * {@link android.hardware.camera2.CameraCharacteristics }.</li> * <li>The underlying physical cameras' static metadata must list the following entries, * so that the application can correlate pixels from the physical streams:<ul> * <li>{@link CameraCharacteristics#LENS_POSE_REFERENCE android.lens.poseReference}</li> diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index d09c4166bfe3..7980af12b821 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -7247,6 +7247,14 @@ public final class Settings { private static final Validator DOZE_DOUBLE_TAP_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR; /** + * Whether the device should pulse on reach gesture. + * @hide + */ + public static final String DOZE_REACH_GESTURE = "doze_reach_gesture"; + + private static final Validator DOZE_REACH_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR; + + /** * The current night mode that has been selected by the user. Owned * and controlled by UiModeManagerService. Constants are as per * UiModeManager. @@ -8148,6 +8156,7 @@ public final class Settings { DOZE_ALWAYS_ON, DOZE_PICK_UP_GESTURE, DOZE_DOUBLE_TAP_GESTURE, + DOZE_REACH_GESTURE, NFC_PAYMENT_DEFAULT_COMPONENT, AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, FACE_UNLOCK_KEYGUARD_ENABLED, @@ -8291,6 +8300,7 @@ public final class Settings { VALIDATORS.put(DOZE_ALWAYS_ON, DOZE_ALWAYS_ON_VALIDATOR); VALIDATORS.put(DOZE_PICK_UP_GESTURE, DOZE_PICK_UP_GESTURE_VALIDATOR); VALIDATORS.put(DOZE_DOUBLE_TAP_GESTURE, DOZE_DOUBLE_TAP_GESTURE_VALIDATOR); + VALIDATORS.put(DOZE_REACH_GESTURE, DOZE_REACH_GESTURE_VALIDATOR); VALIDATORS.put(NFC_PAYMENT_DEFAULT_COMPONENT, NFC_PAYMENT_DEFAULT_COMPONENT_VALIDATOR); VALIDATORS.put(AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN, AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN_VALIDATOR); diff --git a/core/java/android/security/KeystoreArguments.java b/core/java/android/security/KeystoreArguments.java index 16054e59931a..7d85ca76204f 100644 --- a/core/java/android/security/KeystoreArguments.java +++ b/core/java/android/security/KeystoreArguments.java @@ -16,6 +16,7 @@ package android.security; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -27,6 +28,7 @@ import android.os.Parcelable; public class KeystoreArguments implements Parcelable { public byte[][] args; + @UnsupportedAppUsage public static final Parcelable.Creator<KeystoreArguments> CREATOR = new Parcelable.Creator<KeystoreArguments>() { public KeystoreArguments createFromParcel(Parcel in) { @@ -41,6 +43,7 @@ public class KeystoreArguments implements Parcelable { args = null; } + @UnsupportedAppUsage public KeystoreArguments(byte[][] args) { this.args = args; } diff --git a/core/java/android/security/keymaster/ExportResult.java b/core/java/android/security/keymaster/ExportResult.java index 2b3ccbcb0707..c104671fc129 100644 --- a/core/java/android/security/keymaster/ExportResult.java +++ b/core/java/android/security/keymaster/ExportResult.java @@ -16,6 +16,7 @@ package android.security.keymaster; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -27,6 +28,7 @@ public class ExportResult implements Parcelable { public final int resultCode; public final byte[] exportData; + @UnsupportedAppUsage public static final Parcelable.Creator<ExportResult> CREATOR = new Parcelable.Creator<ExportResult>() { public ExportResult createFromParcel(Parcel in) { diff --git a/core/java/android/security/keymaster/KeyCharacteristics.java b/core/java/android/security/keymaster/KeyCharacteristics.java index 89300d16da2c..555863efec91 100644 --- a/core/java/android/security/keymaster/KeyCharacteristics.java +++ b/core/java/android/security/keymaster/KeyCharacteristics.java @@ -16,6 +16,7 @@ package android.security.keymaster; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -44,6 +45,7 @@ public class KeyCharacteristics implements Parcelable { } }; + @UnsupportedAppUsage public KeyCharacteristics() {} protected KeyCharacteristics(Parcel in) { @@ -61,6 +63,7 @@ public class KeyCharacteristics implements Parcelable { hwEnforced.writeToParcel(out, flags); } + @UnsupportedAppUsage public void readFromParcel(Parcel in) { swEnforced = KeymasterArguments.CREATOR.createFromParcel(in); hwEnforced = KeymasterArguments.CREATOR.createFromParcel(in); diff --git a/core/java/android/security/keymaster/KeymasterArguments.java b/core/java/android/security/keymaster/KeymasterArguments.java index e8622522596d..5aa0f913f7d9 100644 --- a/core/java/android/security/keymaster/KeymasterArguments.java +++ b/core/java/android/security/keymaster/KeymasterArguments.java @@ -16,6 +16,7 @@ package android.security.keymaster; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -40,6 +41,7 @@ public class KeymasterArguments implements Parcelable { private List<KeymasterArgument> mArguments; + @UnsupportedAppUsage public static final Parcelable.Creator<KeymasterArguments> CREATOR = new Parcelable.Creator<KeymasterArguments>() { @Override @@ -53,6 +55,7 @@ public class KeymasterArguments implements Parcelable { } }; + @UnsupportedAppUsage public KeymasterArguments() { mArguments = new ArrayList<KeymasterArgument>(); } @@ -66,6 +69,7 @@ public class KeymasterArguments implements Parcelable { * * @throws IllegalArgumentException if {@code tag} is not an enum tag. */ + @UnsupportedAppUsage public void addEnum(int tag, int value) { int tagType = KeymasterDefs.getTagType(tag); if ((tagType != KeymasterDefs.KM_ENUM) && (tagType != KeymasterDefs.KM_ENUM_REP)) { @@ -137,6 +141,7 @@ public class KeymasterArguments implements Parcelable { * @throws IllegalArgumentException if {@code tag} is not an unsigned 32-bit int tag or if * {@code value} is outside of the permitted range [0; 2^32). */ + @UnsupportedAppUsage public void addUnsignedInt(int tag, long value) { int tagType = KeymasterDefs.getTagType(tag); if ((tagType != KeymasterDefs.KM_UINT) && (tagType != KeymasterDefs.KM_UINT_REP)) { @@ -173,6 +178,7 @@ public class KeymasterArguments implements Parcelable { * @throws IllegalArgumentException if {@code tag} is not an unsigned 64-bit long tag or if * {@code value} is outside of the permitted range [0; 2^64). */ + @UnsupportedAppUsage public void addUnsignedLong(int tag, BigInteger value) { int tagType = KeymasterDefs.getTagType(tag); if ((tagType != KeymasterDefs.KM_ULONG) && (tagType != KeymasterDefs.KM_ULONG_REP)) { @@ -358,6 +364,7 @@ public class KeymasterArguments implements Parcelable { out.writeTypedList(mArguments); } + @UnsupportedAppUsage public void readFromParcel(Parcel in) { in.readTypedList(mArguments, KeymasterArgument.CREATOR); } diff --git a/core/java/android/security/keymaster/KeymasterBlob.java b/core/java/android/security/keymaster/KeymasterBlob.java index cd36870a535e..0659a22dc090 100644 --- a/core/java/android/security/keymaster/KeymasterBlob.java +++ b/core/java/android/security/keymaster/KeymasterBlob.java @@ -16,6 +16,7 @@ package android.security.keymaster; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -28,6 +29,7 @@ public class KeymasterBlob implements Parcelable { public KeymasterBlob(byte[] blob) { this.blob = blob; } + @UnsupportedAppUsage public static final Parcelable.Creator<KeymasterBlob> CREATOR = new Parcelable.Creator<KeymasterBlob>() { public KeymasterBlob createFromParcel(Parcel in) { diff --git a/core/java/android/security/keymaster/OperationResult.java b/core/java/android/security/keymaster/OperationResult.java index 4c962ec7a1e7..2943211a45f5 100644 --- a/core/java/android/security/keymaster/OperationResult.java +++ b/core/java/android/security/keymaster/OperationResult.java @@ -16,6 +16,7 @@ package android.security.keymaster; +import android.annotation.UnsupportedAppUsage; import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; @@ -33,6 +34,7 @@ public class OperationResult implements Parcelable { public final byte[] output; public final KeymasterArguments outParams; + @UnsupportedAppUsage public static final Parcelable.Creator<OperationResult> CREATOR = new Parcelable.Creator<OperationResult>() { @Override diff --git a/core/java/android/security/net/config/RootTrustManager.java b/core/java/android/security/net/config/RootTrustManager.java index 2a30f1184a47..d8936d948ead 100644 --- a/core/java/android/security/net/config/RootTrustManager.java +++ b/core/java/android/security/net/config/RootTrustManager.java @@ -21,6 +21,7 @@ import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.List; +import android.annotation.UnsupportedAppUsage; import javax.net.ssl.SSLSocket; import javax.net.ssl.SSLEngine; import javax.net.ssl.SSLSession; @@ -121,6 +122,7 @@ public class RootTrustManager extends X509ExtendedTrustManager { * This interface is used by conscrypt and android.net.http.X509TrustManagerExtensions do not * modify without modifying those callers. */ + @UnsupportedAppUsage public List<X509Certificate> checkServerTrusted(X509Certificate[] certs, String authType, String hostname) throws CertificateException { if (hostname == null && mConfig.hasPerDomainConfigs()) { diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java index 887d96e2ecf1..0f8ca44e5f93 100644 --- a/core/java/android/util/FeatureFlagUtils.java +++ b/core/java/android/util/FeatureFlagUtils.java @@ -40,7 +40,7 @@ public class FeatureFlagUtils { static { DEFAULT_FLAGS = new HashMap<>(); DEFAULT_FLAGS.put("settings_battery_display_app_list", "false"); - DEFAULT_FLAGS.put("settings_condition_manager_v2", "false"); + DEFAULT_FLAGS.put("settings_condition_manager_v2", "true"); DEFAULT_FLAGS.put("settings_bluetooth_while_driving", "false"); DEFAULT_FLAGS.put("settings_audio_switcher", "true"); DEFAULT_FLAGS.put("settings_systemui_theme", "true"); diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java index 0115d262fdb4..715440c9aa6e 100644 --- a/core/java/android/view/KeyEvent.java +++ b/core/java/android/view/KeyEvent.java @@ -890,6 +890,7 @@ public class KeyEvent extends InputEvent implements Parcelable { */ public static final int ACTION_UP = 1; /** + * @deprecated No longer used by the input system. * {@link #getAction} value: multiple duplicate key events have * occurred in a row, or a complex string is being delivered. If the * key code is not {#link {@link #KEYCODE_UNKNOWN} then the @@ -898,6 +899,7 @@ public class KeyEvent extends InputEvent implements Parcelable { * Otherwise, if the key code is {@link #KEYCODE_UNKNOWN}, then * this is a sequence of characters as returned by {@link #getCharacters}. */ + @Deprecated public static final int ACTION_MULTIPLE = 2; /** @@ -2474,7 +2476,10 @@ public class KeyEvent extends InputEvent implements Parcelable { * * @return Returns a String of 1 or more characters associated with * the event. + * + * @deprecated no longer used by the input system. */ + @Deprecated public final String getCharacters() { return mCharacters; } @@ -3032,6 +3037,7 @@ public class KeyEvent extends InputEvent implements Parcelable { mFlags = in.readInt(); mDownTime = in.readLong(); mEventTime = in.readLong(); + mCharacters = in.readString(); } @Override @@ -3049,5 +3055,6 @@ public class KeyEvent extends InputEvent implements Parcelable { out.writeInt(mFlags); out.writeLong(mDownTime); out.writeLong(mEventTime); + out.writeString(mCharacters); } } diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java index bbdf15c871bb..d1de498d71ed 100644 --- a/core/java/android/widget/RelativeLayout.java +++ b/core/java/android/widget/RelativeLayout.java @@ -1247,7 +1247,10 @@ public class RelativeLayout extends ViewGroup { private int[] mRules = new int[VERB_COUNT]; private int[] mInitialRules = new int[VERB_COUNT]; - private int mLeft, mTop, mRight, mBottom; + private int mLeft; + private int mTop; + private int mRight; + private int mBottom; /** * Whether this view had any relative rules modified following the most diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 5cadbe46163a..3941d6a28b4a 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -421,7 +421,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private Editable.Factory mEditableFactory = Editable.Factory.getInstance(); private Spannable.Factory mSpannableFactory = Spannable.Factory.getInstance(); - private float mShadowRadius, mShadowDx, mShadowDy; + private float mShadowRadius; + private float mShadowDx; + private float mShadowDy; private int mShadowColor; private boolean mPreDrawRegistered; @@ -717,8 +719,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener private Scroller mScroller; private TextPaint mTempTextPaint; - private BoringLayout.Metrics mBoring, mHintBoring; - private BoringLayout mSavedLayout, mSavedHintLayout; + private BoringLayout.Metrics mBoring; + private BoringLayout.Metrics mHintBoring; + private BoringLayout mSavedLayout; + private BoringLayout mSavedHintLayout; private TextDirectionHeuristic mTextDir; diff --git a/core/java/android/widget/Toast.java b/core/java/android/widget/Toast.java index d74a60e483e5..f6071d86b905 100644 --- a/core/java/android/widget/Toast.java +++ b/core/java/android/widget/Toast.java @@ -133,9 +133,10 @@ public class Toast { String pkg = mContext.getOpPackageName(); TN tn = mTN; tn.mNextView = mNextView; + final int displayId = mContext.getDisplay().getDisplayId(); try { - service.enqueueToast(pkg, tn, mDuration); + service.enqueueToast(pkg, tn, mDuration, displayId); } catch (RemoteException e) { // Empty } @@ -354,7 +355,8 @@ public class Toast { final Handler mHandler; int mGravity; - int mX, mY; + int mX; + int mY; float mHorizontalMargin; float mVerticalMargin; diff --git a/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java b/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java index c21159eebc75..87283675d4b2 100644 --- a/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java +++ b/core/java/com/android/internal/hardware/AmbientDisplayConfiguration.java @@ -66,6 +66,15 @@ public class AmbientDisplayConfiguration { return !TextUtils.isEmpty(doubleTapSensorType()); } + public boolean reachGestureEnabled(int user) { + return boolSettingDefaultOn(Settings.Secure.DOZE_REACH_GESTURE, user) + && reachGestureAvailable(); + } + + public boolean reachGestureAvailable() { + return !TextUtils.isEmpty(reachSensorType()); + } + public String doubleTapSensorType() { return mContext.getResources().getString(R.string.config_dozeDoubleTapSensorType); } @@ -74,6 +83,10 @@ public class AmbientDisplayConfiguration { return mContext.getResources().getString(R.string.config_dozeLongPressSensorType); } + public String reachSensorType() { + return mContext.getResources().getString(R.string.config_dozeReachSensorType); + } + public boolean pulseOnLongPressEnabled(int user) { return pulseOnLongPressAvailable() && boolSettingDefaultOff( Settings.Secure.DOZE_PULSE_ON_LONG_PRESS, user); diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index c93d2668136a..703ecf7fba3a 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Liggaamsensors"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"toegang te verkry tot sensordata oor jou lewenstekens"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Gee <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang tot sensordata oor jou lewenstekens?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Venster-inhoud ophaal"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Die inhoud ondersoek van \'n venster waarmee jy interaksie het."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Verken deur raak aanskakel"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Laat die program toe om metodes te benut om vingerafdruksjablone vir gebruik by te voeg en uit te vee."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"gebruik vingerafdrukhardeware"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Laat die program toe om vingerafdrukhardeware vir stawing te gebruik"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Gedeeltelike vingerafdruk is bespeur. Probeer asseblief weer."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kon nie vingerafdruk verwerk nie. Probeer asseblief weer."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Vingerafdruksensor is vuil. Maak dit skoon en probeer weer."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Stoor <xliff:g id="TYPE">%1$s</xliff:g> in <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Stoor <xliff:g id="TYPE_0">%1$s</xliff:g> en <xliff:g id="TYPE_1">%2$s</xliff:g> in <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Stoor <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> en <xliff:g id="TYPE_2">%3$s</xliff:g> in <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Stoor"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nee, dankie"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"wagwoord"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adres"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredietkaart"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 400f304cf585..5a7e64399c3e 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"የሰውነት ዳሳሾች"</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="permgrouplab_aural" msgid="965607064083134896">"ሙዚቃ"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"ሙዚቃዎን መድረስ"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ቀን ሙዚቃዎን እንዲደርስ ይፈቀድለት?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"ፎቶዎች እና ቪዲዮዎች"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"የእርስዎን ፎቶዎች እና ቪዲዮዎች መድረስ"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"<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> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"መተግበሪያው ጥቅም ላይ እንዲውሉ የጣት አሻራ ቅንብር ደንቦችን ለማከል እና ለመሰረዝ የሚያስችሉ ስልቶችን እንዲያስጀምር ያስችለዋል።"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"የጣት አሻራ ሃርድዌርን ተጠቀም"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"መተግበሪያው የጣት አሻራ ሃርድዌር ለማረጋገጥ ስራ እንዲጠቀም ያስችለዋል"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"የሙዚቃ ስብስብዎን ማንበብ"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"መተግበሪያው የሙዚቃ ስብስብዎን እንዲያነብብ ያስችለዋል።"</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"የሙዚቃ ስብስብዎን መቀየር"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"መተግበሪያው የሙዚቃ ስብስብዎን እንዲቀይረው ያስችለዋል።"</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"የቪዲዮ ስብስብዎን ማንበብ"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"መተግበሪያው የቪዲዮ ስብስብዎን እንዲያነብብ ያስችለዋል።"</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"የቪዲዮ ስብስብዎን መቀየር"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"መተግበሪያው የፎቶ ስብስብዎን እንዲቀይረው ያስችለዋል።"</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"የፎቶ ስብስብዎን ማንበብ"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"መተግበሪያው የፎቶ ስብስብዎን እንዲያነብብ ያስችለዋል።"</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"የፎቶ ስብስብዎን መቀየር"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"መተግበሪያው የፎቶ ስብስብዎን እንዲቀይረው ያስችለዋል።"</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"አካባቢዎችን ከሚዲያ ስብስብዎ ማንበብ"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"መተግበሪያው አካባቢዎችን ከሚዲያ ስብስብዎ እንዲያነብብ ያስችለዋል።"</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"ከፊል የጣት አሻራ ተገኝቷል። እባክዎ እንደገና ይሞክሩ።"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ጣት አሻራን መስራት አልተቻለም። እባክዎ እንደገና ይሞክሩ።"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"የጣት አሻራ ዳሳሽ ቆሽሿል። እባክዎ ያጽዱት እና እንደገና ይሞክሩ።"</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> ወደ <b><xliff:g id="LABEL">%2$s</xliff:g></b> ይቀመጥ?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> እና <xliff:g id="TYPE_1">%2$s</xliff:g> ወደ <b><xliff:g id="LABEL">%3$s</xliff:g></b> ይቀመጡ?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>፣ <xliff:g id="TYPE_1">%2$s</xliff:g> እና <xliff:g id="TYPE_2">%3$s</xliff:g> ወደ <b><xliff:g id="LABEL">%4$s</xliff:g></b> ይቀመጡ?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"ወደ <b><xliff:g id="LABEL">%1$s</xliff:g></b> ይዘመን?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> ወደ <b><xliff:g id="LABEL">%2$s</xliff:g></b> ይዘመን?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> እና <xliff:g id="TYPE_1">%2$s</xliff:g> ወደ <b><xliff:g id="LABEL">%3$s</xliff:g></b> ይዘመኑ?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>፣ <xliff:g id="TYPE_1">%2$s</xliff:g> እና <xliff:g id="TYPE_2">%3$s</xliff:g> ወደ <b><xliff:g id="LABEL">%4$s</xliff:g></b> ይዘመኑ?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"አስቀምጥ"</string> <string name="autofill_save_no" msgid="2625132258725581787">"አይ፣ አመሰግናለሁ"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"አዘምን"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"የይለፍ ቃል"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"አድራሻ"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ክሬዲት ካርድ"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 6d5ee11e4ff1..d46f758617ca 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -312,6 +312,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"أجهزة استشعار الجسم"</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="permgrouplab_aural" msgid="965607064083134896">"الموسيقى"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"الوصول إلى الموسيقى"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"هل تريد السماح لتطبيق <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> بالوصول إلى الموسيقى؟"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"الصور والفيديوهات"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"الوصول إلى صورك وفيديوهاتك"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"هل تريد السماح لتطبيق <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> @@ -506,6 +512,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"للسماح للتطبيق باستدعاء طرق لإضافة نماذج من بصمات الأصابع وحذفها."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"لاستخدام أجهزة بصمة الإصبع"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"للسماح للتطبيق باستخدام أجهزة بصمة الإصبع للمصادقة"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"قراءة مجموعتك الموسيقية"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"للسماح للتطبيق بقراءة مجموعتك الموسيقية."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"تعديل مجموعتك الموسيقية"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"للسماح للتطبيق بتعديل مجموعتك الموسيقية."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"قراءة مجموعة الفيديو التابعة لك"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"للسماح للتطبيق بقراءة مجموعة الفيديوهات التابعة لك."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"تعديل مجموعة الفيديو التابعة لك"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"يسمح للتطبيق بتعديل مجموعة الفيديوهات التابعة لك."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"قراءة مجموعة صورك"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"للسماح للتطبيق بقراءة مجموعة صورك."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"تعديل مجموعة صورك"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"للسماح للتطبيق بتعديل مجموعة صورك."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"قراءة المواقع من مجموعة الوسائط التابعة لك"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"للسماح للتطبيق بقراءة المواقع من مجموعة الوسائط التابعة لك."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"تم اكتشاف بصمة الإصبع بشكل جزئي؛ يرجى إعادة المحاولة."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"تعذرت معالجة بصمة الإصبع. يُرجى إعادة المحاولة."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"جهاز استشعار بصمات الأصابع متسخ، يرجى تنظيفه وإعادة المحاولة."</string> @@ -2012,8 +2032,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"هل تريد حفظ <xliff:g id="TYPE">%1$s</xliff:g> في <b><xliff:g id="LABEL">%2$s</xliff:g></b>؟"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"هل تريد حفظ <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> في <b><xliff:g id="LABEL">%3$s</xliff:g></b>؟"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"هل تريد حفظ <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> و<xliff:g id="TYPE_2">%3$s</xliff:g> في <b><xliff:g id="LABEL">%4$s</xliff:g></b>؟"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"هل تريد التعديل إلى <b><xliff:g id="LABEL">%1$s</xliff:g></b>؟"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"هل تريد تعديل <xliff:g id="TYPE">%1$s</xliff:g> إلى <b><xliff:g id="LABEL">%2$s</xliff:g></b>؟"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"هل تريد تعديل <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> إلى <b><xliff:g id="LABEL">%3$s</xliff:g></b>؟"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"هل تريد تعديل <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> و<xliff:g id="TYPE_2">%3$s</xliff:g> إلى <b><xliff:g id="LABEL">%4$s</xliff:g></b>؟"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"حفظ"</string> <string name="autofill_save_no" msgid="2625132258725581787">"لا، شكرًا"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"تعديل"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"كلمة مرور"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"عنوان"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"بطاقة ائتمان"</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index 2f9e4442396f..0e8aa001e925 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"শৰীৰৰ ছেন্সৰসমূহ"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ৱিণ্ড\' সমল বিচাৰি উলিয়াওক"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"আপুনি যোগাযোগ কৰি থকা ৱিণ্ড\'খনৰ সমল পৰীক্ষা কৰক।"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"স্পৰ্শৰদ্বাৰা অন্বেষণ কৰাৰ সুবিধা অন কৰক"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ফিংগাৰপ্ৰিণ্ট টেম্প্লেটসমূহ যোগ কৰা বা মচাৰ পদ্ধতিসমূহ কামত লগাবলৈ নিৰ্দেশ দিবলৈ এপটোক অনুমতি দিয়ে।"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ফিংগাৰপ্ৰিণ্ট হাৰ্ডৱেৰ ব্যৱহাৰ কৰিব পাৰে"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"প্ৰমাণীকৰণৰ বাবে ফিংগাৰপ্ৰিণ্ট হাৰ্ডৱেৰ ব্য়ৱহাৰ কৰিবলৈ এপটোক অনুমতি দিয়ে"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"ফিংগাৰপ্ৰিণ্ট আংশিকভাৱে চিনাক্ত কৰা হৈছে। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক৷"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ফিগাৰপ্ৰিণ্টৰ প্ৰক্ৰিয়া সম্পাদন কৰিবপৰা নগ\'ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক৷"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো লেতেৰা হৈ আছে। অনুগ্ৰহ কৰি পৰিষ্কাৰ কৰি আকৌ চেষ্টা কৰক।"</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>ক <b><xliff:g id="LABEL">%2$s</xliff:g></b>ত ছেভ কৰিবনে?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> আৰু <xliff:g id="TYPE_1">%2$s</xliff:g>ক <b><xliff:g id="LABEL">%3$s</xliff:g></b>ত ছেভ কৰিবনে?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, আৰু <xliff:g id="TYPE_2">%3$s</xliff:g>ক <b><xliff:g id="LABEL">%4$s</xliff:g></b>ত ছেভ কৰিবনে?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"ছেভ কৰক"</string> <string name="autofill_save_no" msgid="2625132258725581787">"নালাগে, ধন্যবাদ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"পাছৱৰ্ড"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ঠিকনা"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ক্ৰেডিট কাৰ্ড"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index 7ddd88c20736..6464c6126e82 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Bədən Sensorları"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"Həyati əlamətlər haqqında sensor dataya daxil olun"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinə həyati əlamətlər haqqında sensor dataya daxil olmaq icazəsi verilsin?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Musiqi"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"musiqiyə daxil olun"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin musiqiyə daxil olmağına icazə verilsin?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Foto və Videolar"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"foto və videolara daxil olun"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tətbiqinin foto və videolarınıza daxil olmağına icazə verilsin?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pəncərənin məzmununu əldə edin"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Əlaqədə olduğunuz pəncərənin məzmununu nəzərdən keçirin."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Toxunaraq Kəşf et funksiyasını yandırın"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Proqrama istifadə üçün barmaq izi şablonlarını əlavə etmək və silmək üçün üsullara müraciət etməyə imkan verir."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"barmaq izi avadanlığından istifadə edin"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Proqrama əsilliyi yoxlama üçün barmaq izi avadanlığından istifadə etməyə imkan verir"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"musiqi kolleksiyanızı oxuyun"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Tətbiqin musiqi kolleksiyanızı oxumasına icazə verir."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"musiqi kolleksiyanıza düzəliş edin"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Tətbiqin musiqi kolleksiyanıza düzəliş etməsinə icazə verir."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"video kolleksiyanızı oxuyun"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Tətbiqin video kolleksiyanızı oxumasına icazə verin."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"video kolleksiyanıza düzəliş edin"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Tətbiqin video kolleksiyanıza düzəliş etməsinə icazə verin."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"foto kolleksiyanızı oxuyun"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Tətbiqin foto kolleksiyanızı oxumasına icazə verir."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"foto kolleksiyanıza düzəliş edin"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Tətbiqin foto kolleksiyanıza düzəliş etməsinə icazə verir."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"media kolleksiyanızdan məkanları oxuyun"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Tətbiqin media kolleksiyanızdan məkanları oxumasına icazə verin."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Barmaq qismən müəyyən olundu. Lütfən, yenidən cəhd edin."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Barmaq izi tanınmadı. Lütfən, yenidən cəhd edin."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Barmaq izi sensoru çirklidir. Lütfən, təmizləyin və yenidən cəhd edin."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g><b> etiketində yadda saxlansın?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> və <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> etiketində yadda saxlansın?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> və <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> etiketində yadda saxlansın?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b> etiketində yenilənsin?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g><b> etiketində yenilənsin?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> və <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> etiketində yenilənsin?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> və <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> etiketində yenilənsin?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Yadda saxlayın"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Xeyr, çox sağ olun"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Yeniləyin"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"parol"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ünvan"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredit kartı"</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 6338e690081f..dcb7e21e23c9 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -303,6 +303,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Senzori za telo"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"pristupa podacima senzora o vitalnim funkcijama"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Želite li da omogućite da <b><xliff:g id="APP_NAME">%1$s</xliff:g></b>pristupa podacima senzora o vitalnim funkcijama?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"da preuzima sadržaj prozora"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Proverava sadržaj prozora sa kojim ostvarujete interakciju."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"da uključi Istraživanja dodirom"</string> @@ -497,6 +509,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Dozvoljava aplikaciji da aktivira metode za dodavanje i brisanje šablona otisaka prstiju koji će se koristiti."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"koristi hardver za otiske prstiju"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Dozvoljava aplikaciji da koristi hardver za otiske prstiju radi potvrde autentičnosti"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je delimični otisak prsta. Probajte ponovo."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nije uspela obrada otiska prsta. Probajte ponovo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor za otiske prstiju je prljav. Očistite ga i pokušajte ponovo."</string> @@ -1907,8 +1947,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Želite li da sačuvate stavku <xliff:g id="TYPE">%1$s</xliff:g> u: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Želite li da sačuvate stavke <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> u: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Želite li da sačuvate stavke <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> u: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Sačuvaj"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ne, hvala"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"lozinka"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditna kartica"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index c93fa5100842..9041156f8aae 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -306,6 +306,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Датчыкі цела"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Атрымліваць змесціва вакна"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Аналізаваць змесціва актыўнага вакна."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Уключаць Азнаямленне дотыкам"</string> @@ -500,6 +512,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Дазваляе праграме выкарыстоўваць спосабы дадання і выдалення шаблонаў адбіткаў пальцаў для выкарыстання."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"выкарыстоўваць апаратныя сродкі для адбіткаў пальцаў"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Дазваляе праграме выкарыстоўваць апаратныя сродкі распазнання адбіткаў пальцаў для аўтэнтыфікацыі"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Выяўлена частка адбіткаў пальцаў. Паспрабуйце яшчэ раз."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не атрымалася апрацаваць адбітак пальца. Паспрабуйце яшчэ раз."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Датчык адбіткаў пальцаў брудны. Ачысціце яго і паспрабуйце яшчэ раз."</string> @@ -1942,8 +1982,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Захаваць <xliff:g id="TYPE">%1$s</xliff:g> у <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Захаваць <xliff:g id="TYPE_0">%1$s</xliff:g> і <xliff:g id="TYPE_1">%2$s</xliff:g> у <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Захаваць <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> і <xliff:g id="TYPE_2">%3$s</xliff:g> у <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Захаваць"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Не, дзякуй"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"пароль"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"адрас"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"крэдытная картка"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index d05d78c9d1e5..80c6cebe5eec 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Телесни сензори"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Извличане на съдържанието от прозореца"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Инспектиране на съдържанието на прозорец, с който взаимодействате."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включване на изследването чрез докосване"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Разрешава на приложението да извиква начини за добавяне и изтриване на шаблони за отпечатъци, които да се използват."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"използване на хардуера за отпечатъци"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Разрешава на приложението да използва хардуера за отпечатъци с цел удостоверяване"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Открит е частичен отпечатък. Моля, опитайте отново."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Отпечатъкът не можа да се обработи. Моля, опитайте отново."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензорът за отпечатъци е мръсен. Моля, почистете го и опитайте отново."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> да се запази ли в/ъв <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> да се запазят ли в/ъв <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> да се запазят ли в/ъв <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Запазване"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Не, благодаря"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"Паролата"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"Адресът"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"Кредитната карта"</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index 61232e0cdd53..026a759360f0 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"বডি সেন্সরগুলি"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"উইন্ডোর কন্টেন্ট পুনরুদ্ধার করে"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"আপনি ইন্টারঅ্যাক্ট করছেন এমন একটি উইন্ডোর সামগ্রীকে সযত্নে নিরীক্ষণ করে৷"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"স্পর্শের মাধ্যমে অন্বেষণ করা চালু করুন"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ব্যবহার করার জন্য আঙ্গুলের ছাপের টেম্প্লেটগুলি যোগ করা এবং মোছার পদ্ধতিগুলি গ্রহন করতে অ্যাপ্লিকেশানটিতে অমুমতি দেয়৷"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"আঙ্গুলের ছাপ নেওয়ার হার্ডওয়্যার ব্যবহার করুন"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"অনুমোদনের জন্য আঙ্গুলের ছাপ নেওয়ার হার্ডওয়্যার ব্যবহার করতে অ্যাপ্লিকেশানটিতে অনুমতি দেয়"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"আঙ্গুলের ছাপ আংশিক শনাক্ত করা হয়েছে৷ অনুগ্রহ করে আবার চেষ্টা করুন৷"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"আঙ্গুলের ছাপ প্রক্রিয়া করা যায়নি৷ অনুগ্রহ করে আবার চেষ্টা করুন৷"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"আঙ্গুলের ছাপ নেওয়ার সেন্সরটি অপরিস্কার৷ অনুগ্রহ করে পরিষ্কার করে আবার চেষ্টা করুন৷"</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> কে <b><xliff:g id="LABEL">%2$s</xliff:g></b>এ সংরক্ষণ করবেন?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> এবং <xliff:g id="TYPE_1">%2$s</xliff:g> কে <b><xliff:g id="LABEL">%3$s</xliff:g></b> এ সংরক্ষণ করবেন?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, এবং <xliff:g id="TYPE_2">%3$s</xliff:g> কে <b><xliff:g id="LABEL">%4$s</xliff:g></b> এ সংরক্ষণ করবেন?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"সেভ করুন"</string> <string name="autofill_save_no" msgid="2625132258725581787">"না থাক"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"পাসওয়ার্ড"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ঠিকানা"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ক্রেডিট কার্ড"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index ccf8aa64183c..049b3835e915 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -303,6 +303,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Tjelesni senzori"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"pristupa podacima senzora o vašim vitalnim funkcijama"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Dozvoliti aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> pristup senzornim podacima o vašim vitalnim znacima?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Preuzima sadržaj prozora"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Pregleda sadržaj prozora koji trenutno koristite."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključi opciju Istraživanje dodirom"</string> @@ -497,6 +509,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Omogućava aplikaciji da koristi metode za dodavanje i brisanje šablona otisaka prstiju za upotrebu."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"korištenje hardvera za otiske prstiju"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Omogućava aplikaciji da za provjeru vjerodostojnosti koristi hardver za otiske prstiju"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je djelomičan otisak prsta. Pokušajte ponovo."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nije uspjela obrada otiska prsta. Pokušajte ponovo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor za otisak prsta je prljav. Očistite ga i pokušajte ponovo."</string> @@ -1909,8 +1949,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Želite li da se <xliff:g id="TYPE">%1$s</xliff:g> sačuva u <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Želite li da se <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> sačuvaju u <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Želite li da se <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, i <xliff:g id="TYPE_2">%3$s</xliff:g> sačuvaju <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Sačuvaj"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ne, hvala"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"lozinka"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditna kartica"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index da816a1e9f61..c75fc74ec7ab 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensors corporals"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"accedir a les dades del sensor sobre els signes vitals"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vols permetre que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> accedeixi a les dades del sensor de constants vitals?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contingut de la finestra"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contingut d\'una finestra amb què estàs interaccionant."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar Exploració tàctil"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permet que l\'aplicació invoqui mètodes per afegir i suprimir plantilles d\'empremtes digitals que es puguin fer servir."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Utilitzar el maquinari d\'empremtes digitals"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permet que l\'aplicació faci servir maquinari d\'empremtes digitals per a l\'autenticació"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"S\'ha detectat una empremta digital parcial. Torna-ho a provar."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No s\'ha pogut processar l\'empremta digital. Torna-ho a provar."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor d\'empremtes digitals està brut. Neteja\'l i torna-ho a provar."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vols desar <xliff:g id="TYPE">%1$s</xliff:g> a <xliff:g id="LABEL">%2$s</xliff:g>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vols desar <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> a <xliff:g id="LABEL">%3$s</xliff:g>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vols desar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> a <xliff:g id="LABEL">%4$s</xliff:g>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Desa"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No, gràcies"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"contrasenya"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adreça"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"targeta de crèdit"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 40b5e29308d9..7d9c3c593803 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -306,6 +306,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Tělesné senzory"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"přístup k datům ze snímačů vašich životních funkcí"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Povolit aplikaci <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> přístup k údajům ze snímačů vašich životních funkcí?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítat obsah oken"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Může prozkoumávat obsah oken, se kterými pracujete."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnout funkci Prozkoumání dotykem"</string> @@ -500,6 +512,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Umožňuje aplikaci volat metody k přidání a smazání šablon otisků prstů, které budou použity."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"použití hardwaru na čtení otisků prstů"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Umožňuje aplikaci použít k ověření hardware na čtení otisků prstů"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Byla zjištěna jen část otisku prstu. Zkuste to znovu."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Zpracování otisku prstu se nezdařilo. Zkuste to znovu."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor otisků prstů je znečištěn. Vyčistěte jej a zkuste to znovu."</string> @@ -1942,8 +1982,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Uložit položku <xliff:g id="TYPE">%1$s</xliff:g> do služby <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Uložit položky <xliff:g id="TYPE_0">%1$s</xliff:g> a <xliff:g id="TYPE_1">%2$s</xliff:g> do služby <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Uložit položky <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> a <xliff:g id="TYPE_2">%3$s</xliff:g> do služby <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Uložit"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ne, děkuji"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"heslo"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"platební karta"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 947754f12a05..909cd10721c6 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Kropssensorer"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"få adgang til sensordata om dine livstegn"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vil du give <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> adgang til sensordata om dine livstegn?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Hente indholdet i vinduet"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Undersøge indholdet i et vindue, du interagerer med."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivere Udforsk ved berøring"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Tillader, at appen kan køre metoder til at tilføje og slette fingeraftryksskabeloner"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"bruge fingeraftrykhardware"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Tillader, at appen kan bruge fingeraftrykhardware til godkendelse"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Der blev registreret et delvist fingeraftryk. Prøv igen."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Fingeraftrykket kunne ikke behandles. Prøv igen."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensoren til registrering af fingeraftryk er beskidt. Tør den af, og prøv igen."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vil du gemme <xliff:g id="TYPE">%1$s</xliff:g> i <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vil du gemme <xliff:g id="TYPE_0">%1$s</xliff:g> og <xliff:g id="TYPE_1">%2$s</xliff:g> i <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vil du gemme <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> og <xliff:g id="TYPE_2">%3$s</xliff:g> i <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Gem"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nej tak"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"adgangskode"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresse"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditkort"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 8dc0ba481a97..e8434887ed0a 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Körpersensoren"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"auf Sensordaten zu deinen Vitaldaten zugreifen"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> erlauben, auf Sensordaten zu deinen Vitalfunktionen zuzugreifen?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Fensterinhalte abrufen"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Die Inhalte eines Fensters, mit dem du interagierst, werden abgerufen."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\"Tippen & Entdecken\" aktivieren"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Erlaubt der App, Methoden zum Hinzufügen und Löschen zu verwendender Fingerabdruckvorlagen aufzurufen"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Fingerabdruckhardware verwenden"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Erlaubt der App, Fingerabdruckhardware zur Authentifizierung zu verwenden"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Fingerabdruck teilweise erkannt. Versuche es erneut."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Fingerabdruck konnte nicht verarbeitet werden. Versuche es erneut."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerabdrucksensor ist verschmutzt. Reinige ihn und versuche es erneut."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> in <b><xliff:g id="LABEL">%2$s</xliff:g></b> speichern?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> und <xliff:g id="TYPE_1">%2$s</xliff:g> in <b><xliff:g id="LABEL">%3$s</xliff:g></b> speichern?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> und <xliff:g id="TYPE_2">%3$s</xliff:g> in <b><xliff:g id="LABEL">%4$s</xliff:g></b> speichern?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Speichern"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nein danke"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"Passwort"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"Adresse"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"Kreditkarte"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index c6acc9e058ca..ef8b072c476b 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Αισθητήρες σώματος"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ανάκτηση του περιεχομένου του παραθύρου"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Έλεγχος του περιεχομένου ενός παραθύρου με το οποίο αλληλεπιδράτε."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ενεργοποίηση της \"Εξερεύνησης με άγγιγμα\""</string> @@ -320,7 +332,7 @@ <string name="permdesc_expandStatusBar" msgid="6917549437129401132">"Επιτρέπει στην εφαρμογή να αναπτύξει ή να συμπτύξει τη γραμμή κατάστασης."</string> <string name="permlab_install_shortcut" msgid="4279070216371564234">"εγκαθιστά συντομεύσεις"</string> <string name="permdesc_install_shortcut" msgid="8341295916286736996">"Επιτρέπει σε μια εφαρμογή την προσθήκη συντομεύσεων στην Αρχική οθόνη χωρίς την παρέμβαση του χρήστη."</string> - <string name="permlab_uninstall_shortcut" msgid="4729634524044003699">"καταργεί την εγκατάσταση συντομεύσεων"</string> + <string name="permlab_uninstall_shortcut" msgid="4729634524044003699">"απεγκατάσταση συντομεύσεων"</string> <string name="permdesc_uninstall_shortcut" msgid="6745743474265057975">"Επιτρέπει στην εφαρμογή την κατάργηση συντομεύσεων από την Αρχική οθόνη χωρίς την παρέμβαση του χρήστη."</string> <string name="permlab_processOutgoingCalls" msgid="3906007831192990946">"αναδρομολογεί τις εξερχόμενες κλήσεις"</string> <string name="permdesc_processOutgoingCalls" msgid="5156385005547315876">"Επιτρέπει στην εφαρμογή να βλέπει τον αριθμό που καλέσατε κατά τη διάρκεια μιας εξερχόμενης κλήσης με επιλογή ανακατεύθυνσης της κλήσης σε έναν διαφορετικό αριθμό ή διακοπής της κλήσης."</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Επιτρέπει στην εφαρμογή να επικαλείται μεθόδους για την προσθήκη και τη διαγραφή προτύπων μοναδικού χαρακτηριστικού για χρήση."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"χρησιμοποιεί τον εξοπλισμό δακτυλικού αποτυπώματος"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Επιτρέπει στην εφαρμογή να χρησιμοποιεί εξοπλισμό μοναδικού χαρακτηριστικού για έλεγχο ταυτότητας"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Εντοπίστηκε μερικό μοναδικό χαρακτηριστικό. Δοκιμάστε ξανά."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Δεν ήταν δυνατή η επεξεργασία του μοναδικού χαρακτηριστικού. Δοκιμάστε ξανά."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Ο αισθητήρας μοναδικού χαρακτηριστικού δεν είναι καθαρός. Καθαρίστε τον και δοκιμάστε ξανά."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Αποθήκευση <xliff:g id="TYPE">%1$s</xliff:g> σε <b><xliff:g id="LABEL">%2$s</xliff:g></b>;"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Αποθήκευση <xliff:g id="TYPE_0">%1$s</xliff:g> και <xliff:g id="TYPE_1">%2$s</xliff:g> σε <b><xliff:g id="LABEL">%3$s</xliff:g></b>;"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Αποθήκευση <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> και <xliff:g id="TYPE_2">%3$s</xliff:g> σε <b><xliff:g id="LABEL">%4$s</xliff:g></b>;"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Αποθήκευση"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Όχι, ευχαριστώ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"κωδικός πρόσβασης"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"διεύθυνση"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"πιστωτική κάρτα"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index f70ba3bef3d9..19d0916de752 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Body sensors"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Use fingerprint hardware"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No, thanks"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 1ab78f153d0d..1e2e0816df86 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Body sensors"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Use fingerprint hardware"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No, thanks"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index f70ba3bef3d9..19d0916de752 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Body sensors"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Use fingerprint hardware"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No, thanks"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index f70ba3bef3d9..19d0916de752 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Body sensors"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window that you\'re interacting with."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Use fingerprint hardware"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No, thanks"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string> diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index a4c861560f65..68bc26163337 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Body Sensors"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"access sensor data about your vital signs"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access sensor data about your vital signs?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Music"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"access your music"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your music?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos & Videos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"access your photos & videos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Allow <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> to access your photos & videos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Retrieve window content"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspect the content of a window you\'re interacting with."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Turn on Explore by Touch"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Allows the app to invoke methods to add and delete fingerprint templates for use."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"use fingerprint hardware"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Allows the app to use fingerprint hardware for authentication"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"read your music collection"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Allows the app to read your music collection."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modify your music collection"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Allows the app to modify your music collection."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"read your video collection"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Allows the app to read your video collection."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modify your video collection"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Allows the app to modify your video collection."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"read your photo collection"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Allows the app to read your photo collection."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modify your photo collection"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Allows the app to modify your photo collection."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"read locations from your media collection"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Allows the app to read locations from your media collection."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Partial fingerprint detected. Please try again."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Couldn\'t process fingerprint. Please try again."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingerprint sensor is dirty. Please clean and try again."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Save <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Save <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Save <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Update to <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Update <xliff:g id="TYPE">%1$s</xliff:g> to <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Update <xliff:g id="TYPE_0">%1$s</xliff:g> and <xliff:g id="TYPE_1">%2$s</xliff:g> to <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Update <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, and <xliff:g id="TYPE_2">%3$s</xliff:g> to <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Save"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No thanks"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Update"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 2b7c4bfa6d9d..9969af373632 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporales"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceder a los datos del sensor acerca de tus signos vitales"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"¿Permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda a los datos del sensor de tus signos vitales?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Música"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"acceder a tu música"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"¿Quieres permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda a tu música?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotos y videos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"acceder a tus fotos y videos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"¿Quieres permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda a tus fotos y videos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contenido de las ventanas"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de la ventana con la que estés interactuando."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la Exploración táctil"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que la aplicación emplee métodos para agregar y eliminar plantillas de huellas digitales para su uso."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Utilizar hardware de huellas digitales"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que la aplicación utilice el hardware de huellas digitales para realizar la autenticación."</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"leer tu colección de música"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Permite que la app lea tu colección de música."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modificar tu colección de música"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Permite que la app modifique tu colección de música."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"leer tu colección de videos"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Permite que la app lea tu colección de videos."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modificar tu colección de videos"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Permite que la app modifique tu colección de videos."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"leer tu colección de fotos"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Permite que la app lea tu colección de fotos."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modificar tu colección de fotos"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Permite que la app modifique tu colección de fotos."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"leer ubicaciones de tu colección de contenido multimedia"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que la app lea las ubicaciones de tu colección de contenido multimedia."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"La huella digital se detectó parcialmente. Vuelve a intentarlo."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No se pudo procesar la huella digital. Vuelve a intentarlo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor de huellas digitales está sucio. Limpia el sensor y vuelve a intentarlo."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"¿Quieres guardar tu <xliff:g id="TYPE">%1$s</xliff:g> en <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"¿Quieres guardar tu <xliff:g id="TYPE_0">%1$s</xliff:g> y <xliff:g id="TYPE_1">%2$s</xliff:g> en <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"¿Quieres guardar tu <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> y <xliff:g id="TYPE_2">%3$s</xliff:g> en <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"¿Quieres actualizar los datos en <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"¿Quieres actualizar tu <xliff:g id="TYPE">%1$s</xliff:g> en <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"¿Quieres actualizar tu <xliff:g id="TYPE_0">%1$s</xliff:g> y <xliff:g id="TYPE_1">%2$s</xliff:g> en <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"¿Quieres actualizar tu <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, y <xliff:g id="TYPE_2">%3$s</xliff:g> en <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Guardar"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No, gracias"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Actualizar"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"contraseña"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"dirección"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"tarjeta de crédito"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 36d0eb73e6f7..55e05261f502 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporales"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceder a datos de sensores de tus constantes vitales"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"¿Quieres permitir que <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda a los datos del sensor sobre tus constantes vitales?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Comprobar el contenido de la ventana"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de una ventana con la que estés interactuando."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la exploración táctil"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que la aplicación invoque métodos para añadir y eliminar plantillas de huellas digitales y utilizarlas."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"utilizar hardware de huellas digitales"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que la aplicación utilice el hardware de huellas digitales para realizar la autenticación"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Se ha detectado una huella digital parcial. Vuelve a intentarlo."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"No se ha podido procesar la huella digital. Vuelve a intentarlo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"El sensor de huellas digitales está sucio. Límpialo y vuelve a intentarlo."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"¿Guardar <xliff:g id="TYPE">%1$s</xliff:g> en <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"¿Guardar <xliff:g id="TYPE_0">%1$s</xliff:g> y <xliff:g id="TYPE_1">%2$s</xliff:g> en <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"¿Guardar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> y <xliff:g id="TYPE_2">%3$s</xliff:g> en <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Guardar"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No, gracias"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"contraseña"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"dirección"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"tarjeta de crédito"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 1e73bf1fa038..758bf4409a58 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Kehaandurid"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"juurdepääs anduri andmetele teie eluliste näitajate kohta"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Kas lubada rakendusele <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> juurdepääs anduri andmetele teie eluliste näitajate kohta?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Akna sisu toomine"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kasutatava akna sisu kontrollimine."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Puudutusega sirvimise sisselülitamine"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Võimaldab rakendusel tühistada meetodid kasutatavate sõrmejäljemallide lisamiseks ja kustutamiseks."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"sõrmejälje riistvara kasutamine"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Võimaldab rakendusel autentimiseks kasutada sõrmejälje riistvara"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Tuvastati osaline sõrmejälg. Proovige uuesti."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Sõrmejälge ei õnnestunud töödelda. Proovige uuesti."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sõrmejäljeandur on must. Puhastage see ja proovige uuesti."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Kas salvestada üksus <xliff:g id="TYPE">%1$s</xliff:g> teenusesse <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Kas salvestada üksused <xliff:g id="TYPE_0">%1$s</xliff:g> ja <xliff:g id="TYPE_1">%2$s</xliff:g> teenusesse <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Kas salvestada üksused <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ja <xliff:g id="TYPE_2">%3$s</xliff:g> teenusesse <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Salvesta"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Tänan, ei"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"parool"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"aadress"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"krediitkaart"</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index aa6edaa015a3..567ca1863d8e 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -59,7 +59,7 @@ <string name="ClipMmi" msgid="6952821216480289285">"Sarrerako deien identifikazio-zerbitzua"</string> <string name="ClirMmi" msgid="7784673673446833091">"Irteerako deien identifikazio-zerbitzua"</string> <string name="ColpMmi" msgid="3065121483740183974">"Konektatutako linearen IDa"</string> - <string name="ColrMmi" msgid="4996540314421889589">"Konektatutako linearen ID murrizketa"</string> + <string name="ColrMmi" msgid="4996540314421889589">"Konektatutako linearen ID murriztapena"</string> <string name="CfMmi" msgid="5123218989141573515">"Dei-desbideratzea"</string> <string name="CwMmi" msgid="9129678056795016867">"Deia zain"</string> <string name="BaMmi" msgid="455193067926770581">"Deien debekuak"</string> @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Gorputz-sentsoreak"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"atzitu bizi-konstanteei buruzko sentsorearen datuak"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Bizi-konstanteei buruzko sentsorearen datuak atzitzea baimendu nahi diozu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioari?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Eskuratu leihoko edukia"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Arakatu irekita daukazun leihoko edukia."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktibatu \"Arakatu ukituta\""</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Erreferentzia-gako digitalen txantiloiak gehitzeko eta ezabatzeko metodoei dei egitea baimentzen die aplikazioei."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"erabili erreferentzia-gako digitalen hardwarea"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Autentifikatzeko erreferentzia-gako digitalen hardwarea erabiltzea baimentzen die aplikazioei."</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hatz-marka digitala ez da osorik hauteman. Saiatu berriro."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ezin izan da prozesatu hatz-marka. Saiatu berriro."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Hatz-marka digitalen sentsorea zikina dago. Garbi ezazu, eta saiatu berriro."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b> zerbitzuan gorde nahi duzu?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> eta <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> zerbitzuan gorde nahi dituzu?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> eta <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> zerbitzuan gorde nahi dituzu?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Gorde"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ez, eskerrik asko"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"pasahitza"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"helbidea"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditu-txartela"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index d8067f0a3f2a..b64937c694aa 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"حسگرهای بدن"</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="permgrouplab_aural" msgid="965607064083134896">"موسیقی"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"دسترسی به موسیقی شما"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"به <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> اجازه داده شود به موسیقی شما دسترسی پیدا کند؟"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"عکس و ویدیو"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"دسترسی به عکسها و ویدیوهایتان"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"به <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> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"به برنامه امکان میدهد روشهایی را برای افزودن و حذف الگوهای اثر انگشت جهت استفاده، فعال کند."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"استفاده از سختافزار اثر انگشت"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"به برنامه امکان میدهد از سختافزار اثر انگشت برای احراز هویت استفاده کند"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"خواندن مجموعه موسیقی شما"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"به برنامه اجازه میدهد مجموعه موسیقیتان را بخواند."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"تغییر مجموعه موسیقی شما"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"به برنامه اجازه میدهد مجموعه موسیقیتان را تغییر دهد."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"خواندن مجموعه ویدیوی شما"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"به برنامه اجازه میدهد مجموعه ویدیویتان را بخواند."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"تغییر مجموعه ویدیوی شما"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"به برنامه اجازه میدهد مجموعه ویدیویتان را تغییر دهد."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"خواندن مجموعه عکس شما"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"به برنامه اجازه میدهد مجموعه عکستان را بخواند."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"تغییر مجموعه عکس شما"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"به برنامه اجازه میدهد مجموعه عکستان را تغییر دهد."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"خواندن مکانها از مجموعه رسانه شما"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"به برنامه اجازه میدهد مکانها را از مجموعه رسانهتان بخواند."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"بخشی از اثر انگشت شناسایی شد. لطفاً دوباره امتحان کنید."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"اثرانگشت پردازش نشد. لطفاً دوباره امتحان کنید."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"حسگر اثر انگشت کثیف است. لطفاً آن را تمیز کنید و دوباره امتحان نمایید."</string> @@ -1410,7 +1430,7 @@ <string name="disable_tether_notification_message" msgid="2913366428516852495">"برای جزئیات، با سرپرستتان تماس بگیرید"</string> <string name="back_button_label" msgid="2300470004503343439">"برگشت"</string> <string name="next_button_label" msgid="1080555104677992408">"بعدی"</string> - <string name="skip_button_label" msgid="1275362299471631819">"پرش"</string> + <string name="skip_button_label" msgid="1275362299471631819">"رد شدن"</string> <string name="no_matches" msgid="8129421908915840737">"مورد منطبقی موجود نیست"</string> <string name="find_on_page" msgid="1946799233822820384">"یافتن در صفحه"</string> <plurals name="matches_found" formatted="false" msgid="1210884353962081884"> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> در <b><xliff:g id="LABEL">%2$s</xliff:g></b> ذخیره شود؟"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> و <xliff:g id="TYPE_1">%2$s</xliff:g> در <b><xliff:g id="LABEL">%3$s</xliff:g></b> ذخیره شوند؟"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>، <xliff:g id="TYPE_1">%2$s</xliff:g> و <xliff:g id="TYPE_2">%3$s</xliff:g> در <b><xliff:g id="LABEL">%4$s</xliff:g></b> ذخیره شوند؟"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"به <b><xliff:g id="LABEL">%1$s</xliff:g></b> بهروزرسانی شود؟"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> به <b><xliff:g id="LABEL">%2$s</xliff:g></b> بهروزرسانی شود؟"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> و <xliff:g id="TYPE_1">%2$s</xliff:g> به <b><xliff:g id="LABEL">%3$s</xliff:g></b> بهروزرسانی شود؟"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>، <xliff:g id="TYPE_1">%2$s</xliff:g>، و <xliff:g id="TYPE_2">%3$s</xliff:g> به <b><xliff:g id="LABEL">%4$s</xliff:g></b> بهروزرسانی شود؟"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"ذخیره"</string> <string name="autofill_save_no" msgid="2625132258725581787">"نه سپاسگزارم"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"بهروزرسانی"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"گذرواژه"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"نشانی"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"کارت اعتباری"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 36a656b0f3d1..e13a01fdcce7 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Kehon anturit"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"käyttää anturitietoja elintoiminnoistasi"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Saako <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> käyttää anturitietoja elintoiminnoistasi?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Musiikki"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"käyttää musiikkiasi"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Saako <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> käyttää musiikkiasi?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Kuvat ja videot"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"käyttää kuvia ja videoita"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Saako <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> käyttää kuviasi ja videoitasi?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Noutaa ikkunan sisältöä"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tarkistaa käyttämäsi ikkunan sisältö."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ottaa kosketuksella tutkimisen käyttöön"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Sallii sovelluksen käyttää menetelmiä, joilla voidaan lisätä tai poistaa sormenjälkimalleja."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"sormenjälkilaitteiston käyttö"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Sallii sovelluksen käyttää sormenjälkilaitteistoa todennukseen."</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"lukea musiikkikokoelmaasi"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Antaa sovelluksen lukea musiikkikokoelmaasi."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"muokata musiikkikokoelmaasi"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Antaa sovelluksen muokata musiikkikokoelmaasi."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"lukea videokokoelmaasi"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Antaa sovelluksen lukea videokokoelmaasi."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"muokata videokokoelmaasi"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Antaa sovelluksen muokata videokokoelmaasi."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"lukea kuvakokoelmaasi"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Antaa sovelluksen lukea kuvakokoelmaasi."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"muokata kuvakokoelmaasi"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Antaa sovelluksen muokata kuvakokoelmaasi."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"lukea mediakokoelmasi sijainteja"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Antaa sovelluksen lukea mediakokoelmasi sijainteja."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Sormenjälki havaittiin vain osittain. Yritä uudelleen."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Sormenjäljen käsittely epäonnistui. Yritä uudelleen."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sormenjälkitunnistin on likainen. Puhdista tunnistin ja yritä uudelleen."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Tallennetaanko <xliff:g id="TYPE">%1$s</xliff:g> palveluun <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Tallennetaanko <xliff:g id="TYPE_0">%1$s</xliff:g> ja <xliff:g id="TYPE_1">%2$s</xliff:g> palveluun <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Tallennetaanko <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ja <xliff:g id="TYPE_2">%3$s</xliff:g> palveluun <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Muutetaanko tämä palvelussa <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Muutetaanko <xliff:g id="TYPE">%1$s</xliff:g>, jonka <b><xliff:g id="LABEL">%2$s</xliff:g></b> on tallentanut?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Muutetaanko <xliff:g id="TYPE_0">%1$s</xliff:g> ja <xliff:g id="TYPE_1">%2$s</xliff:g>, jotka <b><xliff:g id="LABEL">%3$s</xliff:g></b> on tallentanut?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Muutetaanko <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ja <xliff:g id="TYPE_2">%3$s</xliff:g>, jotka <b><xliff:g id="LABEL">%4$s</xliff:g></b> on tallentanut?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Tallenna"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ei kiitos"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Muuta"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"salasana"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"osoite"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"luottokortti"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index eaa2ba005482..fda01a05ab75 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Capteurs corporels"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"accéder aux données des capteurs sur vos signes vitaux"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Autoriser « <xliff:g id="APP_NAME">%1$s</xliff:g> » à accéder aux données des capteurs pour vos signes vitaux?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Musique"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"accéder à votre musique"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder à votre musique?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Photos et vidéos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"accéder à vos photos et vos vidéos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Autoriser <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> à accéder à vos photos et vos videos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permet à l\'application de faire appel à des méthodes d\'ajout et de suppression de modèles d\'empreinte digitale que vous pouvez utiliser."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"utiliser le matériel d\'empreinte digitale"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permet à l\'application d\'utiliser du matériel d\'empreinte digitale pour l\'authentification"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"lire votre collection de musique"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Autoriser l\'application à lire votre collection de musique."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modifier votre collection de musique"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Autoriser l\'application à modifier votre collection de musique."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"lire votre collection de vidéos"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Autoriser l\'application à lire votre collection de vidéos."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modifier votre collection de vidéos"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Autoriser l\'application à modifier votre collection de vidéos."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"lire votre collection de photos"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Autoriser l\'application à lire votre collection de photos."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modifier votre collection de photos"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Autoriser l\'application à modifier votre collection de photos."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"lire les positions indiquées dans votre collection multimédia"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Autoriser l\'application à lire les positions indiquées dans votre collection multimédia."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Empreinte digitale partielle détectée. Veuillez essayer de nouveau."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossible de traiter les empreintes digitales. Veuillez essayer de nouveau."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Le capteur d\'empreintes digitales est sale. Veuillez le nettoyer et essayer de nouveau."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Enregistrer <xliff:g id="TYPE">%1$s</xliff:g> dans <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Enregistrer <xliff:g id="TYPE_0">%1$s</xliff:g> et <xliff:g id="TYPE_1">%2$s</xliff:g> dans <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Enregistrer <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> et <xliff:g id="TYPE_2">%3$s</xliff:g> dans <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Mettre à jour vers <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Mettre à jour <xliff:g id="TYPE">%1$s</xliff:g> vers <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Mettre à jour <xliff:g id="TYPE_0">%1$s</xliff:g> et <xliff:g id="TYPE_1">%2$s</xliff:g> vers <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Mettre à jour <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> et <xliff:g id="TYPE_2">%3$s</xliff:g> vers <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Enregistrer"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Non, merci"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Mettre à jour"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"mot de passe"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresse"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"carte de crédit"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 4e15595e1f45..94d33db84a1e 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecte le contenu d\'une fenêtre avec laquelle vous interagissez."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Autoriser l\'application à invoquer des méthodes pour ajouter et supprimer des modèles d\'empreintes digitales"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Utiliser le matériel d\'empreintes digitales"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Autoriser l\'application à utiliser le matériel d\'empreintes digitales pour l\'authentification"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Empreinte numérique partiellement détectée. Veuillez réessayer."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossible de reconnaître l\'empreinte numérique. Veuillez réessayer."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Le lecteur d\'empreintes numériques est sale. Veuillez le nettoyer, puis réessayer."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Enregistrer <xliff:g id="TYPE">%1$s</xliff:g> dans <b><xliff:g id="LABEL">%2$s</xliff:g></b> ?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Enregistrer <xliff:g id="TYPE_0">%1$s</xliff:g> et <xliff:g id="TYPE_1">%2$s</xliff:g> dans <b><xliff:g id="LABEL">%3$s</xliff:g></b> ?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Enregistrer <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> et <xliff:g id="TYPE_2">%3$s</xliff:g> dans <b><xliff:g id="LABEL">%4$s</xliff:g></b> ?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Enregistrer"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Non, merci"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"mot de passe"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresse"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"carte de paiement"</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index cf558400afad..a32a36e75d69 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores corporais"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceder aos datos do sensor sobre as túas constantes vitais"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Queres permitir que a aplicación <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acceda aos datos do sensor sobre as túas constantes vitais?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar contido da ventá"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona o contido dunha ventá coa que estás interactuando."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar a exploración táctil"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que a aplicación invoque métodos para engadir e eliminar modelos de uso de impresión dixital."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"usar hardware de impresión dixital"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que a aplicación utilice hardware de impresión dixital para a autenticación"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Detectouse unha impresión dixital parcial. Téntao de novo."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Non se puido procesar a impresión dixital. Téntao de novo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impresión dixital está sucio. Límpao e téntao de novo."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Queres gardar <xliff:g id="TYPE">%1$s</xliff:g> en: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Queres gardar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> en: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Queres gardar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> en: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Gardar"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Non, grazas"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"contrasinal"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"enderezo"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"tarxeta de crédito"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index d41a923327df..1cf889290d81 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"બોડી સેન્સર્સ"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"વિંડો કન્ટેન્ટ પુનઃપ્રાપ્ત કરો"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"તમે જેની સાથે ક્રિયા-પ્રતિક્રિયા કરી રહ્યાં છો તે વિંડોનું કન્ટેન્ટ તપાસો."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"સ્પર્શ કરીને શોધખોળ કરવું ચાલુ કરો"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"એપ્લિકેશનને ઉપયોગ માટે ફિંગરપ્રિન્ટ નમૂના ઉમેરવા અને કાઢી નાખવા માટે પદ્ધતિઓની વિનંતી કરવાની મંજૂરી આપે છે."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ફિંગરપ્રિન્ટ હાર્ડવેરનો ઉપયોગ કરો"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"એપ્લિકેશનને પ્રમાણીકરણ માટે ફિંગરપ્રિન્ટ હાર્ડવેરનો ઉપયોગ કરવાની મંજૂરી આપે છે"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"આંશિક ફિંગરપ્રિન્ટ મળી. કૃપા કરીને ફરી પ્રયાસ કરો."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ફિંગરપ્રિન્ટ પ્રક્રિયા કરી શકાઈ નથી. કૃપા કરીને ફરી પ્રયાસ કરો."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ફિંગરપ્રિન્ટ સેન્સર ગંદું છે. કૃપા કરીને સાફ કરો અને ફરી પ્રયાસ કરો."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>ને <b><xliff:g id="LABEL">%2$s</xliff:g></b>માં સાચવીએ?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> અને <xliff:g id="TYPE_1">%2$s</xliff:g>ને <b><xliff:g id="LABEL">%3$s</xliff:g></b>માં સાચવીએ?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> અને <xliff:g id="TYPE_2">%3$s</xliff:g>ને <b><xliff:g id="LABEL">%4$s</xliff:g></b>માં સાચવીએ?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"સાચવો"</string> <string name="autofill_save_no" msgid="2625132258725581787">"ના, આભાર"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"પાસવર્ડ"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"સરનામું"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ક્રેડિટ કાર્ડ"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 8c7a0d368ecf..a85d6fa11106 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"शरीर संवेदक"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विंडो की सामग्री वापस पाएं"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"उस विंडो की सामग्री की जाँच करें, जिसका आप इस्तेमाल कर रहे हैं."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"छूकर, किसी चीज़ से जुड़ी जानकारी सुनने की सुविधा चालू करें"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"उंगली की छाप वाले टेम्पलेट का उपयोग करने के लिए जोड़ने और हटाने हेतु ऐप को विधियां प्रारंभ करने देती है."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"उंगली की छाप के लिए हार्डवेयर का उपयोग करें"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"ऐप के प्रमाणीकरण के लिए उंगली की छाप हार्डवेयर का उपयोग करने देती है"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक फ़िंगरप्रिंट की पहचान की गई. कृपया पुनः प्रयास करें."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"फ़िंगरप्रिंट संसाधित नहीं हो सका. कृपया पुन: प्रयास करें."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"फ़िंगरप्रिंट सेंसर गंदा है. कृपया साफ़ करें और फिर कोशिश करें."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> को <b><xliff:g id="LABEL">%2$s</xliff:g></b> में सेव करें?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> और <xliff:g id="TYPE_1">%2$s</xliff:g> को <b><xliff:g id="LABEL">%3$s</xliff:g></b> में सेव करें?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> और <xliff:g id="TYPE_2">%3$s</xliff:g> को <b><xliff:g id="LABEL">%4$s</xliff:g></b> में सेव करें?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"सेव करें"</string> <string name="autofill_save_no" msgid="2625132258725581787">"नहीं, धन्यवाद"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"पासवर्ड"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"पता"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"क्रेडिट कार्ड"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 3baaf016da46..f9576e040508 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -303,6 +303,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Biometrijski senzori"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"pristupiti podacima senzora o vašim vitalnim znakovima"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Želite li dopustiti aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> da pristupa podacima senzora o vašim vitalnim znakovima?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dohvaćati sadržaj prozora"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Pregledat će sadržaj prozora koji upotrebljavate."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključiti značajku Istraži dodirom"</string> @@ -497,6 +509,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Aplikaciji omogućuje pozivanje načina za dodavanje i brisanje predložaka otisaka prstiju koji će se upotrijebiti."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"upotreba hardvera za čitanje otisaka prstiju"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Aplikaciji omogućuje upotrebu hardvera za čitanje otisaka prstiju radi autentifikacije."</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Otkriven je djelomični otisak prsta. Pokušajte ponovo."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Obrada otiska prsta nije uspjela. Pokušajte ponovo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzor otiska prsta nije čist. Očistite ga i pokušajte ponovo."</string> @@ -1907,8 +1947,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Želite li da se podatak (<xliff:g id="TYPE">%1$s</xliff:g>) spremi na uslugu <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Želite li da se <xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> spreme na uslugu <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Želite li da se <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> spreme na uslugu <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Spremi"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ne, hvala"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"zaporku"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresu"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditnu karticu"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 106f4970106b..f957384aecc9 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Testérzékelők"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"az érzékelők által mért, életjelekkel kapcsolatos adatok elérése"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Engedélyezi a(z) <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> számára, hogy hozzáférjen az életjelekkel kapcsolatos szenzoradatokhoz?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ablaktartalom lekérdezése"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"A használt ablak tartalmának vizsgálata."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Felfedezés érintéssel bekapcsolása"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Lehetővé teszi az alkalmazás számára a használni kívánt ujjlenyomatsablonok hozzáadására és törlésére szolgáló metódusok indítását."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ujjlenyomat-olvasó hardver használata"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Lehetővé teszi az alkalmazás számára az ujjlenyomat-olvasó hardver hitelesítésre való használatát"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"A rendszer az ujjlenyomatnak csak egy részletét érzékelte. Próbálkozzon újra."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nem sikerült feldolgozni az ujjlenyomatot. Próbálkozzon újra."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Az ujjlenyomat-olvasó koszos. Tisztítsa meg, majd próbálkozzon újra."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Menti a következőt: <xliff:g id="TYPE">%1$s</xliff:g> ide: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Menti a következőket: <xliff:g id="TYPE_0">%1$s</xliff:g> és <xliff:g id="TYPE_1">%2$s</xliff:g> ide: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Menti a következőket: <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> és <xliff:g id="TYPE_2">%3$s</xliff:g> ide: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Mentés"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nem, köszönöm"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"jelszó"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"cím"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"hitelkártya"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 96a03bfcbd06..978e66198bdf 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Մարմնի սենսորներ"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Առբերել պատուհանի բովանդակությունը"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Վերլուծել գործող պատուհանի բովանդակությունը"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Միացնել Հպման միջոցով հետազոտումը"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Հավելվածին թույլ է տալիս կատարել այնպիսի գործառույթներ, որոնց միջոցով կարելի է օգտագործման համար ավելացնել և հեռացնել մատնահետքերի նմուշներ:"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"օգտագործել մատնահետքերի գրանցման սարքը"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Հավելվածին թույլ է տալիս նույնականացման համար օգտագործել մատնահետքերի գրանցման սարքը"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Մատնահետքը հայտնաբերվել է մասամբ: Փորձեք նորից:"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Չհաջողվեց մշակել մատնահետքը: Նորից փորձեք:"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Մատնահետքերի սենսորն աղտոտված է: Մաքրեք այն և փորձեք նորից:"</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Պահե՞լ <xliff:g id="TYPE">%1$s</xliff:g>ը <b><xliff:g id="LABEL">%2$s</xliff:g></b> ծառայությունում"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Պահե՞լ <xliff:g id="TYPE_0">%1$s</xliff:g>ն ու <xliff:g id="TYPE_1">%2$s</xliff:g>ը <b><xliff:g id="LABEL">%3$s</xliff:g></b> ծառայությունում"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Պահե՞լ <xliff:g id="TYPE_0">%1$s</xliff:g>ը, <xliff:g id="TYPE_1">%2$s</xliff:g>ն ու <xliff:g id="TYPE_2">%3$s</xliff:g>ը <b><xliff:g id="LABEL">%4$s</xliff:g></b> ծառայությունում"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Պահել"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ոչ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"գաղտնաբառ"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"հասցե"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"վարկային քարտ"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 5bc03cdb8e20..7ba8e2c3c122 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensor Tubuh"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"mengakses data sensor tentang tanda-tanda vital"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Izinkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> mengakses data sensor tentang tanda-tanda vital Anda?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Mengambil konten jendela"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Memeriksa konten jendela tempat Anda berinteraksi."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Mengaktifkan Jelajahi dengan Sentuhan"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Mengizinkan aplikasi memanggil metode untuk menambahkan dan menghapus template sidik jari untuk digunakan."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"gunakan hardware sidik jari"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Mengizinkan aplikasi untuk menggunakan hardware sidik jari untuk otentikasi"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Sebagian sidik jari terdeteksi. Coba lagi."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Tidak dapat memproses sidik jari. Coba lagi."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensor sidik jari kotor. Bersihkan dan coba lagi."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Simpan <xliff:g id="TYPE">%1$s</xliff:g> ke <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Simpan <xliff:g id="TYPE_0">%1$s</xliff:g> dan <xliff:g id="TYPE_1">%2$s</xliff:g> ke <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Simpan <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, dan <xliff:g id="TYPE_2">%3$s</xliff:g> ke <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Simpan"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Lain kali"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"sandi"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"alamat"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kartu kredit"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index a9152021f061..a2c79c043984 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Líkamsskynjarar"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"aðgangur að skynjaragögnum yfir lífsmörk þín"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Viltu veita <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aðgang að skynjaragögnum yfir lífsmörk þín?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Sækja innihald glugga"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kanna innihald glugga sem þú ert að nota."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Kveikja á snertikönnun"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Gerir forritinu kleift að beita aðferðum til að bæta við og eyða fingrafarasniðmátum til notkunar."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"nota fingrafarabúnað"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Leyfir forritinu að nota fingrafarabúnað til auðkenningar"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hluti fingrafars greindist. Reyndu aftur."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ekki var hægt að vinna úr fingrafarinu. Reyndu aftur."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingrafaraskynjarinn er óhreinn. Hreinsaðu hann og reyndu aftur."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vista <xliff:g id="TYPE">%1$s</xliff:g> á <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vista <xliff:g id="TYPE_0">%1$s</xliff:g> og <xliff:g id="TYPE_1">%2$s</xliff:g> á <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vista <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> og <xliff:g id="TYPE_2">%3$s</xliff:g> á <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Vista"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nei, takk"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"aðgangsorð"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"heimilisfang"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditkort"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index de0b5287af0b..a7c1ae29f7e8 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensori per il corpo"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"accedere ai dati dei sensori relativi ai tuoi parametri vitali"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Consentire a <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere ai dati dei sensori relativi ai parametri vitali?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Musica"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"Accesso alla tua musica"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Vuoi consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere alla tua musica?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Foto e video"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"Accesso alle tue foto e ai tuoi video"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Vuoi consentire all\'app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> di accedere alle tue foto e ai tuoi video?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperare contenuti della finestra"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Esaminare i contenuti di una finestra con cui interagisci."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Attivare Esplora al tocco"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Consente all\'app di richiamare metodi per aggiungere e rimuovere modelli di impronte digitali da utilizzare."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"utilizzo di hardware per il riconoscimento delle impronte digitali"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Consente all\'app di utilizzare l\'hardware per il riconoscimento delle impronte digitali per eseguire l\'autenticazione"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"Lettura della tua raccolta musicale"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Consente all\'app di leggere la tua raccolta musicale."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"Modifica della tua raccolta musicale"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Consente all\'app di modificare la tua raccolta musicale."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"Lettura della tua raccolta di video"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Consente all\'app di leggere la tua raccolta di video."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"Modifica della tua raccolta di video"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Consente all\'app di modificare la tua raccolta di video."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"Lettura della tua raccolta di foto"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Consente all\'app di leggere la tua raccolta di foto."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"Modifica della tua raccolta di foto"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Consente all\'app di modificare la tua raccolta di foto."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"Lettura delle posizioni dalla tua raccolta multimediale"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Consente all\'app di leggere le posizioni dalla tua raccolta multimediale."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Rilevata impronta digitale parziale. Riprova."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Impossibile elaborare l\'impronta digitale. Riprova."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Il sensore di impronte digitali è sporco. Puliscilo e riprova."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Salvare <xliff:g id="TYPE">%1$s</xliff:g> in <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Salvare <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> in <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Salvare <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> in <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Vuoi eseguire l\'aggiornamento a <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Vuoi eseguire l\'aggiornamento di <xliff:g id="TYPE">%1$s</xliff:g> a <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Vuoi eseguire l\'aggiornamento di <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> a <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Vuoi eseguire l\'aggiornamento di <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> a <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Salva"</string> <string name="autofill_save_no" msgid="2625132258725581787">"No, grazie"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Aggiorna"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"indirizzo"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"carta di credito"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 0c0e0aba193c..60eb471b3a36 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -306,6 +306,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"חיישני גוף"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"אחזור תוכן של חלון"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"בדוק את התוכן של חלון שאיתו אתה מבצע אינטראקציה."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"הפעלה של \'גילוי באמצעות מגע\'"</string> @@ -500,6 +512,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"מאפשר לאפליקציה להפעיל שיטות להוספה ומחיקה של תבניות טביעות אצבעות שבהן ייעשה שימוש."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"חומרה של טביעות אצבעות"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"מאפשר לאפליקציה להשתמש בחומרה של טביעות אצבעות לצורך אימות"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"זוהתה טביעת אצבע חלקית. נסה שוב."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"לא ניתן היה לעבד את טביעת האצבע. נסה שוב."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"החיישן של טביעות האצבעות מלוכלך. נקה אותו ונסה שוב."</string> @@ -1942,8 +1982,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"האם לשמור <xliff:g id="TYPE">%1$s</xliff:g> בשירות <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"האם לשמור <xliff:g id="TYPE_0">%1$s</xliff:g> ו<xliff:g id="TYPE_1">%2$s</xliff:g> בשירות <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"האם לשמור <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ו<xliff:g id="TYPE_2">%3$s</xliff:g> בשירות <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"שמירה"</string> <string name="autofill_save_no" msgid="2625132258725581787">"לא, תודה"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"סיסמה"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"כתובת"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"כרטיס אשראי"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 00d1b5dca4f1..ec2ada4d3642 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ボディーセンサー"</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="permgrouplab_aural" msgid="965607064083134896">"音楽"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"音楽へのアクセス"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"音楽へのアクセスを <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> に許可しますか?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"写真と動画"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"写真と動画へのアクセス"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"写真と動画へのアクセスを <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> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"使用する指紋テンプレートの追加や削除を行う方法の呼び出しをアプリに許可します。"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"指紋ハードウェアの使用"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"指紋ハードウェアを認証に使用することをアプリに許可します"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"音楽コレクションの読み取り"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"音楽コレクションの読み取りをアプリに許可します。"</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"音楽コレクションの変更"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"音楽コレクションの変更をアプリに許可します。"</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"動画コレクションの読み取り"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"動画コレクションの読み取りをアプリに許可します。"</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"動画コレクションの変更"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"動画コレクションの変更をアプリに許可します。"</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"写真コレクションの読み取り"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"写真コレクションの読み取りをアプリに許可します。"</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"写真コレクションの変更"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"写真コレクションの変更をアプリに許可します。"</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"メディア コレクションの位置情報の読み取り"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"メディア コレクションの位置情報の読み取りをアプリに許可します。"</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"指紋を一部しか検出できませんでした。もう一度お試しください。"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"指紋を処理できませんでした。もう一度お試しください。"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋認証センサーに汚れがあります。汚れを落としてもう一度お試しください。"</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>を <b><xliff:g id="LABEL">%2$s</xliff:g></b> に保存しますか?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>を <b><xliff:g id="LABEL">%3$s</xliff:g></b> に保存しますか?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>、<xliff:g id="TYPE_2">%3$s</xliff:g>を <b><xliff:g id="LABEL">%4$s</xliff:g></b> に保存しますか?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b> に更新しますか?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g>を <b><xliff:g id="LABEL">%2$s</xliff:g></b> に更新しますか?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g>と<xliff:g id="TYPE_1">%2$s</xliff:g>を <b><xliff:g id="LABEL">%3$s</xliff:g></b> に更新しますか?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>、<xliff:g id="TYPE_2">%3$s</xliff:g>を <b><xliff:g id="LABEL">%4$s</xliff:g></b> に更新しますか?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"はい"</string> <string name="autofill_save_no" msgid="2625132258725581787">"いいえ"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"更新"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"パスワード"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"住所"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"クレジット カード"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index ab65348dfb75..e72876279d25 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"სხეულის სენსორები"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ფანჯრის კონტენტის მოძიება"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"იმ ფანჯრის კონტენტის შემოწმება, რომელშიც მუშაობთ."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"„შეხებით აღმოჩენის“ ჩართვა"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"საშუალებას აძლევს აპლიკაციას დაამატოს ან ამოშალოს გამოსაყენებელი თითის ანაბეჭდის ნიმუშები,"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"თითის ანაბეჭდის აპარატის გამოყენება"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"საშუალებას აძლევს აპლიკაციას გამოიყენოს ავტენთიფიკაციისათვის თითის ანაბეჭდის აპარატი"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"აღმოჩენილია თითის ნაწილობრივი ანაბეჭდი. გთხოვთ, სცადოთ ხელახლა."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"თითის ანაბეჭდი ვერ მუშავდება. გთხოვთ, სცადოთ ხელახლა."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"თითის ანაბეჭდის სენსორი დაბინძურებულია. გთხოვთ, გაასუფთაოთ და სცადოთ ხელახლა."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"გსურთ, შეინახოთ <xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g>-ში</b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"გსურთ, შეინახოთ <xliff:g id="TYPE_0">%1$s</xliff:g> და <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g>-ში</b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"გსურთ, შეინახოთ <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, და <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g>-ში</b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"შენახვა"</string> <string name="autofill_save_no" msgid="2625132258725581787">"არა, გმადლობთ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"პაროლი"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"მისამართი"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"საკრედიტო ბარათი"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 3d4749feba0d..2e3ba648b341 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Дене датчиктері"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Терезе мазмұнын оқып отыру"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Ашық тұрған терезе мазмұнын тексеру."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Explore by Touch функциясын қосу"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Қолданбаға пайдаланатын саусақ ізі үлгілерін қосу және жою әдістерін шақыруға мүмкіндік береді."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"саусақ ізі жабдығын пайдалану"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Қолданбаға аутентификацияалу үшін саусақ ізі жабдығын пайдалануға мүмкіндік береді"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Саусақ ізі ішінара анықталды. Әрекетті қайталаңыз."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Саусақ ізін өңдеу мүмкін емес. Әрекетті қайталаңыз."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Саусақ ізі сенсоры лас. Тазалап, әрекетті қайталаңыз."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> \"<xliff:g id="LABEL">%2$s</xliff:g>\" қызметінде сақталсын ба?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> және <xliff:g id="TYPE_1">%2$s</xliff:g> \"<xliff:g id="LABEL">%3$s</xliff:g>\" қызметінде сақталсын ба?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> және <xliff:g id="TYPE_2">%3$s</xliff:g> \"<xliff:g id="LABEL">%4$s</xliff:g>\" қызметінде сақталсын ба?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Сақтау"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Жоқ, рақмет"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"құпия сөз"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"мекенжай"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"несие картасы"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index d65e8865de9e..6e2d41b6e904 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ឧបករណ៍ចាប់សញ្ញារាងកាយ"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ទាញយកខ្លឹមសារវិនដូ"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ពិនិត្យខ្លឹមសារវិនដូដែលអ្នកកំពុងទាក់ទងជាមួយ។"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"បើកការរកមើលដោយប៉ះ"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"អនុញ្ញាតឲ្យកម្មវិធីប្រើវិធីសាស្ត្របន្ថែម និងលុបពុម្ពម្រាមដៃសម្រាប់ប្រើប្រាស់។"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ប្រើផ្នែករឹងស្នាមម្រាមដៃ"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"អនុញ្ញាតឲ្យកម្មវិធីប្រើផ្នែករឹងស្នាមម្រាមដៃសម្រាប់ការផ្ទៀងផ្ទាត់"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"បានផ្តិតយកស្នាមម្រាមដៃមិនពេញលក្ខណៈ។ សូមព្យាយាមម្តងទៀត។"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"មិនអាចដំណើរការស្នាមម្រាមដៃបានទេ។ សូមព្យាយាមម្តងទៀត។"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ឧបករណ៍ផ្តិតម្រាមដៃប្រលាក់ហើយ។ សូមសម្អាត ហើយព្យាយាមម្តងទៀត។"</string> @@ -1874,8 +1914,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"រក្សាទុក <xliff:g id="TYPE">%1$s</xliff:g> ទៅក្នុង <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"រក្សាទុក <xliff:g id="TYPE_0">%1$s</xliff:g> និង <xliff:g id="TYPE_1">%2$s</xliff:g> ទៅក្នុង <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"រក្សាទុក <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, និង <xliff:g id="TYPE_2">%3$s</xliff:g> ទៅក្នុង <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"រក្សាទុក"</string> <string name="autofill_save_no" msgid="2625132258725581787">"ទេ អរគុណ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"ពាក្យសម្ងាត់"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"អាសយដ្ឋាន"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"បណ្ណឥណទាន"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index c28e8e83e8c4..e99d53a53d99 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ದೇಹ ಸೆನ್ಸರ್ಗಳು"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ವಿಂಡೋ ವಿಷಯವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ನೀವು ಬಳಸುತ್ತಿರುವ ವಿಂಡೋದ ವಿಷಯ ಪರೀಕ್ಷಿಸುತ್ತದೆ."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ಸ್ಪರ್ಶ-ಎಕ್ಸ್ಪ್ಲೋರ್ ಆನ್ ಮಾಡುತ್ತದೆ"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ಬಳಕೆಗೆ ಬೆರಳಚ್ಚು ಟೆಂಪ್ಲೇಟ್ಗಳನ್ನು ಸೇರಿಸಲು ಮತ್ತು ಅಳಿಸಲು ವಿಧಾನಗಳನ್ನು ಮನವಿ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ಬೆರಳಚ್ಚು ಹಾರ್ಡ್ವೇರ್ ಬಳಸಿ"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ ಬೆರಳಚ್ಚು ಹಾರ್ಡ್ವೇರ್ ಬಳಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"ಭಾಗಶಃ ಬೆರಳಚ್ಚು ಪತ್ತೆಯಾಗಿದೆ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ಬೆರಳಚ್ಚು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ಬೆರಳಚ್ಚು ಸೆನ್ಸಾರ್ ಕೊಳೆಯಾಗಿದೆ. ದಯವಿಟ್ಟು ಅದನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಿ ಹಾಗೂ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> ಅನ್ನು <b><xliff:g id="LABEL">%2$s</xliff:g></b>ನಲ್ಲಿ ಉಳಿಸುವುದೇ?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> ಹಾಗೂ <xliff:g id="TYPE_1">%2$s</xliff:g> ಅನ್ನು <b><xliff:g id="LABEL">%3$s</xliff:g></b>ನಲ್ಲಿ ಉಳಿಸುವುದೇ?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, ಹಾಗೂ <xliff:g id="TYPE_2">%3$s</xliff:g> ಅನ್ನು <b><xliff:g id="LABEL">%4$s</xliff:g></b>ನಲ್ಲಿ ಉಳಿಸುವುದೇ?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"ಉಳಿಸಿ"</string> <string name="autofill_save_no" msgid="2625132258725581787">"ಬೇಡ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"ಪಾಸ್ವರ್ಡ್"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ವಿಳಾಸ"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ಕ್ರೆಡಿಟ್ ಕಾರ್ಡ್"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 076b65fa3d80..89e726992a49 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"인체 감지 센서"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"창 콘텐츠 가져오기"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"상호작용 중인 창의 콘텐츠를 검사합니다."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"터치하여 탐색 사용"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"사용할 지문 템플릿의 추가 및 삭제 메소드를 앱에서 실행하도록 허용합니다."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"지문 하드웨어 사용"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"앱에서 지문 하드웨어를 인증에 사용하도록 허용합니다."</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"지문이 일부만 인식되었습니다. 다시 시도해 주세요."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"지문을 인식할 수 없습니다. 다시 시도해 주세요."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"지문 센서를 깨끗이 닦고 다시 시도하세요."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>을(를) <b><xliff:g id="LABEL">%2$s</xliff:g></b>에 저장하시겠습니까?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> 및 <xliff:g id="TYPE_1">%2$s</xliff:g>을(를) <b><xliff:g id="LABEL">%3$s</xliff:g></b>에 저장하시겠습니까?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g>을(를) <b><xliff:g id="LABEL">%4$s</xliff:g></b>에 저장하시겠습니까?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"저장"</string> <string name="autofill_save_no" msgid="2625132258725581787">"사용 안함"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"비밀번호"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"주소"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"신용카드"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index a75a00c7af19..55a721ee36fb 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Дене сенсорлору"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Терезедеги мазмунду алып турат"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Учурда ачылып турган терезедеги маалыматты талдайт."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\"Сыйпалап изилдөө\" мүмкүнчүлүгүн иштетет"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Колдонмого пайдалануу үчүн манжа изинин үлгүлөрүн кошуу жана жок кылуу мүмкүндүгүн берет."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"манжа изинин аппараттык камсыздоосун колдонуу"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Колдонмого аныктыгын текшерүү үчүн манжа изинин аппараттык камсыздоосун пайдалануу мүмкүндүгүн берет"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Манжа изи жарым-жартылай аныкталды. Кайра аракет кылыңыз."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Манжа изи иштелбей койду. Кайра аракет кылыңыз."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Манжа изинин сенсору кирдеп калган. Тазалап, кайра аракет кылыңыз."</string> @@ -1874,8 +1914,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b> кызматында сакталсынбы?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> жана <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> кызматында сакталсынбы?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> жана <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> кызматында сакталсынбы?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Сактоо"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Жок, рахмат"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"сырсөз"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"дарек"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"насыя картасы"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index ef2cede2c777..24cef031887b 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ເຊັນເຊີຮ່າງກາຍ"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ດຶງຂໍ້ມູນເນື້ອຫາໃນໜ້າຈໍ"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ກວດກາເນື້ອຫາຂອງໜ້າຈໍທີ່ທ່ານກຳລັງມີປະຕິສຳພັນນຳ."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ເປີດໃຊ້ \"ການສຳຫຼວດໂດຍສຳຜັດ\""</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ອະນຸຍາດໃຫ້ແອັບເຮັດໃຫ້ວິທີການຕ່າງໆເພີ່ມ ແລະລຶບແມ່ແບບລາຍນີ້ວມືສຳລັບການໃຊ້."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ໃຊ້ຮາດແວລາຍນີ້ວມື"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"ອະນຸຍາດໃຫ້ແອັບນຳໃຊ້ຮາດແວລາຍນີ້ວມືສຳລັບການຮັບຮອງ"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"ກວດພົບລາຍນີ້ວມືບາງສ່ວນແລ້ວ. ກະລຸນາລອງໃໝ່ອີກ."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ບໍ່ສາມາດດຳເນີນການລາຍນີ້ວມືໄດ້. ກະລຸນາລອງໃໝ່ອີກ."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ເຊັນເຊີລາຍນີ້ວມືເປື້ອນ. ກະລຸນາທຳຄວາມສະອາດ ແລະລອງໃໝ່ອີກ."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"ບັນທຶກ <xliff:g id="TYPE">%1$s</xliff:g> ໃສ່ <b><xliff:g id="LABEL">%2$s</xliff:g></b> ບໍ?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"ບັນທຶກ <xliff:g id="TYPE_0">%1$s</xliff:g> ແລະ <xliff:g id="TYPE_1">%2$s</xliff:g> ໃສ່ <b><xliff:g id="LABEL">%3$s</xliff:g></b> ບໍ?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"ບັນທຶກ <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ແລະ <xliff:g id="TYPE_2">%3$s</xliff:g> ໃສ່ <b><xliff:g id="LABEL">%4$s</xliff:g></b> ບໍ?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"ບັນທຶກ"</string> <string name="autofill_save_no" msgid="2625132258725581787">"ບໍ່, ຂອບໃຈ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"ລະຫັດຜ່ານ"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ທີ່ຢູ່"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ບັດເຄຣດິດ"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index e72b1a95fe8b..c61c30ff682b 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -306,6 +306,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Kūno jutikliai"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"pasiekti jutiklių duomenis apie gyvybinius ženklus"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Suteikti <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> galimybę pasiekti jutiklių duomenis apie gyvybinius ženklus?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Gauti lango turinį"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tikrinti lango, su kuriuo sąveikaujate, turinį."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Įjungti „Naršyti paliečiant“"</string> @@ -500,6 +512,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Leidžiama programai aktyvinti metodus, norint pridėti ir ištrinti naudojamus kontrolinių kodų šablonus."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"naudoti kontrolinio kodo aparatinę įrangą"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Leidžiama programai naudoti kontrolinio kodo aparatinę įrangą tapatybei nustatyti"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Aptiktas dalinis kontrolinis kodas. Bandykite dar kartą."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nepavyko apdoroti kontrolinio kodo. Bandykite dar kartą."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Kontrolinio kodo jutiklis purvinas. Nuvalykite ir bandykite dar kartą."</string> @@ -1942,8 +1982,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Išsaugoti <xliff:g id="TYPE">%1$s</xliff:g> sistemoje <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Išsaugoti <xliff:g id="TYPE_0">%1$s</xliff:g> ir <xliff:g id="TYPE_1">%2$s</xliff:g> sistemoje <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Išsaugoti <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ir <xliff:g id="TYPE_2">%3$s</xliff:g> sistemoje <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Išsaugoti"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ne, ačiū"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"slaptažodį"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresą"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredito kortelę"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index a5116e4c2229..ea7140b7ce25 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -303,6 +303,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Ķermeņa sensori"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"piekļūt sensoru datiem par jūsu veselības rādījumiem"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vai atļaut lietotnei <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> piekļūt sensoru uztvertajiem veselības rādījumiem?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Izgūt loga saturu."</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Skatīt tā loga saturu, ar kuru mijiedarbojaties."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizēt funkciju “Pārlūkot pieskaroties”."</string> @@ -497,6 +509,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Atļauj lietotnei izsaukt metodes izmantojamo pirkstu nospiedumu veidņu pievienošanai un dzēšanai."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"lietot pirkstu nospiedumu aparatūru"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Atļauj lietotnei izmantot pirkstu nospiedumu aparatūru autentificēšanai."</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Noteikts daļējs pirksta nospiedums. Lūdzu, mēģiniet vēlreiz."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nevarēja apstrādāt pirksta nospiedumu. Lūdzu, mēģiniet vēlreiz."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Pirkstu nospiedumu sensors ir netīrs. Lūdzu, notīriet to un mēģiniet vēlreiz."</string> @@ -1907,8 +1947,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vai saglabāt vienumu “<xliff:g id="TYPE">%1$s</xliff:g>” pakalpojumā <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vai saglabāt vienumus “<xliff:g id="TYPE_0">%1$s</xliff:g>” un “<xliff:g id="TYPE_1">%2$s</xliff:g>” pakalpojumā <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vai saglabāt vienumus “<xliff:g id="TYPE_0">%1$s</xliff:g>”, “<xliff:g id="TYPE_1">%2$s</xliff:g>” un “<xliff:g id="TYPE_2">%3$s</xliff:g>” pakalpojumā <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Saglabāt"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nē, paldies"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"paroli"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresi"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredītkartes informāciju"</string> diff --git a/core/res/res/values-mcc214-mnc01/config.xml b/core/res/res/values-mcc214-mnc01/config.xml index 24150a782d22..41e24d779362 100644 --- a/core/res/res/values-mcc214-mnc01/config.xml +++ b/core/res/res/values-mcc214-mnc01/config.xml @@ -40,4 +40,7 @@ <item>INTERNET,airtelnet.es,,,vodafone,vodafone,,,,,214,01,1,DUN</item> </string-array> + <!-- Whether safe headphone volume warning dialog is disabled on Vol+ (operator specific). --> + <bool name="config_safe_media_disable_on_volume_up">false</bool> + </resources> diff --git a/core/res/res/values-mcc222-mnc10/config.xml b/core/res/res/values-mcc222-mnc10/config.xml index c819de2ba43c..0085a1b7e190 100644 --- a/core/res/res/values-mcc222-mnc10/config.xml +++ b/core/res/res/values-mcc222-mnc10/config.xml @@ -28,4 +28,8 @@ <string-array translatable="false" name="config_tether_apndata"> <item>Tethering Internet,web.omnitel.it,,,,,,,,,222,10,,DUN</item> </string-array> + + <!-- Whether safe headphone volume warning dialog is disabled on Vol+ (operator specific). --> + <bool name="config_safe_media_disable_on_volume_up">false</bool> + </resources> diff --git a/core/res/res/values-mcc234-mnc15/config.xml b/core/res/res/values-mcc234-mnc15/config.xml new file mode 100644 index 000000000000..84e779d240d1 --- /dev/null +++ b/core/res/res/values-mcc234-mnc15/config.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2018, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Whether safe headphone volume warning dialog is disabled on Vol+ (operator specific). --> + <bool name="config_safe_media_disable_on_volume_up">false</bool> + +</resources> diff --git a/core/res/res/values-mcc234-mnc91/config.xml b/core/res/res/values-mcc234-mnc91/config.xml new file mode 100644 index 000000000000..84e779d240d1 --- /dev/null +++ b/core/res/res/values-mcc234-mnc91/config.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2018, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Whether safe headphone volume warning dialog is disabled on Vol+ (operator specific). --> + <bool name="config_safe_media_disable_on_volume_up">false</bool> + +</resources> diff --git a/core/res/res/values-mcc262-mnc02/config.xml b/core/res/res/values-mcc262-mnc02/config.xml new file mode 100644 index 000000000000..84e779d240d1 --- /dev/null +++ b/core/res/res/values-mcc262-mnc02/config.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2018, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Whether safe headphone volume warning dialog is disabled on Vol+ (operator specific). --> + <bool name="config_safe_media_disable_on_volume_up">false</bool> + +</resources> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index 47f388debc20..b2beb3aad01a 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Телесни сензори"</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="permgrouplab_aural" msgid="965607064083134896">"Музика"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"пристапува до музиката"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Дали да се дозволи <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> да пристапува до музиката?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Фотографии и видеа"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"пристапува до фотографиите и видеата"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Дали да се дозволи <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> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Дозволува апликацијата да повика начини за додавање и бришење шаблони на отпечатоци за користење."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"користи хардвер за отпечатоци"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Дозволува апликацијата да користи хардвер за отпечатоци за проверка"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"да ја чита вашата музичка збирка"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Дозволува апликацијата да ја чита вашата музичка збирка."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"да ја менува вашата музичка збирка"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Дозволува апликацијата да ја менува вашата музичка збирка."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"да ја чита вашата збирка на видеа"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Дозволува апликацијата да ја чита вашата збирка на видеа."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"да ја менува вашата збирка на видеа"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Дозволува апликацијата да ја менува вашата збирка на видеа."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"да ја чита вашата збирка на фотографии"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Дозволува апликацијата да ја чита вашата збирка на фотографии."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"да ја менува вашата збирка на фотографии"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Дозволува апликацијата да ја менува вашата збирка на фотографии."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"да чита локации од вашата збирка на аудиовизуелни содржини"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Дозволува апликацијата да чита локации од вашата збирка на аудиовизуелни содржини."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Откриен е делумен отпечаток. Обидете се повторно."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Отпечатокот не можеше да се обработи. Обидете се повторно."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензорот за отпечатоци е валкан. Исчистете го и обидете се повторно."</string> @@ -1875,8 +1895,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Да се зачува <xliff:g id="TYPE">%1$s</xliff:g> во <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Да се зачуваат <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> во <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Да се зачуваат <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> во <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Дали да се ажурира на <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Дали да се ажурира <xliff:g id="TYPE">%1$s</xliff:g> на <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Дали да се ажурираат <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> на <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Дали да се ажурираат <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> на <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Зачувај"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Не, фала"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Ажурирај"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"лозинка"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"адреса"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"кредитна картичка"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 1a3556ccc369..db2aa1ee4e45 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ബോഡി സെൻസറുകൾ"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"വിൻഡോ ഉള്ളടക്കം വീണ്ടെടുക്കുക"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"നിങ്ങൾ സംവദിക്കുന്ന ഒരു വിൻഡോയുടെ ഉള്ളടക്കം പരിശോധിക്കുക."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"സ്പർശനം വഴി പര്യവേക്ഷണം ചെയ്യുക, ഓണാക്കുക"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ഉപയോഗിക്കാനായി വിരലടയാള ടെംപ്ലേറ്റുകൾ ചേർക്കാനും ഇല്ലാതാക്കാനുമുള്ള രീതികൾ അഭ്യർത്ഥിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ഫിംഗർപ്രിന്റ് ഹാർഡ്വെയർ ഉപയോഗിക്കുക"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"പ്രാമാണീകരണത്തിനായി വിരലടയാളം ഉപയോഗിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"വിരലടയാളം ഭാഗികമായി തിരിച്ചറിഞ്ഞു. വീണ്ടും ശ്രമിക്കുക."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"വിരലടയാളം പ്രോസസ്സ് ചെയ്യാനായില്ല. വീണ്ടും ശ്രമിക്കുക."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"വിരലടയാള സെൻസറിന് വൃത്തിയില്ല. അത് ശുചിയാക്കി വീണ്ടും ശ്രമിക്കുക."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> എന്നതിനെ <b><xliff:g id="LABEL">%2$s</xliff:g></b>എന്നതിലേക്ക് സംരക്ഷിക്കണോ?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> എന്നിവ<b><xliff:g id="LABEL">%3$s</xliff:g></b>എന്നതിലേക്ക് സംരക്ഷിക്കണോ?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g> എന്നിവ<b><xliff:g id="LABEL">%4$s</xliff:g></b>എന്നതിലേക്ക് സംരക്ഷിക്കണോ?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"സംരക്ഷിക്കുക"</string> <string name="autofill_save_no" msgid="2625132258725581787">"വേണ്ട, നന്ദി"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"പാസ്വേഡ്"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"വിലാസം"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ക്രെഡിറ്റ് കാർഡ്"</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index e1b967093180..ddf1bc68da0b 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Биеийн мэдрэгч"</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="permgrouplab_aural" msgid="965607064083134896">"Хөгжим"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"хөгжимдөө хандах"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b>-д таны хөгжимд хандахыг зөвшөөрөх үү?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Зураг & видео"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"зураг & видеондоо хандах"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"<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> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Хурууны хээний загварыг нэмэх эсвэл усгтах үйлдлийг хийх зөвшөөрлийг програмд олгодог."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"хурууны хээний програм хангамжийг ашиглах"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Баталгаажуулалт хийх зорилгоор хурууны хээний апп хамгамжийг ашиглах зөвшөөрлийг аппд олгодог"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"хөгжмийн цуглуулгаа унших"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Таны хөгжмийн цуглуулгыг унших зөвшөөрлийг аппад олгодог."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"хөгжмийн цуглуулгаа тохируулах"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Таны хөгжмийн цуглуулгыг тохируулах зөвшөөрлийг аппад олгодог."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"видео цуглуулгаа унших"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Таны видео цуглуулгыг унших зөвшөөрлийг аппад олгодог."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"видео цуглуулгаа тохируулах"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Таны видео цуглуулгыг тохируулах зөвшөөрлийг аппад олгодог."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"зургийн цуглуулгаа унших"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Таны зургийн цуглуулгыг унших зөвшөөрлийг аппад олгодог."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"зургийн цуглуулгаа тохируулах"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Таны зургийн цуглуулгыг тохируулах зөвшөөрлийг аппад олгодог."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"медиа цуглуулгаасаа байршлыг унших"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Таны медиа цуглуулгаас байршлыг унших зөвшөөрлийг аппад олгодог."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Хурууны хээг дутуу уншуулсан байна. Дахин оролдоно уу."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Хурууны хээ боловсруулж чадахгүй байна. Дахин оролдоно уу."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Хурууны хээ мэдрэгч бохирдсон байна. Та цэвэрлэсний дараагаар дахин оролдоно уу."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>-г <b><xliff:g id="LABEL">%2$s</xliff:g></b>-д хадгалах уу?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>-г <b><xliff:g id="LABEL">%3$s</xliff:g></b>-д хадгалах уу?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g>-г <b><xliff:g id="LABEL">%4$s</xliff:g></b>-д хадгалах уу?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b>-д шинэчлэх үү?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g>-г <b><xliff:g id="LABEL">%2$s</xliff:g></b>-д шинэчлэх үү?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>-г <b><xliff:g id="LABEL">%3$s</xliff:g></b>-д шинэчлэх үү?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g>-г <b><xliff:g id="LABEL">%4$s</xliff:g></b>-д шинэчлэх үү?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Хадгалах"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Үгүй, баярлалаа"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Шинэчлэх"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"нууц үг"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"хаяг"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"кредит карт"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 65c882862dd1..4b0154340531 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"शरीर सेन्सर"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विंडो सामग्री पुनर्प्राप्त करा"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"तुम्ही परस्परसंवाद करीत असलेल्या विंडोची सामग्री तपासा."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"स्पर्श करून अन्वेषण चालू करा"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"वापर करण्याकरिता फिंगरप्रिंट टेम्पलेट जोडण्यासाठी आणि हटविण्यासाठी पद्धती रद्द करण्यास अॅपला अनुमती देते."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"फिंगरप्रिंट हार्डवेअर वापरा"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"प्रमाणीकरणाकरिता फिंगरप्रिंट हार्डवेअरचा वापर करण्यासाठी अॅपला अनुमती देते"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक फिंगरप्रिंट आढळली. कृपया पुन्हा प्रयत्न करा."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"फिंगरप्रिंटवर प्रक्रिया करणे शक्य झाले नाही. कृपया पुन्हा प्रयत्न करा."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"फिंगरप्रिंट सेन्सर खराब आहे. कृपया साफ करा आणि पुन्हा प्रयत्न करा."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<b><xliff:g id="LABEL">%2$s</xliff:g></b>मध्ये <xliff:g id="TYPE">%1$s</xliff:g> सेव्ह करायची?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<b><xliff:g id="LABEL">%3$s</xliff:g></b>मध्ये <xliff:g id="TYPE_0">%1$s</xliff:g> आणि <xliff:g id="TYPE_1">%2$s</xliff:g> सेव्ह करायची?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<b><xliff:g id="LABEL">%4$s</xliff:g></b>मध्ये <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> आणि <xliff:g id="TYPE_2">%3$s</xliff:g> सेव्ह करायची?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"सेव्ह करा"</string> <string name="autofill_save_no" msgid="2625132258725581787">"नाही, नको"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"पासवर्ड"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"पत्ता"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"क्रेडिट कार्ड"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index b2f10c11c262..3df4e957a158 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Penderia Badan"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"akses data penderia tentang tanda vital anda"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Benarkan <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> mengakses data penderia tentang tanda vital anda?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dapatkan kembali kandungan tetingkap"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Periksa kandungan tetingkap yang berinteraksi dengan anda."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Hidupkan Jelajah melalui Sentuhan"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Membenarkan apl menggunakan kaedah untuk menambahkan dan memadamkan templat cap jari untuk digunakan."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"gunakan perkakasan cap jari"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Membenarkan apl menggunakan perkakasan cap jari untuk pengesahan"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Cap jari separa dikesan. Sila cuba lagi."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Tidak dapat memproses cap jari. Sila cuba lagi."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Penderia cap jari kotor. Sila bersihkan dan cuba lagi."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Simpan <xliff:g id="TYPE">%1$s</xliff:g> ke <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Simpan <xliff:g id="TYPE_0">%1$s</xliff:g> dan <xliff:g id="TYPE_1">%2$s</xliff:g> ke <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Simpan <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> dan <xliff:g id="TYPE_2">%3$s</xliff:g> ke <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Simpan"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Tidak, terima kasih"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"kata laluan"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"alamat"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kad kredit"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index f9049f55e81c..db3fdd3c7c95 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ခန္ဓာကိုယ် အာရုံခံကိရိယာများ"</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="permgrouplab_aural" msgid="965607064083134896">"တေးဂီတ"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"သင့်တေးဂီတကို ဝင်သုံးသည်"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> အား သင့်တေးဂီတကို ဝင်သုံးခွင့်ပေးလိုပါသလား။"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"ဓာတ်ပုံနှင့် ဗီဒီယိုများ"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"သင့်ဓာတ်ပုံနှင့် ဗီဒီယိုများကို ဝင်သုံးသည်"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"<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> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"အသုံးပြုရန်အတွက် လက်ဗွေရာပုံစံများကို ပေါင်းထည့်ရန် သို့မဟုတ် ဖျက်ရန်နည်းလမ်းများကို အပ်ဖ်အား အသုံးပြုခွင့်ပြုသည်။"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"လက်ဗွေရာပစ္စည်းကို အသုံးပြုမည်"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"စစ်မှန်ကြောင်းအထောက်အထားပြသခြင်းအတွက် လက်ဗွေရာပစ္စည်းကို အသုံးပြုရန် အပ်ဖ်အားခွင့်ပြုသည်။"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"သင့်တေးဂီတ စုစည်းမှုကို ဖတ်ခြင်း"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"အက်ပ်အား သင့်တေးဂီတစုစည်းမှုကို ဖတ်ခွင့်ပေးသည်။"</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"သင့်တေးဂီတ စုစည်းမှုကို ပြုပြင်ခြင်း"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"အက်ပ်အား သင့်တေးဂီတစုစည်းမှုကို ပြုပြင်ခွင့်ပေးသည်။"</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"သင့်ဗီဒီယို စုစည်းမှုကို ဖတ်ခြင်း"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"အက်ပ်အား သင့်ဗီဒီယိုစုစည်းမှုကို ဖတ်ခွင့်ပေးသည်။"</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"သင့်ဗီဒီယို စုစည်းမှုကို ပြုပြင်ခြင်း"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"အက်ပ်အား သင့်ဗီဒီယိုစုစည်းမှုကို ပြုပြင်ခွင့်ပေးသည်။"</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"သင့်ဓာတ်ပုံ စုစည်းမှုကို ဖတ်ခြင်း"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"အက်ပ်အား သင့်ဓာတ်ပုံစုစည်းမှုကို ဖတ်ခွင့်ပေးသည်။"</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"သင့်ဓာတ်ပုံ စုစည်းမှုကို ပြုပြင်ခြင်း"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"အက်ပ်အား သင့်ဓာတ်ပုံစုစည်းမှုကို ပြုပြင်ခွင့်ပေးသည်။"</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခြင်း"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"အက်ပ်အား သင့်မီဒီယာစုစည်းမှုမှ တည်နေရာများကို ဖတ်ခွင့်ပေးသည်။"</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"လက်ဗွေရဦ တစ်ပိုင်းတစ်စ တွေ့ရှိသည်။ ကျေးဇူးပြု၍ ထပ်မံကြိုးစားပါ။"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"လက်ဗွေရာယူခြင်း မဆောင်ရွက်နိုင်ပါ။ ထပ်မံကြိုးစားပါ။"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"လက်ဗွေရာဖတ်ကိရိယာ ညစ်ပေနေသည်။ ကျေးဇူးပြု၍ ရှင်းလင်းကာ ထပ်မံကြိုးစားပါ။"</string> @@ -1873,8 +1893,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> ကို <b><xliff:g id="LABEL">%2$s</xliff:g></b> တွင် သိမ်းဆည်းလိုပါသလား။"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> နှင့် <xliff:g id="TYPE_1">%2$s</xliff:g> ကို <b><xliff:g id="LABEL">%3$s</xliff:g></b> တွင် သိမ်းဆည်းလိုပါသလား။"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>၊ <xliff:g id="TYPE_1">%2$s</xliff:g> နှင့် <xliff:g id="TYPE_2">%3$s</xliff:g> ကို <b><xliff:g id="LABEL">%4$s</xliff:g></b> တွင် သိမ်းဆည်းလိုပါသလား။"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b> သို့ အပ်ဒိတ်လုပ်လိုပါသလား။"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> ကို <b><xliff:g id="LABEL">%2$s</xliff:g></b> သို့ အပ်ဒိတ်လုပ်လိုပါသလား။"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> နှင့် <xliff:g id="TYPE_1">%2$s</xliff:g> ကို <b><xliff:g id="LABEL">%3$s</xliff:g></b> သို့ အပ်ဒိတ်လုပ်လိုပါသလား။"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>၊ <xliff:g id="TYPE_1">%2$s</xliff:g> နှင့် <xliff:g id="TYPE_2">%3$s</xliff:g> ကို <b><xliff:g id="LABEL">%4$s</xliff:g></b> သို့ အပ်ဒိတ်လုပ်လိုပါသလား။"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"သိမ်းရန်"</string> <string name="autofill_save_no" msgid="2625132258725581787">"မလိုပါ"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"အပ်ဒိတ်လုပ်ရန်"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"စကားဝှက်"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"လိပ်စာ"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ခရက်တစ်ကတ်"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index a5bd899f35a2..da47ea7a1a50 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Kroppssensorer"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"få tilgang til sensordata om de vitale tegnene dine"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vil du gi <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> tilgang til sensordata om de vitale tegnene dine?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"hente innhold i vinduer"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Appen analyserer innholdet i vinduer du samhandler med."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"slå på berøringsutforsking"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Lar appen fremkalle metoder for å legge til og slette fingeravtrykkmaler for bruk."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"bruke fingeravtrykkmaskinvare"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Lar appen bruke fingeravtrykkmaskinvare til godkjenning"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Deler av fingeravtrykket er registrert. Prøv på nytt."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kunne ikke registrere fingeravtrykket. Prøv på nytt."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingeravtrykksensoren er skitten. Rengjør den og prøv på nytt."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vil du lagre <xliff:g id="TYPE">%1$s</xliff:g> i <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vil du lagre <xliff:g id="TYPE_0">%1$s</xliff:g> og <xliff:g id="TYPE_1">%2$s</xliff:g> i <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vil du lagre <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> og <xliff:g id="TYPE_2">%3$s</xliff:g> i <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Lagre"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nei takk"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"passord"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresse"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredittkort"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index eac241b499b4..c39b7c80bf65 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"शारीरिक सेन्सर"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विन्डो सामग्रीको पुनःबहाली गर्नुहोस्।"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"तपाईँको अन्तरक्रिया भइरहेको विन्डोको सामग्रीको निरीक्षण गर्नुहोस्।"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"छोएर गरिने खोजलाई सुचारु गर्नुहोस्"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"अनुप्रयोगलाई प्रयोगको लागि औठाछाप टेम्प्लेट थप्न र मेटाउने तरिका आह्वान गर्न अनुमति दिन्छ।"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"औठाछाप हार्डवेयर प्रयोग गर्नुहोस्"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"अनुप्रयोगलाई प्रमाणीकरणको लागि औठाछाप हार्डवेयर प्रयोग गर्न अनुमति दिन्छ"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"आंशिक औठाछाप पत्ता लाग्यो। कृपया फेरि प्रयास गर्नुहोस्।"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"औठाछाप प्रशोधन गर्न सकिएन। कृपया फेरि प्रयास गर्नुहोस्।"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"औँठाछाप सेन्सर फोहोर छ। कृपया सफा गरेर फेरि प्रयास गर्नुहोस्।"</string> @@ -1878,8 +1918,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> लाई <b><xliff:g id="LABEL">%2$s</xliff:g></b> मा सुरक्षित गर्ने हो?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> र <xliff:g id="TYPE_1">%2$s</xliff:g> लाई <b><xliff:g id="LABEL">%3$s</xliff:g></b> मा सुरक्षित गर्ने हो?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> र <xliff:g id="TYPE_2">%3$s</xliff:g> लाई to <b><xliff:g id="LABEL">%4$s</xliff:g></b> मा सुरक्षित गर्ने हो?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"सुरक्षित गर्नुहोस्"</string> <string name="autofill_save_no" msgid="2625132258725581787">"पर्दैन, धन्यवाद"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"पासवर्ड"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ठेगाना"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"क्रेडिट कार्ड"</string> diff --git a/core/res/res/values-night/colors.xml b/core/res/res/values-night/colors.xml index 688040ba0cc1..351f8ea8643e 100644 --- a/core/res/res/values-night/colors.xml +++ b/core/res/res/values-night/colors.xml @@ -19,12 +19,12 @@ <resources> <!-- The primary text color if the text is on top of a dark background. This is also affects colorized notifications with dark backgrounds. --> - <color name="notification_primary_text_color_dark">#dadada</color> + <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">#dadada</color> + <color name="notification_secondary_text_color_dark">#ddffffff</color> - <color name="notification_default_color_dark">#dadada</color> + <color name="notification_default_color_dark">#ddffffff</color> <!-- The background color of a notification card. --> <color name="notification_material_background_color">@*android:color/material_grey_900</color> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 0981442ffd0b..0e131320b633 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Lichaamssensoren"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"toegang krijgen tot sensorgegevens over je vitale functies"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang geven tot sensorgegevens over je vitale functies?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Muziek"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"toegang tot je muziek"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang geven tot je muziek?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Foto\'s en video\'s"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"toegang tot je foto\'s en video\'s"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Wil je <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> toegang geven tot je foto\'s en video\'s?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Content van vensters ophalen"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"De content inspecteren van een venster waarmee je interactie hebt."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\'Verkennen via aanraking\' inschakelen"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Hiermee kan de app methoden aanroepen om vingerafdruksjablonen toe te voegen en te verwijderen voor gebruik."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Vingerafdrukhardware gebruiken"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Hiermee kan de app vingerafdrukhardware gebruiken voor verificatie"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"je muziekcollectie bekijken"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Hiermee sta je de app toe je muziekcollectie te bekijken."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"je muziekcollectie aanpassen"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Hiermee sta je de app toe je muziekcollectie aan te passen."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"je videocollectie bekijken"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Hiermee sta je de app toe je videocollectie te bekijken."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"je videocollectie aanpassen"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Hiermee sta je de app toe je videocollectie aan te passen."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"je fotocollectie bekijken"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Hiermee sta je de app toe je fotocollectie te bekijken."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"je fotocollectie aanpassen"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Hiermee sta je de app toe je fotocollectie aan te passen."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"locaties van je mediacollecties bekijken"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Hiermee sta je de app toe locaties van je mediacollectie te bekijken."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Gedeeltelijke vingerafdruk gedetecteerd. Probeer het opnieuw."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Kan vingerafdruk niet verwerken. Probeer het opnieuw."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"De vingerafdruksensor moet worden schoongemaakt. Probeer het daarna opnieuw."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> opslaan in <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> en <xliff:g id="TYPE_1">%2$s</xliff:g> opslaan in <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> en <xliff:g id="TYPE_2">%3$s</xliff:g> opslaan in <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Updaten naar <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"<xliff:g id="TYPE">%1$s</xliff:g> updaten naar <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<xliff:g id="TYPE_0">%1$s</xliff:g> en <xliff:g id="TYPE_1">%2$s</xliff:g> updaten naar <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> en <xliff:g id="TYPE_2">%3$s</xliff:g> updaten naar <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Opslaan"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nee, bedankt"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Updaten"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"Wachtwoord"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"Adres"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"Creditcard"</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index c86fab8e11e8..4d5dd42d260b 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ବଡୀ ସେନ୍ସର୍"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ୱିଣ୍ଡୋ କଣ୍ଟେଣ୍ଟ ହାସଲ କରନ୍ତୁ"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ଆପଣ କାମ କରୁଥିବା ୱିଣ୍ଡୋର କଣ୍ଟେଣ୍ଟକୁ ଯାଞ୍ଚ କରନ୍ତୁ।"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ସ୍ପର୍ଶ ଦ୍ୱାରା ଏକ୍ସପ୍ଲୋର୍ ଅନ୍ କରନ୍ତୁ"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ବ୍ୟବହାର କରିବା ପାଇଁ ଆଙ୍ଗୁଠି ଚିହ୍ନ ଯୋଡ଼ିବାକୁ ଓ ଡିଲିଟ୍ କରିବାକୁ ଆପକୁ ବିଧି ଆରମ୍ଭ କରିବାକୁ ଦେଇଥାଏ।"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ହାର୍ଡୱେର୍ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"ସ୍ୱୀକୃତି ପାଇଁ ଆଙ୍ଗୁଠି ଚିହ୍ନ ହାର୍ଡୱେର୍ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦିଏ"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ଆଂଶିକ ଚିହ୍ନଟ ହେଲା। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ପ୍ରୋସେସ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ଆଙ୍ଗୁଠି ଚିହ୍ନ ସେନ୍ସର୍ ମଇଳା ହୋଇଯାଇଛି। ଦୟାକରି ସଫା କରନ୍ତୁ ଓ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b>ରେ ସେଭ୍ କରିବେ?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> ଏବଂ <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b>ରେ ସେଭ୍ କରିବେ?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, ଏବଂ <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b>ରେ ସେଭ୍ କରିବେ?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"ସେଭ୍ କରନ୍ତୁ"</string> <string name="autofill_save_no" msgid="2625132258725581787">"ନାଁ, ପଚାରିଥିବାରୁ ଧନ୍ୟବାଦ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"ପାସୱର୍ଡ୍"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ଠିକଣା"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"କ୍ରେଡିଟ୍ କାର୍ଡ"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index 48c1a38f4cb6..96fd692cb392 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ਸਰੀਰ ਸੰਵੇਦਕ"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ਵਿੰਡੋ ਸਮੱਗਰੀ ਮੁੜ ਪ੍ਰਾਪਤ ਕਰਨਾ"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ਇੱਕ ਵਿੰਡੋ ਦੀ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰੋ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਅੰਤਰਕਿਰਿਆ ਕਰ ਰਹੇ ਹੋ"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\'ਸਪੱਰਸ਼ ਰਾਹੀਂ ਪੜਚੋਲ ਕਰੋ\' ਚਾਲੂ ਕਰਨਾ"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ਐਪ ਨੂੰ ਵਰਤੋਂ ਲਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਸ਼ਾਮਲ ਕਰਨ ਅਤੇ ਮਿਟਾਉਣ ਦੀਆਂ ਵਿਧੀਆਂ ਦੀ ਬੇਨਤੀ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਹਾਰਡਵੇਅਰ ਵਰਤੋ"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"ਐਪ ਨੂੰ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਹਾਰਡਵੇਅਰ ਵਰਤਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"ਅਧੂਰਾ ਫਿੰਗਰਪ੍ਰਿਟ ਮਿਲਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਪ੍ਰਕਿਰਿਆ ਨਹੀਂ ਕਰ ਸਕਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੰਵੇਦਕ ਗੰਦਾ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਇਸਨੂੰ ਸਾਫ਼ ਕਰੋ ਅਤੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"ਕੀ <xliff:g id="TYPE">%1$s</xliff:g> ਨੂੰ <b><xliff:g id="LABEL">%2$s</xliff:g></b> ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"ਕੀ <xliff:g id="TYPE_0">%1$s</xliff:g> ਅਤੇ <xliff:g id="TYPE_1">%2$s</xliff:g> ਨੂੰ <b><xliff:g id="LABEL">%3$s</xliff:g></b> ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"ਕੀ <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, ਅਤੇ <xliff:g id="TYPE_2">%3$s</xliff:g> ਨੂੰ <b><xliff:g id="LABEL">%4$s</xliff:g></b> ਵਿੱਚ ਰੱਖਿਅਤ ਕਰਨਾ ਹੈ?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"ਰੱਖਿਅਤ ਕਰੋ"</string> <string name="autofill_save_no" msgid="2625132258725581787">"ਨਹੀਂ ਧੰਨਵਾਦ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"ਪਾਸਵਰਡ"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ਪਤਾ"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ਕ੍ਰੈਡਿਟ ਕਾਰਡ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 76e5529876bd..dbc577900e6c 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -306,6 +306,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Czujniki na ciele"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"dostęp do danych czujnika podstawowych funkcji życiowych"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Zezwolić aplikacji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na dostęp do danych z czujnika podstawowych funkcji życiowych?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pobieranie zawartości okna"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Sprawdzanie zawartości okna, z którego korzystasz."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Włączenie czytania dotykiem"</string> @@ -500,6 +512,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Zezwala aplikacji aktywować metody dodawania i usuwania szablonów odcisków palców."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"używanie czytnika linii papilarnych"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Zezwala aplikacji na używanie czytnika linii papilarnych na potrzeby autoryzacji"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Odcisk palca został odczytany tylko częściowo. Spróbuj ponownie."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Nie udało się przetworzyć odcisku palca. Spróbuj ponownie."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Czytnik linii papilarnych jest zabrudzony. Wyczyść go i spróbuj ponownie."</string> @@ -1942,8 +1982,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> – zapisać w: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> i <xliff:g id="TYPE_1">%2$s</xliff:g> – zapisać w: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> i <xliff:g id="TYPE_2">%3$s</xliff:g> – zapisać w: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Zapisz"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nie, dziękuję"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"hasło"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adres"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"karta kredytowa"</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 1260627f7efa..ad68dde271ea 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"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> + <string name="permgrouplab_aural" msgid="965607064083134896">"Músicas"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"acessar suas músicas"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse suas músicas?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotos e vídeos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"acessar suas fotos e seus vídeos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse suas fotos e seus vídeos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Acessar conteúdo de uma janela"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspeciona o conteúdo de uma janela com a qual você está interagindo."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar por toque"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que o app execute métodos para adicionar e excluir modelos de impressão digital para uso."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"usar hardware de impressão digital"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que o app use hardware de impressão digital para autenticação."</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"ler sua coleção de músicas"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Permite que o app leia sua coleção de músicas."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modificar sua coleção de músicas"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Permite que o app modifique sua coleção de músicas."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"ler sua coleção de vídeos"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Permite que o app leia sua coleção de vídeos."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modificar sua coleção de vídeos"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Permite que o app modifique sua coleção de vídeos."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"ler sua coleção de fotos"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Permite que o app leia sua coleção de fotos."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modificar sua coleção de fotos"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Permite que o app modifique sua coleção de fotos."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"ler locais na sua coleção de mídias"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que o app leia os locais na sua coleção de mídias."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital parcial detectada. Tente novamente."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressão digital está sujo. Limpe-o e tente novamente."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Salvar <xliff:g id="TYPE">%1$s</xliff:g> em <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Salvar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> em <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Salvar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> em <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Atualizar no <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Atualizar <xliff:g id="TYPE">%1$s</xliff:g> no <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Atualizar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> no <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Atualizar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> no <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Salvar"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Não, obrigado"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Atualizar"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"senha"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"endereço"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"cartão de crédito"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 597be1214786..631e9f3941c4 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensores de corpo"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"aceder a dados do sensor acerca dos seus sinais vitais"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Pretende permitir que a aplicação <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aceda aos dados do sensor acerca dos seus sinais vitais?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Música"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"aceder à sua música"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Pretende permitir que a aplicação <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aceda à sua música?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotos e vídeos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"aceder aos seus vídeos e fotos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Pretende permitir que a aplicação <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aceda às suas fotos e vídeos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Obter conteúdo da janela"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecionar o conteúdo de uma janela com a qual está a interagir."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar Através do Toque"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que a aplicação invoque métodos para adicionar e eliminar modelos de impressão digital para utilização."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"utilizar o hardware de impressão digital"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que a aplicação utilize o hardware de impressão digital para autenticação"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"ler a sua coleção de música"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Permite que a aplicação leia a sua coleção de música."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modificar a sua coleção de música"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Permite que a aplicação modifique a sua coleção de música."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"ler a sua coleção de vídeos"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Permite que a aplicação leia a sua coleção de vídeos."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modificar a sua coleção de vídeos"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Permite que a aplicação modifique a sua coleção de vídeos."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"ler a sua coleção de fotos"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Permite que a aplicação leia a sua coleção de fotos."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modificar a sua coleção de fotos"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Permite que a aplicação modifique a sua coleção de fotos."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"ler as localizações a partir da sua coleção de multimédia"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que a aplicação leia as localizações a partir da sua coleção de multimédia."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital detetada. Tente novamente."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressões digitais está sujo. Limpe-o e tente novamente."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Pretende guardar <xliff:g id="TYPE">%1$s</xliff:g> no <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Pretende guardar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> no <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Pretende guardar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> no <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Pretende atualizar para o <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Pretende atualizar <xliff:g id="TYPE">%1$s</xliff:g> para o <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Pretende atualizar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> para o <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Pretende atualizar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> para o <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Guardar"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Não, obrigado"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Atualizar"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"palavra-passe"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"endereço"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"cartão de crédito"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 1260627f7efa..ad68dde271ea 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"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> + <string name="permgrouplab_aural" msgid="965607064083134896">"Músicas"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"acessar suas músicas"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse suas músicas?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotos e vídeos"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"acessar suas fotos e seus vídeos"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Permitir que o app <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> acesse suas fotos e seus vídeos?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Acessar conteúdo de uma janela"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspeciona o conteúdo de uma janela com a qual você está interagindo."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ativar Explorar por toque"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite que o app execute métodos para adicionar e excluir modelos de impressão digital para uso."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"usar hardware de impressão digital"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite que o app use hardware de impressão digital para autenticação."</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"ler sua coleção de músicas"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Permite que o app leia sua coleção de músicas."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"modificar sua coleção de músicas"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Permite que o app modifique sua coleção de músicas."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"ler sua coleção de vídeos"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Permite que o app leia sua coleção de vídeos."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"modificar sua coleção de vídeos"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Permite que o app modifique sua coleção de vídeos."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"ler sua coleção de fotos"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Permite que o app leia sua coleção de fotos."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"modificar sua coleção de fotos"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Permite que o app modifique sua coleção de fotos."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"ler locais na sua coleção de mídias"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Permite que o app leia os locais na sua coleção de mídias."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Impressão digital parcial detectada. Tente novamente."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Não foi possível processar a impressão digital. Tente novamente."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"O sensor de impressão digital está sujo. Limpe-o e tente novamente."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Salvar <xliff:g id="TYPE">%1$s</xliff:g> em <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Salvar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> em <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Salvar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> em <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Atualizar no <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Atualizar <xliff:g id="TYPE">%1$s</xliff:g> no <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Atualizar <xliff:g id="TYPE_0">%1$s</xliff:g> e <xliff:g id="TYPE_1">%2$s</xliff:g> no <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Atualizar <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> e <xliff:g id="TYPE_2">%3$s</xliff:g> no <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Salvar"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Não, obrigado"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Atualizar"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"senha"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"endereço"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"cartão de crédito"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index de01af6cce31..ab276df48a01 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -303,6 +303,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Senzori corporali"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"acceseze datele de la senzori despre semnele vitale"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Permiteți <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> să acceseze datele de la senzori despre semnele dvs. vitale?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Analizează conținutul ferestrei"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspectează conținutul unei ferestre cu care interacționați."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activează funcția Explorați prin atingere"</string> @@ -497,6 +509,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Permite aplicației să invoce metode pentru a adăuga și pentru a șterge șabloane de amprentă pentru utilizare."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"folosește hardware-ul pentru amprentă"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Permite aplicației să folosească hardware pentru amprentă pentru autentificare"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"S-a detectat parțial amprenta. Încercați din nou."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Amprenta nu a putut fi procesată. Încercați din nou."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Senzorul pentru amprente este murdar. Curățați-l și încercați din nou."</string> @@ -1907,8 +1947,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Salvați <xliff:g id="TYPE">%1$s</xliff:g> în <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Salvați <xliff:g id="TYPE_0">%1$s</xliff:g> și <xliff:g id="TYPE_1">%2$s</xliff:g> în <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Salvați <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> și <xliff:g id="TYPE_2">%3$s</xliff:g> în <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Salvați"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nu, mulțumesc"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"parolă"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresă"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"card de credit"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 63a8574bd0ea..de009a6a3d97 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -306,6 +306,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Нательные датчики"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Получать содержимое окна"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Анализировать содержимое активного окна."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включать Изучение касанием"</string> @@ -500,6 +512,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Приложение сможет добавлять и удалять шаблоны отпечатков пальцев."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"Использование сканера отпечатков"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Приложение сможет использовать сканер отпечатков пальцев для аутентификации."</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Отсканирована только часть пальца. Повторите попытку."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не удалось распознать отпечаток. Повторите попытку."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Очистите сканер и повторите попытку."</string> @@ -1942,8 +1982,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Сохранить <xliff:g id="TYPE">%1$s</xliff:g> в <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Сохранить <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> в <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Сохранить <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> в <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Сохранить"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Нет, спасибо"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"Пароль"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"Адрес"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"Банковская карта"</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index a3e3ea0c3735..bdc0c7bb8e60 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"ශරීර සංවේදක"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"කවුළු අන්න්තර්ගතය ලබාගන්න"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ඔබ අන්තර්ක්රියාකාරී වන කවුළුවේ අන්තර්ගතය පරීක්ෂා කරන්න."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ස්පර්ශයෙන් ගවේෂණය සක්රිය කරන්න"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ඇඟිලි සලකුණු සැකිලි එකතු කිරීමට සහ ඉවත් කිරීමට අදාළ විධික්රම භාවිතය සඳහා මෙම යෙදුමට අවසර දෙයි."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ඇඟිලි සලකුණු දෘඩාංග භාවිතා කරන්න."</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"අනන්යතාවය තහවුරු කරගැනීමට ඇඟිලි සලකුණු දෘඩාංග භාවිතා කිරීමට මෙම යෙදුමට ඉඩ දෙන්න."</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"ඇඟිලි සලකුණ අඩ වශයෙන් අනාවරණය කර ගැනිණි. කරුණාකර නැවත උත්සාහ කරන්න."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ඇඟිලි සලකුණ පිරිසැකසීමට නොහැකි විය. කරුණාකර නැවත උත්සාහ කරන්න."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"ඇඟිලි සලකුණු සංවේදකය අපිරිසිදුයි. කරුණාකර පිරිසිදු කර නැවත උත්සාහ කරන්න."</string> @@ -1874,8 +1914,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b> වෙත සුරකින්නද?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> සහ <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> වෙත සුරකින්නද?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, සහ <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> වෙත සුරකින්නද?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"සුරකින්න"</string> <string name="autofill_save_no" msgid="2625132258725581787">"එපා ස්තූතියි"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"මුරපදය"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ලිපිනය"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ණය කාඩ්පත"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 3f2f46d56b42..f46771a2a0e2 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -306,6 +306,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Telesné senzory"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"prístup k dátam senzorov vašich životných funkcií"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Povoliť aplikácii <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> používať údaje senzorov o vašich životných funkciách?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítať obsah okna"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Môžete preskúmať obsah okna, s ktorým pracujete."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnúť funkciu Preskúmanie dotykom"</string> @@ -500,6 +512,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Umožňuje aplikácii zavolať metódy, ktoré pridávajú a odstraňujú vzory odtlačkov prstov."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"použiť hardvér na snímanie odtlačkov prstov"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Umožňuje aplikácii používať na overenie totožnosti hardvér na snímanie odtlačkov prstov."</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Podarilo sa rozpoznať iba časť odtlačku prsta. Skúste to znova."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Odtlačok prsta sa nepodarilo spracovať. Skúste to znova."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Snímač odtlačkov je špinavý. Vyčistite ho a skúste to znova."</string> @@ -1942,8 +1982,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Uložiť <xliff:g id="TYPE">%1$s</xliff:g> do služby <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Uložiť <xliff:g id="TYPE_0">%1$s</xliff:g> a <xliff:g id="TYPE_1">%2$s</xliff:g> do služby <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Uložiť <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> a <xliff:g id="TYPE_2">%3$s</xliff:g> do služby <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Uložiť"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nie, vďaka"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"heslo"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditná karta"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 90ab23b059b5..0f9d038332ba 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -306,6 +306,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"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="permgrouplab_aural" msgid="965607064083134896">"Glasba"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"dostop do glasbe"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do glasbe?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Fotografije in videoposnetki"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"dostop do fotografij in videoposnetkov"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Želite aplikaciji <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> omogočiti dostop do fotografij in videoposnetkov?"</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> @@ -500,6 +506,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Aplikaciji omogoča sprožanje načinov za dodajanje in brisanje predlog s prstnimi odtisi za uporabo."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"uporaba strojne opreme za prstne odtise"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Aplikaciji omogoča uporabo strojne opreme za prstne odtise za preverjanje pristnosti"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"branje glasbene zbirke"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Aplikaciji omogoča branje glasbene zbirke."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"spreminjanje glasbene zbirke"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Aplikaciji omogoča spreminjanje glasbene zbirke."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"branje zbirke videoposnetkov"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Aplikaciji omogoča branje zbirke videoposnetkov."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"spreminjanje zbirke videoposnetkov"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Aplikaciji omogoča spreminjanje zbirke videoposnetkov."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"branje zbirke fotografij"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Aplikaciji omogoča branje zbirke fotografij."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"spreminjanje zbirke fotografij"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Aplikaciji omogoča spreminjanje zbirke fotografij."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"branje lokacij v predstavnostni zbirki"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Aplikaciji omogoča branje lokacij v predstavnostni zbirki."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Zaznan delni prstni odtis. Poskusite znova."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Prstnega odtisa ni bilo mogoče obdelati. Poskusite znova."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Tipalo prstnih odtisov je umazano. Očistite ga in poskusite znova."</string> @@ -1942,8 +1962,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Želite <xliff:g id="TYPE">%1$s</xliff:g> shraniti pod oznako <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Želite <xliff:g id="TYPE_0">%1$s</xliff:g> in <xliff:g id="TYPE_1">%2$s</xliff:g> shraniti pod oznako <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Želite <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> in <xliff:g id="TYPE_2">%3$s</xliff:g> shraniti pod oznako <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Želite posodobiti na oznako <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Želite <xliff:g id="TYPE">%1$s</xliff:g> posodobiti na oznako <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Želite <xliff:g id="TYPE_0">%1$s</xliff:g> in <xliff:g id="TYPE_1">%2$s</xliff:g> posodobiti na oznako <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Želite <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> in <xliff:g id="TYPE_2">%3$s</xliff:g> posodobiti na oznako <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Shrani"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ne, hvala"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Posodobi"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"geslo"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"naslov"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditno kartico"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index bb42da41e15e..15888fb0f77a 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Sensorët e trupit"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"qasu tek të dhënat e sensorëve rreth shenjave të tua jetësore"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Të lejohet që <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> të ketë qasje te të dhënat e sensorëve rreth shenjave të tua jetësore?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Nxjerrë përmbajtjen e dritares"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspekton përmbajtjen e dritares me të cilën po ndërvepron."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizojë funksionin \"Eksploro me prekje\""</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"E lejon aplikacionin që të aktivizojë metoda për të shtuar dhe për të fshirë shabllonet e gjurmës së gishtit për përdorim."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"përdor harduerin e gjurmës së gishtit"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"E lejon aplikacionin që të përdorë harduerin e gjurmës së gishtit për verifikim"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"U zbulua një gjurmë gishti e pjesshme. Provo përsëri."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Gjurma e gishtit nuk mund të përpunohej. Provo përsëri."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Sensori i gjurmës së gishtit nuk është i pastër. Pastroje dhe provo përsëri."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Të ruhet <xliff:g id="TYPE">%1$s</xliff:g> te <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Të ruhen <xliff:g id="TYPE_0">%1$s</xliff:g> dhe <xliff:g id="TYPE_1">%2$s</xliff:g> te <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Të ruhen <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> dhe <xliff:g id="TYPE_2">%3$s</xliff:g> te <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Ruaj"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Jo, faleminderit"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"fjalëkalimi"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adresa"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"karta e kreditit"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index fa1dc59cce67..4c86605228fb 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -303,6 +303,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Сензори за тело"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"да преузима садржај прозора"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Проверава садржај прозора са којим остварујете интеракцију."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"да укључи Истраживања додиром"</string> @@ -497,6 +509,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Дозвољава апликацији да активира методе за додавање и брисање шаблона отисака прстију који ће се користити."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"користи хардвер за отиске прстију"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Дозвољава апликацији да користи хардвер за отиске прстију ради потврде аутентичности"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Откривен је делимични отисак прста. Пробајте поново."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Није успела обрада отиска прста. Пробајте поново."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Сензор за отиске прстију је прљав. Очистите га и покушајте поново."</string> @@ -1907,8 +1947,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Желите ли да сачувате ставку <xliff:g id="TYPE">%1$s</xliff:g> у: <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Желите ли да сачувате ставке <xliff:g id="TYPE_0">%1$s</xliff:g> и <xliff:g id="TYPE_1">%2$s</xliff:g> у: <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Желите ли да сачувате ставке <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> и <xliff:g id="TYPE_2">%3$s</xliff:g> у: <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Сачувај"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Не, хвала"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"лозинка"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"адреса"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"кредитна картица"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 7b9005c50563..1f3efe08e67f 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Kroppssensorer"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"få åtkomst till sensordata om dina vitalparametrar"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vill du ge <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> åtkomst till sensordata om vitalparametrar?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Hämta fönsterinnehåll"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Granska innehållet i ett fönster som du interagerar med."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivera Explore by touch"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Tillåter att appen anropar metoder för att lägga till och radera fingeravtrycksmallar."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"använda maskinvara för fingeravtryck"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Tillåter att appen använder maskinvara för fingeravtryck vid autentisering"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Ofullständigt fingeravtryck. Försök igen."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Det gick inte att bearbeta fingeravtrycket. Försök igen."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Fingeravtryckssensorn är smutsig. Rengör den och försök igen."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Vill du spara <xliff:g id="TYPE">%1$s</xliff:g> i <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Vill du spara <xliff:g id="TYPE_0">%1$s</xliff:g> och <xliff:g id="TYPE_1">%2$s</xliff:g> i <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Vill du spara <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> och <xliff:g id="TYPE_2">%3$s</xliff:g> i <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Spara"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Nej tack"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"lösenordet"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adressen"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kreditkortet"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 9d8790dc0212..5a7dcca97bd1 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -298,6 +298,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Vihisi vya Mwili"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"fikia data ya kitambuzi kuhusu alama zako muhimu"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Ungependa kuiruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie data ya vitambuzi kuhusu viashiria muhimu vya mwili wako?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Muziki"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"kufikia muziki wako"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Ungependa kuiruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie muziki wako?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Picha na Video"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"kufikia picha na video zako"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Ungependa kuruhusu <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ifikie picha na video zako?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Kufikia maudhui ya dirisha"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kuchunguza maudhui ya dirisha unalotumia."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Kuwasha \'Chunguza kwa Kugusa\'"</string> @@ -492,6 +498,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Huruhusu programu kuomba njia za kuongeza na kufuta violezo vya kitambulisho kwa matumizi."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"tumia maunzi ya kitambulisho"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Huruhusu programu kutumia maunzi ya kitambulisho kwa uthibitisho"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"kusoma mkusanyiko muziki wako"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Inaruhusu programu kusoma mkusanyiko wa muziki wako."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"kubadilisha mkusanyiko wa muziki wako"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Inaruhusu programu kubadilisha mkusanyiko wa muziki wako."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"kusoma mkusanyiko wa video zako"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Inaruhusu programu kusoma mkusanyiko wa video zako."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"kubadilisha mkusanyiko wa video zako"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Inaruhusu programu kubadilisha mkusanyiko wa video zako."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"kusoma mkusanyiko wa picha zako"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Inaruhusu programu kusoma mkusanyiko wa picha zako."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"kubadilisha mkusanyiko wa picha zako"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Inaruhusu programu kubadilisha mkusanyiko wa picha zako."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"kusoma maeneo kwenye mkusanyiko wa vipengee vyako"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Inaruhusu programu kusoma maeneo kwenye mkusanyiko wa vipengee vyako."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Kitambuzi kimegundua sehemu ya kitambulisho. Tafadhali jaribu tena."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Haikuweza kuchakata kitambulisho. Tafadhali jaribu tena."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Kitambuzi alama ya kidole ni kichafu. Tafadhali kisafishe na ujaribu tena."</string> @@ -1870,8 +1890,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Ungependa kuhifadhi <xliff:g id="TYPE">%1$s</xliff:g> kwenye <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Ungependa kuhifadhi <xliff:g id="TYPE_0">%1$s</xliff:g> na <xliff:g id="TYPE_1">%2$s</xliff:g> kwenye <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Ungependa kuhifadhi <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, na <xliff:g id="TYPE_2">%3$s</xliff:g> kwenye <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Ungependa kusasisha kuwa <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Ungependa kusasisha <xliff:g id="TYPE">%1$s</xliff:g> kuwa <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Ungependa kusasisha <xliff:g id="TYPE_0">%1$s</xliff:g> na <xliff:g id="TYPE_1">%2$s</xliff:g> kuwa <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Ungependa kusasisha <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> na <xliff:g id="TYPE_2">%3$s</xliff:g> kuwa <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Hifadhi"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Hapana, asante"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Sasisha"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"nenosiri"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"anwani"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kadi ya mikopo"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index f39044565c51..00143b9be0ba 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"உடல் சென்சார்கள்"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"சாளர உள்ளடக்கத்தைப் பெறும்"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"நீங்கள் பணியாற்றிக் கொண்டிருக்கும் சாளரத்தின் உள்ளடக்கத்தைப் பார்க்கலாம்."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"தொடுவதன் மூலம் அறிவதை இயக்கும்"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"பயன்படுத்துவதற்காக, கைரேகை டெம்ப்ளேட்களைச் சேர்க்க மற்றும் நீக்குவதற்கான செயல்முறைகளை இயக்குவதற்குப் பயன்பாட்டை அனுமதிக்கும்."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"கைரேகை வன்பொருளைப் பயன்படுத்து"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"அங்கீகரிப்பதற்கு, கைரேகை வன்பொருளைப் பயன்படுத்த, பயன்பாட்டை அனுமதிக்கும்"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"கைரேகையை ஓரளவுதான் கண்டறிய முடிந்தது. மீண்டும் முயலவும்."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"கைரேகையைச் செயலாக்க முடியவில்லை. மீண்டும் முயலவும்."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"கைரேகை உணர்வியில் தூசி உள்ளது. சுத்தம் செய்து, முயலவும்."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>ஐ <b><xliff:g id="LABEL">%2$s</xliff:g></b> இல் சேமிக்கவா?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> மற்றும் <xliff:g id="TYPE_1">%2$s</xliff:g>ஐ <b><xliff:g id="LABEL">%3$s</xliff:g></b> இல் சேமிக்கவா?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, <xliff:g id="TYPE_2">%3$s</xliff:g> ஆகியவற்றை <b><xliff:g id="LABEL">%4$s</xliff:g></b> இல் சேமிக்கவா?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"சேமி"</string> <string name="autofill_save_no" msgid="2625132258725581787">"வேண்டாம்"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"கடவுச்சொல்"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"முகவரி"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"கிரெடிட் கார்டு"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index 98b737f44348..e3f089a762ea 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"శరీర సెన్సార్లు"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"విండో కంటెంట్ను తిరిగి పొందుతుంది"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"మీరు పరస్పర చర్య చేస్తున్న విండో కంటెంట్ను పరిశీలిస్తుంది."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"తాకడం ద్వారా విశ్లేషణను ప్రారంభిస్తుంది"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"వినియోగం కోసం వేలిముద్ర టెంప్లేట్లను జోడించే మరియు తొలగించే పద్ధతులను అమలు చేయడానికి యాప్ను అనుమతిస్తుంది."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"వేలిముద్ర హార్డ్వేర్ని ఉపయోగించడానికి అనుమతి"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"ప్రామాణీకరణ కోసం వేలిముద్ర హార్డ్వేర్ను ఉపయోగించడానికి అనువర్తనాన్ని అనుమతిస్తుంది"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"పాక్షిక వేలిముద్ర గుర్తించబడింది. దయచేసి మళ్లీ ప్రయత్నించండి."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"వేలిముద్రను ప్రాసెస్ చేయడం సాధ్యపడలేదు. దయచేసి మళ్లీ ప్రయత్నించండి."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"వేలిముద్ర సెన్సార్ మురికిగా ఉంది. దయచేసి శుభ్రపరిచి, మళ్లీ ప్రయత్నించండి."</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>ని <b><xliff:g id="LABEL">%2$s</xliff:g></b>కు సేవ్ చేయాలా?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> మరియు <xliff:g id="TYPE_1">%2$s</xliff:g>లను <b><xliff:g id="LABEL">%3$s</xliff:g></b>కు సేవ్ చేయాలా?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> మరియు <xliff:g id="TYPE_2">%3$s</xliff:g>లను <b><xliff:g id="LABEL">%4$s</xliff:g></b>కు సేవ్ చేయాలా?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"సేవ్ చేయి"</string> <string name="autofill_save_no" msgid="2625132258725581787">"వద్దు, ధన్యవాదాలు"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"పాస్వర్డ్"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"చిరునామా"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"క్రెడిట్ కార్డ్"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 89c2e44182c4..537527815318 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"เซ็นเซอร์ร่างกาย"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"เรียกข้อมูลเนื้อหาของหน้าต่าง"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ตรวจสอบเนื้อหาของหน้าต่างที่คุณกำลังโต้ตอบอยู่"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"เปิด \"แตะเพื่อสำรวจ\""</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"อนุญาตให้แอปเรียกใช้วิธีการเพื่อเพิ่มและลบเทมเพลตลายนิ้วมือสำหรับการใช้งาน"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"ใช้ฮาร์ดแวร์ลายนิ้วมือ"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"อนุญาตให้แอปใช้ฮาร์ดแวร์ลายนิ้วมือเพื่อตรวจสอบสิทธิ์"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"ตรวจพบลายนิ้วมือเพียงบางส่วน โปรดลองอีกครั้ง"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"ไม่สามารถประมวลผลลายนิ้วมือได้ โปรดลองอีกครั้ง"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"เซ็นเซอร์ลายนิ้วมือไม่สะอาด โปรดทำความสะอาดและลองอีกครั้ง"</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"บันทึก <xliff:g id="TYPE">%1$s</xliff:g> ไปยัง <b><xliff:g id="LABEL">%2$s</xliff:g></b> ใช่ไหม"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"บันทึก <xliff:g id="TYPE_0">%1$s</xliff:g> และ <xliff:g id="TYPE_1">%2$s</xliff:g> ไปยัง <b><xliff:g id="LABEL">%3$s</xliff:g></b> ใช่ไหม"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"บันทึก <xliff:g id="TYPE_0">%1$s</xliff:g> <xliff:g id="TYPE_1">%2$s</xliff:g> และ <xliff:g id="TYPE_2">%3$s</xliff:g> ไปยัง <b><xliff:g id="LABEL">%4$s</xliff:g></b> ใช่ไหม"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"บันทึก"</string> <string name="autofill_save_no" msgid="2625132258725581787">"ไม่เป็นไร"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"รหัสผ่าน"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ที่อยู่"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"บัตรเครดิต"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 445330935792..c4b14f7f19ec 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Mga Sensor ng Katawan"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"i-access ang data ng sensor tungkol sa iyong vital signs"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na i-access ang data ng sensor tungkol sa iyong mga vital sign?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"Musika"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"i-access ang iyong musika"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na i-access ang iyong musika?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Mga Larawan at Video"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"i-access ang iyong mga larawan at video"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Payagan ang <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> na i-access ang iyong mga larawan at video?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Kunin ang content ng window"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Siyasatin ang nilalaman ng isang window kung saan ka nakikipag-ugnayan."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"I-on ang Explore by Touch"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Pinapayagan ang app na mag-invoke ng mga paraan upang magdagdag at mag-delete ng mga template ng fingerprint na magagamit."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"gamitin ang hardware ng fingerprint"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Pinapayagan ang app na gumamit ng hardware ng fingerprint para sa pagpapatotoo"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"basahin ang iyong koleksyon ng musika"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Pinapayagan ang app na basahin ang iyong koleksyon ng musika."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"baguhin ang iyong koleksyon ng musika"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Pinapayagan ang app na baguhin ang iyong koleksyon ng musika."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"basahin ang iyong koleksyon ng video"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Pinapayagan ang app na basahin ang iyong koleksyon ng video."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"baguhin ang iyong koleksyon ng video"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Pinapayagan ang app na baguhin ang iyong koleksyon ng video."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"basahin ang iyong koleksyon ng larawan"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Pinapayagan ang app na basahin ang iyong koleksyon ng larawan."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"baguhin ang iyong koleksyon ng larawan"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Pinapayagan ang app na baguhin ang iyong koleksyon ng larawan."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"basahin ang mga lokasyon mula sa iyong koleksyon ng media"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Pinapayagan ang app na basahin ang mga lokasyon mula sa iyong koleksyon ng media."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Hindi buo ang natukoy na fingerprint. Pakisubukang muli."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Hindi maproseso ang fingerprint. Pakisubukang muli."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Marumi ang sensor ng fingerprint. Pakilinis at subukang muli."</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"I-save ang <xliff:g id="TYPE">%1$s</xliff:g> sa <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"I-save ang <xliff:g id="TYPE_0">%1$s</xliff:g> at <xliff:g id="TYPE_1">%2$s</xliff:g> sa <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"I-save ang <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, at <xliff:g id="TYPE_2">%3$s</xliff:g> sa <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"I-update sa <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"I-update ang <xliff:g id="TYPE">%1$s</xliff:g> sa <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"I-update ang <xliff:g id="TYPE_0">%1$s</xliff:g> at <xliff:g id="TYPE_1">%2$s</xliff:g> sa <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"I-update ang <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, at <xliff:g id="TYPE_2">%3$s</xliff:g> sa <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"I-save"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Hindi, salamat na lang"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"I-update"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"password"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"address"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"credit card"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 54f92e1a3ea8..7ed5859313dc 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Vücut Sensörleri"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"hayati belirtilerinizle ilgili sensör verilerine erişme"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uygulamasının hayati belirtilerinizle ilgili sensör verilerine erişmesine izin verilsin mi?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pencere içeriğini alma"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Etkileşim kurduğunuz pencerenin içeriğini inceler."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Dokunarak Keşfet\'i açma"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Uygulamanın, kullanılacak parmak izi şablonlarını ekleme ve silme yöntemlerini başlatmasına izin verir."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"parmak izi donanımını kullanma"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Uygulamanın kimlik doğrulama için parmak izi donanımını kullanmasına izin verir."</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Parmak izinin tümü algılanamadı. Lütfen tekrar deneyin."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Parmak izi işlenemedi. Lütfen tekrar deneyin."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Parmak izi sensörü kirli. Lütfen temizleyin ve tekrar deneyin."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g>, <b><xliff:g id="LABEL">%2$s</xliff:g></b> hizmetine kaydedilsin mi?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> ve <xliff:g id="TYPE_1">%2$s</xliff:g>, <b><xliff:g id="LABEL">%3$s</xliff:g></b> hizmetine kaydedilsin mi?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> ve <xliff:g id="TYPE_2">%3$s</xliff:g>, <b><xliff:g id="LABEL">%4$s</xliff:g></b> hizmetine kaydedilsin mi?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Kaydet"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Hayır, teşekkürler"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"şifre"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"adres"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredi kartı"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 64761341c1c0..45b8dd4a37f2 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -306,6 +306,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Датчики на тілі"</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="permgrouplab_aural" msgid="965607064083134896">"Музика"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"доступ до музики"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"Надати додатку <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> доступ до музики?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Фото й відео"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"доступ до фото й відео"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"Надати додатку <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> @@ -500,6 +506,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Увімкнути в додатку функції для додавання й видалення шаблонів цифрових відбитків."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"використання сканера цифрових відбитків"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Дозволити додатку використовувати апаратне забезпечення для автентифікації"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"розпізнавати колекцію музики"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Додаток зможе розпізнавати вашу колекцію музики."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"змінювати колекцію музики"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Додаток зможе змінювати вашу колекцію музики."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"розпізнавати колекцію відео"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Додаток зможе розпізнавати вашу колекцію відео."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"змінювати колекцію відео"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Додаток зможе змінювати вашу колекцію відео."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"розпізнавати колекцію фотографій"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Додаток зможе розпізнавати вашу колекцію фотографій."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"змінювати колекцію фотографій"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Додаток зможе змінювати вашу колекцію фотографій."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"розпізнавати геодані з колекції медіа-вмісту"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Додаток зможе розпізнавати геодані з вашої колекції медіа-вмісту."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Відбиток розпізнано частково. Повторіть спробу."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Не вдалось обробити відбиток. Повторіть спробу."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Датчик відбитків забруднився. Очистьте його та повторіть спробу."</string> @@ -1942,8 +1962,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Зберегти дані (<xliff:g id="TYPE">%1$s</xliff:g>) у службі <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Зберегти дані (<xliff:g id="TYPE_0">%1$s</xliff:g> і <xliff:g id="TYPE_1">%2$s</xliff:g>) у службі <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Зберегти дані (<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> і <xliff:g id="TYPE_2">%3$s</xliff:g>) у службі <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"Оновити дані в сервісі <b><xliff:g id="LABEL">%1$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"Оновити дані (<xliff:g id="TYPE">%1$s</xliff:g>) у сервісі <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"Оновити дані (<xliff:g id="TYPE_0">%1$s</xliff:g> і <xliff:g id="TYPE_1">%2$s</xliff:g>) у сервісі <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"Оновити дані (<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> і <xliff:g id="TYPE_2">%3$s</xliff:g>) у сервісі <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Зберегти"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Ні, дякую"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Оновити"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"пароль"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"адреса"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"кредитна картка"</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 2ed0e6c8bdee..3c92c3d7ddbb 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"باڈی سینسرز"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ونڈو مواد بازیافت کرنے کی"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"کسی ایسی ونڈو کے مواد کا معائنہ کریں جس کے ساتھ آپ تعامل کر رہے ہیں۔"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"ٹچ کے ذریعے دریافت کریں کو آن کرنے کی"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"ایپ کو استعمال کیلئے فنگر پرنٹ کی تمثیلات شامل کرنے اور حذف کرنے کیلئے طریقوں کو کالعدم قرار دینے کی اجازت دیتا ہے۔"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"فنگر پرنٹ ہارڈ ویئر استعمال کریں"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"ایپ کو توثیق کیلئے فنگر پرنٹ ہارڈ ویئر استعمال کرنے کی اجازت دیتا ہے"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"جزوی فنگر پرنٹ کی شناخت ہوئی۔ براہ کرم دوبارہ کوشش کریں۔"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"فنگر پرنٹ پر کارروائی نہیں کی جا سکی۔ براہ کرم دوبارہ کوشش کریں۔"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"فنگر پرنٹ سینسر گندا ہے۔ براہ کرم صاف کریں اور دوبارہ کوشش کریں۔"</string> @@ -1873,8 +1913,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> کو <b><xliff:g id="LABEL">%2$s</xliff:g></b> میں محفوظ کریں؟"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> اور <xliff:g id="TYPE_1">%2$s</xliff:g> کو <b><xliff:g id="LABEL">%3$s</xliff:g></b> میں محفوظ کریں؟"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>،<xliff:g id="TYPE_1">%2$s</xliff:g>، اور <xliff:g id="TYPE_2">%3$s</xliff:g> کو <b><xliff:g id="LABEL">%4$s</xliff:g></b> میں محفوظ کریں؟"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"محفوظ کریں"</string> <string name="autofill_save_no" msgid="2625132258725581787">"نہیں، شکریہ"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"پاس ورڈ"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"پتہ"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"کریڈٹ کارڈ"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 1d4c07426ccf..684e78a50e53 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"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> + <string name="permgrouplab_aural" msgid="965607064083134896">"Musiqa"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"musiqaga kirish"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun musiqangizga kirishga ruxsat berilsinmi?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"Surat va videolar"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"surat va videolarga kirish"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> uchun surat va videolaringizga kirishga ruxsat berilsinmi?"</string> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Oynadagi kontentni o‘qiydi"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Joriy oynadagi kontent mazmunini aniqlaydi."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Teginib o‘rganish xizmatini yoqadi"</string> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Ilova foydalanish uchun barmoq izi namunalarini qo‘shish va o‘chirish usullarini qo‘llashi mumkin."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"barmoq izi sensoridan foydalanish"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Ilova haqiqiylikni tekshirish uchun barmoq izi sensoridan foydalanishi mumkin"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"musiqiy to‘plamni o‘qish"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"Ilovaga musiqiy to‘plamingizni o‘qishga ruxsat beradi."</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"musiqiy to‘plamni o‘zgartirish"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"Ilovaga musiqiy to‘plamni o‘zgartirishga ruxsat beradi."</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"video to‘plamni o‘qish"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"Ilovaga video to‘plamingizni o‘qishga ruxsat beradi."</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"video to‘plamni o‘zgartirish"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"Ilovaga video to‘plamingizni o‘zgartirishga ruxsat beradi."</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"suratlar to‘plamini o‘qish"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"Ilovaga suratlar to‘plamingizni o‘qishga ruxsat beradi."</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"suratlar to‘plamini o‘zgartirish"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"Ilovaga suratlar to‘plamingizni o‘zgartirishga ruxsat beradi."</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"multimedia to‘plamidan joylashuv axborotini o‘qish"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"Ilovaga multimedia to‘plamingizdan joylashuv axborotini o‘qishga ruxsat beradi."</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Barmoq izi qisman aniqlandi. Qayta urinib ko‘ring."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Barmoq izi aniqlanmadi. Qayta urinib ko‘ring."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Barmoq izi skaneri kirlangan. Uni tozalab, keyin qayta urinib ko‘ring."</string> @@ -1873,8 +1893,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"<xliff:g id="TYPE">%1$s</xliff:g> <b><xliff:g id="LABEL">%2$s</xliff:g></b> xizmatiga saqlansinmi?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"<xliff:g id="TYPE_0">%1$s</xliff:g> va <xliff:g id="TYPE_1">%2$s</xliff:g> <b><xliff:g id="LABEL">%3$s</xliff:g></b> xizmatiga saqlansinmi?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> va <xliff:g id="TYPE_2">%3$s</xliff:g> <b><xliff:g id="LABEL">%4$s</xliff:g></b> xizmatiga saqlansinmi?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"<b><xliff:g id="LABEL">%1$s</xliff:g></b> xizmatidagi ma’lumot yangilansinmi?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"<b><xliff:g id="LABEL">%2$s</xliff:g></b> xizmatida <xliff:g id="TYPE">%1$s</xliff:g> ma’lumotlari yangilansinmi?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"<b><xliff:g id="LABEL">%3$s</xliff:g></b> xizmatidagi <xliff:g id="TYPE_0">%1$s</xliff:g> va <xliff:g id="TYPE_1">%2$s</xliff:g> ma’lumotlari yangilansinmi?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"<b><xliff:g id="LABEL">%4$s</xliff:g></b> xizmatidagi <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> va <xliff:g id="TYPE_2">%3$s</xliff:g> ma’lumotlari yangilansinmi?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"Saqlash"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Kerak emas"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"Yangilash"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"parol"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"manzil"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"kredit karta"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index a45118f472bd..4e84f620b225 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Cảm biến cơ thể"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"truy cập dữ liệu cảm biến về dấu hiệu sinh tồn của bạn"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Cho phép <b><xliff:g id="APP_NAME">%1$s</xliff:g></b> truy cập vào dữ liệu cảm biến về các dấu hiệu sinh tồn của bạn?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Truy xuất nội dung cửa sổ"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kiểm tra nội dung của cửa sổ bạn đang tương tác."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Bật Khám phá bằng cách chạm"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Cho phép ứng dụng gọi các phương pháp để thêm và xóa các mẫu vân tay để sử dụng."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"sử dụng phần cứng vân tay"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Cho phép ứng dụng sử dụng phần cứng vân tay để xác thực"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Đã phát hiện được một phần vân tay. Vui lòng thử lại."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Không thể xử lý vân tay. Vui lòng thử lại."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Cảm biến vân tay bị bẩn. Hãy làm sạch và thử lại."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Lưu <xliff:g id="TYPE">%1$s</xliff:g> vào <b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Lưu <xliff:g id="TYPE_0">%1$s</xliff:g> và <xliff:g id="TYPE_1">%2$s</xliff:g> vào <b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Lưu <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> và <xliff:g id="TYPE_2">%3$s</xliff:g> vào <b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Lưu"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Không, cảm ơn"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"mật khẩu"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"địa chỉ"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"thẻ tín dụng"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 8a55d016c74e..0de78ce64de7 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"身体传感器"</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> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"检索窗口内容"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"检测您正访问的窗口的内容。"</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"启用触摸浏览"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"允许该应用调用方法来添加和删除可用的指纹模板。"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"使用指纹硬件"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"允许该应用使用指纹硬件进行身份验证"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"仅检测到部分指纹,请重试。"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"无法处理指纹,请重试。"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指纹传感器有脏污。请擦拭干净,然后重试。"</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"要将<xliff:g id="TYPE">%1$s</xliff:g>保存到<b><xliff:g id="LABEL">%2$s</xliff:g></b>吗?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"要将<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>保存到<b><xliff:g id="LABEL">%3$s</xliff:g></b>吗?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"要将<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>保存到<b><xliff:g id="LABEL">%4$s</xliff:g></b>吗?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"保存"</string> <string name="autofill_save_no" msgid="2625132258725581787">"不用了"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"密码"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"地址"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"信用卡"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 0b7520211b1e..91633cd705c1 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"人體感應器"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"存取與您生命體徵相關的感應器資料"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取與您身體機能相關的感應器資料嗎?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"音樂"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"存取你的音樂"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取你的音樂嗎?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"相片和影片"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"存取你的相片和影片"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></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> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"允許應用程式調用加入和刪除指紋模板的方法以供使用。"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"使用指紋硬件"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"允許應用程式使用指紋硬件驗證"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"讀取你的音樂收藏"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"允許應用程式讀取你的音樂收藏。"</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"修改你的音樂收藏"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"允許應用程式修改你的音樂收藏。"</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"讀取你的影片收藏"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"允許應用程式讀取你的影片收藏。"</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"修改你的影片收藏"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"允許應用程式修改你的影片收藏。"</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"讀取你的相片收藏"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"允許應用程式讀取你的相片收藏。"</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"修改你的相片收藏"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"允許應用程式修改你的相片收藏。"</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"讀取你的媒體收藏的位置資訊"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"允許應用程式讀取你的媒體收藏的位置資訊。"</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"只偵測到部分指紋。請再試一次。"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"無法處理指紋。請再試一次。"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋感應器不乾淨。請清潔後再試一次。"</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"要將<xliff:g id="TYPE">%1$s</xliff:g>儲存至「<b><xliff:g id="LABEL">%2$s</xliff:g></b>」嗎?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>儲存至「<b><xliff:g id="LABEL">%3$s</xliff:g></b>」嗎?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>儲存至「<b><xliff:g id="LABEL">%4$s</xliff:g></b>」嗎?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"要更新為「<xliff:g id="LABEL">%1$s</xliff:g>」<b></b>嗎?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"要將<xliff:g id="TYPE">%1$s</xliff:g>更新為「<xliff:g id="LABEL">%2$s</xliff:g>」<b></b>嗎?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>更新為「<xliff:g id="LABEL">%3$s</xliff:g>」<b></b>嗎?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>更新為「<xliff:g id="LABEL">%4$s</xliff:g>」<b></b>嗎?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"儲存"</string> <string name="autofill_save_no" msgid="2625132258725581787">"不用了,謝謝"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"更新"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"密碼"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"地址"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"信用卡"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index d130fba07502..219f137a75a7 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -300,6 +300,12 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"人體感應器"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"存取與你生命徵象相關的感應器資料"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」存取與你生命徵象相關的感應器資料嗎?"</string> + <string name="permgrouplab_aural" msgid="965607064083134896">"音樂"</string> + <string name="permgroupdesc_aural" msgid="4870189506255958055">"存取你的音樂"</string> + <string name="permgrouprequest_aural" msgid="6787926123071735620">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></b>存取你的音樂嗎?"</string> + <string name="permgrouplab_visual" msgid="8030190588123857921">"相片和影片"</string> + <string name="permgroupdesc_visual" msgid="3415827902566663546">"存取你的相片和影片"</string> + <string name="permgrouprequest_visual" msgid="6907523945030290376">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<b></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> @@ -494,6 +500,20 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"允許應用程式呼叫方法來新增及移除可用的指紋範本"</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"使用指紋硬體"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"允許應用程式使用指紋硬體進行驗證"</string> + <string name="permlab_audioRead" msgid="6617225220728465565">"讀取你的音樂收藏"</string> + <string name="permdesc_audioRead" msgid="5034032570243484805">"允許應用程式讀取你的音樂收藏。"</string> + <string name="permlab_audioWrite" msgid="2661772059799779292">"修改你的音樂收藏"</string> + <string name="permdesc_audioWrite" msgid="8888544708166230494">"允許應用程式修改你的音樂收藏。"</string> + <string name="permlab_videoRead" msgid="9182618678674737229">"讀取你的影片收藏"</string> + <string name="permdesc_videoRead" msgid="7045676429859396194">"允許應用程式讀取你的影片收藏。"</string> + <string name="permlab_videoWrite" msgid="128769316366746446">"修改你的影片收藏"</string> + <string name="permdesc_videoWrite" msgid="5448565757490640841">"允許應用程式修改你的影片收藏。"</string> + <string name="permlab_imagesRead" msgid="3015078545742665304">"讀取你的相片收藏"</string> + <string name="permdesc_imagesRead" msgid="3144263806038695580">"允許應用程式讀取你的相片收藏。"</string> + <string name="permlab_imagesWrite" msgid="3391306186247235510">"修改你的相片收藏"</string> + <string name="permdesc_imagesWrite" msgid="7073662756617474375">"允許應用程式修改你的相片收藏。"</string> + <string name="permlab_mediaLocation" msgid="8675148183726247864">"讀取你的媒體收藏的位置資訊"</string> + <string name="permdesc_mediaLocation" msgid="2237023389178865130">"允許應用程式讀取你的媒體收藏的位置資訊。"</string> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"僅偵測到部分指紋,請再試一次。"</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"無法處理指紋,請再試一次。"</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"指紋感應器有髒汙。請清潔感應器,然後再試一次。"</string> @@ -1872,8 +1892,13 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"要將<xliff:g id="TYPE">%1$s</xliff:g>儲存到「<xliff:g id="LABEL">%2$s</xliff:g>」嗎?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>儲存到「<xliff:g id="LABEL">%3$s</xliff:g>」嗎?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>儲存到「<xliff:g id="LABEL">%4$s</xliff:g>」嗎?"</string> + <string name="autofill_update_title" msgid="4879673117448810818">"要更新為「<xliff:g id="LABEL">%1$s</xliff:g>」<b></b>嗎?"</string> + <string name="autofill_update_title_with_type" msgid="339733442087186755">"要將<xliff:g id="TYPE">%1$s</xliff:g>更新為「<xliff:g id="LABEL">%2$s</xliff:g>」<b></b>嗎?"</string> + <string name="autofill_update_title_with_2types" msgid="6321714204167424745">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>和<xliff:g id="TYPE_1">%2$s</xliff:g>更新為「<xliff:g id="LABEL">%3$s</xliff:g>」<b></b>嗎?"</string> + <string name="autofill_update_title_with_3types" msgid="5866735124066629287">"要將<xliff:g id="TYPE_0">%1$s</xliff:g>、<xliff:g id="TYPE_1">%2$s</xliff:g>和<xliff:g id="TYPE_2">%3$s</xliff:g>更新為「<xliff:g id="LABEL">%4$s</xliff:g>」<b></b>嗎?"</string> <string name="autofill_save_yes" msgid="6398026094049005921">"儲存"</string> <string name="autofill_save_no" msgid="2625132258725581787">"不用了,謝謝"</string> + <string name="autofill_update_yes" msgid="310358413273276958">"更新"</string> <string name="autofill_save_type_password" msgid="5288448918465971568">"密碼"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"地址"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"信用卡"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index fed482486191..37a2e20426cb 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -300,6 +300,18 @@ <string name="permgrouplab_sensors" msgid="416037179223226722">"Izinzwa zomzimba"</string> <string name="permgroupdesc_sensors" msgid="7147968539346634043">"finyelela idatha yesizweli mayelana nezimpawu zakho ezibalulekile"</string> <string name="permgrouprequest_sensors" msgid="6349806962814556786">"Vumela i-<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> ukuthi ifinyelele kudatha yenzwa emayelana nezimpawu zakho ezibalulekile?"</string> + <!-- no translation found for permgrouplab_aural (965607064083134896) --> + <skip /> + <!-- no translation found for permgroupdesc_aural (4870189506255958055) --> + <skip /> + <!-- no translation found for permgrouprequest_aural (6787926123071735620) --> + <skip /> + <!-- no translation found for permgrouplab_visual (8030190588123857921) --> + <skip /> + <!-- no translation found for permgroupdesc_visual (3415827902566663546) --> + <skip /> + <!-- no translation found for permgrouprequest_visual (6907523945030290376) --> + <skip /> <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Thola okuqukethwe kwewindi"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Hlola okuqukethwe kwewindi ohlanganyela nalo."</string> <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vula ukuhlola ngokuthinta"</string> @@ -494,6 +506,34 @@ <string name="permdesc_manageFingerprint" msgid="178208705828055464">"Ivumela uhlelo lokusebenza ukuthi libuyisele izindlela zokungeza nokususa izifanekiso zezigxivizo zeminwe ngokusetshenziswa."</string> <string name="permlab_useFingerprint" msgid="3150478619915124905">"sebenzisa izingxenyekazi zekhompyutha zezigxivizo zeminwe"</string> <string name="permdesc_useFingerprint" msgid="9165097460730684114">"Ivumela uhlelo lokusebenza ukuthi lusebenzise izingxenyekazi zekhompyutha zezigxivizo zeminwe ukuze kuqinisekiswe"</string> + <!-- no translation found for permlab_audioRead (6617225220728465565) --> + <skip /> + <!-- no translation found for permdesc_audioRead (5034032570243484805) --> + <skip /> + <!-- no translation found for permlab_audioWrite (2661772059799779292) --> + <skip /> + <!-- no translation found for permdesc_audioWrite (8888544708166230494) --> + <skip /> + <!-- no translation found for permlab_videoRead (9182618678674737229) --> + <skip /> + <!-- no translation found for permdesc_videoRead (7045676429859396194) --> + <skip /> + <!-- no translation found for permlab_videoWrite (128769316366746446) --> + <skip /> + <!-- no translation found for permdesc_videoWrite (5448565757490640841) --> + <skip /> + <!-- no translation found for permlab_imagesRead (3015078545742665304) --> + <skip /> + <!-- no translation found for permdesc_imagesRead (3144263806038695580) --> + <skip /> + <!-- no translation found for permlab_imagesWrite (3391306186247235510) --> + <skip /> + <!-- no translation found for permdesc_imagesWrite (7073662756617474375) --> + <skip /> + <!-- no translation found for permlab_mediaLocation (8675148183726247864) --> + <skip /> + <!-- no translation found for permdesc_mediaLocation (2237023389178865130) --> + <skip /> <string name="fingerprint_acquired_partial" msgid="735082772341716043">"Izigxivizo zeminwe ezincane zitholiwe. Sicela uzame futhi."</string> <string name="fingerprint_acquired_insufficient" msgid="4596546021310923214">"Ayikwazanga ukucubungula izigxivizo zeminwe. Sicela uzame futhi."</string> <string name="fingerprint_acquired_imager_dirty" msgid="1087209702421076105">"Inzwa yezigxivizo zeminwe ingcolile. Sicela uyihlanze uphinde uzame futhi."</string> @@ -1872,8 +1912,18 @@ <string name="autofill_save_title_with_type" msgid="8637809388029313305">"Londoloza i-<xliff:g id="TYPE">%1$s</xliff:g> ku-<b><xliff:g id="LABEL">%2$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_2types" msgid="5214035651838265325">"Londoloza i-<xliff:g id="TYPE_0">%1$s</xliff:g> ne-<xliff:g id="TYPE_1">%2$s</xliff:g> ku-<b><xliff:g id="LABEL">%3$s</xliff:g></b>?"</string> <string name="autofill_save_title_with_3types" msgid="6943161834231458441">"Londoloza i-<xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g>, ne-<xliff:g id="TYPE_2">%3$s</xliff:g> ku-<b><xliff:g id="LABEL">%4$s</xliff:g></b>?"</string> + <!-- no translation found for autofill_update_title (4879673117448810818) --> + <skip /> + <!-- no translation found for autofill_update_title_with_type (339733442087186755) --> + <skip /> + <!-- no translation found for autofill_update_title_with_2types (6321714204167424745) --> + <skip /> + <!-- no translation found for autofill_update_title_with_3types (5866735124066629287) --> + <skip /> <string name="autofill_save_yes" msgid="6398026094049005921">"Londoloza"</string> <string name="autofill_save_no" msgid="2625132258725581787">"Cha ngiyabonga"</string> + <!-- no translation found for autofill_update_yes (310358413273276958) --> + <skip /> <string name="autofill_save_type_password" msgid="5288448918465971568">"iphasiwedi"</string> <string name="autofill_save_type_address" msgid="4936707762193009542">"ikheli"</string> <string name="autofill_save_type_credit_card" msgid="7127694776265563071">"ikhadi lesikweletu"</string> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index c8343e2c5cb1..b15c9c5f5e18 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2105,6 +2105,9 @@ <!-- Type of the long press sensor. Empty if long press is not supported. --> <string name="config_dozeLongPressSensorType" translatable="false"></string> + <!-- Type of the reach sensor. Empty if reach is not supported. --> + <string name="config_dozeReachSensorType" translatable="false"></string> + <!-- Control whether the always on display mode is available. This should only be enabled on devices where the display has been tuned to be power efficient in DOZE and/or DOZE_SUSPEND states. --> @@ -2356,6 +2359,9 @@ <!-- Whether safe headphone volume is enabled or not (country specific). --> <bool name="config_safe_media_volume_enabled">true</bool> + <!-- Whether safe headphone volume warning dialog is disabled on Vol+ (operator specific). --> + <bool name="config_safe_media_disable_on_volume_up">true</bool> + <!-- Set to true if the wifi display supports compositing content stored in gralloc protected buffers. For this to be true, there must exist a protected hardware path for surface flinger to composite and send diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 5e1109e24b36..2271baa6b705 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -309,6 +309,7 @@ <java-symbol type="bool" name="config_allowAnimationsInLowPowerMode" /> <java-symbol type="bool" name="config_useDevInputEventForAudioJack" /> <java-symbol type="bool" name="config_safe_media_volume_enabled" /> + <java-symbol type="bool" name="config_safe_media_disable_on_volume_up" /> <java-symbol type="bool" name="config_camera_sound_forced" /> <java-symbol type="bool" name="config_dontPreferApn" /> <java-symbol type="bool" name="config_restartRadioAfterProvisioning" /> @@ -3261,6 +3262,7 @@ <java-symbol type="array" name="config_hideWhenDisabled_packageNames" /> <java-symbol type="string" name="config_dozeLongPressSensorType" /> + <java-symbol type="string" name="config_dozeReachSensorType" /> <java-symbol type="array" name="config_allowedGlobalInstantAppSettings" /> <java-symbol type="array" name="config_allowedSystemInstantAppSettings" /> diff --git a/data/etc/platform.xml b/data/etc/platform.xml index b3f05dc9fc98..6f52fbd1b4f5 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -182,11 +182,11 @@ code to link against. --> <library name="android.test.base" - file="/system/framework/android.test.base.jar" /> + file="/system/framework/android.test.base.impl.jar" /> <library name="android.test.mock" - file="/system/framework/android.test.mock.jar" /> + file="/system/framework/android.test.mock.impl.jar" /> <library name="android.test.runner" - file="/system/framework/android.test.runner.jar" /> + file="/system/framework/android.test.runner.impl.jar" /> <!-- These are the standard packages that are white-listed to always have internet access while in power save mode, even if they aren't in the foreground. --> diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index f6587d38d857..616a8d64b5b6 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -126,6 +126,7 @@ applications that come with the platform <privapp-permissions package="com.android.omadm.service"> <permission name="android.permission.CHANGE_CONFIGURATION"/> <permission name="android.permission.CONNECTIVITY_INTERNAL"/> + <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS"/> <permission name="android.permission.MODIFY_PHONE_STATE"/> <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/> <permission name="android.permission.WRITE_APN_SETTINGS"/> diff --git a/graphics/java/android/graphics/fonts/Font.java b/graphics/java/android/graphics/fonts/Font.java index 9d94a641f795..f0c519922fdd 100644 --- a/graphics/java/android/graphics/fonts/Font.java +++ b/graphics/java/android/graphics/fonts/Font.java @@ -36,11 +36,13 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import java.util.Arrays; +import java.util.Objects; /** * A font class can be used for creating FontFamily. */ -public class Font { +public final class Font { private static final String TAG = "Font"; private static final int NOT_SPECIFIED = -1; @@ -109,6 +111,7 @@ public class Font { private @IntRange(from = -1, to = 1) int mItalic = NOT_SPECIFIED; private @IntRange(from = 0) int mTtcIndex = 0; private @Nullable FontVariationAxis[] mAxes = null; + private @Nullable IOException mException; /** * Constructs a builder with a byte buffer. @@ -132,11 +135,13 @@ public class Font { * * @param path a file path to the font file */ - public Builder(@NonNull File path) throws IOException { + public Builder(@NonNull File path) { Preconditions.checkNotNull(path, "path can not be null"); try (FileInputStream fis = new FileInputStream(path)) { final FileChannel fc = fis.getChannel(); mBuffer = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); + } catch (IOException e) { + mException = e; } } @@ -145,7 +150,7 @@ public class Font { * * @param fd a file descriptor */ - public Builder(@NonNull FileDescriptor fd) throws IOException { + public Builder(@NonNull FileDescriptor fd) { this(fd, 0, -1); } @@ -157,11 +162,13 @@ public class Font { * @param size a size of the font data. If -1 is passed, use until end of the file. */ public Builder(@NonNull FileDescriptor fd, @IntRange(from = 0) long offset, - @IntRange(from = -1) long size) throws IOException { + @IntRange(from = -1) long size) { try (FileInputStream fis = new FileInputStream(fd)) { final FileChannel fc = fis.getChannel(); size = (size == -1) ? fc.size() - offset : size; mBuffer = fc.map(FileChannel.MapMode.READ_ONLY, offset, size); + } catch (IOException e) { + mException = e; } } @@ -171,15 +178,17 @@ public class Font { * @param am the application's asset manager * @param path the file name of the font data in the asset directory */ - public Builder(@NonNull AssetManager am, @NonNull String path) throws IOException { + public Builder(@NonNull AssetManager am, @NonNull String path) { final long nativeAsset = nGetNativeAsset(am, path, true /* is asset */, 0 /* cookie */); if (nativeAsset == 0) { - throw new FileNotFoundException("Unable to open " + path); + mException = new FileNotFoundException("Unable to open " + path); + return; } final ByteBuffer b = nGetAssetBuffer(nativeAsset); sAssetByteBufferRegistroy.registerNativeAllocation(b, nativeAsset); if (b == null) { - throw new FileNotFoundException(path + " not found"); + mException = new FileNotFoundException(path + " not found"); + return; } mBuffer = b; } @@ -192,25 +201,29 @@ public class Font { * @param res the resource of this application. * @param resId the resource ID of font file. */ - public Builder(@NonNull Resources res, int resId) throws IOException { + public Builder(@NonNull Resources res, int resId) { final TypedValue value = new TypedValue(); res.getValue(resId, value, true); if (value.string == null) { - throw new FileNotFoundException(resId + " not found"); + mException = new FileNotFoundException(resId + " not found"); + return; } final String str = value.string.toString(); if (str.toLowerCase().endsWith(".xml")) { - throw new FileNotFoundException(resId + " must be font file."); + mException = new FileNotFoundException(resId + " must be font file."); + return; } final long nativeAsset = nGetNativeAsset(res.getAssets(), str, false /* is asset */, value.assetCookie); if (nativeAsset == 0) { - throw new FileNotFoundException("Unable to open " + str); + mException = new FileNotFoundException("Unable to open " + str); + return; } final ByteBuffer b = nGetAssetBuffer(nativeAsset); sAssetByteBufferRegistroy.registerNativeAllocation(b, nativeAsset); if (b == null) { - throw new FileNotFoundException(str + " not found"); + mException = new FileNotFoundException(str + " not found"); + return; } mBuffer = b; } @@ -347,7 +360,7 @@ public class Font { * @return this builder */ public @NonNull Builder setFontVariationSettings(@Nullable FontVariationAxis[] axes) { - mAxes = axes; + mAxes = axes == null ? null : axes.clone(); return this; } @@ -355,7 +368,10 @@ public class Font { * Creates the font based on the configured values. * @return the Font object */ - public @Nullable Font build() { + public @Nullable Font build() throws IOException { + if (mException != null) { + throw new IOException("Failed to read font contents", mException); + } if (mWeight == NOT_SPECIFIED || mItalic == NOT_SPECIFIED) { final int packed = FontFileUtil.analyzeStyle(mBuffer, mTtcIndex, mAxes); if (FontFileUtil.isSuccess(packed)) { @@ -378,7 +394,7 @@ public class Font { } } final long ptr = nBuild(builderPtr, mBuffer, mWeight, italic, mTtcIndex); - final Font font = new Font(ptr, mWeight, italic, mTtcIndex, mAxes); + final Font font = new Font(ptr, mBuffer, mWeight, italic, mTtcIndex, mAxes); sFontRegistory.registerNativeAllocation(font, ptr); return font; } @@ -405,6 +421,7 @@ public class Font { } private final long mNativePtr; // address of the shared ptr of minikin::Font + private final @NonNull ByteBuffer mBuffer; private final @IntRange(from = 0, to = 1000) int mWeight; private final boolean mItalic; private final @IntRange(from = 0) int mTtcIndex; @@ -413,8 +430,10 @@ public class Font { /** * Use Builder instead */ - private Font(long nativePtr, @IntRange(from = 0, to = 1000) int weight, boolean italic, + private Font(long nativePtr, @NonNull ByteBuffer buffer, + @IntRange(from = 0, to = 1000) int weight, boolean italic, @IntRange(from = 0) int ttcIndex, @Nullable FontVariationAxis[] axes) { + mBuffer = buffer; mWeight = weight; mItalic = italic; mNativePtr = nativePtr; @@ -462,7 +481,7 @@ public class Font { * @return font variation settings */ public @Nullable FontVariationAxis[] getAxes() { - return mAxes; + return mAxes == null ? null : mAxes.clone(); } /** @hide */ @@ -471,6 +490,24 @@ public class Font { } @Override + public boolean equals(@Nullable Object o) { + if (o == this) { + return true; + } + if (o == null || !(o instanceof Font)) { + return false; + } + Font f = (Font) o; + return f.mWeight == mWeight && f.mItalic == mItalic && f.mTtcIndex == mTtcIndex + && Arrays.equals(f.mAxes, mAxes) && f.mBuffer.equals(mBuffer); + } + + @Override + public int hashCode() { + return Objects.hash(mWeight, mItalic, mTtcIndex, mAxes, mBuffer); + } + + @Override public String toString() { return "Font {weight=" + mWeight + ", italic=" + mItalic + "}"; } diff --git a/graphics/java/android/graphics/fonts/FontFamily.java b/graphics/java/android/graphics/fonts/FontFamily.java index dc213ea56f99..c914ecedd761 100644 --- a/graphics/java/android/graphics/fonts/FontFamily.java +++ b/graphics/java/android/graphics/fonts/FontFamily.java @@ -57,7 +57,7 @@ import java.util.HashSet; * </p> * */ -public class FontFamily { +public final class FontFamily { private static final String TAG = "FontFamily"; /** @@ -170,7 +170,7 @@ public class FontFamily { * * @return the number of fonts registered in this family. */ - public int getFontCount() { + public int getSize() { return mFonts.size(); } diff --git a/graphics/java/android/graphics/fonts/FontVariationAxis.java b/graphics/java/android/graphics/fonts/FontVariationAxis.java index 2a902c5a6b66..242cbb81b83c 100644 --- a/graphics/java/android/graphics/fonts/FontVariationAxis.java +++ b/graphics/java/android/graphics/fonts/FontVariationAxis.java @@ -22,6 +22,7 @@ import android.annotation.UnsupportedAppUsage; import android.text.TextUtils; import java.util.ArrayList; +import java.util.Objects; import java.util.regex.Pattern; /** @@ -186,5 +187,22 @@ public final class FontVariationAxis { } return TextUtils.join(",", axes); } + + @Override + public boolean equals(@Nullable Object o) { + if (o == this) { + return true; + } + if (o == null || !(o instanceof FontVariationAxis)) { + return false; + } + FontVariationAxis axis = (FontVariationAxis) o; + return axis.mTag == mTag && axis.mStyleValue == mStyleValue; + } + + @Override + public int hashCode() { + return Objects.hash(mTag, mStyleValue); + } } diff --git a/graphics/java/android/graphics/fonts/SystemFonts.java b/graphics/java/android/graphics/fonts/SystemFonts.java index bd49130c11c6..dae48f8b528f 100644 --- a/graphics/java/android/graphics/fonts/SystemFonts.java +++ b/graphics/java/android/graphics/fonts/SystemFonts.java @@ -169,12 +169,17 @@ public class SystemFonts { } } - final Font font = new Font.Builder(buffer) - .setWeight(fontConfig.getWeight()) - .setItalic(fontConfig.isItalic()) - .setTtcIndex(fontConfig.getTtcIndex()) - .setFontVariationSettings(fontConfig.getAxes()) - .build(); + final Font font; + try { + font = new Font.Builder(buffer) + .setWeight(fontConfig.getWeight()) + .setItalic(fontConfig.isItalic()) + .setTtcIndex(fontConfig.getTtcIndex()) + .setFontVariationSettings(fontConfig.getAxes()) + .build(); + } catch (IOException e) { + throw new RuntimeException(e); // Never reaches here + } if (b == null) { b = new FontFamily.Builder(font); diff --git a/keystore/java/android/security/Credentials.java b/keystore/java/android/security/Credentials.java index 57db20be1145..7216a2201c88 100644 --- a/keystore/java/android/security/Credentials.java +++ b/keystore/java/android/security/Credentials.java @@ -16,6 +16,7 @@ package android.security; +import android.annotation.UnsupportedAppUsage; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; @@ -172,6 +173,7 @@ public class Credentials { private static Credentials singleton; + @UnsupportedAppUsage public static Credentials getInstance() { if (singleton == null) { singleton = new Credentials(); @@ -179,6 +181,7 @@ public class Credentials { return singleton; } + @UnsupportedAppUsage public void unlock(Context context) { try { Intent intent = new Intent(UNLOCK_ACTION); @@ -197,6 +200,7 @@ public class Credentials { } } + @UnsupportedAppUsage public void install(Context context, KeyPair pair) { try { Intent intent = KeyChain.createInstallIntent(); @@ -208,6 +212,7 @@ public class Credentials { } } + @UnsupportedAppUsage public void install(Context context, String type, byte[] value) { try { Intent intent = KeyChain.createInstallIntent(); diff --git a/keystore/java/android/security/GateKeeper.java b/keystore/java/android/security/GateKeeper.java index 03df5de9b484..a50ff7984341 100644 --- a/keystore/java/android/security/GateKeeper.java +++ b/keystore/java/android/security/GateKeeper.java @@ -16,6 +16,7 @@ package android.security; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.RemoteException; import android.os.ServiceManager; @@ -42,6 +43,7 @@ public abstract class GateKeeper { return service; } + @UnsupportedAppUsage public static long getSecureUserId() throws IllegalStateException { try { return getService().getSecureUserId(UserHandle.myUserId()); diff --git a/keystore/java/android/security/KeyStore.java b/keystore/java/android/security/KeyStore.java index 4f4ca3f47009..0a4ac8cc5fec 100644 --- a/keystore/java/android/security/KeyStore.java +++ b/keystore/java/android/security/KeyStore.java @@ -16,6 +16,7 @@ package android.security; +import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; import android.app.ActivityThread; import android.app.Application; @@ -57,6 +58,7 @@ public class KeyStore { private static final String TAG = "KeyStore"; // ResponseCodes - see system/security/keystore/include/keystore/keystore.h + @UnsupportedAppUsage public static final int NO_ERROR = 1; public static final int LOCKED = 2; public static final int UNINITIALIZED = 3; @@ -129,7 +131,9 @@ public class KeyStore { // States public enum State { + @UnsupportedAppUsage UNLOCKED, + @UnsupportedAppUsage LOCKED, UNINITIALIZED }; @@ -146,6 +150,7 @@ public class KeyStore { mContext = getApplicationContext(); } + @UnsupportedAppUsage public static Context getApplicationContext() { Application application = ActivityThread.currentApplication(); if (application == null) { @@ -155,6 +160,7 @@ public class KeyStore { return application; } + @UnsupportedAppUsage public static KeyStore getInstance() { IKeystoreService keystore = IKeystoreService.Stub.asInterface(ServiceManager .getService("android.security.keystore")); @@ -168,6 +174,7 @@ public class KeyStore { return mToken; } + @UnsupportedAppUsage public State state(int userId) { final int ret; try { @@ -185,6 +192,7 @@ public class KeyStore { } } + @UnsupportedAppUsage public State state() { return state(UserHandle.myUserId()); } @@ -197,6 +205,7 @@ public class KeyStore { return get(key, uid, false); } + @UnsupportedAppUsage public byte[] get(String key) { return get(key, UID_SELF); } @@ -247,6 +256,7 @@ public class KeyStore { } } + @UnsupportedAppUsage public boolean delete(String key) { return delete(key, UID_SELF); } @@ -283,6 +293,7 @@ public class KeyStore { return list(prefix, UID_SELF); } + @UnsupportedAppUsage public boolean reset() { try { return mBinder.reset() == NO_ERROR; @@ -333,6 +344,7 @@ public class KeyStore { } } + @UnsupportedAppUsage public boolean unlock(String password) { return unlock(UserHandle.getUserId(Process.myUid()), password); } @@ -349,6 +361,7 @@ public class KeyStore { } } + @UnsupportedAppUsage public boolean isEmpty() { return isEmpty(UserHandle.myUserId()); } @@ -818,6 +831,7 @@ public class KeyStore { * Returns a {@link KeyStoreException} corresponding to the provided keystore/keymaster error * code. */ + @UnsupportedAppUsage public static KeyStoreException getKeyStoreException(int errorCode) { if (errorCode > 0) { // KeyStore layer error diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java index c048e82092a1..c7c9ee4a406a 100644 --- a/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java +++ b/keystore/java/android/security/keystore/AndroidKeyStoreProvider.java @@ -17,6 +17,7 @@ package android.security.keystore; import android.annotation.NonNull; +import android.annotation.UnsupportedAppUsage; import android.security.KeyStore; import android.security.keymaster.ExportResult; import android.security.keymaster.KeyCharacteristics; @@ -156,6 +157,7 @@ public class AndroidKeyStoreProvider extends Provider { * by AndroidKeyStore provider. * @throws IllegalStateException if the provided primitive is not initialized. */ + @UnsupportedAppUsage public static long getKeyStoreOperationHandle(Object cryptoPrimitive) { if (cryptoPrimitive == null) { throw new NullPointerException(); diff --git a/keystore/java/android/security/keystore/KeyGenParameterSpec.java b/keystore/java/android/security/keystore/KeyGenParameterSpec.java index 89d370f830fa..c4df2744eed9 100644 --- a/keystore/java/android/security/keystore/KeyGenParameterSpec.java +++ b/keystore/java/android/security/keystore/KeyGenParameterSpec.java @@ -20,6 +20,7 @@ import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.TestApi; +import android.annotation.UnsupportedAppUsage; import android.app.KeyguardManager; import android.hardware.fingerprint.FingerprintManager; import android.security.GateKeeper; @@ -371,6 +372,7 @@ public final class KeyGenParameterSpec implements AlgorithmParameterSpec, UserAu * * @hide */ + @UnsupportedAppUsage public int getUid() { return mUid; } @@ -645,6 +647,7 @@ public final class KeyGenParameterSpec implements AlgorithmParameterSpec, UserAu * * Returns {@code true} if the attestation certificate will contain a unique ID field. */ + @UnsupportedAppUsage public boolean isUniqueIdIncluded() { return mUniqueIdIncluded; } diff --git a/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java b/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java index 3643ca4a02f7..8a02a82194df 100644 --- a/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java +++ b/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java @@ -18,6 +18,7 @@ package com.android.internal.location.gnssmetrics; import android.os.SystemClock; import android.os.connectivity.GpsBatteryStats; +import android.os.SystemProperties; import android.text.format.DateUtils; import android.util.Base64; @@ -175,6 +176,7 @@ public class GnssMetrics { = topFourAverageCn0Statistics.getStandardDeviation(); } msg.powerMetrics = mGnssPowerMetrics.buildProto(); + msg.hardwareRevision = SystemProperties.get("ro.boot.revision", ""); String s = Base64.encodeToString(GnssLog.toByteArray(msg), Base64.DEFAULT); reset(); return s; @@ -239,6 +241,7 @@ public class GnssMetrics { s.append(" Energy consumed while on battery (mAh): ").append( stats.getEnergyConsumedMaMs() / ((double) DateUtils.HOUR_IN_MILLIS)).append("\n"); } + s.append("Hardware Version: " + SystemProperties.get("ro.boot.revision", "")).append("\n"); return s.toString(); } diff --git a/media/java/android/media/EncoderCapabilities.java b/media/java/android/media/EncoderCapabilities.java index 332e3604bd3e..59c9b82b879c 100644 --- a/media/java/android/media/EncoderCapabilities.java +++ b/media/java/android/media/EncoderCapabilities.java @@ -42,11 +42,15 @@ public class EncoderCapabilities */ static public class VideoEncoderCap { // These are not modifiable externally, thus are public accessible - public final int mCodec; // @see android.media.MediaRecorder.VideoEncoder - public final int mMinBitRate, mMaxBitRate; // min and max bit rate (bps) - public final int mMinFrameRate, mMaxFrameRate; // min and max frame rate (fps) - public final int mMinFrameWidth, mMaxFrameWidth; // min and max frame width (pixel) - public final int mMinFrameHeight, mMaxFrameHeight; // minn and max frame height (pixel) + public final int mCodec; // @see android.media.MediaRecorder.VideoEncoder + public final int mMinBitRate; // min bit rate (bps) + public final int mMaxBitRate; // max bit rate (bps) + public final int mMinFrameRate; // min frame rate (fps) + public final int mMaxFrameRate; // max frame rate (fps) + public final int mMinFrameWidth; // min frame width (pixel) + public final int mMaxFrameWidth; // max frame width (pixel) + public final int mMinFrameHeight; // min frame height (pixel) + public final int mMaxFrameHeight; // max frame height (pixel) // Private constructor called by JNI private VideoEncoderCap(int codec, diff --git a/media/jni/Android.bp b/media/jni/Android.bp index bf80c575125c..de9a24b078cb 100644 --- a/media/jni/Android.bp +++ b/media/jni/Android.bp @@ -101,7 +101,6 @@ cc_library_shared { "libandroid_runtime", // ??? "libaudioclient", // for use of AudioTrack, AudioSystem. to be removed "libbinder", - "libdrmframework", // for FileSource, MediaHTTP "libgui", // for VideoFrameScheduler "libhidlallocatorutils", "libhidlbase", // VNDK??? diff --git a/packages/CarSystemUI/Android.bp b/packages/CarSystemUI/Android.bp new file mode 100644 index 000000000000..36ef04a2a41f --- /dev/null +++ b/packages/CarSystemUI/Android.bp @@ -0,0 +1,76 @@ +// +// Copyright (C) 2018 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. +// +android_app { + name: "CarSystemUI", + + srcs: [ + "src/**/*.java", + "src/**/I*.aidl", + ], + + static_libs: [ + "SystemUI-core", + "SystemUIPluginLib", + "SystemUISharedLib", + "SettingsLib", + "androidx.car_car", + "androidx.legacy_legacy-support-v4", + "androidx.recyclerview_recyclerview", + "androidx.preference_preference", + "androidx.appcompat_appcompat", + "androidx.mediarouter_mediarouter", + "androidx.palette_palette", + "androidx.legacy_legacy-preference-v14", + "androidx.leanback_leanback", + "androidx.slice_slice-core", + "androidx.slice_slice-view", + "androidx.slice_slice-builders", + "androidx.arch.core_core-runtime", + "androidx.lifecycle_lifecycle-extensions", + "SystemUI-tags", + "SystemUI-proto", + ], + + libs: [ + "telephony-common", + "android.car", + ], + + manifest: "AndroidManifest.xml", + + owner: "google", + platform_apis: true, + certificate: "platform", + privileged: true, + + optimize: { + proguard_flags_files: [ + "proguard.flags", + ], + }, + resource_dirs: [ + "res", + ], + + + dxflags: ["--multi-dex"], + + aaptflags: [ + "--extra-packages", + "com.android.keyguard", + ], + +} diff --git a/packages/CarSystemUI/Android.mk b/packages/CarSystemUI/Android.mk deleted file mode 100644 index 0d40b7f22c5b..000000000000 --- a/packages/CarSystemUI/Android.mk +++ /dev/null @@ -1,86 +0,0 @@ -# LOCAL_PATH is not the current directory of this file. -# If you need the local path, use CAR_SYSUI_PATH. -# This tweak ensures that the resource overlay that is device-specific still works -# which requires that LOCAL_PATH match the original path (which must be frameworks/base/packages/SystemUI). -# -# For clarity, we also define SYSTEM_UI_AOSP_PATH to frameworks/base/packages/SystemUI and refer to that -SYSTEM_UI_AOSP_PATH := frameworks/base/packages/SystemUI -SYSTEM_UI_CAR_PATH := frameworks/base/packages/CarSystemUI -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_MODULE_TAGS := optional - -# The same as SYSTEM_UI_AOSP_PATH but based on the value of LOCAL_PATH which is -# frameworks/base/packages/CarSystemUI. -RELATIVE_SYSTEM_UI_AOSP_PATH := ../../../../$(SYSTEM_UI_AOSP_PATH) - - -LOCAL_SRC_FILES := \ - $(call all-java-files-under, src) \ - $(call all-Iaidl-files-under, src) \ - $(call all-java-files-under, $(RELATIVE_SYSTEM_UI_AOSP_PATH)/src) \ - $(call all-Iaidl-files-under, $(RELATIVE_SYSTEM_UI_AOSP_PATH)/src) - -LOCAL_STATIC_ANDROID_LIBRARIES := \ - SystemUIPluginLib \ - SystemUISharedLib \ - androidx.car_car \ - androidx.legacy_legacy-support-v4 \ - androidx.recyclerview_recyclerview \ - androidx.preference_preference \ - androidx.appcompat_appcompat \ - androidx.mediarouter_mediarouter \ - androidx.palette_palette \ - androidx.legacy_legacy-preference-v14 \ - androidx.leanback_leanback \ - androidx.slice_slice-core \ - androidx.slice_slice-view \ - androidx.slice_slice-builders \ - androidx.arch.core_core-runtime \ - androidx.lifecycle_lifecycle-extensions \ - -LOCAL_STATIC_JAVA_LIBRARIES := \ - SystemUI-tags \ - SystemUI-proto - -LOCAL_JAVA_LIBRARIES := telephony-common \ - android.car - -LOCAL_FULL_LIBS_MANIFEST_FILES := $(SYSTEM_UI_AOSP_PATH)/AndroidManifest.xml -LOCAL_MANIFEST_FILE := AndroidManifest.xml - -LOCAL_MODULE_OWNER := google -LOCAL_PACKAGE_NAME := CarSystemUI -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_CERTIFICATE := platform -LOCAL_PRIVILEGED_MODULE := true - -LOCAL_PROGUARD_FLAG_FILES := $(RELATIVE_SYSTEM_UI_AOSP_PATH)/proguard.flags \ - proguard.flags - -LOCAL_RESOURCE_DIR := \ - $(LOCAL_PATH)/res \ - $(SYSTEM_UI_AOSP_PATH)/res-keyguard \ - $(SYSTEM_UI_AOSP_PATH)/res - -ifneq ($(INCREMENTAL_BUILDS),) - LOCAL_PROGUARD_ENABLED := disabled - LOCAL_JACK_ENABLED := incremental -endif - -LOCAL_DX_FLAGS := --multi-dex -LOCAL_JACK_FLAGS := --multi-dex native - -include frameworks/base/packages/SettingsLib/common.mk - -LOCAL_OVERRIDES_PACKAGES := SystemUI - -LOCAL_AAPT_FLAGS := --extra-packages com.android.keyguard - -include $(BUILD_PACKAGE) - -include $(call all-makefiles-under, $(SYSTEM_UI_CAR_PATH)) diff --git a/packages/CarSystemUI/proguard.flags b/packages/CarSystemUI/proguard.flags index ceb037cdb70f..a81c7e08e357 100644 --- a/packages/CarSystemUI/proguard.flags +++ b/packages/CarSystemUI/proguard.flags @@ -1 +1,3 @@ -keep class com.android.systemui.CarSystemUIFactory + +-include ../SystemUI/proguard.flags diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp new file mode 100644 index 000000000000..4791517d9273 --- /dev/null +++ b/packages/SettingsLib/Android.bp @@ -0,0 +1,25 @@ +android_library { + + name: "SettingsLib", + + libs: [ + "androidx.annotation_annotation", + "androidx.legacy_legacy-support-v4", + "androidx.recyclerview_recyclerview", + "androidx.preference_preference", + "androidx.appcompat_appcompat", + "androidx.lifecycle_lifecycle-runtime", + ], + + // ANDROIDMK TRANSLATION ERROR: unsupported assignment to LOCAL_SHARED_JAVA_LIBRARIES + // LOCAL_SHARED_JAVA_LIBRARIES := androidx.lifecycle_lifecycle-common + + resource_dirs: ["res"], + + srcs: ["src/**/*.java"], + + min_sdk_version: "21", + +} + +// For the test package. diff --git a/packages/SettingsLib/Android.mk b/packages/SettingsLib/Android.mk deleted file mode 100644 index 96012c1f2a34..000000000000 --- a/packages/SettingsLib/Android.mk +++ /dev/null @@ -1,34 +0,0 @@ -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_AAPT2_ONLY := true - -LOCAL_MODULE := SettingsLib - -LOCAL_JAVA_LIBRARIES := \ - androidx.annotation_annotation - -LOCAL_SHARED_ANDROID_LIBRARIES := \ - androidx.legacy_legacy-support-v4 \ - androidx.recyclerview_recyclerview \ - androidx.preference_preference \ - androidx.appcompat_appcompat \ - androidx.lifecycle_lifecycle-runtime - -LOCAL_SHARED_JAVA_LIBRARIES := \ - androidx.lifecycle_lifecycle-common - -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res - -LOCAL_JAR_EXCLUDE_FILES := none - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_MIN_SDK_VERSION := 21 - -include $(BUILD_STATIC_JAVA_LIBRARY) - -# For the test package. -include $(call all-makefiles-under, $(LOCAL_PATH)) diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index 2af406de54a5..b523ae274380 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -449,7 +449,6 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> વાગ્યે"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"અવધિ"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"દર વખતે પૂછો"</string> - <!-- no translation found for zen_mode_forever (2704305038191592967) --> - <skip /> + <string name="zen_mode_forever" msgid="2704305038191592967">"તમે બંધ ન કરો ત્યાં સુધી"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"હમણાં જ"</string> </resources> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index ff1f4f334aed..63c88cd23147 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -449,7 +449,6 @@ <string name="alarm_template_far" msgid="3779172822607461675">"<xliff:g id="WHEN">%1$s</xliff:g> ਵਜੇ"</string> <string name="zen_mode_duration_settings_title" msgid="229547412251222757">"ਮਿਆਦ"</string> <string name="zen_mode_duration_always_prompt_title" msgid="6478923750878945501">"ਹਰ ਵਾਰ ਪੁੱਛੋ"</string> - <!-- no translation found for zen_mode_forever (2704305038191592967) --> - <skip /> + <string name="zen_mode_forever" msgid="2704305038191592967">"ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਬੰਦ ਨਹੀਂ ਕਰਦੇ"</string> <string name="time_unit_just_now" msgid="6363336622778342422">"ਹੁਣੇ ਹੀ"</string> </resources> diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java index 1ce4484b8a41..a71041045df2 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java @@ -42,7 +42,6 @@ public class A2dpProfile implements LocalBluetoothProfile { private BluetoothA2dp mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; static final ParcelUuid[] SINK_UUIDS = { @@ -71,7 +70,7 @@ public class A2dpProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "A2dpProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(A2dpProfile.this, BluetoothProfile.STATE_CONNECTED); device.refresh(); @@ -94,14 +93,12 @@ public class A2dpProfile implements LocalBluetoothProfile { return BluetoothProfile.A2DP; } - A2dpProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + A2dpProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { mContext = context; - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - mLocalAdapter.getProfileProxy(context, new A2dpServiceListener(), + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new A2dpServiceListener(), BluetoothProfile.A2DP); } @@ -123,20 +120,6 @@ public class A2dpProfile implements LocalBluetoothProfile { public boolean connect(BluetoothDevice device) { if (mService == null) return false; - int max_connected_devices = mLocalAdapter.getMaxConnectedAudioDevices(); - if (max_connected_devices == 1) { - // Original behavior: disconnect currently connected device - List<BluetoothDevice> sinks = getConnectedDevices(); - if (sinks != null) { - for (BluetoothDevice sink : sinks) { - if (sink.equals(device)) { - Log.w(TAG, "Connecting to device " + device + " : disconnect skipped"); - continue; - } - mService.disconnect(sink); - } - } - } return mService.connect(device); } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java index 6a4aa0abfd20..0c4e02b59bec 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java @@ -38,7 +38,6 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { private BluetoothA2dpSink mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; static final ParcelUuid[] SRC_UUIDS = { @@ -67,7 +66,7 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "A2dpSinkProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(A2dpSinkProfile.this, BluetoothProfile.STATE_CONNECTED); device.refresh(); @@ -90,13 +89,11 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { return BluetoothProfile.A2DP_SINK; } - A2dpSinkProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + A2dpSinkProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - mLocalAdapter.getProfileProxy(context, new A2dpSinkServiceListener(), + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new A2dpSinkServiceListener(), BluetoothProfile.A2DP_SINK); } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java index a3f3b59da895..466d02bd3bcf 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/BluetoothEventManager.java @@ -150,7 +150,7 @@ public class BluetoothEventManager { for (BluetoothDevice device : bondedDevices) { CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device); if (cachedDevice == null) { - cachedDevice = mDeviceManager.addDevice(mLocalAdapter, device); + cachedDevice = mDeviceManager.addDevice(device); dispatchDeviceAdded(cachedDevice); deviceAdded = true; } @@ -282,7 +282,7 @@ public class BluetoothEventManager { // Skip for now, there's a bluez problem and we are not getting uuids even for 2.1. CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device); if (cachedDevice == null) { - cachedDevice = mDeviceManager.addDevice(mLocalAdapter, device); + cachedDevice = mDeviceManager.addDevice(device); Log.d(TAG, "DeviceFoundHandler created new CachedBluetoothDevice: " + cachedDevice); } @@ -348,8 +348,7 @@ public class BluetoothEventManager { if (cachedDevice == null) { Log.w(TAG, "Got bonding state changed for " + device + ", but we have no record of that device."); - - cachedDevice = mDeviceManager.addDevice(mLocalAdapter, device); + cachedDevice = mDeviceManager.addDevice(device); dispatchDeviceAdded(cachedDevice); } } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java index b0ff9e3faac3..5ecbe80b9645 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java @@ -48,7 +48,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> private static final String TAG = "CachedBluetoothDevice"; private final Context mContext; - private final LocalBluetoothAdapter mLocalAdapter; + private final BluetoothAdapter mLocalAdapter; private final LocalBluetoothProfileManager mProfileManager; private final BluetoothDevice mDevice; //TODO: consider remove, BluetoothDevice.getName() is already cached @@ -143,7 +143,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> Log.d(TAG, "onProfileStateChanged: profile " + profile + " newProfileState " + newProfileState); } - if (mLocalAdapter.getBluetoothState() == BluetoothAdapter.STATE_TURNING_OFF) + if (mLocalAdapter.getState() == BluetoothAdapter.STATE_TURNING_OFF) { if (BluetoothUtils.D) { Log.d(TAG, " BT Turninig Off...Profile conn state change ignored..."); @@ -179,11 +179,10 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice> } CachedBluetoothDevice(Context context, - LocalBluetoothAdapter adapter, LocalBluetoothProfileManager profileManager, BluetoothDevice device) { mContext = context; - mLocalAdapter = adapter; + mLocalAdapter = BluetoothAdapter.getDefaultAdapter(); mProfileManager = profileManager; mDevice = device; mProfileConnectionState = new HashMap<LocalBluetoothProfile, Integer>(); diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java index 475ece853291..f8543fc150e1 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java @@ -107,10 +107,10 @@ public class CachedBluetoothDeviceManager { * @param device the address of the new Bluetooth device * @return the newly created CachedBluetoothDevice object */ - public CachedBluetoothDevice addDevice(LocalBluetoothAdapter adapter, BluetoothDevice device) { + public CachedBluetoothDevice addDevice(BluetoothDevice device) { LocalBluetoothProfileManager profileManager = mBtManager.getProfileManager(); - CachedBluetoothDevice newDevice = new CachedBluetoothDevice(mContext, adapter, - profileManager, device); + CachedBluetoothDevice newDevice = new CachedBluetoothDevice(mContext, profileManager, + device); if (profileManager.getHearingAidProfile() != null && profileManager.getHearingAidProfile().getHiSyncId(newDevice.getDevice()) != BluetoothHearingAid.HI_SYNC_ID_INVALID) { diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java index e28438208995..99f550b9f6da 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java @@ -41,7 +41,6 @@ public class HeadsetProfile implements LocalBluetoothProfile { private BluetoothHeadset mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; private final LocalBluetoothProfileManager mProfileManager; @@ -70,7 +69,7 @@ public class HeadsetProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "HeadsetProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(HeadsetProfile.this, BluetoothProfile.STATE_CONNECTED); @@ -97,13 +96,11 @@ public class HeadsetProfile implements LocalBluetoothProfile { return BluetoothProfile.HEADSET; } - HeadsetProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + HeadsetProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - mLocalAdapter.getProfileProxy(context, new HeadsetServiceListener(), + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new HeadsetServiceListener(), BluetoothProfile.HEADSET); } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java index a0cf105bcfbe..6eaa62049e4c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java @@ -38,7 +38,6 @@ public class HearingAidProfile implements LocalBluetoothProfile { private BluetoothHearingAid mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; static final String NAME = "HearingAid"; @@ -64,7 +63,7 @@ public class HearingAidProfile implements LocalBluetoothProfile { if (V) { Log.d(TAG, "HearingAidProfile found new device: " + nextDevice); } - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(HearingAidProfile.this, BluetoothProfile.STATE_CONNECTED); @@ -92,15 +91,13 @@ public class HearingAidProfile implements LocalBluetoothProfile { return BluetoothProfile.HEARING_AID; } - HearingAidProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + HearingAidProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { mContext = context; - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - mLocalAdapter.getProfileProxy(context, new HearingAidServiceListener(), - BluetoothProfile.HEARING_AID); + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, + new HearingAidServiceListener(), BluetoothProfile.HEARING_AID); } public boolean isConnectable() { diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java index b8c72fba27cc..4b4db753aba9 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java @@ -41,7 +41,6 @@ final class HfpClientProfile implements LocalBluetoothProfile { private BluetoothHeadsetClient mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; static final ParcelUuid[] SRC_UUIDS = { @@ -71,7 +70,7 @@ final class HfpClientProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "HfpClient profile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged( HfpClientProfile.this, BluetoothProfile.STATE_CONNECTED); @@ -97,14 +96,12 @@ final class HfpClientProfile implements LocalBluetoothProfile { return BluetoothProfile.HEADSET_CLIENT; } - HfpClientProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + HfpClientProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - mLocalAdapter.getProfileProxy(context, new HfpClientServiceListener(), - BluetoothProfile.HEADSET_CLIENT); + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, + new HfpClientServiceListener(), BluetoothProfile.HEADSET_CLIENT); } @Override diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java index f9da1094e488..8c4bff5bc4ff 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java @@ -39,7 +39,6 @@ public class HidDeviceProfile implements LocalBluetoothProfile { private static final int PREFERRED_VALUE = -1; private static final boolean DEBUG = true; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; private final LocalBluetoothProfileManager mProfileManager; static final String NAME = "HID DEVICE"; @@ -47,14 +46,12 @@ public class HidDeviceProfile implements LocalBluetoothProfile { private BluetoothHidDevice mService; private boolean mIsProfileReady; - HidDeviceProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + HidDeviceProfile(Context context,CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - adapter.getProfileProxy(context, new HidDeviceServiceListener(), - BluetoothProfile.HID_DEVICE); + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, + new HidDeviceServiceListener(), BluetoothProfile.HID_DEVICE); } // These callbacks run on the main thread. @@ -73,7 +70,7 @@ public class HidDeviceProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "HidProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } Log.d(TAG, "Connection status changed: " + device); device.onProfileStateChanged(HidDeviceProfile.this, diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java index c5ba58cbe959..701ef001e5a6 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java @@ -38,7 +38,6 @@ public class HidProfile implements LocalBluetoothProfile { private BluetoothHidHost mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; private final LocalBluetoothProfileManager mProfileManager; @@ -62,7 +61,7 @@ public class HidProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "HidProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(HidProfile.this, BluetoothProfile.STATE_CONNECTED); device.refresh(); @@ -85,13 +84,12 @@ public class HidProfile implements LocalBluetoothProfile { return BluetoothProfile.HID_HOST; } - HidProfile(Context context, LocalBluetoothAdapter adapter, + HidProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - adapter.getProfileProxy(context, new HidHostServiceListener(), + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new HidHostServiceListener(), BluetoothProfile.HID_HOST); } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java index 5e7f6d42574c..8f40ab47fe1b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothAdapter.java @@ -249,10 +249,6 @@ public class LocalBluetoothAdapter { return mAdapter.getRemoteDevice(address); } - public int getMaxConnectedAudioDevices() { - return mAdapter.getMaxConnectedAudioDevices(); - } - public List<Integer> getSupportedProfiles() { return mAdapter.getSupportedProfiles(); } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java index 3ebbf7e57f72..8bb8210631ed 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java @@ -18,6 +18,7 @@ package com.android.settingslib.bluetooth; import android.bluetooth.BluetoothA2dp; import android.bluetooth.BluetoothA2dpSink; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHeadset; import android.bluetooth.BluetoothHeadsetClient; @@ -79,7 +80,6 @@ public class LocalBluetoothProfileManager { } private final Context mContext; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; private final BluetoothEventManager mEventManager; @@ -111,14 +111,13 @@ public class LocalBluetoothProfileManager { BluetoothEventManager eventManager) { mContext = context; - mLocalAdapter = adapter; mDeviceManager = deviceManager; mEventManager = eventManager; mUsePbapPce = mContext.getResources().getBoolean(R.bool.enable_pbap_pce_profile); // MAP Client is typically used in the same situations as PBAP Client mUseMapClient = mContext.getResources().getBoolean(R.bool.enable_pbap_pce_profile); // pass this reference to adapter and event manager (circular dependency) - mLocalAdapter.setProfileManager(this); + adapter.setProfileManager(this); updateLocalProfiles(); if (DEBUG) Log.d(TAG, "LocalBluetoothProfileManager construction complete"); @@ -128,26 +127,26 @@ public class LocalBluetoothProfileManager { * create profile instance according to bluetooth supported profile list */ void updateLocalProfiles() { - List<Integer> supportedList = mLocalAdapter.getSupportedProfiles(); + List<Integer> supportedList = BluetoothAdapter.getDefaultAdapter().getSupportedProfiles(); if (CollectionUtils.isEmpty(supportedList)) { if(DEBUG) Log.d(TAG, "supportedList is null"); return; } if (mA2dpProfile == null && supportedList.contains(BluetoothProfile.A2DP)) { if(DEBUG) Log.d(TAG, "Adding local A2DP profile"); - mA2dpProfile = new A2dpProfile(mContext, mLocalAdapter, mDeviceManager, this); + mA2dpProfile = new A2dpProfile(mContext, mDeviceManager, this); addProfile(mA2dpProfile, A2dpProfile.NAME, BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED); } if (mA2dpSinkProfile == null && supportedList.contains(BluetoothProfile.A2DP_SINK)) { if(DEBUG) Log.d(TAG, "Adding local A2DP SINK profile"); - mA2dpSinkProfile = new A2dpSinkProfile(mContext, mLocalAdapter, mDeviceManager, this); + mA2dpSinkProfile = new A2dpSinkProfile(mContext, mDeviceManager, this); addProfile(mA2dpSinkProfile, A2dpSinkProfile.NAME, BluetoothA2dpSink.ACTION_CONNECTION_STATE_CHANGED); } if (mHeadsetProfile == null && supportedList.contains(BluetoothProfile.HEADSET)) { if (DEBUG) Log.d(TAG, "Adding local HEADSET profile"); - mHeadsetProfile = new HeadsetProfile(mContext, mLocalAdapter, mDeviceManager, this); + mHeadsetProfile = new HeadsetProfile(mContext, mDeviceManager, this); addHeadsetProfile(mHeadsetProfile, HeadsetProfile.NAME, BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED, BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED, @@ -155,7 +154,7 @@ public class LocalBluetoothProfileManager { } if (mHfpClientProfile == null && supportedList.contains(BluetoothProfile.HEADSET_CLIENT)) { if(DEBUG) Log.d(TAG, "Adding local HfpClient profile"); - mHfpClientProfile = new HfpClientProfile(mContext, mLocalAdapter, mDeviceManager, this); + mHfpClientProfile = new HfpClientProfile(mContext, mDeviceManager, this); addHeadsetProfile(mHfpClientProfile, HfpClientProfile.NAME, BluetoothHeadsetClient.ACTION_CONNECTION_STATE_CHANGED, BluetoothHeadsetClient.ACTION_AUDIO_STATE_CHANGED, @@ -165,13 +164,13 @@ public class LocalBluetoothProfileManager { if (mMapClientProfile == null && supportedList.contains(BluetoothProfile.MAP_CLIENT)) { if(DEBUG) Log.d(TAG, "Adding local MAP CLIENT profile"); mMapClientProfile = - new MapClientProfile(mContext, mLocalAdapter, mDeviceManager,this); + new MapClientProfile(mContext, mDeviceManager,this); addProfile(mMapClientProfile, MapClientProfile.NAME, BluetoothMapClient.ACTION_CONNECTION_STATE_CHANGED); } } else if (mMapProfile == null && supportedList.contains(BluetoothProfile.MAP)) { if(DEBUG) Log.d(TAG, "Adding local MAP profile"); - mMapProfile = new MapProfile(mContext, mLocalAdapter, mDeviceManager, this); + mMapProfile = new MapProfile(mContext, mDeviceManager, this); addProfile(mMapProfile, MapProfile.NAME, BluetoothMap.ACTION_CONNECTION_STATE_CHANGED); } if (mOppProfile == null && supportedList.contains(BluetoothProfile.OPP)) { @@ -182,26 +181,26 @@ public class LocalBluetoothProfileManager { } if (mHearingAidProfile == null && supportedList.contains(BluetoothProfile.HEARING_AID)) { if(DEBUG) Log.d(TAG, "Adding local Hearing Aid profile"); - mHearingAidProfile = new HearingAidProfile(mContext, mLocalAdapter, mDeviceManager, + mHearingAidProfile = new HearingAidProfile(mContext, mDeviceManager, this); addProfile(mHearingAidProfile, HearingAidProfile.NAME, BluetoothHearingAid.ACTION_CONNECTION_STATE_CHANGED); } if (mHidProfile == null && supportedList.contains(BluetoothProfile.HID_HOST)) { if(DEBUG) Log.d(TAG, "Adding local HID_HOST profile"); - mHidProfile = new HidProfile(mContext, mLocalAdapter, mDeviceManager, this); + mHidProfile = new HidProfile(mContext, mDeviceManager, this); addProfile(mHidProfile, HidProfile.NAME, BluetoothHidHost.ACTION_CONNECTION_STATE_CHANGED); } if (mHidDeviceProfile == null && supportedList.contains(BluetoothProfile.HID_DEVICE)) { if(DEBUG) Log.d(TAG, "Adding local HID_DEVICE profile"); - mHidDeviceProfile = new HidDeviceProfile(mContext, mLocalAdapter, mDeviceManager, this); + mHidDeviceProfile = new HidDeviceProfile(mContext, mDeviceManager, this); addProfile(mHidDeviceProfile, HidDeviceProfile.NAME, BluetoothHidDevice.ACTION_CONNECTION_STATE_CHANGED); } if (mPanProfile == null && supportedList.contains(BluetoothProfile.PAN)) { if(DEBUG) Log.d(TAG, "Adding local PAN profile"); - mPanProfile = new PanProfile(mContext, mLocalAdapter); + mPanProfile = new PanProfile(mContext); addPanProfile(mPanProfile, PanProfile.NAME, BluetoothPan.ACTION_CONNECTION_STATE_CHANGED); } @@ -214,8 +213,7 @@ public class LocalBluetoothProfileManager { if (mUsePbapPce && mPbapClientProfile == null && supportedList.contains( BluetoothProfile.PBAP_CLIENT)) { if(DEBUG) Log.d(TAG, "Adding local PBAP Client profile"); - mPbapClientProfile = new PbapClientProfile(mContext, mLocalAdapter, mDeviceManager, - this); + mPbapClientProfile = new PbapClientProfile(mContext, mDeviceManager,this); addProfile(mPbapClientProfile, PbapClientProfile.NAME, BluetoothPbapClient.ACTION_CONNECTION_STATE_CHANGED); } @@ -271,7 +269,7 @@ public class LocalBluetoothProfileManager { CachedBluetoothDevice cachedDevice = mDeviceManager.findDevice(device); if (cachedDevice == null) { Log.w(TAG, "StateChangedHandler found new device: " + device); - cachedDevice = mDeviceManager.addDevice(mLocalAdapter, device); + cachedDevice = mDeviceManager.addDevice(device); } onReceiveInternal(intent, cachedDevice); } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java index 63af24c30f4a..7d334eb31a19 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java @@ -41,7 +41,6 @@ public final class MapClientProfile implements LocalBluetoothProfile { private BluetoothMapClient mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; private final LocalBluetoothProfileManager mProfileManager; @@ -71,7 +70,7 @@ public final class MapClientProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "MapProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(MapClientProfile.this, BluetoothProfile.STATE_CONNECTED); @@ -99,14 +98,12 @@ public final class MapClientProfile implements LocalBluetoothProfile { return BluetoothProfile.MAP_CLIENT; } - MapClientProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + MapClientProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - mLocalAdapter.getProfileProxy(context, new MapClientServiceListener(), - BluetoothProfile.MAP_CLIENT); + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, + new MapClientServiceListener(), BluetoothProfile.MAP_CLIENT); } public boolean isConnectable() { diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java index 2c63d500b68f..689669faf60d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java @@ -41,7 +41,6 @@ public class MapProfile implements LocalBluetoothProfile { private BluetoothMap mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; private final LocalBluetoothProfileManager mProfileManager; @@ -70,7 +69,7 @@ public class MapProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "MapProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(MapProfile.this, BluetoothProfile.STATE_CONNECTED); @@ -98,13 +97,11 @@ public class MapProfile implements LocalBluetoothProfile { return BluetoothProfile.MAP; } - MapProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + MapProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - mLocalAdapter.getProfileProxy(context, new MapServiceListener(), + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new MapServiceListener(), BluetoothProfile.MAP); } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java index e204d03cb327..02afe8db7201 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java @@ -38,7 +38,6 @@ public class PanProfile implements LocalBluetoothProfile { private BluetoothPan mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; // Tethering direction for each device private final HashMap<BluetoothDevice, Integer> mDeviceRoleMap = @@ -74,9 +73,8 @@ public class PanProfile implements LocalBluetoothProfile { return BluetoothProfile.PAN; } - PanProfile(Context context, LocalBluetoothAdapter adapter) { - mLocalAdapter = adapter; - mLocalAdapter.getProfileProxy(context, new PanServiceListener(), + PanProfile(Context context) { + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new PanServiceListener(), BluetoothProfile.PAN); } diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java index d34ad30c2628..ad3506fc2611 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java @@ -39,7 +39,6 @@ public final class PbapClientProfile implements LocalBluetoothProfile { private BluetoothPbapClient mService; private boolean mIsProfileReady; - private final LocalBluetoothAdapter mLocalAdapter; private final CachedBluetoothDeviceManager mDeviceManager; static final ParcelUuid[] SRC_UUIDS = { @@ -69,7 +68,7 @@ public final class PbapClientProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "PbapClientProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(PbapClientProfile.this, BluetoothProfile.STATE_CONNECTED); device.refresh(); @@ -105,14 +104,12 @@ public final class PbapClientProfile implements LocalBluetoothProfile { return BluetoothProfile.PBAP_CLIENT; } - PbapClientProfile(Context context, LocalBluetoothAdapter adapter, - CachedBluetoothDeviceManager deviceManager, + PbapClientProfile(Context context, CachedBluetoothDeviceManager deviceManager, LocalBluetoothProfileManager profileManager) { - mLocalAdapter = adapter; mDeviceManager = deviceManager; mProfileManager = profileManager; - mLocalAdapter.getProfileProxy(context, new PbapClientServiceListener(), - BluetoothProfile.PBAP_CLIENT); + BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, + new PbapClientServiceListener(), BluetoothProfile.PBAP_CLIENT); } public boolean isConnectable() { diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java index f1d73ed26390..f0e259e86456 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java @@ -69,7 +69,7 @@ final class SapProfile implements LocalBluetoothProfile { // we may add a new device here, but generally this should not happen if (device == null) { Log.w(TAG, "SapProfile found new device: " + nextDevice); - device = mDeviceManager.addDevice(mLocalAdapter, nextDevice); + device = mDeviceManager.addDevice(nextDevice); } device.onProfileStateChanged(SapProfile.this, BluetoothProfile.STATE_CONNECTED); diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java index b2ab45ce9dc5..29831a89027a 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java @@ -19,11 +19,11 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothA2dp; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothCodecConfig; import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; @@ -33,21 +33,23 @@ import android.content.res.Resources; import com.android.settingslib.R; import com.android.settingslib.SettingsLibRobolectricTestRunner; +import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.robolectric.annotation.Config; +import org.robolectric.shadow.api.Shadow; @RunWith(SettingsLibRobolectricTestRunner.class) +@Config(shadows = {ShadowBluetoothAdapter.class}) public class A2dpProfileTest { @Mock Context mContext; @Mock - LocalBluetoothAdapter mAdapter; - @Mock CachedBluetoothDeviceManager mDeviceManager; @Mock LocalBluetoothProfileManager mProfileManager; @@ -58,20 +60,14 @@ public class A2dpProfileTest { BluetoothProfile.ServiceListener mServiceListener; A2dpProfile mProfile; + private ShadowBluetoothAdapter mShadowBluetoothAdapter; @Before public void setUp() { MockitoAnnotations.initMocks(this); - - // Capture the A2dpServiceListener our A2dpProfile will pass during its constructor, so that - // we can call its onServiceConnected method and get it to use our mock BluetoothA2dp - // object. - doAnswer((invocation) -> { - mServiceListener = (BluetoothProfile.ServiceListener) invocation.getArguments()[1]; - return null; - }).when(mAdapter).getProfileProxy(any(Context.class), any(), eq(BluetoothProfile.A2DP)); - - mProfile = new A2dpProfile(mContext, mAdapter, mDeviceManager, mProfileManager); + mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter()); + mProfile = new A2dpProfile(mContext, mDeviceManager, mProfileManager); + mServiceListener = mShadowBluetoothAdapter.getServiceListener(); mServiceListener.onServiceConnected(BluetoothProfile.A2DP, mBluetoothA2dp); } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java index b33e9c3dd482..2d34f237a555 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java @@ -21,7 +21,6 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; -import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; @@ -59,8 +58,6 @@ public class CachedBluetoothDeviceManagerTest { private final BluetoothClass DEVICE_CLASS_2 = new BluetoothClass(BluetoothClass.Device.AUDIO_VIDEO_HANDSFREE); @Mock - private LocalBluetoothAdapter mLocalAdapter; - @Mock private LocalBluetoothProfileManager mLocalProfileManager; @Mock private LocalBluetoothManager mLocalBluetoothManager; @@ -110,18 +107,17 @@ public class CachedBluetoothDeviceManagerTest { when(mLocalBluetoothManager.getEventManager()).thenReturn(mBluetoothEventManager); when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalProfileManager); - when(mLocalAdapter.getBluetoothState()).thenReturn(BluetoothAdapter.STATE_ON); when(mHfpProfile.isProfileReady()).thenReturn(true); when(mA2dpProfile.isProfileReady()).thenReturn(true); when(mPanProfile.isProfileReady()).thenReturn(true); when(mHearingAidProfile.isProfileReady()).thenReturn(true); mCachedDeviceManager = new CachedBluetoothDeviceManager(mContext, mLocalBluetoothManager); mCachedDevice1 = spy( - new CachedBluetoothDevice(mContext, mLocalAdapter, mLocalProfileManager, mDevice1)); + new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice1)); mCachedDevice2 = spy( - new CachedBluetoothDevice(mContext, mLocalAdapter, mLocalProfileManager, mDevice2)); + new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice2)); mCachedDevice3 = spy( - new CachedBluetoothDevice(mContext, mLocalAdapter, mLocalProfileManager, mDevice3)); + new CachedBluetoothDevice(mContext, mLocalProfileManager, mDevice3)); } /** @@ -129,11 +125,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testAddDevice_validCachedDevices_devicesAdded() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); Collection<CachedBluetoothDevice> devices = mCachedDeviceManager.getCachedDevicesCopy(); @@ -149,8 +143,7 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testGetName_validCachedDevice_nameFound() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); assertThat(mCachedDeviceManager.getName(mDevice1)).isEqualTo(DEVICE_ALIAS_1); } @@ -160,8 +153,7 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnDeviceNameUpdated_validName_nameUpdated() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); assertThat(cachedDevice1.getName()).isEqualTo(DEVICE_ALIAS_1); @@ -176,11 +168,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testClearNonBondedDevices_bondedAndNonBondedDevices_nonBondedDevicesCleared() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); @@ -231,11 +221,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnHiSyncIdChanged_sameHiSyncId_populateInDifferentLists() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); // Since both devices do not have hiSyncId, they should be added in mCachedDevices. @@ -266,11 +254,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnHiSyncIdChanged_sameHiSyncIdAndOneConnected_chooseConnectedDevice() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); cachedDevice1.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED); cachedDevice2.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED); @@ -303,11 +289,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnHiSyncIdChanged_differentHiSyncId_populateInSameList() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); // Since both devices do not have hiSyncId, they should be added in mCachedDevices. @@ -339,8 +323,7 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnProfileConnectionStateChanged_singleDeviceConnected_visible() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); cachedDevice1.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED); @@ -377,11 +360,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnProfileConnectionStateChanged_twoDevicesConnected_oneDeviceVisible() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); cachedDevice1.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED); cachedDevice2.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED); @@ -431,11 +412,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnProfileConnectionStateChanged_twoDevicesDisconnected_oneDeviceVisible() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); cachedDevice1.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED); cachedDevice2.onProfileStateChanged(mHearingAidProfile, BluetoothProfile.STATE_CONNECTED); @@ -486,11 +465,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnDeviceUnpaired_bothHearingAidsPaired_removesItsPairFromList() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); cachedDevice1.setHiSyncId(HISYNCID1); @@ -518,14 +495,11 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnDeviceUnpaired_bothHearingAidsNotPaired_doesNotRemoveAnyDeviceFromList() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); - CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice3); + CachedBluetoothDevice cachedDevice3 = mCachedDeviceManager.addDevice(mDevice3); assertThat(cachedDevice2).isNotNull(); cachedDevice1.setHiSyncId(HISYNCID1); @@ -570,8 +544,7 @@ public class CachedBluetoothDeviceManagerTest { doAnswer((invocation) -> HISYNCID1).when(mHearingAidProfile).getHiSyncId(mDevice1); doAnswer((invocation) -> HISYNCID1).when(mHearingAidProfile).getHiSyncId(mDevice2); - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); // The first hearing aid device should be populated in mCachedDevice and // mCachedDevicesMapForHearingAids. @@ -581,8 +554,7 @@ public class CachedBluetoothDeviceManagerTest { assertThat(mCachedDeviceManager.mCachedDevicesMapForHearingAids.values()) .contains(cachedDevice1); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); // The second hearing aid device should be populated in mHearingAidDevicesNotAddedInCache. assertThat(mCachedDeviceManager.getCachedDevicesCopy()).hasSize(1); @@ -599,8 +571,7 @@ public class CachedBluetoothDeviceManagerTest { .getHearingAidProfile(); doAnswer((invocation) -> HISYNCID1).when(mHearingAidProfile).getHiSyncId(mDevice1); doAnswer((invocation) -> HISYNCID2).when(mHearingAidProfile).getHiSyncId(mDevice2); - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); // The first hearing aid device should be populated in mCachedDevice and // mCachedDevicesMapForHearingAids. @@ -610,8 +581,7 @@ public class CachedBluetoothDeviceManagerTest { assertThat(mCachedDeviceManager.mCachedDevicesMapForHearingAids.values()) .contains(cachedDevice1); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); // The second hearing aid device should also be populated in mCachedDevice // and mCachedDevicesMapForHearingAids as its not a pair of the first one. @@ -680,8 +650,7 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnBtClassChanged_validBtClass_classChanged() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); assertThat(cachedDevice1.getBtClass()).isEqualTo(DEVICE_CLASS_1); @@ -696,8 +665,7 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnDeviceDisappeared_deviceBondedUnbonded_unbondedDeviceDisappeared() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); @@ -712,11 +680,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnActiveDeviceChanged_connectedDevices_activeDeviceChanged() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); @@ -777,11 +743,9 @@ public class CachedBluetoothDeviceManagerTest { */ @Test public void testOnActiveDeviceChanged_withA2dpAndHearingAid() { - CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice1); + CachedBluetoothDevice cachedDevice1 = mCachedDeviceManager.addDevice(mDevice1); assertThat(cachedDevice1).isNotNull(); - CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mLocalAdapter, - mDevice2); + CachedBluetoothDevice cachedDevice2 = mCachedDeviceManager.addDevice(mDevice2); assertThat(cachedDevice2).isNotNull(); when(mDevice1.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED); diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java index c39fb85428fa..034574faf6db 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java @@ -26,7 +26,6 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; -import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; @@ -49,8 +48,6 @@ public class CachedBluetoothDeviceTest { private final static String DEVICE_ADDRESS = "AA:BB:CC:DD:EE:FF"; private final static String DEVICE_ALIAS_NEW = "TestAliasNew"; @Mock - private LocalBluetoothAdapter mAdapter; - @Mock private LocalBluetoothProfileManager mProfileManager; @Mock private HeadsetProfile mHfpProfile; @@ -73,13 +70,11 @@ public class CachedBluetoothDeviceTest { mContext = RuntimeEnvironment.application; mShadowAudioManager = shadowOf(mContext.getSystemService(AudioManager.class)); when(mDevice.getAddress()).thenReturn(DEVICE_ADDRESS); - when(mAdapter.getBluetoothState()).thenReturn(BluetoothAdapter.STATE_ON); when(mHfpProfile.isProfileReady()).thenReturn(true); when(mA2dpProfile.isProfileReady()).thenReturn(true); when(mPanProfile.isProfileReady()).thenReturn(true); when(mHearingAidProfile.isProfileReady()).thenReturn(true); - mCachedDevice = spy( - new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice)); + mCachedDevice = spy(new CachedBluetoothDevice(mContext, mProfileManager, mDevice)); doAnswer((invocation) -> mBatteryLevel).when(mCachedDevice).getBatteryLevel(); } @@ -477,7 +472,7 @@ public class CachedBluetoothDeviceTest { when(mDevice.getAliasName()).thenReturn(DEVICE_ALIAS); when(mDevice.getName()).thenReturn(DEVICE_NAME); CachedBluetoothDevice cachedBluetoothDevice = - new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice); + new CachedBluetoothDevice(mContext, mProfileManager, mDevice); // Verify alias is returned on getName assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS); // Verify device is visible @@ -487,7 +482,7 @@ public class CachedBluetoothDeviceTest { @Test public void testDeviceName_testNameNotAvailable() { CachedBluetoothDevice cachedBluetoothDevice = - new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice); + new CachedBluetoothDevice(mContext, mProfileManager, mDevice); // Verify device address is returned on getName assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ADDRESS); // Verify device is not visible @@ -504,7 +499,7 @@ public class CachedBluetoothDeviceTest { }).when(mDevice).setAlias(anyString()); when(mDevice.getName()).thenReturn(DEVICE_NAME); CachedBluetoothDevice cachedBluetoothDevice = - new CachedBluetoothDevice(mContext, mAdapter, mProfileManager, mDevice); + new CachedBluetoothDevice(mContext, mProfileManager, mDevice); // Verify alias is returned on getName assertThat(cachedBluetoothDevice.getName()).isEqualTo(DEVICE_ALIAS); // Verify null name does not get set diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HeadsetProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HeadsetProfileTest.java index bc8be4d5c3dd..c0a1f0cda3ee 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HeadsetProfileTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HeadsetProfileTest.java @@ -2,18 +2,17 @@ package com.android.settingslib.bluetooth; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHeadset; import android.bluetooth.BluetoothProfile; import android.content.Context; import com.android.settingslib.SettingsLibRobolectricTestRunner; +import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter; import org.junit.Before; import org.junit.Test; @@ -21,13 +20,14 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; +import org.robolectric.shadow.api.Shadow; @RunWith(SettingsLibRobolectricTestRunner.class) +@Config(shadows = {ShadowBluetoothAdapter.class}) public class HeadsetProfileTest { @Mock - private LocalBluetoothAdapter mAdapter; - @Mock private CachedBluetoothDeviceManager mDeviceManager; @Mock private LocalBluetoothProfileManager mProfileManager; @@ -39,19 +39,18 @@ public class HeadsetProfileTest { private BluetoothDevice mBluetoothDevice; private BluetoothProfile.ServiceListener mServiceListener; private HeadsetProfile mProfile; + private ShadowBluetoothAdapter mShadowBluetoothAdapter; @Before public void setUp() { MockitoAnnotations.initMocks(this); Context context = spy(RuntimeEnvironment.application); + mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter()); - doAnswer((invocation) -> { - mServiceListener = (BluetoothProfile.ServiceListener) invocation.getArguments()[1]; - return null; - }).when(mAdapter).getProfileProxy(any(Context.class), any(), eq(BluetoothProfile.HEADSET)); when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice); - mProfile = new HeadsetProfile(context, mAdapter, mDeviceManager, mProfileManager); + mProfile = new HeadsetProfile(context, mDeviceManager, mProfileManager); + mServiceListener = mShadowBluetoothAdapter.getServiceListener(); mServiceListener.onServiceConnected(BluetoothProfile.HEADSET, mService); } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java index af66f7a62146..f223176795b8 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java @@ -38,6 +38,7 @@ import android.content.Intent; import android.os.ParcelUuid; import com.android.settingslib.SettingsLibRobolectricTestRunner; +import com.android.settingslib.testutils.shadow.ShadowBluetoothAdapter; import org.junit.Before; import org.junit.Test; @@ -45,34 +46,38 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; +import org.robolectric.shadow.api.Shadow; import java.util.ArrayList; import java.util.List; @RunWith(SettingsLibRobolectricTestRunner.class) +@Config(shadows = {ShadowBluetoothAdapter.class}) public class LocalBluetoothProfileManagerTest { @Mock private CachedBluetoothDeviceManager mDeviceManager; @Mock private BluetoothEventManager mEventManager; @Mock - private LocalBluetoothAdapter mAdapter; - @Mock private BluetoothDevice mDevice; @Mock private CachedBluetoothDevice mCachedBluetoothDevice; private Context mContext; - private LocalBluetoothProfileManager mProfileManager; private Intent mIntent; + private LocalBluetoothAdapter mLocalBluetoothAdapter; + private LocalBluetoothProfileManager mProfileManager; + private ShadowBluetoothAdapter mShadowBluetoothAdapter; @Before public void setUp() { MockitoAnnotations.initMocks(this); mContext = spy(RuntimeEnvironment.application); - mEventManager = spy(new BluetoothEventManager(mAdapter, - mDeviceManager, mContext)); - when(mAdapter.getBluetoothState()).thenReturn(BluetoothAdapter.STATE_ON); + mLocalBluetoothAdapter = LocalBluetoothAdapter.getInstance(); + mEventManager = spy(new BluetoothEventManager(mLocalBluetoothAdapter, mDeviceManager, + mContext)); + mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter()); when(mDeviceManager.findDevice(mDevice)).thenReturn(mCachedBluetoothDevice); } @@ -81,12 +86,10 @@ public class LocalBluetoothProfileManagerTest { */ @Test public void constructor_initiateHidAndHidDeviceProfile() { - when(mAdapter.getSupportedProfiles()).thenReturn( - generateList(new int[] {BluetoothProfile.HID_HOST})); - when(mAdapter.getSupportedProfiles()).thenReturn( - generateList(new int[] {BluetoothProfile.HID_HOST, BluetoothProfile.HID_DEVICE})); - mProfileManager = - new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, mEventManager); + mShadowBluetoothAdapter.setSupportedProfiles(generateList( + new int[] {BluetoothProfile.HID_HOST, BluetoothProfile.HID_DEVICE})); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); assertThat(mProfileManager.getHidProfile()).isNotNull(); assertThat(mProfileManager.getHidDeviceProfile()).isNotNull(); @@ -97,12 +100,12 @@ public class LocalBluetoothProfileManagerTest { */ @Test public void updateLocalProfiles_addA2dpToLocalProfiles() { - mProfileManager = - new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, mEventManager); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); assertThat(mProfileManager.getA2dpProfile()).isNull(); assertThat(mProfileManager.getHeadsetProfile()).isNull(); - when(mAdapter.getSupportedProfiles()).thenReturn(generateList( + mShadowBluetoothAdapter.setSupportedProfiles(generateList( new int[] {BluetoothProfile.A2DP})); mProfileManager.updateLocalProfiles(); @@ -115,10 +118,10 @@ public class LocalBluetoothProfileManagerTest { */ @Test public void updateProfiles_addHidProfileForRemoteDevice() { - when(mAdapter.getSupportedProfiles()).thenReturn(generateList( + mShadowBluetoothAdapter.setSupportedProfiles(generateList( new int[] {BluetoothProfile.HID_HOST})); - mProfileManager = - new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, mEventManager); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); ParcelUuid[] uuids = new ParcelUuid[]{BluetoothUuid.Hid}; ParcelUuid[] localUuids = new ParcelUuid[]{}; List<LocalBluetoothProfile> profiles = new ArrayList<>(); @@ -138,10 +141,10 @@ public class LocalBluetoothProfileManagerTest { */ @Test public void stateChangedHandler_receiveA2dpConnectionStateChanged_shouldDispatchCallback() { - when(mAdapter.getSupportedProfiles()).thenReturn(generateList( + mShadowBluetoothAdapter.setSupportedProfiles(generateList( new int[] {BluetoothProfile.A2DP})); - mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, - mEventManager); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); // Refer to BluetoothControllerImpl, it will call setReceiverHandler after // LocalBluetoothProfileManager created. mEventManager.setReceiverHandler(null); @@ -162,10 +165,10 @@ public class LocalBluetoothProfileManagerTest { */ @Test public void stateChangedHandler_receiveHeadsetConnectionStateChanged_shouldDispatchCallback() { - when(mAdapter.getSupportedProfiles()).thenReturn(generateList( + mShadowBluetoothAdapter.setSupportedProfiles(generateList( new int[] {BluetoothProfile.HEADSET})); - mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, - mEventManager); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); // Refer to BluetoothControllerImpl, it will call setReceiverHandler after // LocalBluetoothProfileManager created. mEventManager.setReceiverHandler(null); @@ -186,12 +189,10 @@ public class LocalBluetoothProfileManagerTest { */ @Test public void stateChangedHandler_receiveHAPConnectionStateChanged_shouldDispatchCallback() { - ArrayList<Integer> supportProfiles = new ArrayList<>(); - supportProfiles.add(BluetoothProfile.HEARING_AID); - when(mAdapter.getSupportedProfiles()).thenReturn(supportProfiles); - when(mAdapter.getUuids()).thenReturn(new ParcelUuid[]{BluetoothUuid.HearingAid}); - mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, - mEventManager); + mShadowBluetoothAdapter.setSupportedProfiles(generateList( + new int[] {BluetoothProfile.HEARING_AID})); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); // Refer to BluetoothControllerImpl, it will call setReceiverHandler after // LocalBluetoothProfileManager created. mEventManager.setReceiverHandler(null); @@ -212,10 +213,10 @@ public class LocalBluetoothProfileManagerTest { */ @Test public void stateChangedHandler_receivePanConnectionStateChanged_shouldNotDispatchCallback() { - when(mAdapter.getSupportedProfiles()).thenReturn( - generateList(new int[] {BluetoothProfile.PAN})); - mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, - mEventManager); + mShadowBluetoothAdapter.setSupportedProfiles(generateList( + new int[] {BluetoothProfile.PAN})); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); // Refer to BluetoothControllerImpl, it will call setReceiverHandler after // LocalBluetoothProfileManager created. mEventManager.setReceiverHandler(null); @@ -237,9 +238,9 @@ public class LocalBluetoothProfileManagerTest { @Test public void stateChangedHandler_receivePanConnectionStateChangedWithoutProfile_shouldNotRefresh () { - when(mAdapter.getSupportedProfiles()).thenReturn(null); - mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, - mEventManager); + mShadowBluetoothAdapter.setSupportedProfiles(null); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); // Refer to BluetoothControllerImpl, it will call setReceiverHandler after // LocalBluetoothProfileManager created. mEventManager.setReceiverHandler(null); @@ -259,10 +260,10 @@ public class LocalBluetoothProfileManagerTest { */ @Test public void stateChangedHandler_receivePanConnectionStateChangedWithProfile_shouldRefresh() { - when(mAdapter.getSupportedProfiles()).thenReturn(generateList( + mShadowBluetoothAdapter.setSupportedProfiles(generateList( new int[] {BluetoothProfile.PAN})); - mProfileManager = new LocalBluetoothProfileManager(mContext, mAdapter, mDeviceManager, - mEventManager); + mProfileManager = new LocalBluetoothProfileManager(mContext, mLocalBluetoothAdapter, + mDeviceManager, mEventManager); // Refer to BluetoothControllerImpl, it will call setReceiverHandler after // LocalBluetoothProfileManager created. mEventManager.setReceiverHandler(null); diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/ShadowBluetoothAdapter.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/ShadowBluetoothAdapter.java new file mode 100644 index 000000000000..9b8c230dded4 --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/testutils/shadow/ShadowBluetoothAdapter.java @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2018 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.testutils.shadow; + +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothProfile; +import android.content.Context; + +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; + +import java.util.List; + +@Implements(value = BluetoothAdapter.class, inheritImplementationMethods = true) +public class ShadowBluetoothAdapter extends org.robolectric.shadows.ShadowBluetoothAdapter { + + private List<Integer> mSupportedProfiles; + private BluetoothProfile.ServiceListener mServiceListener; + + @Implementation + public boolean getProfileProxy(Context context, BluetoothProfile.ServiceListener listener, + int profile) { + mServiceListener = listener; + return true; + } + + public BluetoothProfile.ServiceListener getServiceListener() { + return mServiceListener; + } + + @Implementation + public List<Integer> getSupportedProfiles() { + return mSupportedProfiles; + } + + public void setSupportedProfiles(List<Integer> supportedProfiles) { + mSupportedProfiles = supportedProfiles; + } +} diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp new file mode 100644 index 000000000000..c9ba26804e89 --- /dev/null +++ b/packages/SystemUI/Android.bp @@ -0,0 +1,101 @@ +// +// Copyright (C) 2018 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. +// + +java_library { + name: "SystemUI-proto", + + srcs: ["src/**/*.proto"], + + proto: { + type: "nano", + }, +} + +java_library { + name: "SystemUI-tags", + srcs: ["src/com/android/systemui/EventLogTags.logtags"], +} + +android_library { + name: "SystemUI-core", + srcs: [ + "src/**/*.java", + "src/**/I*.aidl", + ], + resource_dirs: [ + "res-keyguard", + "res", + ], + static_libs: [ + "SystemUIPluginLib", + "SystemUISharedLib", + "SettingsLib", + "androidx.car_car", + "androidx.legacy_legacy-support-v4", + "androidx.recyclerview_recyclerview", + "androidx.preference_preference", + "androidx.appcompat_appcompat", + "androidx.mediarouter_mediarouter", + "androidx.palette_palette", + "androidx.legacy_legacy-preference-v14", + "androidx.leanback_leanback", + "androidx.slice_slice-core", + "androidx.slice_slice-view", + "androidx.slice_slice-builders", + "androidx.arch.core_core-runtime", + "androidx.lifecycle_lifecycle-extensions", + "SystemUI-tags", + "SystemUI-proto", + ], + manifest: "AndroidManifest.xml", + + libs: [ + "telephony-common", + "android.car", + ], + + aaptflags: [ + "--extra-packages", + "com.android.keyguard", + ], +} + +android_app { + name: "SystemUI", + static_libs: [ + "SystemUI-core", + ], + + platform_apis: true, + certificate: "platform", + privileged: true, + + optimize: { + proguard_flags_files: ["proguard.flags"], + }, + + libs: [ + "telephony-common", + "android.car", + ], + + dxflags: ["--multi-dex"], + aaptflags: [ + "--extra-packages", + "com.android.keyguard", + ], + +} diff --git a/packages/SystemUI/Android.mk b/packages/SystemUI/Android.mk deleted file mode 100644 index 920e3b6a3343..000000000000 --- a/packages/SystemUI/Android.mk +++ /dev/null @@ -1,82 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := SystemUI-proto - -LOCAL_SRC_FILES := $(call all-proto-files-under,src) - -LOCAL_PROTOC_OPTIMIZE_TYPE := nano - -include $(BUILD_STATIC_JAVA_LIBRARY) - -include $(CLEAR_VARS) - -LOCAL_MODULE := SystemUI-tags - -LOCAL_SRC_FILES := src/com/android/systemui/EventLogTags.logtags - -include $(BUILD_STATIC_JAVA_LIBRARY) - -# ------------------ - -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_MODULE_TAGS := optional - -RELATIVE_FINGERPRINT_PATH := ../../core/java/android/hardware/fingerprint - -LOCAL_SRC_FILES := \ - $(call all-java-files-under, src) \ - $(call all-Iaidl-files-under, src) \ - $(call all-Iaidl-files-under, $(RELATIVE_FINGERPRINT_PATH)) - -LOCAL_STATIC_ANDROID_LIBRARIES := \ - SystemUIPluginLib \ - SystemUISharedLib \ - androidx.car_car \ - androidx.legacy_legacy-support-v4 \ - androidx.recyclerview_recyclerview \ - androidx.preference_preference \ - androidx.appcompat_appcompat \ - androidx.mediarouter_mediarouter \ - androidx.palette_palette \ - androidx.legacy_legacy-preference-v14 \ - androidx.leanback_leanback \ - androidx.slice_slice-core \ - androidx.slice_slice-view \ - androidx.slice_slice-builders \ - androidx.arch.core_core-runtime \ - androidx.lifecycle_lifecycle-extensions \ - -LOCAL_STATIC_JAVA_LIBRARIES := \ - SystemUI-tags \ - SystemUI-proto - -LOCAL_JAVA_LIBRARIES := telephony-common \ - android.car - -LOCAL_PACKAGE_NAME := SystemUI -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_CERTIFICATE := platform -LOCAL_PRIVILEGED_MODULE := true - -LOCAL_PROGUARD_FLAG_FILES := proguard.flags -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res-keyguard $(LOCAL_PATH)/res - -ifneq ($(INCREMENTAL_BUILDS),) - LOCAL_PROGUARD_ENABLED := disabled - LOCAL_JACK_ENABLED := incremental - LOCAL_DX_FLAGS := --multi-dex - LOCAL_JACK_FLAGS := --multi-dex native -endif - -include frameworks/base/packages/SettingsLib/common.mk - -LOCAL_AAPT_FLAGS := --extra-packages com.android.keyguard - -include $(BUILD_PACKAGE) - -include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/packages/SystemUI/plugin/Android.bp b/packages/SystemUI/plugin/Android.bp new file mode 100644 index 000000000000..b38059de0f8d --- /dev/null +++ b/packages/SystemUI/plugin/Android.bp @@ -0,0 +1,37 @@ +// Copyright (C) 2016 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. + +java_library { + + name: "SystemUIPluginLib", + + srcs: ["src/**/*.java"], + + +} + +android_app { + + // Dummy to generate .toc files. + name: "PluginDummyLib", + platform_apis: true, + srcs: ["src/**/*.java"], + + libs: ["SystemUIPluginLib"], + + optimize: { + enabled: false, + }, + +} diff --git a/packages/SystemUI/plugin/Android.mk b/packages/SystemUI/plugin/Android.mk deleted file mode 100644 index 8634684087e2..000000000000 --- a/packages/SystemUI/plugin/Android.mk +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (C) 2016 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. - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_MODULE_TAGS := optional - -LOCAL_MODULE := SystemUIPluginLib - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res -LOCAL_JAR_EXCLUDE_FILES := none - -include $(BUILD_STATIC_JAVA_LIBRARY) - -include $(CLEAR_VARS) - -# Dummy to generate .toc files. -LOCAL_PACKAGE_NAME := PluginDummyLib -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_JAVA_LIBRARIES := SystemUIPluginLib - -LOCAL_PROGUARD_ENABLED := disabled - -include $(BUILD_PACKAGE) diff --git a/packages/SystemUI/plugin/ExamplePlugin/Android.bp b/packages/SystemUI/plugin/ExamplePlugin/Android.bp new file mode 100644 index 000000000000..a0eaf14f4a06 --- /dev/null +++ b/packages/SystemUI/plugin/ExamplePlugin/Android.bp @@ -0,0 +1,14 @@ +android_app { + + name: "ExamplePlugin", + + libs: ["SystemUIPluginLib"], + + certificate: "platform", + optimize: { + enabled: false, + }, + + srcs: ["src/**/*.java"], + +} diff --git a/packages/SystemUI/plugin/ExamplePlugin/Android.mk b/packages/SystemUI/plugin/ExamplePlugin/Android.mk deleted file mode 100644 index 4c82c7505ad3..000000000000 --- a/packages/SystemUI/plugin/ExamplePlugin/Android.mk +++ /dev/null @@ -1,15 +0,0 @@ -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_PACKAGE_NAME := ExamplePlugin - -LOCAL_JAVA_LIBRARIES := SystemUIPluginLib - -LOCAL_CERTIFICATE := platform -LOCAL_PROGUARD_ENABLED := disabled - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -include $(BUILD_PACKAGE) diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java index 61f7fe8dc019..bf4374acf6e6 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java @@ -43,7 +43,7 @@ public interface QSTile { boolean isAvailable(); void setTileSpec(String tileSpec); - void clearState(); + @Deprecated default void clearState() {} void refreshState(); void addCallback(Callback callback); diff --git a/packages/SystemUI/res-keyguard/values/alias.xml b/packages/SystemUI/res-keyguard/values/alias.xml index f06b450c7dbe..1c63c7933faf 100644 --- a/packages/SystemUI/res-keyguard/values/alias.xml +++ b/packages/SystemUI/res-keyguard/values/alias.xml @@ -25,9 +25,6 @@ <!-- Alias used to reference framework "OK" string in keyguard. --> <item type="string" name="ok">@*android:string/ok</item> - <!-- Alias used to reference framework "OK" string in keyguard. --> - <item type="string" name="system_ui_date_pattern">@*android:string/system_ui_date_pattern</item> - <!-- Alias used to reference framework configuration for screen rotation. --> <item type="bool" name="config_enableLockScreenRotation">@*android:bool/config_enableLockScreenRotation</item> diff --git a/packages/SystemUI/res/drawable/ic_sysbar_home.xml b/packages/SystemUI/res/drawable/ic_sysbar_home.xml index a960af7ca856..da239372791f 100644 --- a/packages/SystemUI/res/drawable/ic_sysbar_home.xml +++ b/packages/SystemUI/res/drawable/ic_sysbar_home.xml @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. --> -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="oval" - android:useLevel="false"> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="28dp" + android:height="28dp" + android:viewportWidth="28" + android:viewportHeight="28"> - <solid android:color="?attr/singleToneColor" /> - - <size - android:height="14dp" - android:width="14dp" /> -</shape> + <path + android:fillColor="?attr/singleToneColor" + android:pathData="M 14 7 C 17.8659932488 7 21 10.1340067512 21 14 C 21 17.8659932488 17.8659932488 21 14 21 C 10.1340067512 21 7 17.8659932488 7 14 C 7 10.1340067512 10.1340067512 7 14 7 Z" /> +</vector>
\ No newline at end of file diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 915fc6e37770..9a64c604ad0c 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -1929,23 +1929,17 @@ <!-- Accessibility description of a QS tile while editing positions [CHAR LIMIT=NONE] --> <string name="accessibility_qs_edit_add_tile_label"><xliff:g id="tile_name" example="Wi-Fi">%1$s</xliff:g>. Double tap to add.</string> - <!-- Accessibility description of a place to drop a tile while editing positions [CHAR LIMIT=NONE] --> - <string name="accessibility_qs_edit_position_label">Position <xliff:g id="position" example="2">%1$d</xliff:g>. Double tap to select.</string> - <!-- Accessibility description of option to move QS tile [CHAR LIMIT=NONE] --> <string name="accessibility_qs_edit_move_tile">Move <xliff:g id="tile_name" example="Wi-Fi">%1$s</xliff:g></string> <!-- Accessibility description of option to remove QS tile [CHAR LIMIT=NONE] --> <string name="accessibility_qs_edit_remove_tile">Remove <xliff:g id="tile_name" example="Wi-Fi">%1$s</xliff:g></string> - <!-- Accessibility action when QS tile is added [CHAR LIMIT=NONE] --> - <string name="accessibility_qs_edit_tile_added"><xliff:g id="tile_name" example="Wi-Fi">%1$s</xliff:g> is added to position <xliff:g id="position" example="5">%2$d</xliff:g></string> - - <!-- Accessibility action when QS tile is removed [CHAR LIMIT=NONE] --> - <string name="accessibility_qs_edit_tile_removed"><xliff:g id="tile_name" example="Wi-Fi">%1$s</xliff:g> is removed</string> + <!-- Accessibility action when QS tile is to be added [CHAR LIMIT=NONE] --> + <string name="accessibility_qs_edit_tile_add">Add <xliff:g id="tile_name" example="Wi-Fi">%1$s</xliff:g> to position <xliff:g id="position" example="5">%2$d</xliff:g></string> - <!-- Accessibility action when QS tile is moved [CHAR LIMIT=NONE] --> - <string name="accessibility_qs_edit_tile_moved"><xliff:g id="tile_name" example="Wi-Fi">%1$s</xliff:g> moved to position <xliff:g id="position" example="5">%2$d</xliff:g></string> + <!-- Accessibility action when QS tile is to be moved [CHAR LIMIT=NONE] --> + <string name="accessibility_qs_edit_tile_move">Move <xliff:g id="tile_name" example="Wi-Fi">%1$s</xliff:g> to position <xliff:g id="position" example="5">%2$d</xliff:g></string> <!-- Accessibility label for window when QS editing is happening [CHAR LIMIT=NONE] --> <string name="accessibility_desc_quick_settings_edit">Quick settings editor.</string> diff --git a/packages/SystemUI/shared/Android.bp b/packages/SystemUI/shared/Android.bp new file mode 100644 index 000000000000..0fb12009e2cb --- /dev/null +++ b/packages/SystemUI/shared/Android.bp @@ -0,0 +1,40 @@ +// Copyright (C) 2017 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +android_library { + + name: "SystemUISharedLib", + srcs: [ + "src/**/*.java", + "src/**/I*.aidl", + ], + +} + +android_app { + + name: "SysUISharedLib", + platform_apis: true, + srcs: [ + "src/**/*.java", + "src/**/I*.aidl", + ], + + static_libs: ["SystemUISharedLib"], + + optimize: { + enabled: false, + }, + +} diff --git a/packages/SystemUI/shared/Android.mk b/packages/SystemUI/shared/Android.mk deleted file mode 100644 index f20df0cebc8d..000000000000 --- a/packages/SystemUI/shared/Android.mk +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (C) 2017 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_MODULE_TAGS := optional - -LOCAL_MODULE := SystemUISharedLib - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src) - -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res -LOCAL_JAR_EXCLUDE_FILES := none - -include $(BUILD_STATIC_JAVA_LIBRARY) - -include $(CLEAR_VARS) - -LOCAL_PACKAGE_NAME := SysUISharedLib -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_JAVA_LIBRARIES := SystemUISharedLib - -LOCAL_PROGUARD_ENABLED := disabled - -include $(BUILD_PACKAGE) - -include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/packages/SystemUI/shared/tests/Android.mk b/packages/SystemUI/shared/tests/Android.mk index 4e7cbbfede2b..02774c946596 100644 --- a/packages/SystemUI/shared/tests/Android.mk +++ b/packages/SystemUI/shared/tests/Android.mk @@ -30,10 +30,10 @@ LOCAL_PRIVATE_PLATFORM_APIS := true LOCAL_COMPATIBILITY_SUITE := device-tests # Add local path sources as well as shared lib sources -LOCAL_SRC_FILES := $(call all-java-files-under, src) \ - $(call all-java-files-under, ../src) +LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_STATIC_JAVA_LIBRARIES := \ + SystemUISharedLib \ metrics-helper-lib \ android-support-test \ mockito-target-inline-minus-junit4 \ diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index f4acc0cdde13..b159b393862a 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -15,7 +15,6 @@ */ package com.android.keyguard; -import android.R.style; import android.app.Activity; import android.app.AlertDialog; import android.app.admin.DevicePolicyManager; @@ -27,7 +26,6 @@ import android.util.AttributeSet; import android.util.Log; import android.util.Slog; import android.util.StatsLog; -import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; @@ -212,7 +210,7 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe if (messageId != 0) { final String message = mContext.getString(messageId, - KeyguardUpdateMonitor.getInstance(mContext).getFailedUnlockAttempts(userId), + mLockPatternUtils.getCurrentFailedPasswordAttempts(userId), timeoutInSeconds); showDialog(null, message); } @@ -257,8 +255,8 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe } private void reportFailedUnlockAttempt(int userId, int timeoutMs) { - final KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(mContext); - final int failedAttempts = monitor.getFailedUnlockAttempts(userId) + 1; // +1 for this time + // +1 for this time + final int failedAttempts = mLockPatternUtils.getCurrentFailedPasswordAttempts(userId) + 1; if (DEBUG) Log.d(TAG, "reportFailedPatternAttempt: #" + failedAttempts); @@ -292,7 +290,6 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe showWipeDialog(failedAttempts, userType); } } - monitor.reportFailedStrongAuthUnlockAttempt(userId); mLockPatternUtils.reportFailedPasswordAttempt(userId); if (timeoutMs > 0) { mLockPatternUtils.reportPasswordLockout(timeoutMs, userId); @@ -436,7 +433,6 @@ public class KeyguardSecurityContainer extends FrameLayout implements KeyguardSe if (success) { StatsLog.write(StatsLog.KEYGUARD_BOUNCER_PASSWORD_ENTERED, StatsLog.KEYGUARD_BOUNCER_PASSWORD_ENTERED__RESULT__SUCCESS); - monitor.clearFailedUnlockAttempts(); mLockPatternUtils.reportSuccessfulPasswordAttempt(userId); } else { StatsLog.write(StatsLog.KEYGUARD_BOUNCER_PASSWORD_ENTERED, diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java index 2e9dd032e945..7479152f5da0 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java @@ -29,6 +29,7 @@ import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.net.Uri; +import android.os.Trace; import android.provider.Settings; import android.text.Layout; import android.text.TextUtils; @@ -151,6 +152,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe } private void showSlice() { + Trace.beginSection("KeyguardSliceView#showSlice"); if (mPulsing || mSlice == null) { mTitle.setVisibility(GONE); mRow.setVisibility(GONE); @@ -238,6 +240,7 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe if (mContentChangeListener != null) { mContentChangeListener.run(); } + Trace.endSection(); } public void setPulsing(boolean pulsing, boolean animate) { @@ -385,8 +388,23 @@ public class KeyguardSliceView extends LinearLayout implements View.OnClickListe } public void refresh() { - Slice slice = SliceViewManager.getInstance(getContext()).bindSlice(mKeyguardSliceUri); + Slice slice; + Trace.beginSection("KeyguardSliceView#refresh"); + // We can optimize performance and avoid binder calls when we know that we're bound + // to a Slice on the same process. + if (KeyguardSliceProvider.KEYGUARD_SLICE_URI.equals(mKeyguardSliceUri.toString())) { + KeyguardSliceProvider instance = KeyguardSliceProvider.getAttachedInstance(); + if (instance != null) { + slice = instance.onBindSlice(mKeyguardSliceUri); + } else { + Log.w(TAG, "Keyguard slice not bound yet?"); + slice = null; + } + } else { + slice = SliceViewManager.getInstance(getContext()).bindSlice(mKeyguardSliceUri); + } onChanged(slice); + Trace.endSection(); } public static class Row extends LinearLayout { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index dfd6a18c517b..3e534d11e56e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -215,9 +215,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { // Battery status private BatteryStatus mBatteryStatus; - // Password attempts - private SparseIntArray mFailedAttempts = new SparseIntArray(); - private final StrongAuthTracker mStrongAuthTracker; private final ArrayList<WeakReference<KeyguardUpdateMonitorCallback>> @@ -2141,22 +2138,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener { return mDeviceProvisioned; } - public void clearFailedUnlockAttempts() { - mFailedAttempts.delete(sCurrentUser); - } - public ServiceState getServiceState(int subId) { return mServiceStates.get(subId); } - public int getFailedUnlockAttempts(int userId) { - return mFailedAttempts.get(userId, 0); - } - - public void reportFailedStrongAuthUnlockAttempt(int userId) { - mFailedAttempts.put(userId, getFailedUnlockAttempts(userId) + 1); - } - public void clearBiometricRecognized() { mUserFingerprintAuthenticated.clear(); mUserFaceAuthenticated.clear(); diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java index 520e40aa1e56..9bbcfbcd07dd 100644 --- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java @@ -43,9 +43,12 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.Region; import android.hardware.display.DisplayManager; +import android.os.Handler; +import android.os.HandlerThread; import android.os.SystemProperties; import android.provider.Settings.Secure; import android.util.DisplayMetrics; +import android.util.Log; import android.view.DisplayCutout; import android.view.DisplayInfo; import android.view.Gravity; @@ -60,6 +63,7 @@ import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.ImageView; +import com.android.internal.util.Preconditions; import com.android.systemui.RegionInterceptingFrameLayout.RegionInterceptableView; import com.android.systemui.fragments.FragmentHostManager; import com.android.systemui.fragments.FragmentHostManager.FragmentListener; @@ -79,6 +83,9 @@ import androidx.annotation.VisibleForTesting; * for antialiasing and emulation purposes. */ public class ScreenDecorations extends SystemUI implements Tunable { + private static final boolean DEBUG = false; + private static final String TAG = "ScreenDecorations"; + public static final String SIZE = "sysui_rounded_size"; public static final String PADDING = "sysui_rounded_content_padding"; private static final boolean DEBUG_SCREENSHOT_ROUNDED_CORNERS = @@ -99,9 +106,24 @@ public class ScreenDecorations extends SystemUI implements Tunable { private DisplayCutoutView mCutoutBottom; private SecureSetting mColorInversionSetting; private boolean mPendingRotationChange; + private Handler mHandler; @Override public void start() { + mHandler = startHandlerThread(); + mHandler.post(this::startOnScreenDecorationsThread); + setupStatusBarPaddingIfNeeded(); + } + + @VisibleForTesting + Handler startHandlerThread() { + HandlerThread thread = new HandlerThread("ScreenDecorations"); + thread.start(); + return thread.getThreadHandler(); + } + + private void startOnScreenDecorationsThread() { + mRotation = RotationUtils.getExactRotation(mContext); mWindowManager = mContext.getSystemService(WindowManager.class); mRoundedDefault = mContext.getResources().getDimensionPixelSize( R.dimen.rounded_corner_radius); @@ -113,12 +135,6 @@ public class ScreenDecorations extends SystemUI implements Tunable { setupDecorations(); } - int padding = mContext.getResources().getDimensionPixelSize( - R.dimen.rounded_corner_content_padding); - if (padding != 0) { - setupPadding(padding); - } - mDisplayListener = new DisplayManager.DisplayListener() { @Override public void onDisplayAdded(int displayId) { @@ -132,8 +148,8 @@ public class ScreenDecorations extends SystemUI implements Tunable { @Override public void onDisplayChanged(int displayId) { - if ((hasRoundedCorners() || shouldDrawCutout()) && - mRotation != RotationUtils.getExactRotation(mContext)) { + final int newRotation = RotationUtils.getExactRotation(mContext); + if (mOverlay != null && mBottomOverlay != null && mRotation != newRotation) { // We cannot immediately update the orientation. Otherwise // WindowManager is still deferring layout until it has finished dispatching // the config changes, which may cause divergence between what we draw @@ -142,19 +158,24 @@ public class ScreenDecorations extends SystemUI implements Tunable { // - we are trying to redraw. This because WM resized our window and told us to. // - the config change has been dispatched, so WM is no longer deferring layout. mPendingRotationChange = true; + if (DEBUG) { + Log.i(TAG, "Rotation changed, deferring " + newRotation + ", staying at " + + mRotation); + } + mOverlay.getViewTreeObserver().addOnPreDrawListener( - new RestartingPreDrawListener(mOverlay)); + new RestartingPreDrawListener(mOverlay, newRotation)); mBottomOverlay.getViewTreeObserver().addOnPreDrawListener( - new RestartingPreDrawListener(mBottomOverlay)); + new RestartingPreDrawListener(mBottomOverlay, newRotation)); } updateOrientation(); } }; - mRotation = -1; mDisplayManager = (DisplayManager) mContext.getSystemService( Context.DISPLAY_SERVICE); - mDisplayManager.registerDisplayListener(mDisplayListener, null); + mDisplayManager.registerDisplayListener(mDisplayListener, mHandler); + updateOrientation(); } private void setupDecorations() { @@ -184,10 +205,11 @@ public class ScreenDecorations extends SystemUI implements Tunable { mWindowManager.getDefaultDisplay().getMetrics(metrics); mDensity = metrics.density; - Dependency.get(TunerService.class).addTunable(this, SIZE); + Dependency.get(Dependency.MAIN_HANDLER).post( + () -> Dependency.get(TunerService.class).addTunable(this, SIZE)); // Watch color inversion and invert the overlay as needed. - mColorInversionSetting = new SecureSetting(mContext, Dependency.get(Dependency.MAIN_HANDLER), + mColorInversionSetting = new SecureSetting(mContext, mHandler, Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED) { @Override protected void handleValueChanged(int value, boolean observedChange) { @@ -199,7 +221,7 @@ public class ScreenDecorations extends SystemUI implements Tunable { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_USER_SWITCHED); - mContext.registerReceiver(mIntentReceiver, filter); + mContext.registerReceiver(mIntentReceiver, filter, null /* permission */, mHandler); mOverlay.addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override @@ -217,6 +239,11 @@ public class ScreenDecorations extends SystemUI implements Tunable { .start(); } }); + + mOverlay.getViewTreeObserver().addOnPreDrawListener( + new ValidatingPreDrawListener(mOverlay)); + mBottomOverlay.getViewTreeObserver().addOnPreDrawListener( + new ValidatingPreDrawListener(mBottomOverlay)); } private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @@ -246,14 +273,28 @@ public class ScreenDecorations extends SystemUI implements Tunable { @Override protected void onConfigurationChanged(Configuration newConfig) { - mPendingRotationChange = false; - updateOrientation(); - if (shouldDrawCutout() && mOverlay == null) { - setupDecorations(); - } + mHandler.post(() -> { + int oldRotation = mRotation; + mPendingRotationChange = false; + updateOrientation(); + if (DEBUG) Log.i(TAG, "onConfigChanged from rot " + oldRotation + " to " + mRotation); + if (shouldDrawCutout() && mOverlay == null) { + setupDecorations(); + } + if (mOverlay != null) { + // Updating the layout params ensures that ViewRootImpl will call relayoutWindow(), + // which ensures that the forced seamless rotation will end, even if we updated + // the rotation before window manager was ready (and was still waiting for sending + // the updated rotation). + updateLayoutParams(); + } + }); } - protected void updateOrientation() { + private void updateOrientation() { + Preconditions.checkState(mHandler.getLooper().getThread() == Thread.currentThread(), + "must call on " + mHandler.getLooper().getThread() + + ", but was " + Thread.currentThread()); if (mPendingRotationChange) { return; } @@ -333,7 +374,19 @@ public class ScreenDecorations extends SystemUI implements Tunable { com.android.internal.R.bool.config_fillMainBuiltInDisplayCutout); } - private void setupPadding(int padding) { + + private void setupStatusBarPaddingIfNeeded() { + // TODO: This should be moved to a more appropriate place, as it is not related to the + // screen decorations overlay. + int padding = mContext.getResources().getDimensionPixelSize( + R.dimen.rounded_corner_content_padding); + if (padding != 0) { + setupStatusBarPadding(padding); + } + + } + + private void setupStatusBarPadding(int padding) { // Add some padding to all the content near the edge of the screen. StatusBar sb = getComponent(StatusBar.class); View statusBar = (sb != null ? sb.getStatusBarWindow() : null); @@ -402,30 +455,32 @@ public class ScreenDecorations extends SystemUI implements Tunable { @Override public void onTuningChanged(String key, String newValue) { - if (mOverlay == null) return; - if (SIZE.equals(key)) { - int size = mRoundedDefault; - int sizeTop = mRoundedDefaultTop; - int sizeBottom = mRoundedDefaultBottom; - if (newValue != null) { - try { - size = (int) (Integer.parseInt(newValue) * mDensity); - } catch (Exception e) { + mHandler.post(() -> { + if (mOverlay == null) return; + if (SIZE.equals(key)) { + int size = mRoundedDefault; + int sizeTop = mRoundedDefaultTop; + int sizeBottom = mRoundedDefaultBottom; + if (newValue != null) { + try { + size = (int) (Integer.parseInt(newValue) * mDensity); + } catch (Exception e) { + } } - } - if (sizeTop == 0) { - sizeTop = size; - } - if (sizeBottom == 0) { - sizeBottom = size; - } + if (sizeTop == 0) { + sizeTop = size; + } + if (sizeBottom == 0) { + sizeBottom = size; + } - setSize(mOverlay.findViewById(R.id.left), sizeTop); - setSize(mOverlay.findViewById(R.id.right), sizeTop); - setSize(mBottomOverlay.findViewById(R.id.left), sizeBottom); - setSize(mBottomOverlay.findViewById(R.id.right), sizeBottom); - } + setSize(mOverlay.findViewById(R.id.left), sizeTop); + setSize(mOverlay.findViewById(R.id.right), sizeTop); + setSize(mBottomOverlay.findViewById(R.id.left), sizeBottom); + setSize(mBottomOverlay.findViewById(R.id.right), sizeBottom); + } + }); } private void setSize(View view, int pixelSize) { @@ -484,6 +539,11 @@ public class ScreenDecorations extends SystemUI implements Tunable { mVisibilityChangedListener = visibilityChangedListener; mDecorations = decorations; setId(R.id.display_cutout); + if (DEBUG) { + getViewTreeObserver().addOnDrawListener(() -> Log.i(TAG, + (mInitialStart ? "OverlayTop" : "OverlayBottom") + + " drawn in rot " + mRotation)); + } } public void setColor(int color) { @@ -719,20 +779,66 @@ public class ScreenDecorations extends SystemUI implements Tunable { private class RestartingPreDrawListener implements ViewTreeObserver.OnPreDrawListener { private final View mView; + private final int mTargetRotation; - private RestartingPreDrawListener(View view) { + private RestartingPreDrawListener(View view, int targetRotation) { mView = view; + mTargetRotation = targetRotation; } @Override public boolean onPreDraw() { - mPendingRotationChange = false; mView.getViewTreeObserver().removeOnPreDrawListener(this); + + if (mTargetRotation == mRotation) { + if (DEBUG) { + Log.i(TAG, (mView == mOverlay ? "OverlayTop" : "OverlayBottom") + + " already in target rot " + + mTargetRotation + ", allow draw without restarting it"); + } + return true; + } + + mPendingRotationChange = false; // This changes the window attributes - we need to restart the traversal for them to // take effect. updateOrientation(); + if (DEBUG) { + Log.i(TAG, (mView == mOverlay ? "OverlayTop" : "OverlayBottom") + + " restarting listener fired, restarting draw for rot " + mRotation); + } mView.invalidate(); return false; } } + + /** + * A pre-draw listener, that validates that the rotation we draw in matches the displays + * rotation before continuing the draw. + * + * This is to prevent a race condition, where we have not received the display changed event + * yet, and would thus draw in an old orientation. + */ + private class ValidatingPreDrawListener implements ViewTreeObserver.OnPreDrawListener { + + private final View mView; + + public ValidatingPreDrawListener(View view) { + mView = view; + } + + @Override + public boolean onPreDraw() { + final int displayRotation = RotationUtils.getExactRotation(mContext); + if (displayRotation != mRotation && !mPendingRotationChange) { + if (DEBUG) { + Log.i(TAG, "Drawing rot " + mRotation + ", but display is at rot " + + displayRotation + ". Restarting draw"); + } + mView.invalidate(); + return false; + } + return true; + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java index 1cacdb595be1..51cc4a11a8d0 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java @@ -35,7 +35,7 @@ public class DozeLog { private static final int SIZE = Build.IS_DEBUGGABLE ? 400 : 50; static final SimpleDateFormat FORMAT = new SimpleDateFormat("MM-dd HH:mm:ss.SSS"); - private static final int PULSE_REASONS = 6; + private static final int PULSE_REASONS = 7; public static final int PULSE_REASON_NONE = -1; public static final int PULSE_REASON_INTENT = 0; @@ -44,6 +44,7 @@ public class DozeLog { public static final int PULSE_REASON_SENSOR_PICKUP = 3; public static final int PULSE_REASON_SENSOR_DOUBLE_TAP = 4; public static final int PULSE_REASON_SENSOR_LONG_PRESS = 5; + public static final int PULSE_REASON_SENSOR_REACH = 6; private static boolean sRegisterKeyguardCallback = true; @@ -169,6 +170,11 @@ public class DozeLog { log("state " + state); } + public static void traceReachWakeUp() { + if (!ENABLED) return; + log("reachWakeUp"); + } + public static void traceProximityResult(Context context, boolean near, long millis, int pulseReason) { if (!ENABLED) return; @@ -186,6 +192,7 @@ public class DozeLog { case PULSE_REASON_SENSOR_PICKUP: return "pickup"; case PULSE_REASON_SENSOR_DOUBLE_TAP: return "doubletap"; case PULSE_REASON_SENSOR_LONG_PRESS: return "longpress"; + case PULSE_REASON_SENSOR_REACH: return "reach"; default: throw new IllegalArgumentException("bad reason: " + pulseReason); } } diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java index 18dffa705f2c..045a98c51a77 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java @@ -110,6 +110,13 @@ public class DozeSensors { DozeLog.PULSE_REASON_SENSOR_LONG_PRESS, true /* reports touch coordinates */, true /* touchscreen */), + new TriggerSensor( + findSensorWithType(config.reachSensorType()), + Settings.Secure.DOZE_REACH_GESTURE, + true /* configured */, + DozeLog.PULSE_REASON_SENSOR_REACH, + false /* reports touch coordinates */, + false /* touchscreen */), }; mProxSensor = new ProxSensor(policy); diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java index 4391a44f9904..73cbd7d96d28 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java @@ -128,6 +128,7 @@ public class DozeTriggers implements DozeMachine.Part { boolean isDoubleTap = pulseReason == DozeLog.PULSE_REASON_SENSOR_DOUBLE_TAP; boolean isPickup = pulseReason == DozeLog.PULSE_REASON_SENSOR_PICKUP; boolean isLongPress = pulseReason == DozeLog.PULSE_REASON_SENSOR_LONG_PRESS; + boolean isReach = pulseReason == DozeLog.PULSE_REASON_SENSOR_REACH; if (isLongPress) { requestPulse(pulseReason, sensorPerformedProxCheck); @@ -140,7 +141,7 @@ public class DozeTriggers implements DozeMachine.Part { if (isDoubleTap) { mDozeHost.onDoubleTap(screenX, screenY); mMachine.wakeUp(); - } else if (isPickup) { + } else if (isPickup || isReach) { mMachine.wakeUp(); } else { mDozeHost.extendPulse(); @@ -155,6 +156,8 @@ public class DozeTriggers implements DozeMachine.Part { final boolean withinVibrationThreshold = timeSinceNotification < mDozeParameters.getPickupVibrationThreshold(); DozeLog.tracePickupWakeUp(mContext, withinVibrationThreshold); + } else if (isReach) { + DozeLog.traceReachWakeUp(); } } diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index 6c94aa4cbdd8..a195fc9e347b 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -1399,6 +1399,7 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final ColorExtractor mColorExtractor; private boolean mKeyguardShowing; private boolean mShouldDisplaySeparatedButton; + private boolean mShowing; public ActionsDialog(Context context, OnClickListener clickListener, MyAdapter adapter, OnItemLongClickListener longClickListener, boolean shouldDisplaySeparatedButton) { @@ -1507,6 +1508,7 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, @Override public void show() { super.show(); + mShowing = true; mGradientDrawable.setAlpha(0); mHardwareLayout.setTranslationX(getAnimTranslation()); mHardwareLayout.setAlpha(0); @@ -1526,6 +1528,10 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, @Override public void dismiss() { + if (!mShowing) { + return; + } + mShowing = false; mHardwareLayout.setTranslationX(0); mHardwareLayout.setAlpha(1); mHardwareLayout.animate() @@ -1544,6 +1550,7 @@ class GlobalActionsDialog implements DialogInterface.OnDismissListener, void dismissImmediately() { super.dismiss(); + mShowing = false; } private float getAnimTranslation() { diff --git a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java index a42191cce487..76a1accb56f7 100644 --- a/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java +++ b/packages/SystemUI/src/com/android/systemui/keyboard/KeyboardUI.java @@ -318,7 +318,7 @@ public class KeyboardUI extends SystemUI implements InputManager.OnTabletModeCha private CachedBluetoothDevice getCachedBluetoothDevice(BluetoothDevice d) { CachedBluetoothDevice cachedDevice = mCachedDeviceManager.findDevice(d); if (cachedDevice == null) { - cachedDevice = mCachedDeviceManager.addDevice(mLocalBluetoothAdapter, d); + cachedDevice = mCachedDeviceManager.addDevice(d); } return cachedDevice; } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java index c96aa7303236..82b79accaac4 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java @@ -30,6 +30,7 @@ import android.icu.text.DateFormat; import android.icu.text.DisplayContext; import android.net.Uri; import android.os.Handler; +import android.os.Trace; import android.provider.Settings; import android.service.notification.ZenModeConfig; import android.text.TextUtils; @@ -72,6 +73,8 @@ public class KeyguardSliceProvider extends SliceProvider implements @VisibleForTesting static final int ALARM_VISIBILITY_HOURS = 12; + private static KeyguardSliceProvider sInstance; + protected final Uri mSliceUri; protected final Uri mDateUri; protected final Uri mAlarmUri; @@ -89,6 +92,7 @@ public class KeyguardSliceProvider extends SliceProvider implements protected AlarmManager mAlarmManager; protected ContentResolver mContentResolver; private AlarmManager.AlarmClockInfo mNextAlarmInfo; + private PendingIntent mPendingIntent; /** * Receiver responsible for time ticking and updating the date format. @@ -117,6 +121,10 @@ public class KeyguardSliceProvider extends SliceProvider implements this(new Handler()); } + public static KeyguardSliceProvider getAttachedInstance() { + return KeyguardSliceProvider.sInstance; + } + @VisibleForTesting KeyguardSliceProvider(Handler handler) { mHandler = handler; @@ -128,23 +136,24 @@ public class KeyguardSliceProvider extends SliceProvider implements @Override public Slice onBindSlice(Uri sliceUri) { + Trace.beginSection("KeyguardSliceProvider#onBindSlice"); ListBuilder builder = new ListBuilder(getContext(), mSliceUri, ListBuilder.INFINITY); builder.addRow(new RowBuilder(mDateUri).setTitle(mLastText)); addNextAlarm(builder); addZenMode(builder); addPrimaryAction(builder); - return builder.build(); + Slice slice = builder.build(); + Trace.endSection(); + return slice; } protected void addPrimaryAction(ListBuilder builder) { // Add simple action because API requires it; Keyguard handles presenting // its own slices so this action + icon are actually never used. - PendingIntent pi = PendingIntent.getActivity(getContext(), 0, new Intent(), 0); IconCompat icon = IconCompat.createWithResource(getContext(), R.drawable.ic_access_alarms_big); - SliceAction action = SliceAction.createDeeplink(pi, icon, + SliceAction action = SliceAction.createDeeplink(mPendingIntent, icon, ListBuilder.ICON_IMAGE, mLastText); - RowBuilder primaryActionRow = new RowBuilder(Uri.parse(KEYGUARD_ACTION_URI)) .setPrimaryAction(action); builder.addRow(primaryActionRow); @@ -154,7 +163,6 @@ public class KeyguardSliceProvider extends SliceProvider implements if (TextUtils.isEmpty(mNextAlarm)) { return; } - IconCompat alarmIcon = IconCompat.createWithResource(getContext(), R.drawable.ic_access_alarms_big); RowBuilder alarmRowBuilder = new RowBuilder(mAlarmUri) @@ -198,6 +206,8 @@ public class KeyguardSliceProvider extends SliceProvider implements mZenModeController = new ZenModeControllerImpl(getContext(), mHandler); mZenModeController.addCallback(this); mDatePattern = getContext().getString(R.string.system_ui_aod_date_pattern); + mPendingIntent = PendingIntent.getActivity(getContext(), 0, new Intent(), 0); + KeyguardSliceProvider.sInstance = this; registerClockUpdate(); updateClock(); return true; diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 4763fa9f426a..4977ff7d16b7 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -1655,7 +1655,6 @@ public class KeyguardViewMediator extends SystemUI { resetKeyguardDonePendingLocked(); } - mUpdateMonitor.clearFailedUnlockAttempts(); mUpdateMonitor.clearBiometricRecognized(); if (mGoingToSleep) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 0876a5d3f456..3fc258b1e8e9 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -285,9 +285,6 @@ public class QSPanel extends LinearLayout implements Tunable, Callback, Brightne updatePageIndicator(); - for (TileRecord r : mRecords) { - r.tile.clearState(); - } if (mListening) { refreshAllTiles(); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java index 78e9f36d69aa..10b92f78336f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java @@ -88,6 +88,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private Holder mCurrentDrag; private int mAccessibilityAction = ACTION_NONE; private int mAccessibilityFromIndex; + private CharSequence mAccessibilityFromLabel; private QSTileHost mHost; public TileAdapter(Context context) { @@ -241,7 +242,8 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta holder.mTileView.setVisibility(View.VISIBLE); holder.mTileView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); holder.mTileView.setContentDescription(mContext.getString( - R.string.accessibility_qs_edit_position_label, position + 1)); + R.string.accessibility_qs_edit_tile_add, mAccessibilityFromLabel, + position + 1)); holder.mTileView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { @@ -270,9 +272,12 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta if (position > mEditIndex) { info.state.contentDescription = mContext.getString( R.string.accessibility_qs_edit_add_tile_label, info.state.label); - } else if (mAccessibilityAction != ACTION_NONE) { + } else if (mAccessibilityAction == ACTION_ADD) { info.state.contentDescription = mContext.getString( - R.string.accessibility_qs_edit_position_label, position + 1); + R.string.accessibility_qs_edit_tile_add, mAccessibilityFromLabel, position + 1); + } else if (mAccessibilityAction == ACTION_MOVE) { + info.state.contentDescription = mContext.getString( + R.string.accessibility_qs_edit_tile_move, mAccessibilityFromLabel, position + 1); } else { info.state.contentDescription = mContext.getString( R.string.accessibility_qs_edit_tile_label, position + 1, info.state.label); @@ -351,6 +356,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private void startAccessibleAdd(int position) { mAccessibilityFromIndex = position; + mAccessibilityFromLabel = mTiles.get(position).state.label; mAccessibilityAction = ACTION_ADD; // Add placeholder for last slot. mTiles.add(mEditIndex++, null); @@ -360,6 +366,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta private void startAccessibleMove(int position) { mAccessibilityFromIndex = position; + mAccessibilityFromLabel = mTiles.get(position).state.label; mAccessibilityAction = ACTION_MOVE; notifyDataSetChanged(); } @@ -385,15 +392,11 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta strip(mTiles.get(to))); MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_QS_EDIT_ADD, to); - v.announceForAccessibility(mContext.getString(R.string.accessibility_qs_edit_tile_added, - fromLabel, (to + 1))); } else { MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_QS_EDIT_MOVE_SPEC, strip(mTiles.get(to))); MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_QS_EDIT_MOVE, to); - v.announceForAccessibility(mContext.getString(R.string.accessibility_qs_edit_tile_moved, - fromLabel, (to + 1))); } saveSpecs(mHost); return true; diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java index 53a576d3519d..591e9e015897 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java @@ -95,7 +95,6 @@ public class TileQueryHelper { continue; } tile.setListening(this, true); - tile.clearState(); tile.refreshState(); tile.setListening(this, false); tile.setTileSpec(spec); diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java index 6bc3bee636d0..b6a776fe77b4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java @@ -211,10 +211,6 @@ public abstract class QSTileImpl<TState extends State> implements QSTile { mHandler.obtainMessage(H.REFRESH_STATE, arg).sendToTarget(); } - public void clearState() { - mHandler.sendEmptyMessage(H.CLEAR_STATE); - } - public void userSwitch(int newUserId) { mHandler.obtainMessage(H.USER_SWITCH, newUserId, 0).sendToTarget(); } @@ -266,11 +262,6 @@ public abstract class QSTileImpl<TState extends State> implements QSTile { public abstract Intent getLongClickIntent(); - protected void handleClearState() { - mTmpState = newTileState(); - mState = newTileState(); - } - protected void handleRefreshState(Object arg) { handleUpdateState(mTmpState, arg); final boolean changed = mTmpState.copyTo(mState); @@ -409,11 +400,10 @@ public abstract class QSTileImpl<TState extends State> implements QSTile { private static final int TOGGLE_STATE_CHANGED = 8; private static final int SCAN_STATE_CHANGED = 9; private static final int DESTROY = 10; - private static final int CLEAR_STATE = 11; - private static final int REMOVE_CALLBACKS = 12; - private static final int REMOVE_CALLBACK = 13; - private static final int SET_LISTENING = 14; - private static final int STALE = 15; + private static final int REMOVE_CALLBACKS = 11; + private static final int REMOVE_CALLBACK = 12; + private static final int SET_LISTENING = 13; + private static final int STALE = 14; @VisibleForTesting protected H(Looper looper) { @@ -467,9 +457,6 @@ public abstract class QSTileImpl<TState extends State> implements QSTile { } else if (msg.what == DESTROY) { name = "handleDestroy"; handleDestroy(); - } else if (msg.what == CLEAR_STATE) { - name = "handleClearState"; - handleClearState(); } else if (msg.what == SET_LISTENING) { name = "handleSetListeningInternal"; handleSetListeningInternal(msg.obj, msg.arg1 != 0); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index b7c1b1088f5a..3837fbcd547b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -523,8 +523,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav final boolean quickStepEnabled = mOverviewProxyService.shouldShowSwipeUpUI(); KeyButtonDrawable drawable = quickStepEnabled ? getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_home_quick_step) - : getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_home, - false /* hasShadow */); + : getDrawable(lightContext, darkContext, R.drawable.ic_sysbar_home); orientHomeButton(drawable); return drawable; } diff --git a/packages/SystemUI/src/com/android/systemui/volume/SafetyWarningDialog.java b/packages/SystemUI/src/com/android/systemui/volume/SafetyWarningDialog.java index d7c4bbf3ea1d..c97095e1860b 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/SafetyWarningDialog.java +++ b/packages/SystemUI/src/com/android/systemui/volume/SafetyWarningDialog.java @@ -21,11 +21,13 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; +import android.content.res.Resources.NotFoundException; import android.media.AudioManager; import android.util.Log; import android.view.KeyEvent; import android.view.WindowManager; + import com.android.systemui.statusbar.phone.SystemUIDialog; abstract public class SafetyWarningDialog extends SystemUIDialog @@ -40,12 +42,18 @@ abstract public class SafetyWarningDialog extends SystemUIDialog private long mShowTime; private boolean mNewVolumeUp; + private boolean mDisableOnVolumeUp; public SafetyWarningDialog(Context context, AudioManager audioManager) { super(context); mContext = context; mAudioManager = audioManager; - + try { + mDisableOnVolumeUp = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_safe_media_disable_on_volume_up); + } catch (NotFoundException e) { + mDisableOnVolumeUp = true; + } getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR); setShowForAllUsers(true); setMessage(mContext.getString(com.android.internal.R.string.safe_media_volume_warning)); @@ -63,7 +71,8 @@ abstract public class SafetyWarningDialog extends SystemUIDialog @Override public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_VOLUME_UP && event.getRepeatCount() == 0) { + if (mDisableOnVolumeUp && keyCode == KeyEvent.KEYCODE_VOLUME_UP + && event.getRepeatCount() == 0) { mNewVolumeUp = true; } return super.onKeyDown(keyCode, event); diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index 02babacc3acd..13c43f7009a1 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -1195,7 +1195,7 @@ public class VolumeDialogImpl implements VolumeDialog { @Override public boolean onTouchEvent(MotionEvent event) { - if (isShowing()) { + if (mShowing) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { dismissH(Events.DISMISS_REASON_TOUCH_OUTSIDE); return true; diff --git a/packages/SystemUI/tests/Android.mk b/packages/SystemUI/tests/Android.mk index a4120c45a83a..9ee55324efa2 100644 --- a/packages/SystemUI/tests/Android.mk +++ b/packages/SystemUI/tests/Android.mk @@ -30,37 +30,17 @@ LOCAL_PRIVATE_PLATFORM_APIS := true LOCAL_COMPATIBILITY_SUITE := device-tests LOCAL_SRC_FILES := $(call all-java-files-under, src) \ - $(call all-Iaidl-files-under, src) \ - $(call all-java-files-under, ../src) + $(call all-Iaidl-files-under, src) -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \ - frameworks/base/packages/SystemUI/res \ - frameworks/base/packages/SystemUI/res-keyguard \ +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res LOCAL_STATIC_ANDROID_LIBRARIES := \ - SystemUIPluginLib \ - SystemUISharedLib \ - androidx.car_car \ - androidx.legacy_legacy-support-v4 \ - androidx.recyclerview_recyclerview \ - androidx.preference_preference \ - androidx.appcompat_appcompat \ - androidx.mediarouter_mediarouter \ - androidx.palette_palette \ - androidx.legacy_legacy-preference-v14 \ - androidx.leanback_leanback \ - androidx.slice_slice-core \ - androidx.slice_slice-view \ - androidx.slice_slice-builders \ - androidx.arch.core_core-runtime \ - androidx.lifecycle_lifecycle-extensions \ + SystemUI-core LOCAL_STATIC_JAVA_LIBRARIES := \ metrics-helper-lib \ android-support-test \ mockito-target-inline-minus-junit4 \ - SystemUI-proto \ - SystemUI-tags \ testables \ truth-prebuilt \ @@ -70,7 +50,6 @@ LOCAL_JNI_SHARED_LIBRARIES := \ libdexmakerjvmtiagent \ libmultiplejvmtiagentsinterferenceagent - LOCAL_JAVA_LIBRARIES := \ android.test.runner \ telephony-common \ @@ -112,8 +91,6 @@ jacoco_exclude := $(subst $(space),$(comma),$(patsubst %,%*,$(local_classes))) LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.systemui.* LOCAL_JACK_COVERAGE_EXCLUDE_FILTER := com.android.systemui.tests.*,$(jacoco_exclude) -include frameworks/base/packages/SettingsLib/common.mk - ifeq ($(EXCLUDE_SYSTEMUI_TESTS),) include $(BUILD_PACKAGE) endif diff --git a/packages/SystemUI/tests/AndroidManifest.xml b/packages/SystemUI/tests/AndroidManifest.xml index f95027bc849d..64f96da09b08 100644 --- a/packages/SystemUI/tests/AndroidManifest.xml +++ b/packages/SystemUI/tests/AndroidManifest.xml @@ -15,6 +15,7 @@ --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.android.systemui.tests"> @@ -72,6 +73,18 @@ android:authorities="${applicationId}.lifecycle-tests" android:exported="false" android:multiprocess="true" /> + <provider android:name="com.android.systemui.keyguard.KeyguardSliceProvider" + android:authorities="com.android.systemui.test.keyguard.disabled" + android:enabled="false" + tools:replace="android:authorities" + tools:node="remove" /> + + <provider + android:name="androidx.core.content.FileProvider" + android:authorities="com.android.systemui.test.fileprovider" + android:exported="false" + tools:replace="android:authorities" + android:grantUriPermissions="true" /> </application> <instrumentation android:name="android.testing.TestableInstrumentation" diff --git a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java index f1bf31d7a58a..644c0b347bde 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java @@ -34,8 +34,10 @@ import static org.mockito.Mockito.when; import android.app.Fragment; import android.content.res.Configuration; +import android.os.Handler; import android.support.test.filters.SmallTest; import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; import android.testing.TestableLooper.RunWithLooper; import android.view.Display; import android.view.View; @@ -60,6 +62,7 @@ import org.junit.runner.RunWith; @SmallTest public class ScreenDecorationsTest extends SysuiTestCase { + private TestableLooper mTestableLooper; private ScreenDecorations mScreenDecorations; private StatusBar mStatusBar; private WindowManager mWindowManager; @@ -71,6 +74,10 @@ public class ScreenDecorationsTest extends SysuiTestCase { @Before public void setup() { + mTestableLooper = TestableLooper.get(this); + mDependency.injectTestDependency(Dependency.MAIN_HANDLER, + new Handler(mTestableLooper.getLooper())); + mStatusBar = mock(StatusBar.class); mWindowManager = mock(WindowManager.class); mView = spy(new StatusBarWindowView(mContext, null)); @@ -88,7 +95,31 @@ public class ScreenDecorationsTest extends SysuiTestCase { mTunerService = mDependency.injectMockDependency(TunerService.class); - mScreenDecorations = new ScreenDecorations(); + + mScreenDecorations = new ScreenDecorations() { + @Override + public void start() { + super.start(); + mTestableLooper.processAllMessages(); + } + + @Override + Handler startHandlerThread() { + return new Handler(mTestableLooper.getLooper()); + } + + @Override + protected void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + mTestableLooper.processAllMessages(); + } + + @Override + public void onTuningChanged(String key, String newValue) { + super.onTuningChanged(key, newValue); + mTestableLooper.processAllMessages(); + } + }; mScreenDecorations.mContext = mContext; mScreenDecorations.mComponents = mContext.getComponents(); diff --git a/proto/src/gnss.proto b/proto/src/gnss.proto index 016839232255..1509fc00fb1d 100644 --- a/proto/src/gnss.proto +++ b/proto/src/gnss.proto @@ -45,6 +45,9 @@ message GnssLog { // Power metrics optional PowerMetrics power_metrics = 12; + + // Hardware revision (EVT, DVT, PVT etc.) + optional string hardware_revision = 13; } // Power metrics diff --git a/proto/src/metrics_constants.proto b/proto/src/metrics_constants.proto index ec65f1b2728d..a20eece5a668 100644 --- a/proto/src/metrics_constants.proto +++ b/proto/src/metrics_constants.proto @@ -2219,6 +2219,7 @@ message MetricsEvent { // 1: Gesture performed is Nudge // 2: Gesture performed is Pickup // 4: Gesture performed is Double Tap + // 6: Gesture performed is Reach ACTION_AMBIENT_GESTURE = 411; // ---- End N Constants, all N constants go above this line ---- @@ -6435,6 +6436,15 @@ message MetricsEvent { // Field used to indicate whether a save request was used to update existing user data. FIELD_AUTOFILL_UPDATE = 1555; + // OPEN: Settings > Network & Internet > Wi-Fi > Add network + // CATEGORY: SETTINGS + // OS: Q + SETTINGS_WIFI_ADD_NETWORK = 1556; + + // OPEN: Settings > System > Input & Gesture > Reach up gesture + // OS: Q + SETTINGS_GESTURE_REACH = 1557; + // ---- End Q Constants, all Q constants go above this line ---- // Add new aosp constants above this line. diff --git a/proto/src/wifi.proto b/proto/src/wifi.proto index 45d8a5561677..7f8989d8548e 100644 --- a/proto/src/wifi.proto +++ b/proto/src/wifi.proto @@ -476,6 +476,9 @@ message WifiLog { // 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; } // Information that gets logged for every WiFi connection. diff --git a/services/art-profile b/services/art-profile index cbc00ea53427..3c60eee4a2a9 100644 --- a/services/art-profile +++ b/services/art-profile @@ -13303,7 +13303,7 @@ PLcom/android/server/notification/NotificationManagerService$10;->createNotifica PLcom/android/server/notification/NotificationManagerService$10;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V PLcom/android/server/notification/NotificationManagerService$10;->enforcePolicyAccess(ILjava/lang/String;)V PLcom/android/server/notification/NotificationManagerService$10;->enforceSystemOrSystemUI(Ljava/lang/String;)V -PLcom/android/server/notification/NotificationManagerService$10;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;I)V +PLcom/android/server/notification/NotificationManagerService$10;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;II)V PLcom/android/server/notification/NotificationManagerService$10;->finishToken(Ljava/lang/String;Landroid/app/ITransientNotification;)V PLcom/android/server/notification/NotificationManagerService$10;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; PLcom/android/server/notification/NotificationManagerService$10;->getBackupPayload(I)[B diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 30a8557f6971..306cd832e8ef 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -3830,7 +3830,7 @@ class StorageManagerService extends IStorageManager.Stub @Override public void onExternalStoragePolicyChanged(int uid, String packageName) { // No runtime storage permissions in isolated storage world, so nothing to do here. - if (!ENABLE_ISOLATED_STORAGE) return; + if (ENABLE_ISOLATED_STORAGE) return; final int mountMode = getExternalStorageMountMode(uid, packageName); remountUidExternalStorage(uid, mountMode); } diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 67abedc96eed..628207cdbd53 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -705,9 +705,13 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo final boolean inPictureInPictureMode = inPinnedWindowingMode() && targetStackBounds != null; if (inPictureInPictureMode != mLastReportedPictureInPictureMode || forceUpdate) { // Picture-in-picture mode changes also trigger a multi-window mode change as well, so - // update that here in order + // update that here in order. Set the last reported MW state to the same as the PiP + // state since we haven't yet actually resized the task (these callbacks need to + // preceed the configuration change from the resiez. + // TODO(110009072): Once we move these callbacks to the client, remove all logic related + // to forcing the update of the picture-in-picture mode as a part of the PiP animation. mLastReportedPictureInPictureMode = inPictureInPictureMode; - mLastReportedMultiWindowMode = inMultiWindowMode(); + mLastReportedMultiWindowMode = inPictureInPictureMode; final Configuration newConfig = task.computeNewOverrideConfigurationForBounds( targetStackBounds, null); schedulePictureInPictureModeChanged(newConfig); diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index b1b4c4fc9d3f..f0743192d65e 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -628,15 +628,17 @@ public class NotificationManagerService extends SystemService { final String pkg; final ITransientNotification callback; int duration; + int displayId; Binder token; ToastRecord(int pid, String pkg, ITransientNotification callback, int duration, - Binder token) { + Binder token, int displayId) { this.pid = pid; this.pkg = pkg; this.callback = callback; this.duration = duration; this.token = token; + this.displayId = displayId; } void update(int duration) { @@ -1986,11 +1988,12 @@ public class NotificationManagerService extends SystemService { // ============================================================================ @Override - public void enqueueToast(String pkg, ITransientNotification callback, int duration) + public void enqueueToast(String pkg, ITransientNotification callback, int duration, + int displayId) { if (DBG) { Slog.i(TAG, "enqueueToast pkg=" + pkg + " callback=" + callback - + " duration=" + duration); + + " duration=" + duration + " displayId=" + displayId); } if (pkg == null || callback == null) { @@ -2042,8 +2045,9 @@ public class NotificationManagerService extends SystemService { } Binder token = new Binder(); - mWindowManagerInternal.addWindowToken(token, TYPE_TOAST, DEFAULT_DISPLAY); - record = new ToastRecord(callingPid, pkg, callback, duration, token); + mWindowManagerInternal.addWindowToken(token, TYPE_TOAST, displayId); + record = new ToastRecord(callingPid, pkg, callback, duration, token, + displayId); mToastQueue.add(record); index = mToastQueue.size() - 1; keepProcessAliveIfNeededLocked(callingPid); @@ -2094,7 +2098,7 @@ public class NotificationManagerService extends SystemService { int index = indexOfToastLocked(pkg, callback); if (index >= 0) { ToastRecord record = mToastQueue.get(index); - finishTokenLocked(record.token); + finishTokenLocked(record.token, record.displayId); } else { Slog.w(TAG, "Toast already killed. pkg=" + pkg + " callback=" + callback); @@ -5231,13 +5235,13 @@ public class NotificationManagerService extends SystemService { ToastRecord lastToast = mToastQueue.remove(index); mWindowManagerInternal.removeWindowToken(lastToast.token, false /* removeWindows */, - DEFAULT_DISPLAY); + lastToast.displayId); // We passed 'false' for 'removeWindows' so that the client has time to stop // rendering (as hide above is a one-way message), otherwise we could crash // a client which was actively using a surface made from the token. However // we need to schedule a timeout to make sure the token is eventually killed // one way or another. - scheduleKillTokenTimeout(lastToast.token); + scheduleKillTokenTimeout(lastToast); keepProcessAliveIfNeededLocked(record.pid); if (mToastQueue.size() > 0) { @@ -5248,14 +5252,13 @@ public class NotificationManagerService extends SystemService { } } - void finishTokenLocked(IBinder t) { + void finishTokenLocked(IBinder t, int displayId) { mHandler.removeCallbacksAndMessages(t); // We pass 'true' for 'removeWindows' to let the WindowManager destroy any // remaining surfaces as either the client has called finishToken indicating // it has successfully removed the views, or the client has timed out // at which point anything goes. - mWindowManagerInternal.removeWindowToken(t, true /* removeWindows */, - DEFAULT_DISPLAY); + mWindowManagerInternal.removeWindowToken(t, true /* removeWindows */, displayId); } @GuardedBy("mToastQueue") @@ -5279,18 +5282,18 @@ public class NotificationManagerService extends SystemService { } @GuardedBy("mToastQueue") - private void scheduleKillTokenTimeout(IBinder token) + private void scheduleKillTokenTimeout(ToastRecord r) { - mHandler.removeCallbacksAndMessages(token); - Message m = Message.obtain(mHandler, MESSAGE_FINISH_TOKEN_TIMEOUT, token); + mHandler.removeCallbacksAndMessages(r); + Message m = Message.obtain(mHandler, MESSAGE_FINISH_TOKEN_TIMEOUT, r); mHandler.sendMessageDelayed(m, FINISH_TOKEN_TIMEOUT); } - private void handleKillTokenTimeout(IBinder token) + private void handleKillTokenTimeout(ToastRecord record) { - if (DBG) Slog.d(TAG, "Kill Token Timeout token=" + token); + if (DBG) Slog.d(TAG, "Kill Token Timeout token=" + record.token); synchronized (mToastQueue) { - finishTokenLocked(token); + finishTokenLocked(record.token, record.displayId); } } @@ -5484,7 +5487,7 @@ public class NotificationManagerService extends SystemService { handleDurationReached((ToastRecord)msg.obj); break; case MESSAGE_FINISH_TOKEN_TIMEOUT: - handleKillTokenTimeout((IBinder)msg.obj); + handleKillTokenTimeout((ToastRecord)msg.obj); break; case MESSAGE_SAVE_POLICY_FILE: handleSavePolicyFile(); diff --git a/services/core/java/com/android/server/notification/ZenModeConditions.java b/services/core/java/com/android/server/notification/ZenModeConditions.java index 8013f7a099b6..b080a73c1e42 100644 --- a/services/core/java/com/android/server/notification/ZenModeConditions.java +++ b/services/core/java/com/android/server/notification/ZenModeConditions.java @@ -19,7 +19,6 @@ package com.android.server.notification; import android.content.ComponentName; import android.net.Uri; import android.service.notification.Condition; -import android.service.notification.IConditionListener; import android.service.notification.IConditionProvider; import android.service.notification.ZenModeConfig; import android.service.notification.ZenModeConfig.ZenRule; @@ -27,6 +26,8 @@ import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; +import com.android.internal.annotations.VisibleForTesting; + import java.io.PrintWriter; import java.util.Objects; @@ -36,7 +37,9 @@ public class ZenModeConditions implements ConditionProviders.Callback { private final ZenModeHelper mHelper; private final ConditionProviders mConditionProviders; - private final ArrayMap<Uri, ComponentName> mSubscriptions = new ArrayMap<>(); + + @VisibleForTesting + protected final ArrayMap<Uri, ComponentName> mSubscriptions = new ArrayMap<>(); private boolean mFirstEvaluation = true; @@ -152,7 +155,8 @@ public class ZenModeConditions implements ConditionProviders.Callback { if (current != null) { current.add(id); } - if (processSubscriptions && trigger != null && trigger.equals(rule.component)) { + if (processSubscriptions && ((trigger != null && trigger.equals(rule.component)) + || isSystemCondition)) { if (DEBUG) Log.d(TAG, "Subscribing to " + rule.component); if (mConditionProviders.subscribeIfNecessary(rule.component, rule.conditionId)) { synchronized (mSubscriptions) { diff --git a/services/core/java/com/android/server/notification/ZenModeFiltering.java b/services/core/java/com/android/server/notification/ZenModeFiltering.java index 71cee052d9a1..28cee7ac4dda 100644 --- a/services/core/java/com/android/server/notification/ZenModeFiltering.java +++ b/services/core/java/com/android/server/notification/ZenModeFiltering.java @@ -117,7 +117,8 @@ public class ZenModeFiltering { } public boolean shouldIntercept(int zen, ZenModeConfig config, NotificationRecord record) { - if (zen == ZEN_MODE_OFF) { + // Zen mode is ignored for critical notifications. + if (zen == ZEN_MODE_OFF || isCritical(record)) { return false; } // Make an exception to policy for the notification saying that policy has changed @@ -207,6 +208,19 @@ public class ZenModeFiltering { } } + /** + * Check if the notification is too critical to be suppressed. + * + * @param record the record to test for criticality + * @return {@code true} if notification is considered critical + * + * @see CriticalNotificationExtractor for criteria + */ + private boolean isCritical(NotificationRecord record) { + // 0 is the most critical + return record.getCriticality() < CriticalNotificationExtractor.NORMAL; + } + private static boolean shouldInterceptAudience(int source, NotificationRecord record) { if (!audienceMatches(source, record.getContactAffinity())) { ZenLog.traceIntercepted(record, "!audienceMatches"); diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 7149720f6353..6e5c5bf2767b 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -102,7 +102,7 @@ public class ZenModeHelper { private final ZenModeFiltering mFiltering; protected final RingerModeDelegate mRingerModeDelegate = new RingerModeDelegate(); - private final ZenModeConditions mConditions; + @VisibleForTesting protected final ZenModeConditions mConditions; private final SparseArray<ZenModeConfig> mConfigs = new SparseArray<>(); private final Metrics mMetrics = new Metrics(); private final ConditionProviders.Config mServiceConfig; diff --git a/services/core/java/com/android/server/wm/ForcedSeamlessRotator.java b/services/core/java/com/android/server/wm/ForcedSeamlessRotator.java index f2cbc86eb9d0..f5e6e7210356 100644 --- a/services/core/java/com/android/server/wm/ForcedSeamlessRotator.java +++ b/services/core/java/com/android/server/wm/ForcedSeamlessRotator.java @@ -21,6 +21,7 @@ import static android.view.Surface.ROTATION_90; import android.graphics.Matrix; import android.view.DisplayInfo; +import android.view.Surface.Rotation; import com.android.server.wm.utils.CoordinateTransforms; @@ -66,6 +67,16 @@ public class ForcedSeamlessRotator { } /** + * Returns the rotation of the display before it started rotating. + * + * @return the old rotation of the display + */ + @Rotation + public int getOldRotation() { + return mOldRotation; + } + + /** * Removes the transform to the window token's surface that undoes the effect of the global * display rotation. * diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 42d6c8e4cbe7..e18d56485d47 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1365,7 +1365,7 @@ public class WindowManagerService extends IWindowManager.Stub // UID, otherwise we allow unlimited duration. When a UID looses focus we // schedule hiding all of its toast windows. if (type == TYPE_TOAST) { - if (!getDefaultDisplayContentLocked().canAddToastWindowForUid(callingUid)) { + if (!displayContent.canAddToastWindowForUid(callingUid)) { Slog.w(TAG_WM, "Adding more than one toast window for UID at a time."); return WindowManagerGlobal.ADD_DUPLICATE_ADD; } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 0d093d1e3e35..58fb7a0f0a5e 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -634,6 +634,10 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP void forceSeamlesslyRotateIfAllowed(int oldRotation, int rotation) { if (mForceSeamlesslyRotate) { + if (mPendingForcedSeamlessRotate != null) { + oldRotation = mPendingForcedSeamlessRotate.getOldRotation(); + } + mPendingForcedSeamlessRotate = new ForcedSeamlessRotator( oldRotation, rotation, getDisplayInfo()); mPendingForcedSeamlessRotate.unrotate(this.mToken); diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 81ac6a40e88a..664a83750aa7 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -4579,10 +4579,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { enforceFullCrossUsersPermission(userHandle); synchronized (getLockObject()) { if (!isCallerWithSystemUid()) { - // This API can only be called by an active device admin, - // so try to retrieve it to check that the caller is one. - getActiveAdminForCallerLocked( - null, DeviceAdminInfo.USES_POLICY_WATCH_LOGIN, parent); + // This API can be called by an active device admin or by keyguard code. + if (mContext.checkCallingPermission(permission.ACCESS_KEYGUARD_SECURE_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + getActiveAdminForCallerLocked( + null, DeviceAdminInfo.USES_POLICY_WATCH_LOGIN, parent); + } } DevicePolicyData policy = getUserDataUnchecked(getCredentialOwner(userHandle, parent)); diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml index 16cc8fd18bfd..348e2015c7c0 100644 --- a/services/tests/servicestests/AndroidManifest.xml +++ b/services/tests/servicestests/AndroidManifest.xml @@ -65,6 +65,7 @@ <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/> <uses-permission android:name="android.permission.SUSPEND_APPS"/> <uses-permission android:name="android.permission.CONTROL_KEYGUARD"/> + <uses-permission android:name="android.permission.MANAGE_BIND_INSTANT_SERVICE"/> <!-- Uses API introduced in O (26) --> <uses-sdk android:minSdkVersion="1" diff --git a/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java index 5c449b3b2843..7a96f4cf1bc8 100644 --- a/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java @@ -47,6 +47,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.PackageManagerInternal; import android.content.pm.ResolveInfo; import android.content.pm.Signature; import android.content.pm.UserInfo; @@ -111,6 +112,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { @Mock private IAccountManagerResponse mMockAccountManagerResponse; @Mock private IBinder mMockBinder; @Mock private INotificationManager mMockNotificationManager; + @Mock private PackageManagerInternal mMockPackageManagerInternal; @Captor private ArgumentCaptor<Intent> mIntentCaptor; @Captor private ArgumentCaptor<Bundle> mBundleCaptor; @@ -155,6 +157,9 @@ public class AccountManagerServiceTest extends AndroidTestCase { when(mMockContext.getSystemService(Context.DEVICE_POLICY_SERVICE)).thenReturn( mMockDevicePolicyManager); when(mMockAccountManagerResponse.asBinder()).thenReturn(mMockBinder); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(true); + LocalServices.addService(PackageManagerInternal.class, mMockPackageManagerInternal); Context realTestContext = getContext(); MyMockContext mockContext = new MyMockContext(realTestContext, mMockContext); @@ -174,6 +179,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { cdl.countDown(); }); cdl.await(1, TimeUnit.SECONDS); + LocalServices.removeServiceForTest(PackageManagerInternal.class); super.tearDown(); } @@ -607,6 +613,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { any(Intent.class), anyInt(), anyInt())).thenReturn(resolveInfo); when(mMockPackageManager.checkSignatures( anyInt(), anyInt())).thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -623,7 +631,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { waitForLatch(latch); verify(mMockAccountManagerResponse, never()).onResult(any(Bundle.class)); verify(mMockAccountManagerResponse).onError( - eq(AccountManager.ERROR_CODE_REMOTE_EXCEPTION), anyString()); + eq(AccountManager.ERROR_CODE_INVALID_RESPONSE), anyString()); } @SmallTest @@ -789,6 +797,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { any(Intent.class), anyInt(), anyInt())).thenReturn(resolveInfo); when(mMockPackageManager.checkSignatures( anyInt(), anyInt())).thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -805,7 +815,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { waitForLatch(latch); verify(mMockAccountManagerResponse, never()).onResult(any(Bundle.class)); verify(mMockAccountManagerResponse).onError( - eq(AccountManager.ERROR_CODE_REMOTE_EXCEPTION), anyString()); + eq(AccountManager.ERROR_CODE_INVALID_RESPONSE), anyString()); } @SmallTest @@ -1089,6 +1099,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { any(Intent.class), anyInt(), anyInt())).thenReturn(resolveInfo); when(mMockPackageManager.checkSignatures( anyInt(), anyInt())).thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -1103,7 +1115,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { waitForLatch(latch); verify(mMockAccountManagerResponse, never()).onResult(any(Bundle.class)); verify(mMockAccountManagerResponse).onError( - eq(AccountManager.ERROR_CODE_REMOTE_EXCEPTION), anyString()); + eq(AccountManager.ERROR_CODE_INVALID_RESPONSE), anyString()); } @SmallTest @@ -1349,6 +1361,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { unlockSystemUser(); when(mMockPackageManager.checkSignatures(anyInt(), anyInt())) .thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); try { mAms.removeAccountAsUser( mMockAccountManagerResponse, // response @@ -1685,6 +1699,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { any(Intent.class), anyInt(), anyInt())).thenReturn(resolveInfo); when(mMockPackageManager.checkSignatures( anyInt(), anyInt())).thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -1698,7 +1714,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { waitForLatch(latch); verify(mMockAccountManagerResponse, never()).onResult(any(Bundle.class)); verify(mMockAccountManagerResponse).onError( - eq(AccountManager.ERROR_CODE_REMOTE_EXCEPTION), anyString()); + eq(AccountManager.ERROR_CODE_INVALID_RESPONSE), anyString()); } @SmallTest @@ -1956,6 +1972,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { any(Intent.class), anyInt(), anyInt())).thenReturn(resolveInfo); when(mMockPackageManager.checkSignatures( anyInt(), anyInt())).thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -1971,7 +1989,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { waitForLatch(latch); verify(mMockAccountManagerResponse, never()).onResult(any(Bundle.class)); verify(mMockAccountManagerResponse).onError( - eq(AccountManager.ERROR_CODE_REMOTE_EXCEPTION), anyString()); + eq(AccountManager.ERROR_CODE_INVALID_RESPONSE), anyString()); } @SmallTest @@ -2094,6 +2112,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { any(Intent.class), anyInt(), anyInt())).thenReturn(resolveInfo); when(mMockPackageManager.checkSignatures( anyInt(), anyInt())).thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -2107,7 +2127,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { verify(mMockAccountManagerResponse, never()).onResult(any(Bundle.class)); verify(mMockAccountManagerResponse).onError( - eq(AccountManager.ERROR_CODE_REMOTE_EXCEPTION), anyString()); + eq(AccountManager.ERROR_CODE_INVALID_RESPONSE), anyString()); } @SmallTest @@ -2227,6 +2247,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { any(Intent.class), anyInt(), anyInt())).thenReturn(resolveInfo); when(mMockPackageManager.checkSignatures( anyInt(), anyInt())).thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -2242,7 +2264,7 @@ public class AccountManagerServiceTest extends AndroidTestCase { verify(mMockAccountManagerResponse, never()).onResult(any(Bundle.class)); verify(mMockAccountManagerResponse).onError( - eq(AccountManager.ERROR_CODE_REMOTE_EXCEPTION), anyString()); + eq(AccountManager.ERROR_CODE_INVALID_RESPONSE), anyString()); } @SmallTest @@ -2329,6 +2351,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { unlockSystemUser(); when(mMockPackageManager.checkSignatures(anyInt(), anyInt())) .thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); try { mAms.editProperties( mMockAccountManagerResponse, // response @@ -2618,6 +2642,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { PackageManager.PERMISSION_DENIED); when(mMockPackageManager.checkSignatures(anyInt(), anyInt())) .thenReturn(PackageManager.SIGNATURE_NO_MATCH); + when(mMockPackageManagerInternal.hasSignatureCapability(anyInt(), anyInt(), anyInt())) + .thenReturn(false); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); diff --git a/services/tests/servicestests/src/com/android/server/accounts/AccountsDbTest.java b/services/tests/servicestests/src/com/android/server/accounts/AccountsDbTest.java index fa7501dc8ac6..72c22fd2b135 100644 --- a/services/tests/servicestests/src/com/android/server/accounts/AccountsDbTest.java +++ b/services/tests/servicestests/src/com/android/server/accounts/AccountsDbTest.java @@ -25,6 +25,7 @@ import static org.junit.Assert.assertTrue; import android.accounts.Account; import android.content.Context; import android.database.Cursor; +import android.os.Build; import android.test.suitebuilder.annotation.SmallTest; import android.util.Pair; @@ -86,6 +87,12 @@ public class AccountsDbTest { @Test public void testCeNotAvailableInitially() { + // If the CE database is not attached to the DE database then any calls that modify the CE + // database will result in a Log.wtf call that will crash this process on eng builds. To + // allow the test to run through to completion skip this test on eng builds. + if (Build.IS_ENG) { + return; + } Account account = new Account("name", "example.com"); long id = mAccountsDb.insertCeAccount(account, ""); assertEquals("Insert into CE should fail until CE database is attached", -1, id); diff --git a/services/tests/servicestests/src/com/android/server/am/TaskStackChangedListenerTest.java b/services/tests/servicestests/src/com/android/server/am/TaskStackChangedListenerTest.java index b431af1f75c3..3f7c7148381e 100644 --- a/services/tests/servicestests/src/com/android/server/am/TaskStackChangedListenerTest.java +++ b/services/tests/servicestests/src/com/android/server/am/TaskStackChangedListenerTest.java @@ -143,10 +143,10 @@ public class TaskStackChangedListenerTest { assertEquals(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT, params[1]); } - @Test /** * Tests for onTaskCreated, onTaskMovedToFront, onTaskRemoved and onTaskRemovalStarted. */ + @Test public void testTaskChangeCallBacks() throws Exception { final Object[] params = new Object[2]; final CountDownLatch taskCreatedLaunchLatch = new CountDownLatch(1); @@ -218,16 +218,17 @@ public class TaskStackChangedListenerTest { /** * Starts the provided activity and returns the started instance. */ - private Activity startTestActivity(Class<?> activityClass) { + private TestActivity startTestActivity(Class<?> activityClass) throws InterruptedException { final Context context = InstrumentationRegistry.getContext(); final ActivityMonitor monitor = new ActivityMonitor(activityClass.getName(), null, false); InstrumentationRegistry.getInstrumentation().addMonitor(monitor); context.startActivity(new Intent(context, activityClass)); - final Activity activity = monitor.waitForActivityWithTimeout(1000); + final TestActivity activity = (TestActivity)monitor.waitForActivityWithTimeout(1000); if (activity == null) { throw new RuntimeException("Timed out waiting for Activity"); } + activity.waitForResumeStateChange(true); return activity; } @@ -245,7 +246,43 @@ public class TaskStackChangedListenerTest { }catch (InterruptedException e) {} } - public static class ActivityA extends Activity { + public static class TestActivity extends Activity { + boolean mIsResumed = false; + + @Override + protected void onPostResume() { + super.onPostResume(); + synchronized (this) { + mIsResumed = true; + notifyAll(); + } + } + + @Override + protected void onPause() { + super.onPause(); + synchronized (this) { + mIsResumed = false; + notifyAll(); + } + } + + /** + * If isResumed is {@code true}, sleep the thread until the activity is resumed. + * if {@code false}, sleep the thread until the activity is paused. + */ + public void waitForResumeStateChange(boolean isResumed) throws InterruptedException { + synchronized (this) { + if (mIsResumed == isResumed) { + return; + } + wait(5000); + } + assertTrue("The activity resume state change timed out", mIsResumed == isResumed); + } + } + + public static class ActivityA extends TestActivity { private boolean mActivityBLaunched = false; @@ -261,7 +298,7 @@ public class TaskStackChangedListenerTest { } } - public static class ActivityB extends Activity { + public static class ActivityB extends TestActivity { @Override protected void onPostResume() { @@ -274,7 +311,7 @@ public class TaskStackChangedListenerTest { } } - public static class ActivityRequestedOrientationChange extends Activity { + public static class ActivityRequestedOrientationChange extends TestActivity { @Override protected void onPostResume() { super.onPostResume(); @@ -283,7 +320,7 @@ public class TaskStackChangedListenerTest { } } - public static class ActivityTaskDescriptionChange extends Activity { + public static class ActivityTaskDescriptionChange extends TestActivity { @Override protected void onPostResume() { super.onPostResume(); @@ -292,7 +329,7 @@ public class TaskStackChangedListenerTest { } } - public static class ActivityTaskChangeCallbacks extends Activity { + public static class ActivityTaskChangeCallbacks extends TestActivity { boolean onDetachedFromWindowCalled = false; CountDownLatch onDetachedFromWindowCountDownLatch; diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java index 14695c526bff..9d617a96e60f 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java @@ -22,7 +22,9 @@ import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.os.Looper; import android.os.test.TestLooper; -import android.support.test.filters.SmallTest; + +import androidx.test.filters.SmallTest; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/services/tests/servicestests/src/com/android/server/locksettings/MockWeaverService.java b/services/tests/servicestests/src/com/android/server/locksettings/MockWeaverService.java index 34831cd53dbe..7fb127831090 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/MockWeaverService.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/MockWeaverService.java @@ -15,7 +15,7 @@ import android.util.Log; import java.util.ArrayList; import java.util.Arrays; -public class MockWeaverService implements IWeaver { +public class MockWeaverService extends IWeaver.Stub { private static final int MAX_SLOTS = 8; private static final int KEY_LENGTH = 256 / 8; @@ -55,54 +55,4 @@ public class MockWeaverService implements IWeaver { cb.onValues(WeaverStatus.FAILED, response); } } - - @Override - public IHwBinder asBinder() { - throw new UnsupportedOperationException(); - } - - @Override - public ArrayList<String> interfaceChain() throws RemoteException { - throw new UnsupportedOperationException(); - } - - @Override - public String interfaceDescriptor() throws RemoteException { - throw new UnsupportedOperationException(); - } - - @Override - public void setHALInstrumentation() throws RemoteException { - throw new UnsupportedOperationException(); - } - - @Override - public boolean linkToDeath(DeathRecipient recipient, long cookie) throws RemoteException { - throw new UnsupportedOperationException(); - } - - @Override - public void ping() throws RemoteException { - throw new UnsupportedOperationException(); - } - - @Override - public DebugInfo getDebugInfo() throws RemoteException { - throw new UnsupportedOperationException(); - } - - @Override - public void notifySyspropsChanged() throws RemoteException { - throw new UnsupportedOperationException(); - } - - @Override - public boolean unlinkToDeath(DeathRecipient recipient) throws RemoteException { - throw new UnsupportedOperationException(); - } - - @Override - public ArrayList<byte[]> getHashChain() throws RemoteException { - throw new UnsupportedOperationException(); - } } diff --git a/services/tests/servicestests/src/com/android/server/wm/AppWindowTokenAnimationTests.java b/services/tests/servicestests/src/com/android/server/wm/AppWindowTokenAnimationTests.java index c3907ff8ddb4..e3ab5cf4fc52 100644 --- a/services/tests/servicestests/src/com/android/server/wm/AppWindowTokenAnimationTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/AppWindowTokenAnimationTests.java @@ -26,8 +26,9 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; -import android.support.test.filters.SmallTest; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import android.view.SurfaceControl; import com.android.server.wm.WindowTestUtils.TestAppWindowToken; diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeFilteringTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeFilteringTest.java index c0bd7ccf6bf4..d3354502f40b 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeFilteringTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeFilteringTest.java @@ -171,4 +171,17 @@ public class ZenModeFilteringTest extends UiServiceTestCase { assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_OFF, config, r)); } + + @Test + public void testSuppressAnything_bypass_ZenModeOn() { + NotificationRecord r = getNotificationRecord(); + r.setCriticality(CriticalNotificationExtractor.CRITICAL); + when(r.sbn.getPackageName()).thenReturn("bananas"); + ZenModeConfig config = mock(ZenModeConfig.class); + + assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_NO_INTERRUPTIONS, config, r)); + + r.setCriticality(CriticalNotificationExtractor.CRITICAL_LOW); + assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_NO_INTERRUPTIONS, config, r)); + } } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java index 8cff6f945075..a032f702df3b 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java @@ -38,6 +38,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.NotificationManager; import android.content.ComponentName; @@ -49,8 +50,10 @@ import android.media.AudioManager; import android.media.AudioManagerInternal; import android.media.VolumePolicy; import android.media.AudioSystem; +import android.net.Uri; import android.provider.Settings; import android.provider.Settings.Global; +import android.service.notification.Condition; import android.service.notification.ZenModeConfig; import android.service.notification.ZenModeConfig.ScheduleInfo; import android.test.suitebuilder.annotation.SmallTest; @@ -61,6 +64,7 @@ import android.util.Xml; import com.android.internal.R; import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; +import com.android.server.notification.ManagedServices.UserProfiles; import com.android.internal.util.FastXmlSerializer; import com.android.server.UiServiceTestCase; @@ -82,7 +86,7 @@ import java.io.ByteArrayOutputStream; @TestableLooper.RunWithLooper public class ZenModeHelperTest extends UiServiceTestCase { - @Mock ConditionProviders mConditionProviders; + ConditionProviders mConditionProviders; @Mock NotificationManager mNotificationManager; @Mock private Resources mResources; private TestableLooper mTestableLooper; @@ -102,6 +106,9 @@ public class ZenModeHelperTest extends UiServiceTestCase { when(mResources.getString(R.string.zen_mode_default_events_name)).thenReturn("events"); when(mContext.getSystemService(NotificationManager.class)).thenReturn(mNotificationManager); + mConditionProviders = new ConditionProviders(mContext, new UserProfiles(), + AppGlobals.getPackageManager()); + mConditionProviders.addSystemProvider(new CountdownConditionProvider()); mZenModeHelperSpy = spy(new ZenModeHelper(mContext, mTestableLooper.getLooper(), mConditionProviders)); } @@ -887,7 +894,6 @@ public class ZenModeHelperTest extends UiServiceTestCase { setupZenConfigMaintained(); } - @Test public void testReadXmlDefaultRulesExist() throws Exception { setupZenConfig(); @@ -943,6 +949,30 @@ public class ZenModeHelperTest extends UiServiceTestCase { setupZenConfigMaintained(); } + @Test + public void testCountdownConditionSubscription() throws Exception { + ZenModeConfig config = new ZenModeConfig(); + mZenModeHelperSpy.mConfig = config; + mZenModeHelperSpy.mConditions.evaluateConfig(mZenModeHelperSpy.mConfig, null, true); + assertEquals(0, mZenModeHelperSpy.mConditions.mSubscriptions.size()); + + mZenModeHelperSpy.mConfig.manualRule = new ZenModeConfig.ZenRule(); + Uri conditionId = ZenModeConfig.toCountdownConditionId(9000000, false); + mZenModeHelperSpy.mConfig.manualRule.conditionId = conditionId; + mZenModeHelperSpy.mConfig.manualRule.component = new ComponentName("android", + CountdownConditionProvider.class.getName()); + mZenModeHelperSpy.mConfig.manualRule.condition = new Condition(conditionId, "", "", "", 0, + Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW); + mZenModeHelperSpy.mConfig.manualRule.enabled = true; + ZenModeConfig originalConfig = mZenModeHelperSpy.mConfig.copy(); + + mZenModeHelperSpy.mConditions.evaluateConfig(mZenModeHelperSpy.mConfig, null, true); + + assertEquals(true, ZenModeConfig.isValidCountdownConditionId(conditionId)); + assertEquals(originalConfig, mZenModeHelperSpy.mConfig); + assertEquals(1, mZenModeHelperSpy.mConditions.mSubscriptions.size()); + } + private void setupZenConfig() { mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS; mZenModeHelperSpy.mConfig.allowAlarms = false; diff --git a/test-base/Android.bp b/test-base/Android.bp index d25b47727c0b..0b8a02a815d9 100644 --- a/test-base/Android.bp +++ b/test-base/Android.bp @@ -19,9 +19,8 @@ // This contains the junit.framework and android.test classes that were in // Android API level 25 excluding those from android.test.runner. // Also contains the com.android.internal.util.Predicate[s] classes. -java_library { +java_sdk_library { name: "android.test.base", - installable: true, srcs: ["src/**/*.java"], @@ -29,11 +28,38 @@ java_library { javacflags: ["-Xep:DepAnn:ERROR"], }, + hostdex: true, + + api_packages: [ + "android.test", + "android.test.suitebuilder.annotation", + "com.android.internal.util", + "junit.framework", + ], + + droiddoc_options: ["stubsourceonly"], + compile_dex: true, +} + +// Build the android.test.base_static library +// ========================================== +// This is only intended for inclusion in the android.test.runner-minus-junit, +// robolectric_android-all-stub and repackaged.android.test.* libraries. +// Must not be used elewhere. +java_library_static { + name: "android.test.base_static", + installable: false, + + srcs: ["src/**/*.java"], + + errorprone: { + javacflags: ["-Xep:DepAnn:ERROR"], + }, + // Needs to be consistent with the repackaged version of this make target. java_version: "1.8", sdk_version: "current", - hostdex: true, } // Build the legacy-test library @@ -46,7 +72,7 @@ java_library { installable: true, sdk_version: "current", - static_libs: ["android.test.base"], + static_libs: ["android.test.base_static"], } // Build the repackaged.android.test.base library @@ -57,7 +83,7 @@ java_library_static { name: "repackaged.android.test.base", sdk_version: "current", - static_libs: ["android.test.base"], + static_libs: ["android.test.base_static"], jarjar_rules: "jarjar-rules.txt", // Pin java_version until jarjar is certified to support later versions. http://b/72703434 @@ -84,38 +110,3 @@ java_library_static { ], } -droiddoc { - name: "android-test-base-api-stubs-gen-docs", - srcs: [ - "src/**/*.java", - ], - custom_template: "droiddoc-templates-sdk", - installable: false, - args: "-stubpackages android.test:" + - "android.test.suitebuilder.annotation:" + - "com.android.internal.util:" + - "junit.framework -stubsourceonly -nodocs", - sdk_version: "current", - api_tag_name: "ANDROID_TEST_BASE", - api_filename: "android-test-base-api.txt", - removed_api_filename: "android-test-base-removed.txt", -} - -// Build the android.test.base.stubs library -// ========================================= -java_library_static { - name: "android.test.base.stubs", - srcs: [ - ":android-test-base-api-stubs-gen-docs", - ], - product_variables: { - pdk: { - enabled: false, - }, - unbundled_build: { - enabled: false, - }, - }, - sdk_version: "current", - compile_dex: true, -} diff --git a/test-base/Android.mk b/test-base/Android.mk index baf5726ff8bd..a9d30cf3131a 100644 --- a/test-base/Android.mk +++ b/test-base/Android.mk @@ -16,50 +16,6 @@ LOCAL_PATH:= $(call my-dir) -# For unbundled build we'll use the prebuilt jar from prebuilts/sdk. -ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) - -ANDROID_TEST_BASE_API_FILE := $(LOCAL_PATH)/api/android-test-base-current.txt -ANDROID_TEST_BASE_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-base-removed.txt - -full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.base.stubs,,COMMON)/classes.jar -# Archive a copy of the classes.jar in SDK build. -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.base.stubs.jar) - -# Check that the android.test.base.stubs library has not changed -# ============================================================== - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - check-android-test-base-api-current, \ - $(ANDROID_TEST_BASE_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE), \ - $(ANDROID_TEST_BASE_REMOVED_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(LOCAL_PATH)/api/apicheck_msg_android_test_base.txt, \ - check-android-test-base-api, \ - $(OUT_DOCS)/android-test-base-api-stubs-gen-docs-stubs.srcjar \ - )) - -.PHONY: check-android-test-base-api -checkapi: check-android-test-base-api - -.PHONY: update-android-test-base-api -update-api: update-android-test-base-api - -update-android-test-base-api: $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE) | $(ACP) - @echo Copying current.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE) $(ANDROID_TEST_BASE_API_FILE) - @echo Copying removed.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_REMOVED_API_FILE) $(ANDROID_TEST_BASE_REMOVED_API_FILE) - -endif # not TARGET_BUILD_APPS not TARGET_BUILD_PDK=true - ifeq ($(HOST_OS),linux) # Build the legacy-performance-test-hostdex library # ================================================= diff --git a/test-base/api/apicheck_msg_android_test_base.txt b/test-base/api/apicheck_msg_android_test_base.txt deleted file mode 100644 index 144aecc21bce..000000000000 --- a/test-base/api/apicheck_msg_android_test_base.txt +++ /dev/null @@ -1,17 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update android-test-base-current.txt by executing the following command: - make update-android-test-base-api - - To submit the revised android-test-base-current.txt to the main Android repository, - you will need approval. -****************************** - - - diff --git a/test-base/api/android-test-base-current.txt b/test-base/api/current.txt index 7ebd6aa8a4a2..7ebd6aa8a4a2 100644 --- a/test-base/api/android-test-base-current.txt +++ b/test-base/api/current.txt diff --git a/test-base/api/android-test-base-removed.txt b/test-base/api/removed.txt index e69de29bb2d1..e69de29bb2d1 100644 --- a/test-base/api/android-test-base-removed.txt +++ b/test-base/api/removed.txt diff --git a/test-mock/api/android-test-mock-system-removed.txt b/test-base/api/system-current.txt index e69de29bb2d1..e69de29bb2d1 100644 --- a/test-mock/api/android-test-mock-system-removed.txt +++ b/test-base/api/system-current.txt diff --git a/test-runner/api/android-test-runner-removed.txt b/test-base/api/system-removed.txt index e69de29bb2d1..e69de29bb2d1 100644 --- a/test-runner/api/android-test-runner-removed.txt +++ b/test-base/api/system-removed.txt diff --git a/test-base/api/test-current.txt b/test-base/api/test-current.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-base/api/test-current.txt diff --git a/test-base/api/test-removed.txt b/test-base/api/test-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-base/api/test-removed.txt diff --git a/test-legacy/Android.bp b/test-legacy/Android.bp index d2af8a9f1c82..833c714f07b0 100644 --- a/test-legacy/Android.bp +++ b/test-legacy/Android.bp @@ -25,7 +25,7 @@ java_library_static { static_libs: [ "android.test.base-minus-junit", "android.test.runner-minus-junit", - "android.test.mock", + "android.test.mock.impl", ], no_framework_libs: true, diff --git a/test-mock/Android.bp b/test-mock/Android.bp index 8d3faaef9f6b..5eba01779f46 100644 --- a/test-mock/Android.bp +++ b/test-mock/Android.bp @@ -16,95 +16,15 @@ // Build the android.test.mock library // =================================== -java_library { +java_sdk_library { name: "android.test.mock", - installable: true, - java_version: "1.8", srcs: ["src/**/*.java"], - no_framework_libs: true, - libs: [ - "framework", + api_packages: [ + "android.test.mock", ], -} - -doc_defaults { - name:"android.test.mock.docs-defaults", - srcs: ["src/android/test/mock/**/*.java"], - // Includes the main framework source to ensure that doclava has access to the - // visibility information for the base classes of the mock classes. Without it - // otherwise hidden methods could be visible. - srcs_lib: "framework", - srcs_lib_whitelist_dirs: ["core/java"], srcs_lib_whitelist_pkgs: ["android"], - libs: [ - "core-oj", - "core-libart", - "framework", - "conscrypt", - "okhttp", - "bouncycastle", - "ext", - ], - local_sourcepaths: ["src/android/test/mock"], - custom_template: "droiddoc-templates-sdk", - installable: false, -} - -android_test_mock_docs_args = - "-hide 110 -hide 111 -hide 113 -hide 121 -hide 125 -hide 126 -hide 127 -hide 128 " + - "-stubpackages android.test.mock " + - "-nodocs " - -droiddoc { - name: "android.test.mock.docs", - defaults: ["android.test.mock.docs-defaults"], - - api_tag_name: "ANDROID_TEST_MOCK", - api_filename: "api/android-test-mock-current.txt", - removed_api_filename: "api/android-test-mock-removed.txt", - - args: android_test_mock_docs_args, -} - -droiddoc { - name: "android.test.mock.docs-system", - defaults: ["android.test.mock.docs-defaults"], - - api_tag_name: "ANDROID_TEST_MOCK_SYSTEM", - api_filename: "api/android-test-mock-system-current.txt", - removed_api_filename: "api/android-test-mock-system-removed.txt", - - args: android_test_mock_docs_args + - "-showAnnotation android.annotation.SystemApi ", -} - -java_library_static { - name: "android.test.mock.stubs", - srcs: [":android.test.mock.docs"], - sdk_version: "current", - product_variables: { - unbundled_build: { - // Unbundled apps will use the prebuilt one - // prebuilts/sdk/current - enabled: false, - }, - }, - compile_dex: true, -} - -java_library_static { - name: "android.test.mock.stubs-system", - srcs: [":android.test.mock.docs-system"], - sdk_version: "system_current", - product_variables: { - unbundled_build: { - // Unbundled apps will use the prebuilt one - // prebuilts/sdk/system_current - enabled: false, - }, - }, compile_dex: true, } diff --git a/test-mock/Android.mk b/test-mock/Android.mk deleted file mode 100644 index 73a7340826a6..000000000000 --- a/test-mock/Android.mk +++ /dev/null @@ -1,93 +0,0 @@ -# -# Copyright (C) 2008 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. -# - -LOCAL_PATH:= $(call my-dir) - -# Archive a copy of the classes.jar in SDK build. -full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.mock.stubs,,COMMON)/classes.jar -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.mock.stubs.jar) - -# Check that the android.test.mock.stubs library has not changed -# ============================================================== -ANDROID_TEST_MOCK_API_FILE := $(LOCAL_PATH)/api/android-test-mock-current.txt -ANDROID_TEST_MOCK_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-mock-removed.txt - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - check-android-test-mock-api-current, \ - $(ANDROID_TEST_MOCK_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE), \ - $(ANDROID_TEST_MOCK_REMOVED_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(LOCAL_PATH)/api/apicheck_msg_android_test_mock.txt, \ - check-android-test-mock-api, \ - $(OUT_DOCS)/android.test.mock.docs-stubs.srcjar \ - )) - -.PHONY: check-android-test-mock-api -checkapi: check-android-test-mock-api - -.PHONY: update-android-test-mock-api -update-api: update-android-test-mock-api - -update-android-test-mock-api: $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE) | $(ACP) - @echo Copying current.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE) $(ANDROID_TEST_MOCK_API_FILE) - @echo Copying removed.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_REMOVED_API_FILE) $(ANDROID_TEST_MOCK_REMOVED_API_FILE) - -# Archive a copy of the classes.jar in SDK build. -full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.mock.stubs-system,,COMMON)/classes.jar -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.mock.stubs_system.jar) - -# Check that the android.test.mock.stubs-system library has not changed -# ===================================================================== -ANDROID_TEST_MOCK_SYSTEM_API_FILE := $(LOCAL_PATH)/api/android-test-mock-system-current.txt -ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-mock-system-removed.txt - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - check-android-test-mock-system-api-current, \ - $(ANDROID_TEST_MOCK_SYSTEM_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE), \ - $(ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(LOCAL_PATH)/api/apicheck_msg_android_test_mock-system.txt, \ - check-android-test-mock-system-api, \ - $(OUT_DOCS)/android.test.mock.docs-system-stubs.srcjar \ - )) - -.PHONY: check-android-test-mock-system-api -checkapi: check-android-test-mock-system-api - -.PHONY: update-android-test-mock-system-api -update-api: update-android-test-mock-system-api - -update-android-test-mock-system-api: $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE) | $(ACP) - @echo Copying current.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE) $(ANDROID_TEST_MOCK_SYSTEM_API_FILE) - @echo Copying removed.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE) $(ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE) diff --git a/test-mock/api/apicheck_msg_android_test_mock-system.txt b/test-mock/api/apicheck_msg_android_test_mock-system.txt deleted file mode 100644 index 3a97117f3ea1..000000000000 --- a/test-mock/api/apicheck_msg_android_test_mock-system.txt +++ /dev/null @@ -1,17 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update android-test-mock-current.txt by executing the following command: - make update-android-test-mock-system-api - - To submit the revised android-test-mock-system-current.txt to the main Android repository, - you will need approval. -****************************** - - - diff --git a/test-mock/api/apicheck_msg_android_test_mock.txt b/test-mock/api/apicheck_msg_android_test_mock.txt deleted file mode 100644 index e388935bf798..000000000000 --- a/test-mock/api/apicheck_msg_android_test_mock.txt +++ /dev/null @@ -1,17 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update android-test-mock-current.txt by executing the following command: - make update-android-test-mock-api - - To submit the revised android-test-mock-current.txt to the main Android repository, - you will need approval. -****************************** - - - diff --git a/test-mock/api/android-test-mock-current.txt b/test-mock/api/current.txt index f3b253c0f460..f3b253c0f460 100644 --- a/test-mock/api/android-test-mock-current.txt +++ b/test-mock/api/current.txt diff --git a/test-mock/api/android-test-mock-removed.txt b/test-mock/api/removed.txt index bd109a887933..bd109a887933 100644 --- a/test-mock/api/android-test-mock-removed.txt +++ b/test-mock/api/removed.txt diff --git a/test-mock/api/android-test-mock-system-current.txt b/test-mock/api/system-current.txt index 20401a50b6a2..20401a50b6a2 100644 --- a/test-mock/api/android-test-mock-system-current.txt +++ b/test-mock/api/system-current.txt diff --git a/test-mock/api/system-removed.txt b/test-mock/api/system-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-mock/api/system-removed.txt diff --git a/test-mock/api/test-current.txt b/test-mock/api/test-current.txt new file mode 100644 index 000000000000..f1ec000dfa6a --- /dev/null +++ b/test-mock/api/test-current.txt @@ -0,0 +1,22 @@ +package android.test.mock { + + public class MockContext extends android.content.Context { + method public java.lang.String getOpPackageName(); + } + + public deprecated class MockPackageManager extends android.content.pm.PackageManager { + method public boolean arePermissionsIndividuallyControlled(); + method public java.lang.String getDefaultBrowserPackageNameAsUser(int); + method public int getInstallReason(java.lang.String, android.os.UserHandle); + method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int); + method public java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int); + method public java.lang.String[] getNamesForUids(int[]); + method public java.lang.String getPermissionControllerPackageName(); + method public java.lang.String getServicesSystemSharedLibraryPackageName(); + method public java.lang.String getSharedSystemSharedLibraryPackageName(); + method public void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); + method public void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); + } + +} + diff --git a/test-mock/api/test-removed.txt b/test-mock/api/test-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-mock/api/test-removed.txt diff --git a/test-runner/Android.bp b/test-runner/Android.bp index 2caa6c45f16b..ea615b920df6 100644 --- a/test-runner/Android.bp +++ b/test-runner/Android.bp @@ -16,23 +16,32 @@ // Build the android.test.runner library // ===================================== -java_library { +java_sdk_library { name: "android.test.runner", - installable: true, - // Needs to be consistent with the repackaged version of this make target. - java_version: "1.8", srcs: ["src/**/*.java"], errorprone: { javacflags: ["-Xep:DepAnn:ERROR"], }, - sdk_version: "current", libs: [ "android.test.base", - "android.test.mock.stubs", + "android.test.mock", + ], + stub_only_libs: [ + "android.test.base", + "android.test.mock", ], + api_packages: [ + "android.test", + "android.test.suitebuilder", + "junit.runner", + "junit.textui", + ], + + droiddoc_options: ["stubsourceonly"], + compile_dex: true } // Build the android.test.runner-minus-junit library @@ -46,8 +55,8 @@ java_library { sdk_version: "current", libs: [ - "android.test.base", - "android.test.mock.stubs", + "android.test.base_static", + "android.test.mock", "junit", ], } @@ -70,7 +79,7 @@ java_library_static { sdk_version: "current", libs: [ - "android.test.base", + "android.test.base_static", ], jarjar_rules: "jarjar-rules.txt", @@ -78,48 +87,3 @@ java_library_static { java_version: "1.8", } -droiddoc { - name: "android-test-runner-api-stubs-gen-docs", - srcs: [ - "src/**/*.java", - ], - libs: [ - "core-oj", - "core-libart", - "framework", - "android.test.base", - "android.test.mock", - ], - custom_template: "droiddoc-templates-sdk", - installable: false, - args: "-stubpackages android.test:" + - "android.test.suitebuilder:" + - "junit.runner:" + - "junit.textui -stubsourceonly -nodocs", - api_tag_name: "ANDROID_TEST_RUNNER", - api_filename: "android-test-runner-current.txt", - removed_api_filename: "android-test-runner-removed.txt", -} - -// Build the android.test.runner.stubs library -// ========================================= -java_library_static { - name: "android.test.runner.stubs", - srcs: [ - ":android-test-runner-api-stubs-gen-docs", - ], - libs: [ - "android.test.base.stubs", - "android.test.mock.stubs", - ], - product_variables: { - pdk: { - enabled: false, - }, - unbundled_build: { - enabled: false, - }, - }, - sdk_version: "current", - compile_dex: true, -} diff --git a/test-runner/Android.mk b/test-runner/Android.mk index b70d2498d491..18bde8517351 100644 --- a/test-runner/Android.mk +++ b/test-runner/Android.mk @@ -16,49 +16,5 @@ LOCAL_PATH:= $(call my-dir) -# For unbundled build we'll use the prebuilt jar from prebuilts/sdk. -ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) - -ANDROID_TEST_RUNNER_API_FILE := $(LOCAL_PATH)/api/android-test-runner-current.txt -ANDROID_TEST_RUNNER_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-runner-removed.txt - -full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.runner.stubs,,COMMON)/classes.jar -# Archive a copy of the classes.jar in SDK build. -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.runner.stubs.jar) - -# Check that the android.test.runner.stubs library has not changed -# ================================================================ - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - check-android-test-runner-api-current, \ - $(ANDROID_TEST_RUNNER_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE), \ - $(ANDROID_TEST_RUNNER_REMOVED_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(LOCAL_PATH)/api/apicheck_msg_android_test_runner.txt, \ - check-android-test-runner-api, \ - $(OUT_DOCS)/android-test-runner-api-stubs-gen-docs-stubs.srcjar \ - )) - -.PHONY: check-android-test-runner-api -checkapi: check-android-test-runner-api - -.PHONY: update-android-test-runner-api -update-api: update-android-test-runner-api - -update-android-test-runner-api: $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE) | $(ACP) - @echo Copying current.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE) $(ANDROID_TEST_RUNNER_API_FILE) - @echo Copying removed.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_REMOVED_API_FILE) $(ANDROID_TEST_RUNNER_REMOVED_API_FILE) - -endif # not TARGET_BUILD_APPS not TARGET_BUILD_PDK=true - # additionally, build unit tests in a separate .apk include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/test-runner/api/apicheck_msg_android_test_runner.txt b/test-runner/api/apicheck_msg_android_test_runner.txt deleted file mode 100644 index cf2d15ee1ee1..000000000000 --- a/test-runner/api/apicheck_msg_android_test_runner.txt +++ /dev/null @@ -1,17 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update android-test-runner-current.txt by executing the following command: - make update-android-test-runner-api - - To submit the revised android-test-runner-current.txt to the main Android repository, - you will need approval. -****************************** - - - diff --git a/test-runner/api/android-test-runner-current.txt b/test-runner/api/current.txt index 1170eb53ab7f..1170eb53ab7f 100644 --- a/test-runner/api/android-test-runner-current.txt +++ b/test-runner/api/current.txt diff --git a/test-runner/api/removed.txt b/test-runner/api/removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/removed.txt diff --git a/test-runner/api/system-current.txt b/test-runner/api/system-current.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/system-current.txt diff --git a/test-runner/api/system-removed.txt b/test-runner/api/system-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/system-removed.txt diff --git a/test-runner/api/test-current.txt b/test-runner/api/test-current.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/test-current.txt diff --git a/test-runner/api/test-removed.txt b/test-runner/api/test-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/test-removed.txt diff --git a/tests/testables/Android.bp b/tests/testables/Android.bp new file mode 100644 index 000000000000..f07f09da3f03 --- /dev/null +++ b/tests/testables/Android.bp @@ -0,0 +1,32 @@ +// +// Copyright (C) 2017 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +java_library { + + name: "testables", + // ANDROIDMK TRANSLATION ERROR: unsupported assignment to LOCAL_MODULE_TAG + // LOCAL_MODULE_TAG := tests + + srcs: ["src/**/*.java"], + + libs: [ + "android.test.runner", + "android.test.mock", + "android-support-test", + "mockito-target-inline-minus-junit4", + ], + +} diff --git a/tests/testables/Android.mk b/tests/testables/Android.mk deleted file mode 100644 index f3cbac05d1cb..000000000000 --- a/tests/testables/Android.mk +++ /dev/null @@ -1,32 +0,0 @@ -# -# Copyright (C) 2017 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := testables -LOCAL_MODULE_TAG := tests - -LOCAL_SRC_FILES := $(call all-java-files-under,src) - -LOCAL_JAVA_LIBRARIES := android.test.runner android.test.mock \ - android-support-test \ - mockito-target-inline-minus-junit4 - -include $(BUILD_STATIC_JAVA_LIBRARY) - -include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/tools/aapt2/Debug.cpp b/tools/aapt2/Debug.cpp index f064cb14248f..0a517ab8a2de 100644 --- a/tools/aapt2/Debug.cpp +++ b/tools/aapt2/Debug.cpp @@ -408,6 +408,41 @@ void Debug::DumpHex(const void* data, size_t len) { } } +void Debug::DumpResStringPool(const android::ResStringPool* pool, text::Printer* printer) { + using namespace android; + + if (pool->getError() == NO_INIT) { + printer->Print("String pool is unitialized.\n"); + return; + } else if (pool->getError() != NO_ERROR) { + printer->Print("String pool is corrupt/invalid.\n"); + return; + } + + SortedVector<const void*> uniqueStrings; + const size_t N = pool->size(); + for (size_t i=0; i<N; i++) { + size_t len; + if (pool->isUTF8()) { + uniqueStrings.add(pool->string8At(i, &len)); + } else { + uniqueStrings.add(pool->stringAt(i, &len)); + } + } + + printer->Print(StringPrintf("String pool of %zd unique %s %s strings, %zd entries and %zd styles " + "using %zd bytes:\n", uniqueStrings.size(), + pool->isUTF8() ? "UTF-8" : "UTF-16", + pool->isSorted() ? "sorted" : "non-sorted", N, pool->styleCount(), + pool->bytes())); + + const size_t NS = pool->size(); + for (size_t s=0; s<NS; s++) { + String8 str = pool->string8ObjectAt(s); + printer->Print(StringPrintf("String #%zd : %s\n", s, str.string())); + } +} + namespace { class XmlPrinter : public xml::ConstVisitor { diff --git a/tools/aapt2/Debug.h b/tools/aapt2/Debug.h index 382707e1d4cd..a43197cacf7b 100644 --- a/tools/aapt2/Debug.h +++ b/tools/aapt2/Debug.h @@ -38,6 +38,7 @@ struct Debug { static void PrintStyleGraph(ResourceTable* table, const ResourceName& target_style); static void DumpHex(const void* data, size_t len); static void DumpXml(const xml::XmlResource& doc, text::Printer* printer); + static void DumpResStringPool(const android::ResStringPool* pool, text::Printer* printer); }; } // namespace aapt diff --git a/tools/aapt2/LoadedApk.cpp b/tools/aapt2/LoadedApk.cpp index b32766be8d18..a73d56c8f951 100644 --- a/tools/aapt2/LoadedApk.cpp +++ b/tools/aapt2/LoadedApk.cpp @@ -184,10 +184,7 @@ bool LoadedApk::WriteToArchive(IAaptContext* context, ResourceTable* split_table std::unique_ptr<io::IFileCollectionIterator> iterator = apk_->Iterator(); while (iterator->HasNext()) { io::IFile* file = iterator->Next(); - std::string path = file->GetSource().path; - // The name of the path has the format "<zip-file-name>@<path-to-file>". - path = path.substr(path.find('@') + 1); // Skip resources that are not referenced if requested. if (path.find("res/") == 0 && referenced_resources.find(path) == referenced_resources.end()) { @@ -257,6 +254,53 @@ bool LoadedApk::WriteToArchive(IAaptContext* context, ResourceTable* split_table return true; } +std::unique_ptr<xml::XmlResource> LoadedApk::LoadXml(const std::string& file_path, + IDiagnostics* diag) { + io::IFile* file = apk_->FindFile(file_path); + if (file == nullptr) { + diag->Error(DiagMessage() << "failed to find file"); + return nullptr; + } + + std::unique_ptr<xml::XmlResource> doc; + if (format_ == ApkFormat::kProto) { + std::unique_ptr<io::InputStream> in = file->OpenInputStream(); + if (!in) { + diag->Error(DiagMessage() << "failed to open file"); + return nullptr; + } + + io::ZeroCopyInputAdaptor adaptor(in.get()); + pb::XmlNode pb_node; + if (!pb_node.ParseFromZeroCopyStream(&adaptor)) { + diag->Error(DiagMessage() << "failed to parse file as proto XML"); + return nullptr; + } + + std::string err; + doc = DeserializeXmlResourceFromPb(pb_node, &err); + if (!doc) { + diag->Error(DiagMessage() << "failed to deserialize proto XML: " << err); + return nullptr; + } + } else if (format_ == ApkFormat::kBinary) { + std::unique_ptr<io::IData> data = file->OpenAsData(); + if (!data) { + diag->Error(DiagMessage() << "failed to open file"); + return nullptr; + } + + std::string err; + doc = xml::Inflate(data->data(), data->size(), &err); + if (!doc) { + diag->Error(DiagMessage() << "failed to parse file as binary XML: " << err); + return nullptr; + } + } + + return doc; +} + ApkFormat LoadedApk::DetermineApkFormat(io::IFileCollection* apk) { if (apk->FindFile(kApkResourceTablePath) != nullptr) { return ApkFormat::kBinary; diff --git a/tools/aapt2/LoadedApk.h b/tools/aapt2/LoadedApk.h index 41f879d0cdc3..dcb085aa2b0b 100644 --- a/tools/aapt2/LoadedApk.h +++ b/tools/aapt2/LoadedApk.h @@ -70,6 +70,10 @@ class LoadedApk { return apk_.get(); } + ApkFormat GetApkFormat() { + return format_; + } + const ResourceTable* GetResourceTable() const { return table_.get(); } @@ -106,6 +110,8 @@ class LoadedApk { const TableFlattenerOptions& options, FilterChain* filters, IArchiveWriter* writer, xml::XmlResource* manifest = nullptr); + /** Loads the file as an xml document. */ + std::unique_ptr<xml::XmlResource> LoadXml(const std::string& file_path, IDiagnostics* diag); private: DISALLOW_COPY_AND_ASSIGN(LoadedApk); diff --git a/tools/aapt2/Main.cpp b/tools/aapt2/Main.cpp index 23903c9e05f3..37013c07ffef 100644 --- a/tools/aapt2/Main.cpp +++ b/tools/aapt2/Main.cpp @@ -71,7 +71,7 @@ class MainCommand : public Command { explicit MainCommand(IDiagnostics* diagnostics) : Command("aapt2"), diagnostics_(diagnostics) { AddOptionalSubcommand(util::make_unique<CompileCommand>(diagnostics)); AddOptionalSubcommand(util::make_unique<LinkCommand>(diagnostics)); - AddOptionalSubcommand(util::make_unique<DumpCommand>()); + AddOptionalSubcommand(util::make_unique<DumpCommand>(diagnostics)); AddOptionalSubcommand(util::make_unique<DiffCommand>()); AddOptionalSubcommand(util::make_unique<OptimizeCommand>()); AddOptionalSubcommand(util::make_unique<ConvertCommand>()); diff --git a/tools/aapt2/Source.h b/tools/aapt2/Source.h index 0f312d6998f1..92934c343960 100644 --- a/tools/aapt2/Source.h +++ b/tools/aapt2/Source.h @@ -31,12 +31,16 @@ namespace aapt { struct Source { std::string path; Maybe<size_t> line; + Maybe<std::string> archive; Source() = default; inline Source(const android::StringPiece& path) : path(path.to_string()) { // NOLINT(implicit) } + inline Source(const android::StringPiece& path, const android::StringPiece& archive) + : path(path.to_string()), archive(archive.to_string()) {} + inline Source(const android::StringPiece& path, size_t line) : path(path.to_string()), line(line) {} @@ -45,10 +49,14 @@ struct Source { } std::string to_string() const { + std::string s = path; + if (archive) { + s = ::android::base::StringPrintf("%s@%s", archive.value().c_str(), s.c_str()); + } if (line) { - return ::android::base::StringPrintf("%s:%zd", path.c_str(), line.value()); + s = ::android::base::StringPrintf("%s:%zd", s.c_str(), line.value()); } - return path; + return s; } }; diff --git a/tools/aapt2/cmd/Compile.cpp b/tools/aapt2/cmd/Compile.cpp index 2ba2cf7926b0..62c19fbfcdd3 100644 --- a/tools/aapt2/cmd/Compile.cpp +++ b/tools/aapt2/cmd/Compile.cpp @@ -41,8 +41,10 @@ #include "format/proto/ProtoSerialize.h" #include "io/BigBufferStream.h" #include "io/FileStream.h" +#include "io/FileSystem.h" #include "io/StringStream.h" #include "io/Util.h" +#include "io/ZipArchive.h" #include "util/Files.h" #include "util/Maybe.h" #include "util/Util.h" @@ -135,81 +137,20 @@ static std::string BuildIntermediateContainerFilename(const ResourcePathData& da return name.str(); } -static bool IsHidden(const StringPiece& filename) { - return util::StartsWith(filename, "."); -} - -// Walks the res directory structure, looking for resource files. -static bool LoadInputFilesFromDir(IAaptContext* context, const CompileOptions& options, - std::vector<ResourcePathData>* out_path_data) { - const std::string& root_dir = options.res_dir.value(); - std::unique_ptr<DIR, decltype(closedir)*> d(opendir(root_dir.data()), closedir); - if (!d) { - context->GetDiagnostics()->Error(DiagMessage(root_dir) << "failed to open directory: " - << SystemErrorCodeToString(errno)); - return false; - } - - while (struct dirent* entry = readdir(d.get())) { - if (IsHidden(entry->d_name)) { - continue; - } - - std::string prefix_path = root_dir; - file::AppendPath(&prefix_path, entry->d_name); - - if (file::GetFileType(prefix_path) != file::FileType::kDirectory) { - continue; - } - - std::unique_ptr<DIR, decltype(closedir)*> subdir(opendir(prefix_path.data()), closedir); - if (!subdir) { - context->GetDiagnostics()->Error(DiagMessage(prefix_path) << "failed to open directory: " - << SystemErrorCodeToString(errno)); - return false; - } - - while (struct dirent* leaf_entry = readdir(subdir.get())) { - if (IsHidden(leaf_entry->d_name)) { - continue; - } - - std::string full_path = prefix_path; - file::AppendPath(&full_path, leaf_entry->d_name); - - std::string err_str; - Maybe<ResourcePathData> path_data = ExtractResourcePathData(full_path, &err_str); - if (!path_data) { - context->GetDiagnostics()->Error(DiagMessage(full_path) << err_str); - return false; - } - - out_path_data->push_back(std::move(path_data.value())); - } - } - - // File-system directory enumeration order is platform-dependent. Sort the result to remove any - // inconsistencies between platforms. - std::sort( - out_path_data->begin(), out_path_data->end(), - [](const ResourcePathData& a, const ResourcePathData& b) { return a.source < b.source; }); - return true; -} - static bool CompileTable(IAaptContext* context, const CompileOptions& options, - const ResourcePathData& path_data, IArchiveWriter* writer, + const ResourcePathData& path_data, io::IFile* file, IArchiveWriter* writer, const std::string& output_path) { ResourceTable table; { - FileInputStream fin(path_data.source.path); - if (fin.HadError()) { + auto fin = file->OpenInputStream(); + if (fin->HadError()) { context->GetDiagnostics()->Error(DiagMessage(path_data.source) - << "failed to open file: " << fin.GetError()); + << "failed to open file: " << fin->GetError()); return false; } // Parse the values file from XML. - xml::XmlPullParser xml_parser(&fin); + xml::XmlPullParser xml_parser(fin.get()); ResourceParserOptions parser_options; parser_options.error_on_positional_arguments = !options.legacy_mode; @@ -222,7 +163,7 @@ static bool CompileTable(IAaptContext* context, const CompileOptions& options, parser_options.visibility = options.visibility; ResourceParser res_parser(context->GetDiagnostics(), &table, path_data.source, path_data.config, - parser_options); + parser_options); if (!res_parser.Parse(&xml_parser)) { return false; } @@ -408,7 +349,7 @@ static bool IsValidFile(IAaptContext* context, const std::string& input_path) { } static bool CompileXml(IAaptContext* context, const CompileOptions& options, - const ResourcePathData& path_data, IArchiveWriter* writer, + const ResourcePathData& path_data, io::IFile* file, IArchiveWriter* writer, const std::string& output_path) { if (context->IsVerbose()) { context->GetDiagnostics()->Note(DiagMessage(path_data.source) << "compiling XML"); @@ -416,18 +357,17 @@ static bool CompileXml(IAaptContext* context, const CompileOptions& options, std::unique_ptr<xml::XmlResource> xmlres; { - FileInputStream fin(path_data.source.path); - if (fin.HadError()) { + auto fin = file->OpenInputStream(); + if (fin->HadError()) { context->GetDiagnostics()->Error(DiagMessage(path_data.source) - << "failed to open file: " << fin.GetError()); + << "failed to open file: " << fin->GetError()); return false; } - xmlres = xml::Inflate(&fin, context->GetDiagnostics(), path_data.source); - } - - if (!xmlres) { - return false; + xmlres = xml::Inflate(fin.get(), context->GetDiagnostics(), path_data.source); + if (!xmlres) { + return false; + } } xmlres->file.name = ResourceName({}, *ParseResourceType(path_data.resource_dir), path_data.name); @@ -508,7 +448,7 @@ static bool CompileXml(IAaptContext* context, const CompileOptions& options, } static bool CompilePng(IAaptContext* context, const CompileOptions& options, - const ResourcePathData& path_data, IArchiveWriter* writer, + const ResourcePathData& path_data, io::IFile* file, IArchiveWriter* writer, const std::string& output_path) { if (context->IsVerbose()) { context->GetDiagnostics()->Note(DiagMessage(path_data.source) << "compiling PNG"); @@ -522,15 +462,17 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, res_file.type = ResourceFile::Type::kPng; { - std::string content; - if (!android::base::ReadFileToString(path_data.source.path, &content, - true /*follow_symlinks*/)) { - context->GetDiagnostics()->Error(DiagMessage(path_data.source) - << "failed to open file: " - << SystemErrorCodeToString(errno)); + auto data = file->OpenAsData(); + if (!data) { + context->GetDiagnostics()->Error(DiagMessage(path_data.source) << "failed to open file "); return false; } + // Read the file as a string + char buffer_2[data->size()]; + memcpy(&buffer_2, data->data(), data->size()); + StringPiece content(buffer_2, data->size()); + BigBuffer crunched_png_buffer(4096); io::BigBufferOutputStream crunched_png_buffer_out(&crunched_png_buffer); @@ -598,7 +540,7 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, if (context->IsVerbose()) { // For debugging only, use the legacy PNG cruncher and compare the resulting file sizes. // This will help catch exotic cases where the new code may generate larger PNGs. - std::stringstream legacy_stream(content); + std::stringstream legacy_stream(content.to_string()); BigBuffer legacy_buffer(4096); Png png(context->GetDiagnostics()); if (!png.process(path_data.source, &legacy_stream, &legacy_buffer, {})) { @@ -612,41 +554,31 @@ static bool CompilePng(IAaptContext* context, const CompileOptions& options, } io::BigBufferInputStream buffer_in(&buffer); - if (!WriteHeaderAndDataToWriter(output_path, res_file, &buffer_in, writer, - context->GetDiagnostics())) { - return false; - } - return true; + return WriteHeaderAndDataToWriter(output_path, res_file, &buffer_in, writer, + context->GetDiagnostics()); } static bool CompileFile(IAaptContext* context, const CompileOptions& options, - const ResourcePathData& path_data, IArchiveWriter* writer, + const ResourcePathData& path_data, io::IFile* file, IArchiveWriter* writer, const std::string& output_path) { if (context->IsVerbose()) { context->GetDiagnostics()->Note(DiagMessage(path_data.source) << "compiling file"); } - BigBuffer buffer(256); ResourceFile res_file; res_file.name = ResourceName({}, *ParseResourceType(path_data.resource_dir), path_data.name); res_file.config = path_data.config; res_file.source = path_data.source; res_file.type = ResourceFile::Type::kUnknown; - std::string error_str; - Maybe<android::FileMap> f = file::MmapPath(path_data.source.path, &error_str); - if (!f) { - context->GetDiagnostics()->Error(DiagMessage(path_data.source) << "failed to mmap file: " - << error_str); + auto data = file->OpenAsData(); + if (!data) { + context->GetDiagnostics()->Error(DiagMessage(path_data.source) << "failed to open file "); return false; } - io::MmappedData mmapped_in(std::move(f.value())); - if (!WriteHeaderAndDataToWriter(output_path, res_file, &mmapped_in, writer, - context->GetDiagnostics())) { - return false; - } - return true; + return WriteHeaderAndDataToWriter(output_path, res_file, data.get(), writer, + context->GetDiagnostics()); } class CompileContext : public IAaptContext { @@ -701,6 +633,79 @@ class CompileContext : public IAaptContext { bool verbose_ = false; }; +int Compile(IAaptContext* context, io::IFileCollection* inputs, IArchiveWriter* output_writer, + CompileOptions& options) { + bool error = false; + + // Iterate over the input files in a stable, platform-independent manner + auto file_iterator = inputs->Iterator(); + while (file_iterator->HasNext()) { + auto file = file_iterator->Next(); + std::string path = file->GetSource().path; + + // Skip hidden input files + if (file::IsHidden(path)) { + continue; + } + + if (!options.res_zip && !IsValidFile(context, path)) { + error = true; + continue; + } + + // Extract resource type information from the full path + std::string err_str; + ResourcePathData path_data; + if (auto maybe_path_data = ExtractResourcePathData(path, &err_str)) { + path_data = maybe_path_data.value(); + } else { + context->GetDiagnostics()->Error(DiagMessage(file->GetSource()) << err_str); + error = true; + continue; + } + + // Determine how to compile the file based on its type. + auto compile_func = &CompileFile; + if (path_data.resource_dir == "values" && path_data.extension == "xml") { + compile_func = &CompileTable; + // We use a different extension (not necessary anymore, but avoids altering the existing + // build system logic). + path_data.extension = "arsc"; + + } else if (const ResourceType* type = ParseResourceType(path_data.resource_dir)) { + if (*type != ResourceType::kRaw) { + if (path_data.extension == "xml") { + compile_func = &CompileXml; + } else if ((!options.no_png_crunch && path_data.extension == "png") + || path_data.extension == "9.png") { + compile_func = &CompilePng; + } + } + } else { + context->GetDiagnostics()->Error(DiagMessage() + << "invalid file path '" << path_data.source << "'"); + error = true; + continue; + } + + // Treat periods as a reserved character that should not be present in a file name + // Legacy support for AAPT which did not reserve periods + if (compile_func != &CompileFile && !options.legacy_mode + && std::count(path_data.name.begin(), path_data.name.end(), '.') != 0) { + error = true; + context->GetDiagnostics()->Error(DiagMessage(file->GetSource()) + << "file name cannot contain '.' other than for" + << " specifying the extension"); + continue; + } + + const std::string out_path = BuildIntermediateContainerFilename(path_data); + error |= !compile_func(context, options, path_data, file, output_writer, out_path); + } + + return error ? 1 : 0; +} + int CompileCommand::Action(const std::vector<std::string>& args) { CompileContext context(diagnostic_); context.SetVerbose(options_.verbose); @@ -720,37 +725,55 @@ int CompileCommand::Action(const std::vector<std::string>& args) { } } + std::unique_ptr<io::IFileCollection> file_collection; std::unique_ptr<IArchiveWriter> archive_writer; - std::vector<ResourcePathData> input_data; - if (options_.res_dir) { + // Collect the resources files to compile + if (options_.res_dir && options_.res_zip) { + context.GetDiagnostics()->Error(DiagMessage() + << "only one of --dir and --zip can be specified"); + return 1; + } else if (options_.res_dir) { if (!args.empty()) { - // Can't have both files and a resource directory. context.GetDiagnostics()->Error(DiagMessage() << "files given but --dir specified"); Usage(&std::cerr); return 1; } - if (!LoadInputFilesFromDir(&context, options_, &input_data)) { + // Load the files from the res directory + std::string err; + file_collection = io::FileCollection::Create(options_.res_dir.value(), &err); + if (!file_collection) { + context.GetDiagnostics()->Error(DiagMessage(options_.res_dir.value()) << err); return 1; } archive_writer = CreateZipFileArchiveWriter(context.GetDiagnostics(), options_.output_path); + } else if (options_.res_zip) { + if (!args.empty()) { + context.GetDiagnostics()->Error(DiagMessage() << "files given but --zip specified"); + Usage(&std::cerr); + return 1; + } + // Load a zip file containing a res directory + std::string err; + file_collection = io::ZipFileCollection::Create(options_.res_zip.value(), &err); + if (!file_collection) { + context.GetDiagnostics()->Error(DiagMessage(options_.res_zip.value()) << err); + return 1; + } + + archive_writer = CreateZipFileArchiveWriter(context.GetDiagnostics(), options_.output_path); } else { - input_data.reserve(args.size()); + auto collection = util::make_unique<io::FileCollection>(); // Collect data from the path for each input file. for (const std::string& arg : args) { - std::string error_str; - if (Maybe<ResourcePathData> path_data = ExtractResourcePathData(arg, &error_str)) { - input_data.push_back(std::move(path_data.value())); - } else { - context.GetDiagnostics()->Error(DiagMessage() << error_str << " (" << arg << ")"); - return 1; - } + collection->InsertFile(arg); } + file_collection = std::move(collection); archive_writer = CreateDirectoryArchiveWriter(context.GetDiagnostics(), options_.output_path); } @@ -758,57 +781,7 @@ int CompileCommand::Action(const std::vector<std::string>& args) { return 1; } - bool error = false; - for (ResourcePathData& path_data : input_data) { - if (options_.verbose) { - context.GetDiagnostics()->Note(DiagMessage(path_data.source) << "processing"); - } - - if (!IsValidFile(&context, path_data.source.path)) { - error = true; - continue; - } - - // Determine how to compile the file based on its type. - auto compile_func = &CompileFile; - if (path_data.resource_dir == "values" && path_data.extension == "xml") { - compile_func = &CompileTable; - // We use a different extension (not necessary anymore, but avoids altering the existing - // build system logic). - path_data.extension = "arsc"; - - } else if (const ResourceType* type = ParseResourceType(path_data.resource_dir)) { - if (*type != ResourceType::kRaw) { - if (path_data.extension == "xml") { - compile_func = &CompileXml; - } else if ((!options_.no_png_crunch && path_data.extension == "png") - || path_data.extension == "9.png") { - compile_func = &CompilePng; - } - } - } else { - context.GetDiagnostics()->Error(DiagMessage() - << "invalid file path '" << path_data.source << "'"); - error = true; - continue; - } - - // Treat periods as a reserved character that should not be present in a file name - // Legacy support for AAPT which did not reserve periods - if (compile_func != &CompileFile && !options_.legacy_mode - && std::count(path_data.name.begin(), path_data.name.end(), '.') != 0) { - error = true; - context.GetDiagnostics()->Error(DiagMessage() << "resource file '" << path_data.source.path - << "' name cannot contain '.' other than for" - << "specifying the extension"); - continue; - } - - // Compile the file. - const std::string out_path = BuildIntermediateContainerFilename(path_data); - error |= !compile_func(&context, options_, path_data, archive_writer.get(), out_path); - } - return error ? 1 : 0; + return Compile(&context, file_collection.get(), archive_writer.get(), options_); } } // namespace aapt diff --git a/tools/aapt2/cmd/Compile.h b/tools/aapt2/cmd/Compile.h index 41519520fda1..c429d5f5d4b2 100644 --- a/tools/aapt2/cmd/Compile.h +++ b/tools/aapt2/cmd/Compile.h @@ -18,7 +18,8 @@ #define AAPT2_COMPILE_H #include "androidfw/StringPiece.h" - +#include "format/Archive.h" +#include "process/IResourceTableConsumer.h" #include "Command.h" #include "Diagnostics.h" #include "ResourceTable.h" @@ -28,6 +29,7 @@ namespace aapt { struct CompileOptions { std::string output_path; Maybe<std::string> res_dir; + Maybe<std::string> res_zip; Maybe<std::string> generate_text_symbols_path; Maybe<Visibility::Level> visibility; bool pseudolocalize = false; @@ -36,6 +38,7 @@ struct CompileOptions { bool verbose = false; }; +/** Parses flags and compiles resources to be used in linking. */ class CompileCommand : public Command { public: explicit CompileCommand(IDiagnostics* diagnostic) : Command("compile", "c"), @@ -43,6 +46,8 @@ class CompileCommand : public Command { SetDescription("Compiles resources to be linked into an apk."); AddRequiredFlag("-o", "Output path", &options_.output_path); AddOptionalFlag("--dir", "Directory to scan for resources", &options_.res_dir); + AddOptionalFlag("--zip", "Zip file containing the res directory to scan for resources", + &options_.res_zip); AddOptionalFlag("--output-text-symbols", "Generates a text file containing the resource symbols in the\n" "specified file", &options_.generate_text_symbols_path); @@ -51,10 +56,10 @@ class CompileCommand : public Command { AddOptionalSwitch("--no-crunch", "Disables PNG processing", &options_.no_png_crunch); AddOptionalSwitch("--legacy", "Treat errors that used to be valid in AAPT as warnings", &options_.legacy_mode); - AddOptionalSwitch("-v", "Enables verbose logging", &options_.verbose); AddOptionalFlag("--visibility", "Sets the visibility of the compiled resources to the specified\n" "level. Accepted levels: public, private, default", &visibility_); + AddOptionalSwitch("-v", "Enables verbose logging", &options_.verbose); } int Action(const std::vector<std::string>& args) override; @@ -65,6 +70,8 @@ class CompileCommand : public Command { Maybe<std::string> visibility_; }; +int Compile(IAaptContext* context, io::IFileCollection* inputs, + IArchiveWriter* output_writer, CompileOptions& options); }// namespace aapt #endif //AAPT2_COMPILE_H diff --git a/tools/aapt2/cmd/Compile_test.cpp b/tools/aapt2/cmd/Compile_test.cpp index d21addf4a081..dd5198ce86da 100644 --- a/tools/aapt2/cmd/Compile_test.cpp +++ b/tools/aapt2/cmd/Compile_test.cpp @@ -18,6 +18,7 @@ #include "android-base/file.h" #include "io/StringStream.h" +#include "io/ZipArchive.h" #include "java/AnnotationProcessor.h" #include "test/Test.h" @@ -29,7 +30,6 @@ int TestCompile(const std::string& path, const std::string& outDir, bool legacy, args.push_back(path); args.push_back("-o"); args.push_back(outDir); - args.push_back("-v"); if (legacy) { args.push_back("--legacy"); } @@ -94,4 +94,56 @@ TEST(CompilerTest, MultiplePeriods) { ASSERT_EQ(remove(path5_out.c_str()), 0); } -}
\ No newline at end of file +TEST(CompilerTest, DirInput) { + StdErrDiagnostics diag; + std::unique_ptr<IAaptContext> context = test::ContextBuilder().Build(); + const std::string kResDir = android::base::Dirname(android::base::GetExecutablePath()) + + "/integration-tests/CompileTest/DirInput/res"; + const std::string kOutputFlata = android::base::Dirname(android::base::GetExecutablePath()) + + "/integration-tests/CompileTest/DirInput/compiled.flata"; + remove(kOutputFlata.c_str()); + + std::vector<android::StringPiece> args; + args.push_back("--dir"); + args.push_back(kResDir); + args.push_back("-o"); + args.push_back(kOutputFlata); + ASSERT_EQ(CompileCommand(&diag).Execute(args, &std::cerr), 0); + + // Check for the presence of the compiled files + std::string err; + std::unique_ptr<io::ZipFileCollection> zip = io::ZipFileCollection::Create(kOutputFlata, &err); + ASSERT_NE(zip, nullptr) << err; + ASSERT_NE(zip->FindFile("drawable_image.png.flat"), nullptr); + ASSERT_NE(zip->FindFile("layout_layout.xml.flat"), nullptr); + ASSERT_NE(zip->FindFile("values_values.arsc.flat"), nullptr); + ASSERT_EQ(remove(kOutputFlata.c_str()), 0); +} + +TEST(CompilerTest, ZipInput) { + StdErrDiagnostics diag; + std::unique_ptr<IAaptContext> context = test::ContextBuilder().Build(); + const std::string kResZip = android::base::Dirname(android::base::GetExecutablePath()) + + "/integration-tests/CompileTest/ZipInput/res.zip"; + const std::string kOutputFlata = android::base::Dirname(android::base::GetExecutablePath()) + + "/integration-tests/CompileTest/ZipInput/compiled.flata"; + remove(kOutputFlata.c_str()); + + std::vector<android::StringPiece> args; + args.push_back("--zip"); + args.push_back(kResZip); + args.push_back("-o"); + args.push_back(kOutputFlata); + ASSERT_EQ(CompileCommand(&diag).Execute(args, &std::cerr), 0); + + // Check for the presence of the compiled files + std::string err; + std::unique_ptr<io::ZipFileCollection> zip = io::ZipFileCollection::Create(kOutputFlata, &err); + ASSERT_NE(zip, nullptr) << err; + ASSERT_NE(zip->FindFile("drawable_image.png.flat"), nullptr); + ASSERT_NE(zip->FindFile("layout_layout.xml.flat"), nullptr); + ASSERT_NE(zip->FindFile("values_values.arsc.flat"), nullptr); + ASSERT_EQ(remove(kOutputFlata.c_str()), 0); +} + +} // namespace aapt
\ No newline at end of file diff --git a/tools/aapt2/cmd/Convert.cpp b/tools/aapt2/cmd/Convert.cpp index d57eaa1ba145..86b1f4c54deb 100644 --- a/tools/aapt2/cmd/Convert.cpp +++ b/tools/aapt2/cmd/Convert.cpp @@ -105,10 +105,7 @@ bool ConvertApk(IAaptContext* context, unique_ptr<LoadedApk> apk, IApkSerializer std::unique_ptr<io::IFileCollectionIterator> iterator = apk->GetFileCollection()->Iterator(); while (iterator->HasNext()) { io::IFile* file = iterator->Next(); - std::string path = file->GetSource().path; - // The name of the path has the format "<zip-file-name>@<path-to-file>". - path = path.substr(path.find('@') + 1); // Manifest, resource table and resources have already been taken care of. if (path == kAndroidManifestPath || diff --git a/tools/aapt2/cmd/Dump.cpp b/tools/aapt2/cmd/Dump.cpp index 6e9c80024ddd..b4311c56428b 100644 --- a/tools/aapt2/cmd/Dump.cpp +++ b/tools/aapt2/cmd/Dump.cpp @@ -24,8 +24,11 @@ #include "Debug.h" #include "Diagnostics.h" +#include "LoadedApk.h" +#include "Util.h" #include "format/Container.h" #include "format/binary/BinaryResourceParser.h" +#include "format/binary/XmlFlattener.h" #include "format/proto/ProtoDeserialize.h" #include "io/FileStream.h" #include "io/ZipArchive.h" @@ -70,184 +73,6 @@ static void DumpCompiledFile(const ResourceFile& file, const Source& source, off printer->Println(StringPrintf("Data: offset=%" PRIi64 " length=%zd", offset, len)); } -static bool DumpXmlFile(IAaptContext* context, io::IFile* file, bool proto, - text::Printer* printer) { - std::unique_ptr<xml::XmlResource> doc; - if (proto) { - std::unique_ptr<io::InputStream> in = file->OpenInputStream(); - if (in == nullptr) { - context->GetDiagnostics()->Error(DiagMessage() << "failed to open file"); - return false; - } - - io::ZeroCopyInputAdaptor adaptor(in.get()); - pb::XmlNode pb_node; - if (!pb_node.ParseFromZeroCopyStream(&adaptor)) { - context->GetDiagnostics()->Error(DiagMessage() << "failed to parse file as proto XML"); - return false; - } - - std::string err; - doc = DeserializeXmlResourceFromPb(pb_node, &err); - if (doc == nullptr) { - context->GetDiagnostics()->Error(DiagMessage() << "failed to deserialize proto XML"); - return false; - } - printer->Println("Proto XML"); - } else { - std::unique_ptr<io::IData> data = file->OpenAsData(); - if (data == nullptr) { - context->GetDiagnostics()->Error(DiagMessage() << "failed to open file"); - return false; - } - - std::string err; - doc = xml::Inflate(data->data(), data->size(), &err); - if (doc == nullptr) { - context->GetDiagnostics()->Error(DiagMessage() << "failed to parse file as binary XML"); - return false; - } - printer->Println("Binary XML"); - } - - Debug::DumpXml(*doc, printer); - return true; -} - -static bool TryDumpFile(IAaptContext* context, const std::string& file_path, - const DumpOptions& options) { - // Use a smaller buffer so that there is less latency for dumping to stdout. - constexpr size_t kStdOutBufferSize = 1024u; - io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); - Printer printer(&fout); - - std::string err; - std::unique_ptr<io::ZipFileCollection> zip = io::ZipFileCollection::Create(file_path, &err); - if (zip) { - ResourceTable table(/** validate_resources **/ false); - bool proto = false; - if (io::IFile* file = zip->FindFile("resources.pb")) { - proto = true; - - std::unique_ptr<io::IData> data = file->OpenAsData(); - if (data == nullptr) { - context->GetDiagnostics()->Error(DiagMessage(file_path) << "failed to open resources.pb"); - return false; - } - - pb::ResourceTable pb_table; - if (!pb_table.ParseFromArray(data->data(), data->size())) { - context->GetDiagnostics()->Error(DiagMessage(file_path) << "invalid resources.pb"); - return false; - } - - if (!DeserializeTableFromPb(pb_table, zip.get(), &table, &err)) { - context->GetDiagnostics()->Error(DiagMessage(file_path) - << "failed to parse table: " << err); - return false; - } - } else if (io::IFile* file = zip->FindFile("resources.arsc")) { - std::unique_ptr<io::IData> data = file->OpenAsData(); - if (!data) { - context->GetDiagnostics()->Error(DiagMessage(file_path) << "failed to open resources.arsc"); - return false; - } - - BinaryResourceParser parser(context->GetDiagnostics(), &table, Source(file_path), - data->data(), data->size()); - if (!parser.Parse()) { - return false; - } - } - - if (!options.file_to_dump_path) { - if (proto) { - printer.Println("Proto APK"); - } else { - printer.Println("Binary APK"); - } - Debug::PrintTable(table, options.print_options, &printer); - return true; - } - - io::IFile* file = zip->FindFile(options.file_to_dump_path.value()); - if (file == nullptr) { - context->GetDiagnostics()->Error(DiagMessage(file_path) - << "file '" << options.file_to_dump_path.value() - << "' not found in APK"); - return false; - } - return DumpXmlFile(context, file, proto, &printer); - } - - err.clear(); - - io::FileInputStream input(file_path); - if (input.HadError()) { - context->GetDiagnostics()->Error(DiagMessage(file_path) - << "failed to open file: " << input.GetError()); - return false; - } - - // Try as a compiled file. - ContainerReader reader(&input); - if (reader.HadError()) { - context->GetDiagnostics()->Error(DiagMessage(file_path) - << "failed to read container: " << reader.GetError()); - return false; - } - - printer.Println("AAPT2 Container (APC)"); - ContainerReaderEntry* entry; - while ((entry = reader.Next()) != nullptr) { - if (entry->Type() == ContainerEntryType::kResTable) { - printer.Println("kResTable"); - - pb::ResourceTable pb_table; - if (!entry->GetResTable(&pb_table)) { - context->GetDiagnostics()->Error(DiagMessage(file_path) - << "failed to parse proto table: " << entry->GetError()); - continue; - } - - ResourceTable table; - err.clear(); - if (!DeserializeTableFromPb(pb_table, nullptr /*files*/, &table, &err)) { - context->GetDiagnostics()->Error(DiagMessage(file_path) - << "failed to parse table: " << err); - continue; - } - - printer.Indent(); - Debug::PrintTable(table, options.print_options, &printer); - printer.Undent(); - } else if (entry->Type() == ContainerEntryType::kResFile) { - printer.Println("kResFile"); - pb::internal::CompiledFile pb_compiled_file; - off64_t offset; - size_t length; - if (!entry->GetResFileOffsets(&pb_compiled_file, &offset, &length)) { - context->GetDiagnostics()->Error( - DiagMessage(file_path) << "failed to parse compiled proto file: " << entry->GetError()); - continue; - } - - ResourceFile file; - std::string error; - if (!DeserializeCompiledFileFromPb(pb_compiled_file, &file, &error)) { - context->GetDiagnostics()->Warn(DiagMessage(file_path) - << "failed to parse compiled file: " << error); - continue; - } - - printer.Indent(); - DumpCompiledFile(file, Source(file_path), offset, length, &printer); - printer.Undent(); - } - } - return true; -} - namespace { class DumpContext : public IAaptContext { @@ -299,17 +124,290 @@ class DumpContext : public IAaptContext { } // namespace -int DumpCommand::Action(const std::vector<std::string>& args) { +// Use a smaller buffer so that there is less latency for dumping to stdout. +constexpr size_t kStdOutBufferSize = 1024u; + +int DumpAPCCommand::Action(const std::vector<std::string>& args) { + DumpContext context; + DebugPrintTableOptions print_options; + print_options.show_sources = true; + print_options.show_values = !no_values_; + + if (args.size() < 1) { + diag_->Error(DiagMessage() << "No dump container specified."); + return 1; + } + + io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); + Printer printer(&fout); + + for (auto container : args) { + io::FileInputStream input(container); + if (input.HadError()) { + context.GetDiagnostics()->Error(DiagMessage(container) + << "failed to open file: " << input.GetError()); + return false; + } + + // Try as a compiled file. + ContainerReader reader(&input); + if (reader.HadError()) { + context.GetDiagnostics()->Error(DiagMessage(container) + << "failed to read container: " << reader.GetError()); + return false; + } + + printer.Println("AAPT2 Container (APC)"); + ContainerReaderEntry* entry; + std::string error; + while ((entry = reader.Next()) != nullptr) { + if (entry->Type() == ContainerEntryType::kResTable) { + printer.Println("kResTable"); + + pb::ResourceTable pb_table; + if (!entry->GetResTable(&pb_table)) { + context.GetDiagnostics()->Error(DiagMessage(container) + << "failed to parse proto table: " + << entry->GetError()); + continue; + } + + ResourceTable table; + error.clear(); + if (!DeserializeTableFromPb(pb_table, nullptr /*files*/, &table, &error)) { + context.GetDiagnostics()->Error(DiagMessage(container) + << "failed to parse table: " << error); + continue; + } + + printer.Indent(); + Debug::PrintTable(table, print_options, &printer); + printer.Undent(); + } else if (entry->Type() == ContainerEntryType::kResFile) { + printer.Println("kResFile"); + pb::internal::CompiledFile pb_compiled_file; + off64_t offset; + size_t length; + if (!entry->GetResFileOffsets(&pb_compiled_file, &offset, &length)) { + context.GetDiagnostics()->Error( + DiagMessage(container) << "failed to parse compiled proto file: " + << entry->GetError()); + continue; + } + + ResourceFile file; + if (!DeserializeCompiledFileFromPb(pb_compiled_file, &file, &error)) { + context.GetDiagnostics()->Warn(DiagMessage(container) + << "failed to parse compiled file: " << error); + continue; + } + + printer.Indent(); + DumpCompiledFile(file, Source(container), offset, length, &printer); + printer.Undent(); + } + } + } + + return 0; +} + +int DumpConfigsCommand::Action(const std::vector<std::string>& args) { + if (args.size() < 1) { + diag_->Error(DiagMessage() << "No dump apk specified."); + return 1; + } + + auto loaded_apk = LoadedApk::LoadApkFromPath(args[0], diag_); + if (!loaded_apk) { + return 1; + } + + io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); + Printer printer(&fout); + + // Comparison function used to order configurations + auto compare = [](ConfigDescription c1, ConfigDescription c2) -> bool { + return c1.compare(c2) < 0; + }; + + // Insert the configurations into a set in order to keep every configuarion seen + std::set<ConfigDescription, decltype(compare)> configs(compare); + for (auto& package : loaded_apk->GetResourceTable()->packages) { + for (auto& type : package->types) { + for (auto& entry : type->entries) { + for (auto& value : entry->values) { + configs.insert(value->config); + } + } + } + } + + // Print the configurations in order + for (auto& config : configs) { + printer.Print(StringPrintf("%s\n", config.to_string().data())); + } + + return 0; +} + +int DumpStringsCommand::Action(const std::vector<std::string>& args) { DumpContext context; - context.SetVerbose(verbose_); - options_.print_options.show_sources = true; - options_.print_options.show_values = !no_values_; - for (const std::string& arg : args) { - if (!TryDumpFile(&context, arg, options_)) { + if (args.size() < 1) { + diag_->Error(DiagMessage() << "No dump apk specified."); + return 1; + } + + io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); + Printer printer(&fout); + + for (auto apk : args) { + auto loaded_apk = LoadedApk::LoadApkFromPath(apk, diag_); + if (!loaded_apk) { + return 1; + } + + // Load the run-time xml string pool using the flattened data + BigBuffer buffer(4096); + StringPool::FlattenUtf8(&buffer, loaded_apk->GetResourceTable()->string_pool, + context.GetDiagnostics()); + auto data = buffer.to_string(); + android::ResStringPool pool(data.data(), data.size(), false); + Debug::DumpResStringPool(&pool, &printer); + } + + return 0; +} + +int DumpTableCommand::Action(const std::vector<std::string>& args) { + if (args.size() < 1) { + diag_->Error(DiagMessage() << "No dump apk specified."); + return 1; + } + + io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); + Printer printer(&fout); + + DebugPrintTableOptions print_options; + print_options.show_sources = true; + print_options.show_values = !no_values_; + + for (auto apk : args) { + auto loaded_apk = LoadedApk::LoadApkFromPath(apk, diag_); + if (!loaded_apk) { + return 1; + } + + if (loaded_apk->GetApkFormat()) { + printer.Println("Proto APK"); + } else { + printer.Println("Binary APK"); + } + + Debug::PrintTable(*loaded_apk->GetResourceTable(), print_options, &printer); + } + + return 0; +} + +int DumpXmlTreeCommand::Action(const std::vector<std::string>& args) { + if (args.size() < 1) { + diag_->Error(DiagMessage() << "No dump apk specified"); + return 1; + } + + auto loaded_apk = LoadedApk::LoadApkFromPath(args[0], diag_); + if (!loaded_apk) { + return 1; + } + + io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); + Printer printer(&fout); + + // Dump the xml tree of every passed in file + for (auto file : files_) { + auto xml = loaded_apk->LoadXml(file, diag_); + if (!xml) { return 1; } + + Debug::DumpXml(*xml, &printer); + } + + return 0; +} + +int DumpXmlStringsCommand::Action(const std::vector<std::string>& args) { + DumpContext context; + if (args.size() < 1) { + diag_->Error(DiagMessage() << "No dump apk specified."); + return 1; + } + + auto loaded_apk = LoadedApk::LoadApkFromPath(args[0], diag_); + if (!loaded_apk) { + return 1; + } + + io::FileOutputStream fout(STDOUT_FILENO, kStdOutBufferSize); + Printer printer(&fout); + + // Dump the xml strings of every passed in file + for (auto xml_file : files_) { + android::ResXMLTree tree; + + if (loaded_apk->GetApkFormat() == kProto) { + auto xml = loaded_apk->LoadXml(xml_file, diag_); + if (!xml) { + return 1; + } + + // Flatten the xml document to get a binary representation of the proto xml file + BigBuffer buffer(4096); + XmlFlattenerOptions options = {}; + options.keep_raw_values = true; + XmlFlattener flattener(&buffer, options); + if (!flattener.Consume(&context, xml.get())) { + return 1; + } + + // Load the run-time xml tree using the flattened data + std::string data = buffer.to_string(); + tree.setTo(data.data(), data.size(), /** copyData */ true); + + } else if (loaded_apk->GetApkFormat() == kBinary) { + io::IFile* file = loaded_apk->GetFileCollection()->FindFile(xml_file); + if (!file) { + diag_->Error(DiagMessage(xml_file) << "file '" << xml_file << "' not found in APK"); + return 1; + } + + std::unique_ptr<io::IData> data = file->OpenAsData(); + if (!data) { + diag_->Error(DiagMessage() << "failed to open file"); + return 1; + } + + // Load the run-time xml tree from the file data + tree.setTo(data->data(), data->size(), /** copyData */ true); + } + + Debug::DumpResStringPool(&tree.getStrings(), &printer); } + return 0; } +/** Preform no action because a subcommand is required. */ +int DumpCommand::Action(const std::vector<std::string>& args) { + if (args.size() == 0) { + diag_->Error(DiagMessage() << "no subcommand specified"); + } else { + diag_->Error(DiagMessage() << "unknown subcommand '" << args[0] << "'"); + } + + Usage(&std::cerr); + return 1; +} + } // namespace aapt diff --git a/tools/aapt2/cmd/Dump.h b/tools/aapt2/cmd/Dump.h index 4893c8b76041..03a4fba133ba 100644 --- a/tools/aapt2/cmd/Dump.h +++ b/tools/aapt2/cmd/Dump.h @@ -22,33 +22,117 @@ namespace aapt { -struct DumpOptions { - DebugPrintTableOptions print_options; +/** Command the contents of files generated from the compilation stage. */ +class DumpAPCCommand : public Command { + public: + explicit DumpAPCCommand(IDiagnostics* diag) : Command("apc"), diag_(diag) { + SetDescription("Print the contents of the AAPT2 Container (APC) generated fom compilation."); + AddOptionalSwitch("--no-values", "Suppresses output of values when displaying resource tables.", + &no_values_); + AddOptionalSwitch("-v", "Enables verbose logging.", &verbose_); + } - // The path to a file within an APK to dump. - Maybe<std::string> file_to_dump_path; + int Action(const std::vector<std::string>& args) override; + + private: + IDiagnostics* diag_; + bool verbose_ = false; + bool no_values_ = false; }; -class DumpCommand : public Command { +/** Prints every configuration used by a resource in an APK. */ +class DumpConfigsCommand : public Command { public: - DumpCommand() : Command("dump", "d") { - SetDescription("Prints resource and manifest information."); - AddOptionalSwitch("--no-values", "Suppresses output of values when displaying resource tables.", - &no_values_); - AddOptionalFlag("--file", "Dumps the specified file from the APK passed as arg.", - &options_.file_to_dump_path); - AddOptionalSwitch("-v", "increase verbosity of output", &verbose_); + explicit DumpConfigsCommand(IDiagnostics* diag) : Command("configurations"), diag_(diag) { + SetDescription("Print every configuration used by a resource in the APK."); } int Action(const std::vector<std::string>& args) override; private: - DumpOptions options_; + IDiagnostics* diag_; +}; +/** Prints the contents of the resource table string pool in the APK. */ +class DumpStringsCommand : public Command { + public: + explicit DumpStringsCommand(IDiagnostics* diag) : Command("strings"), diag_(diag) { + SetDescription("Print the contents of the resource table string pool in the APK."); + } + + int Action(const std::vector<std::string>& args) override; + + private: + IDiagnostics* diag_; +}; + +/** Prints the contents of the resource table from the APK. */ +class DumpTableCommand : public Command { + public: + explicit DumpTableCommand(IDiagnostics* diag) : Command("resources"), diag_(diag) { + SetDescription("Print the contents of the resource table from the APK."); + AddOptionalSwitch("--no-values", "Suppresses output of values when displaying resource tables.", + &no_values_); + AddOptionalSwitch("-v", "Enables verbose logging.", &verbose_); + } + + int Action(const std::vector<std::string>& args) override; + + private: + IDiagnostics* diag_; bool verbose_ = false; bool no_values_ = false; }; +/** Prints the string pool of a compiled xml in an APK. */ +class DumpXmlStringsCommand : public Command { +public: + explicit DumpXmlStringsCommand(IDiagnostics* diag) : Command("xmlstrings"), diag_(diag) { + SetDescription("Print the string pool of a compiled xml in an APK."); + AddRequiredFlagList("--file", "A compiled xml file to print", &files_); + } + + int Action(const std::vector<std::string>& args) override; + +private: + IDiagnostics* diag_; + std::vector<std::string> files_; +}; + + +/** Prints the tree of a compiled xml in an APK. */ +class DumpXmlTreeCommand : public Command { + public: + explicit DumpXmlTreeCommand(IDiagnostics* diag) : Command("xmltree"), diag_(diag) { + SetDescription("Print the tree of a compiled xml in an APK."); + AddRequiredFlagList("--file", "A compiled xml file to print", &files_); + } + + int Action(const std::vector<std::string>& args) override; + + private: + IDiagnostics* diag_; + std::vector<std::string> files_; +}; + +/** The default dump command. Preforms no action because a subcommand is required. */ +class DumpCommand : public Command { + public: + explicit DumpCommand(IDiagnostics* diag) : Command("dump", "d"), diag_(diag) { + AddOptionalSubcommand(util::make_unique<DumpAPCCommand>(diag_)); + AddOptionalSubcommand(util::make_unique<DumpConfigsCommand>(diag_)); + AddOptionalSubcommand(util::make_unique<DumpStringsCommand>(diag_)); + AddOptionalSubcommand(util::make_unique<DumpTableCommand>(diag_)); + AddOptionalSubcommand(util::make_unique<DumpXmlStringsCommand>(diag_)); + AddOptionalSubcommand(util::make_unique<DumpXmlTreeCommand>(diag_)); + } + + int Action(const std::vector<std::string>& args) override; + + private: + IDiagnostics* diag_; +}; + }// namespace aapt #endif //AAPT2_DUMP_H diff --git a/tools/aapt2/integration-tests/CompileTest/DirInput/res/drawable/image.png b/tools/aapt2/integration-tests/CompileTest/DirInput/res/drawable/image.png Binary files differnew file mode 100644 index 000000000000..1a3731bbc8b8 --- /dev/null +++ b/tools/aapt2/integration-tests/CompileTest/DirInput/res/drawable/image.png diff --git a/tools/aapt2/integration-tests/CompileTest/DirInput/res/layout/layout.xml b/tools/aapt2/integration-tests/CompileTest/DirInput/res/layout/layout.xml new file mode 100644 index 000000000000..e5835ed1a169 --- /dev/null +++ b/tools/aapt2/integration-tests/CompileTest/DirInput/res/layout/layout.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2017 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<View xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" /> diff --git a/tools/aapt2/integration-tests/CompileTest/DirInput/res/values/values.xml b/tools/aapt2/integration-tests/CompileTest/DirInput/res/values/values.xml new file mode 100644 index 000000000000..62ab6526ef7e --- /dev/null +++ b/tools/aapt2/integration-tests/CompileTest/DirInput/res/values/values.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2018 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> +</resources>
\ No newline at end of file diff --git a/tools/aapt2/integration-tests/CompileTest/ZipInput/res.zip b/tools/aapt2/integration-tests/CompileTest/ZipInput/res.zip Binary files differnew file mode 100644 index 000000000000..00e396d812c7 --- /dev/null +++ b/tools/aapt2/integration-tests/CompileTest/ZipInput/res.zip diff --git a/tools/aapt2/io/FileSystem.cpp b/tools/aapt2/io/FileSystem.cpp index 1387d2218ed4..16a20f4cb09d 100644 --- a/tools/aapt2/io/FileSystem.cpp +++ b/tools/aapt2/io/FileSystem.cpp @@ -16,6 +16,9 @@ #include "io/FileSystem.h" +#include <dirent.h> + +#include "android-base/errors.h" #include "androidfw/StringPiece.h" #include "utils/FileMap.h" @@ -26,6 +29,7 @@ #include "util/Util.h" using ::android::StringPiece; +using ::android::base::SystemErrorCodeToString; namespace aapt { namespace io { @@ -64,6 +68,50 @@ IFile* FileCollectionIterator::Next() { return result; } +std::unique_ptr<FileCollection> FileCollection::Create(const android::StringPiece& root, + std::string* outError) { + std::unique_ptr<FileCollection> collection = + std::unique_ptr<FileCollection>(new FileCollection()); + + std::unique_ptr<DIR, decltype(closedir) *> d(opendir(root.data()), closedir); + if (!d) { + *outError = "failed to open directory: " + SystemErrorCodeToString(errno); + return nullptr; + } + + while (struct dirent *entry = readdir(d.get())) { + std::string prefix_path = root.to_string(); + file::AppendPath(&prefix_path, entry->d_name); + + // The directory to iterate over looking for files + if (file::GetFileType(prefix_path) != file::FileType::kDirectory + || file::IsHidden(prefix_path)) { + continue; + } + + std::unique_ptr<DIR, decltype(closedir)*> subdir(opendir(prefix_path.data()), closedir); + if (!subdir) { + *outError = "failed to open directory: " + SystemErrorCodeToString(errno); + return nullptr; + } + + while (struct dirent* leaf_entry = readdir(subdir.get())) { + std::string full_path = prefix_path; + file::AppendPath(&full_path, leaf_entry->d_name); + + // Do not add folders to the file collection + if (file::GetFileType(full_path) == file::FileType::kDirectory + || file::IsHidden(full_path)) { + continue; + } + + collection->InsertFile(full_path); + } + } + + return collection; +} + IFile* FileCollection::InsertFile(const StringPiece& path) { return (files_[path.to_string()] = util::make_unique<RegularFile>(Source(path))).get(); } diff --git a/tools/aapt2/io/FileSystem.h b/tools/aapt2/io/FileSystem.h index 6be8807735f1..fb6bf6eeabbc 100644 --- a/tools/aapt2/io/FileSystem.h +++ b/tools/aapt2/io/FileSystem.h @@ -59,6 +59,10 @@ class FileCollection : public IFileCollection { public: FileCollection() = default; + /** Creates a file collection containing all files contained in the specified root directory. */ + static std::unique_ptr<FileCollection> Create(const android::StringPiece& path, + std::string* outError); + // Adds a file located at path. Returns the IFile representation of that file. IFile* InsertFile(const android::StringPiece& path); IFile* FindFile(const android::StringPiece& path) override; diff --git a/tools/aapt2/io/ZipArchive.cpp b/tools/aapt2/io/ZipArchive.cpp index 269b6c5a12e1..8e6d7137640a 100644 --- a/tools/aapt2/io/ZipArchive.cpp +++ b/tools/aapt2/io/ZipArchive.cpp @@ -20,6 +20,7 @@ #include "ziparchive/zip_archive.h" #include "Source.h" +#include "util/Files.h" #include "util/Util.h" using ::android::StringPiece; @@ -121,9 +122,14 @@ std::unique_ptr<ZipFileCollection> ZipFileCollection::Create( std::string zip_entry_path = std::string(reinterpret_cast<const char*>(zip_entry_name.name), zip_entry_name.name_length); - std::string nested_path = path.to_string() + "@" + zip_entry_path; - std::unique_ptr<IFile> file = - util::make_unique<ZipFile>(collection->handle_, zip_data, Source(nested_path)); + + // Do not add folders to the file collection + if (util::EndsWith(zip_entry_path, "/")) { + continue; + } + + std::unique_ptr<IFile> file = util::make_unique<ZipFile>(collection->handle_, zip_data, + Source(zip_entry_path, path.to_string())); collection->files_by_name_[zip_entry_path] = file.get(); collection->files_.push_back(std::move(file)); } @@ -132,6 +138,7 @@ std::unique_ptr<ZipFileCollection> ZipFileCollection::Create( if (out_error) *out_error = ErrorCodeString(result); return {}; } + return collection; } diff --git a/tools/aapt2/util/Files.cpp b/tools/aapt2/util/Files.cpp index 5a8ff0926483..7cd023bca369 100644 --- a/tools/aapt2/util/Files.cpp +++ b/tools/aapt2/util/Files.cpp @@ -149,6 +149,10 @@ StringPiece GetExtension(const StringPiece& path) { return {}; } +bool IsHidden(const android::StringPiece& path) { + return util::StartsWith(GetFilename(path), "."); +} + void AppendPath(std::string* base, StringPiece part) { CHECK(base != nullptr); const bool base_has_trailing_sep = (!base->empty() && *(base->end() - 1) == sDirSep); diff --git a/tools/aapt2/util/Files.h b/tools/aapt2/util/Files.h index b26e4fa26de6..219e1a07af95 100644 --- a/tools/aapt2/util/Files.h +++ b/tools/aapt2/util/Files.h @@ -70,6 +70,9 @@ android::StringPiece GetFilename(const android::StringPiece& path); // of the path. android::StringPiece GetExtension(const android::StringPiece& path); +// Returns whether or not the name of the file or directory is a hidden file name +bool IsHidden(const android::StringPiece& path); + // Converts a package name (com.android.app) to a path: com/android/app std::string PackageToPath(const android::StringPiece& package); |