diff options
285 files changed, 3071 insertions, 1302 deletions
diff --git a/Android.mk b/Android.mk index 23aeae547ee5..5d902c205903 100644 --- a/Android.mk +++ b/Android.mk @@ -79,6 +79,7 @@ LOCAL_SRC_FILES += \ core/java/android/app/IBackupAgent.aidl \ core/java/android/app/IEphemeralResolver.aidl \ core/java/android/app/IInstrumentationWatcher.aidl \ + core/java/android/app/IOnNotificationChannelCreatedListener.aidl \ core/java/android/app/INotificationManager.aidl \ core/java/android/app/IProcessObserver.aidl \ core/java/android/app/ISearchManager.aidl \ diff --git a/api/current.txt b/api/current.txt index 8e73b898d423..94890213d3a8 100644 --- a/api/current.txt +++ b/api/current.txt @@ -99,6 +99,7 @@ package android { field public static final java.lang.String READ_FRAME_BUFFER = "android.permission.READ_FRAME_BUFFER"; field public static final deprecated java.lang.String READ_INPUT_STATE = "android.permission.READ_INPUT_STATE"; field public static final java.lang.String READ_LOGS = "android.permission.READ_LOGS"; + field public static final java.lang.String READ_PHONE_NUMBER = "android.permission.READ_PHONE_NUMBER"; field public static final java.lang.String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE"; field public static final java.lang.String READ_SMS = "android.permission.READ_SMS"; field public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS"; @@ -793,10 +794,12 @@ package android { field public static final int layout_margin = 16842998; // 0x10100f6 field public static final int layout_marginBottom = 16843002; // 0x10100fa field public static final int layout_marginEnd = 16843702; // 0x10103b6 + field public static final int layout_marginHorizontal = 16844091; // 0x101053b field public static final int layout_marginLeft = 16842999; // 0x10100f7 field public static final int layout_marginRight = 16843001; // 0x10100f9 field public static final int layout_marginStart = 16843701; // 0x10103b5 field public static final int layout_marginTop = 16843000; // 0x10100f8 + field public static final int layout_marginVertical = 16844092; // 0x101053c field public static final int layout_row = 16843643; // 0x101037b field public static final int layout_rowSpan = 16843644; // 0x101037c field public static final int layout_rowWeight = 16843864; // 0x1010458 @@ -864,7 +867,7 @@ package android { field public static final int mediaRouteTypes = 16843694; // 0x10103ae field public static final int menuCategory = 16843230; // 0x10101de field public static final int mimeType = 16842790; // 0x1010026 - field public static final int min = 16843367; // 0x1010267 + field public static final int min = 16844089; // 0x1010539 field public static final int minDate = 16843583; // 0x101033f field public static final int minEms = 16843098; // 0x101015a field public static final int minHeight = 16843072; // 0x1010140 @@ -927,11 +930,13 @@ package android { field public static final int padding = 16842965; // 0x10100d5 field public static final int paddingBottom = 16842969; // 0x10100d9 field public static final int paddingEnd = 16843700; // 0x10103b4 + field public static final int paddingHorizontal = 16844093; // 0x101053d field public static final int paddingLeft = 16842966; // 0x10100d6 field public static final int paddingMode = 16843863; // 0x1010457 field public static final int paddingRight = 16842968; // 0x10100d8 field public static final int paddingStart = 16843699; // 0x10103b3 field public static final int paddingTop = 16842967; // 0x10100d7 + field public static final int paddingVertical = 16844094; // 0x101053e field public static final int panelBackground = 16842846; // 0x101005e field public static final int panelColorBackground = 16842849; // 0x1010061 field public static final int panelColorForeground = 16842848; // 0x1010060 @@ -1050,7 +1055,7 @@ package android { field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093 field public static final int ringtoneType = 16843257; // 0x10101f9 field public static final int rotation = 16843558; // 0x1010326 - field public static final int rotationAnimation = 16843688; // 0x10103a8 + field public static final int rotationAnimation = 16844090; // 0x101053a field public static final int rotationX = 16843559; // 0x1010327 field public static final int rotationY = 16843560; // 0x1010328 field public static final int roundIcon = 16844076; // 0x101052c @@ -4067,6 +4072,7 @@ package android.app { field public static final java.lang.String OPSTR_READ_CELL_BROADCASTS = "android:read_cell_broadcasts"; field public static final java.lang.String OPSTR_READ_CONTACTS = "android:read_contacts"; field public static final java.lang.String OPSTR_READ_EXTERNAL_STORAGE = "android:read_external_storage"; + field public static final java.lang.String OPSTR_READ_PHONE_NUMBER = "android:read_phone_number"; field public static final java.lang.String OPSTR_READ_PHONE_STATE = "android:read_phone_state"; field public static final java.lang.String OPSTR_READ_SMS = "android:read_sms"; field public static final java.lang.String OPSTR_RECEIVE_MMS = "android:receive_mms"; @@ -5389,7 +5395,7 @@ package android.app { method public void cancel(int); method public void cancel(java.lang.String, int); method public void cancelAll(); - method public void createNotificationChannel(android.app.NotificationChannel); + method public void createNotificationChannel(android.app.NotificationChannel, android.app.NotificationManager.OnNotificationChannelCreatedListener, android.os.Handler); method public void deleteNotificationChannel(java.lang.String); method public android.service.notification.StatusBarNotification[] getActiveNotifications(); method public android.app.AutomaticZenRule getAutomaticZenRule(java.lang.String); @@ -5423,6 +5429,10 @@ package android.app { field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0 } + public static abstract interface NotificationManager.OnNotificationChannelCreatedListener { + method public abstract void onNotificationChannelCreated(android.app.NotificationChannel); + } + public static class NotificationManager.Policy implements android.os.Parcelable { ctor public NotificationManager.Policy(int, int, int); ctor public NotificationManager.Policy(int, int, int, int); @@ -12004,6 +12014,7 @@ package android.graphics { method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent); method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace); method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent); + method public static android.graphics.ColorSpace.Renderer createRenderer(); method public float[] fromXyz(float, float, float); method public abstract float[] fromXyz(float[]); method public static android.graphics.ColorSpace get(android.graphics.ColorSpace.Named); @@ -12085,6 +12096,15 @@ package android.graphics { enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION; } + public static class ColorSpace.Renderer { + method public android.graphics.ColorSpace.Renderer add(android.graphics.ColorSpace, int); + method public android.graphics.ColorSpace.Renderer add(android.graphics.ColorSpace, float, float, float, int); + method public android.graphics.ColorSpace.Renderer clip(boolean); + method public android.graphics.Bitmap render(); + method public android.graphics.ColorSpace.Renderer showWhitePoint(boolean); + method public android.graphics.ColorSpace.Renderer size(int); + } + public static class ColorSpace.Rgb extends android.graphics.ColorSpace { ctor public ColorSpace.Rgb(java.lang.String, float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator); ctor public ColorSpace.Rgb(java.lang.String, float[], float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator, float, float); @@ -37423,6 +37443,7 @@ package android.telephony { method public int getAsuLevel(); method public int getDbm(); method public int getLevel(); + method public int getTimingAdvance(); method public int hashCode(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthGsm> CREATOR; diff --git a/api/system-current.txt b/api/system-current.txt index d5ff780d4651..2190abb2ef67 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -172,6 +172,7 @@ package android { field public static final java.lang.String READ_LOGS = "android.permission.READ_LOGS"; field public static final java.lang.String READ_NETWORK_USAGE_HISTORY = "android.permission.READ_NETWORK_USAGE_HISTORY"; field public static final java.lang.String READ_OEM_UNLOCK_STATE = "android.permission.READ_OEM_UNLOCK_STATE"; + field public static final java.lang.String READ_PHONE_NUMBER = "android.permission.READ_PHONE_NUMBER"; field public static final java.lang.String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE"; field public static final java.lang.String READ_PRIVILEGED_PHONE_STATE = "android.permission.READ_PRIVILEGED_PHONE_STATE"; field public static final java.lang.String READ_SEARCH_INDEXABLES = "android.permission.READ_SEARCH_INDEXABLES"; @@ -900,10 +901,12 @@ package android { field public static final int layout_margin = 16842998; // 0x10100f6 field public static final int layout_marginBottom = 16843002; // 0x10100fa field public static final int layout_marginEnd = 16843702; // 0x10103b6 + field public static final int layout_marginHorizontal = 16844091; // 0x101053b field public static final int layout_marginLeft = 16842999; // 0x10100f7 field public static final int layout_marginRight = 16843001; // 0x10100f9 field public static final int layout_marginStart = 16843701; // 0x10103b5 field public static final int layout_marginTop = 16843000; // 0x10100f8 + field public static final int layout_marginVertical = 16844092; // 0x101053c field public static final int layout_row = 16843643; // 0x101037b field public static final int layout_rowSpan = 16843644; // 0x101037c field public static final int layout_rowWeight = 16843864; // 0x1010458 @@ -971,7 +974,7 @@ package android { field public static final int mediaRouteTypes = 16843694; // 0x10103ae field public static final int menuCategory = 16843230; // 0x10101de field public static final int mimeType = 16842790; // 0x1010026 - field public static final int min = 16843367; // 0x1010267 + field public static final int min = 16844089; // 0x1010539 field public static final int minDate = 16843583; // 0x101033f field public static final int minEms = 16843098; // 0x101015a field public static final int minHeight = 16843072; // 0x1010140 @@ -1034,11 +1037,13 @@ package android { field public static final int padding = 16842965; // 0x10100d5 field public static final int paddingBottom = 16842969; // 0x10100d9 field public static final int paddingEnd = 16843700; // 0x10103b4 + field public static final int paddingHorizontal = 16844093; // 0x101053d field public static final int paddingLeft = 16842966; // 0x10100d6 field public static final int paddingMode = 16843863; // 0x1010457 field public static final int paddingRight = 16842968; // 0x10100d8 field public static final int paddingStart = 16843699; // 0x10103b3 field public static final int paddingTop = 16842967; // 0x10100d7 + field public static final int paddingVertical = 16844094; // 0x101053e field public static final int panelBackground = 16842846; // 0x101005e field public static final int panelColorBackground = 16842849; // 0x1010061 field public static final int panelColorForeground = 16842848; // 0x1010060 @@ -1157,7 +1162,7 @@ package android { field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093 field public static final int ringtoneType = 16843257; // 0x10101f9 field public static final int rotation = 16843558; // 0x1010326 - field public static final int rotationAnimation = 16843688; // 0x10103a8 + field public static final int rotationAnimation = 16844090; // 0x101053a field public static final int rotationX = 16843559; // 0x1010327 field public static final int rotationY = 16843560; // 0x1010328 field public static final int roundIcon = 16844076; // 0x101052c @@ -4203,6 +4208,7 @@ package android.app { field public static final java.lang.String OPSTR_READ_CELL_BROADCASTS = "android:read_cell_broadcasts"; field public static final java.lang.String OPSTR_READ_CONTACTS = "android:read_contacts"; field public static final java.lang.String OPSTR_READ_EXTERNAL_STORAGE = "android:read_external_storage"; + field public static final java.lang.String OPSTR_READ_PHONE_NUMBER = "android:read_phone_number"; field public static final java.lang.String OPSTR_READ_PHONE_STATE = "android:read_phone_state"; field public static final java.lang.String OPSTR_READ_SMS = "android:read_sms"; field public static final java.lang.String OPSTR_RECEIVE_MMS = "android:receive_mms"; @@ -5556,7 +5562,7 @@ package android.app { method public void cancel(int); method public void cancel(java.lang.String, int); method public void cancelAll(); - method public void createNotificationChannel(android.app.NotificationChannel); + method public void createNotificationChannel(android.app.NotificationChannel, android.app.NotificationManager.OnNotificationChannelCreatedListener, android.os.Handler); method public void deleteNotificationChannel(java.lang.String); method public android.service.notification.StatusBarNotification[] getActiveNotifications(); method public android.app.AutomaticZenRule getAutomaticZenRule(java.lang.String); @@ -5590,6 +5596,10 @@ package android.app { field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0 } + public static abstract interface NotificationManager.OnNotificationChannelCreatedListener { + method public abstract void onNotificationChannelCreated(android.app.NotificationChannel); + } + public static class NotificationManager.Policy implements android.os.Parcelable { ctor public NotificationManager.Policy(int, int, int); ctor public NotificationManager.Policy(int, int, int, int); @@ -12489,6 +12499,7 @@ package android.graphics { method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent); method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace); method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent); + method public static android.graphics.ColorSpace.Renderer createRenderer(); method public float[] fromXyz(float, float, float); method public abstract float[] fromXyz(float[]); method public static android.graphics.ColorSpace get(android.graphics.ColorSpace.Named); @@ -12570,6 +12581,15 @@ package android.graphics { enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION; } + public static class ColorSpace.Renderer { + method public android.graphics.ColorSpace.Renderer add(android.graphics.ColorSpace, int); + method public android.graphics.ColorSpace.Renderer add(android.graphics.ColorSpace, float, float, float, int); + method public android.graphics.ColorSpace.Renderer clip(boolean); + method public android.graphics.Bitmap render(); + method public android.graphics.ColorSpace.Renderer showWhitePoint(boolean); + method public android.graphics.ColorSpace.Renderer size(int); + } + public static class ColorSpace.Rgb extends android.graphics.ColorSpace { ctor public ColorSpace.Rgb(java.lang.String, float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator); ctor public ColorSpace.Rgb(java.lang.String, float[], float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator, float, float); @@ -40505,6 +40525,7 @@ package android.telephony { method public int getAsuLevel(); method public int getDbm(); method public int getLevel(); + method public int getTimingAdvance(); method public int hashCode(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthGsm> CREATOR; diff --git a/api/test-current.txt b/api/test-current.txt index 4636bb393197..a55fa4e6b7a1 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -99,6 +99,7 @@ package android { field public static final java.lang.String READ_FRAME_BUFFER = "android.permission.READ_FRAME_BUFFER"; field public static final deprecated java.lang.String READ_INPUT_STATE = "android.permission.READ_INPUT_STATE"; field public static final java.lang.String READ_LOGS = "android.permission.READ_LOGS"; + field public static final java.lang.String READ_PHONE_NUMBER = "android.permission.READ_PHONE_NUMBER"; field public static final java.lang.String READ_PHONE_STATE = "android.permission.READ_PHONE_STATE"; field public static final java.lang.String READ_SMS = "android.permission.READ_SMS"; field public static final java.lang.String READ_SYNC_SETTINGS = "android.permission.READ_SYNC_SETTINGS"; @@ -793,10 +794,12 @@ package android { field public static final int layout_margin = 16842998; // 0x10100f6 field public static final int layout_marginBottom = 16843002; // 0x10100fa field public static final int layout_marginEnd = 16843702; // 0x10103b6 + field public static final int layout_marginHorizontal = 16844091; // 0x101053b field public static final int layout_marginLeft = 16842999; // 0x10100f7 field public static final int layout_marginRight = 16843001; // 0x10100f9 field public static final int layout_marginStart = 16843701; // 0x10103b5 field public static final int layout_marginTop = 16843000; // 0x10100f8 + field public static final int layout_marginVertical = 16844092; // 0x101053c field public static final int layout_row = 16843643; // 0x101037b field public static final int layout_rowSpan = 16843644; // 0x101037c field public static final int layout_rowWeight = 16843864; // 0x1010458 @@ -864,7 +867,7 @@ package android { field public static final int mediaRouteTypes = 16843694; // 0x10103ae field public static final int menuCategory = 16843230; // 0x10101de field public static final int mimeType = 16842790; // 0x1010026 - field public static final int min = 16843367; // 0x1010267 + field public static final int min = 16844089; // 0x1010539 field public static final int minDate = 16843583; // 0x101033f field public static final int minEms = 16843098; // 0x101015a field public static final int minHeight = 16843072; // 0x1010140 @@ -927,11 +930,13 @@ package android { field public static final int padding = 16842965; // 0x10100d5 field public static final int paddingBottom = 16842969; // 0x10100d9 field public static final int paddingEnd = 16843700; // 0x10103b4 + field public static final int paddingHorizontal = 16844093; // 0x101053d field public static final int paddingLeft = 16842966; // 0x10100d6 field public static final int paddingMode = 16843863; // 0x1010457 field public static final int paddingRight = 16842968; // 0x10100d8 field public static final int paddingStart = 16843699; // 0x10103b3 field public static final int paddingTop = 16842967; // 0x10100d7 + field public static final int paddingVertical = 16844094; // 0x101053e field public static final int panelBackground = 16842846; // 0x101005e field public static final int panelColorBackground = 16842849; // 0x1010061 field public static final int panelColorForeground = 16842848; // 0x1010060 @@ -1050,7 +1055,7 @@ package android { field public static final int ringtonePreferenceStyle = 16842899; // 0x1010093 field public static final int ringtoneType = 16843257; // 0x10101f9 field public static final int rotation = 16843558; // 0x1010326 - field public static final int rotationAnimation = 16843688; // 0x10103a8 + field public static final int rotationAnimation = 16844090; // 0x101053a field public static final int rotationX = 16843559; // 0x1010327 field public static final int rotationY = 16843560; // 0x1010328 field public static final int roundIcon = 16844076; // 0x101052c @@ -4077,6 +4082,7 @@ package android.app { field public static final java.lang.String OPSTR_READ_CELL_BROADCASTS = "android:read_cell_broadcasts"; field public static final java.lang.String OPSTR_READ_CONTACTS = "android:read_contacts"; field public static final java.lang.String OPSTR_READ_EXTERNAL_STORAGE = "android:read_external_storage"; + field public static final java.lang.String OPSTR_READ_PHONE_NUMBER = "android:read_phone_number"; field public static final java.lang.String OPSTR_READ_PHONE_STATE = "android:read_phone_state"; field public static final java.lang.String OPSTR_READ_SMS = "android:read_sms"; field public static final java.lang.String OPSTR_RECEIVE_MMS = "android:receive_mms"; @@ -5399,7 +5405,7 @@ package android.app { method public void cancel(int); method public void cancel(java.lang.String, int); method public void cancelAll(); - method public void createNotificationChannel(android.app.NotificationChannel); + method public void createNotificationChannel(android.app.NotificationChannel, android.app.NotificationManager.OnNotificationChannelCreatedListener, android.os.Handler); method public void deleteNotificationChannel(java.lang.String); method public android.service.notification.StatusBarNotification[] getActiveNotifications(); method public android.app.AutomaticZenRule getAutomaticZenRule(java.lang.String); @@ -5434,6 +5440,10 @@ package android.app { field public static final int INTERRUPTION_FILTER_UNKNOWN = 0; // 0x0 } + public static abstract interface NotificationManager.OnNotificationChannelCreatedListener { + method public abstract void onNotificationChannelCreated(android.app.NotificationChannel); + } + public static class NotificationManager.Policy implements android.os.Parcelable { ctor public NotificationManager.Policy(int, int, int); ctor public NotificationManager.Policy(int, int, int, int); @@ -12035,6 +12045,7 @@ package android.graphics { method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent); method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace); method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent); + method public static android.graphics.ColorSpace.Renderer createRenderer(); method public float[] fromXyz(float, float, float); method public abstract float[] fromXyz(float[]); method public static android.graphics.ColorSpace get(android.graphics.ColorSpace.Named); @@ -12116,6 +12127,15 @@ package android.graphics { enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION; } + public static class ColorSpace.Renderer { + method public android.graphics.ColorSpace.Renderer add(android.graphics.ColorSpace, int); + method public android.graphics.ColorSpace.Renderer add(android.graphics.ColorSpace, float, float, float, int); + method public android.graphics.ColorSpace.Renderer clip(boolean); + method public android.graphics.Bitmap render(); + method public android.graphics.ColorSpace.Renderer showWhitePoint(boolean); + method public android.graphics.ColorSpace.Renderer size(int); + } + public static class ColorSpace.Rgb extends android.graphics.ColorSpace { ctor public ColorSpace.Rgb(java.lang.String, float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator); ctor public ColorSpace.Rgb(java.lang.String, float[], float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator, float, float); @@ -37519,6 +37539,7 @@ package android.telephony { method public int getAsuLevel(); method public int getDbm(); method public int getLevel(); + method public int getTimingAdvance(); method public int hashCode(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telephony.CellSignalStrengthGsm> CREATOR; diff --git a/cmds/app_process/Android.mk b/cmds/app_process/Android.mk index e18de8e68620..eaad3a7ec529 100644 --- a/cmds/app_process/Android.mk +++ b/cmds/app_process/Android.mk @@ -1,78 +1,67 @@ LOCAL_PATH:= $(call my-dir) -# This is a list of libraries that need to be included in order to avoid -# bad apps. This prevents a library from having a mismatch when resolving -# new/delete from an app shared library. -# See b/21032018 for more details. app_process_common_shared_libs := \ - libwilhelm \ - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES:= \ - app_main.cpp - -LOCAL_LDFLAGS_32 := -Wl,--version-script,art/sigchainlib/version-script32.txt -Wl,--export-dynamic -LOCAL_LDFLAGS_64 := -Wl,--version-script,art/sigchainlib/version-script64.txt -Wl,--export-dynamic - -LOCAL_SHARED_LIBRARIES := \ - libdl \ + libandroid_runtime \ + libbinder \ libcutils \ - libutils \ + libdl \ liblog \ - libbinder \ libnativeloader \ - libandroid_runtime \ - $(app_process_common_shared_libs) \ - -LOCAL_WHOLE_STATIC_LIBRARIES := libsigchain + libutils \ -LOCAL_MODULE:= app_process -LOCAL_MULTILIB := both -LOCAL_MODULE_STEM_32 := app_process32 -LOCAL_MODULE_STEM_64 := app_process64 +# This is a list of libraries that need to be included in order to avoid +# bad apps. This prevents a library from having a mismatch when resolving +# new/delete from an app shared library. +# See b/21032018 for more details. +app_process_common_shared_libs += \ + libwilhelm \ -LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code +app_process_common_static_libs := \ + libsigchain \ -include $(BUILD_EXECUTABLE) +app_process_src_files := \ + app_main.cpp \ -# Create a symlink from app_process to app_process32 or 64 -# depending on the target configuration. -include $(BUILD_SYSTEM)/executable_prefer_symlink.mk +app_process_cflags := \ + -Wall -Werror -Wunused -Wunreachable-code -# Build a variant of app_process binary linked with ASan runtime. -# ARM-only at the moment. -ifeq ($(TARGET_ARCH),arm) +app_process_ldflags_32 := \ + -Wl,--version-script,art/sigchainlib/version-script32.txt -Wl,--export-dynamic +app_process_ldflags_64 := \ + -Wl,--version-script,art/sigchainlib/version-script64.txt -Wl,--export-dynamic include $(CLEAR_VARS) -LOCAL_SRC_FILES:= \ - app_main.cpp +LOCAL_SRC_FILES:= $(app_process_src_files) -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - liblog \ - libbinder \ - libandroid_runtime \ - $(app_process_common_shared_libs) \ +LOCAL_LDFLAGS_32 := $(app_process_ldflags_32) +LOCAL_LDFLAGS_64 := $(app_process_ldflags_64) -LOCAL_WHOLE_STATIC_LIBRARIES := libsigchain +LOCAL_SHARED_LIBRARIES := $(app_process_common_shared_libs) -LOCAL_LDFLAGS := -ldl -LOCAL_LDFLAGS_32 := -Wl,--version-script,art/sigchainlib/version-script32.txt -Wl,--export-dynamic -LOCAL_LDFLAGS_64 := -Wl,--version-script,art/sigchainlib/version-script64.txt -Wl,--export-dynamic +LOCAL_WHOLE_STATIC_LIBRARIES := $(app_process_common_static_libs) -LOCAL_MODULE := app_process__asan +LOCAL_MODULE:= app_process LOCAL_MULTILIB := both LOCAL_MODULE_STEM_32 := app_process32 LOCAL_MODULE_STEM_64 := app_process64 -LOCAL_SANITIZE := address -LOCAL_MODULE_PATH := $(TARGET_OUT_EXECUTABLES)/asan +LOCAL_CFLAGS += $(app_process_cflags) -LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code +# In SANITIZE_LITE mode, we create the sanitized binary in a separate location (but reuse +# the same module). Using the same module also works around an issue with make: binaries +# that depend on sanitized libraries will be relinked, even if they set LOCAL_SANITIZE := never. +# +# Also pull in the asanwrapper helper. +ifeq ($(SANITIZE_LITE),true) +LOCAL_MODULE_PATH := $(TARGET_OUT_EXECUTABLES)/asan +LOCAL_REQUIRED_MODULES := asanwrapper +endif include $(BUILD_EXECUTABLE) -endif # ifeq($(TARGET_ARCH),arm) +# Create a symlink from app_process to app_process32 or 64 +# depending on the target configuration. +ifneq ($(SANITIZE_LITE),true) +include $(BUILD_SYSTEM)/executable_prefer_symlink.mk +endif diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index bfa6d349a9f6..913edfd81081 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -62,6 +62,13 @@ public abstract class ActivityManagerInternal { public static final int APP_TRANSITION_TIMEOUT = 3; /** + * Grant Uri permissions from one app to another. This method only extends + * permission grants if {@code callingUid} has permission to them. + */ + public abstract void grantUriPermissionFromIntent(int callingUid, String targetPkg, + Intent intent, int targetUserId); + + /** * Verify that calling app has access to the given provider. */ public abstract String checkContentProviderAccess(String authority, int userId); diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index ba6bc159cdf2..67fbc5a46832 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -241,8 +241,10 @@ public class AppOpsManager { public static final int OP_RUN_IN_BACKGROUND = 63; /** @hide */ public static final int OP_AUDIO_ACCESSIBILITY_VOLUME = 64; + /** @hide Read the phone number. */ + public static final int OP_READ_PHONE_NUMBER = 65; /** @hide */ - public static final int _NUM_OP = 65; + public static final int _NUM_OP = 66; /** Access to coarse location information. */ public static final String OPSTR_COARSE_LOCATION = "android:coarse_location"; @@ -343,6 +345,8 @@ public class AppOpsManager { /** @hide Get device accounts. */ public static final String OPSTR_GET_ACCOUNTS = "android:get_accounts"; + public static final String OPSTR_READ_PHONE_NUMBER + = "android:read_phone_number"; private static final int[] RUNTIME_PERMISSIONS_OPS = { // Contacts @@ -367,6 +371,7 @@ public class AppOpsManager { OP_FINE_LOCATION, // Phone OP_READ_PHONE_STATE, + OP_READ_PHONE_NUMBER, OP_CALL_PHONE, OP_READ_CALL_LOG, OP_WRITE_CALL_LOG, @@ -455,6 +460,7 @@ public class AppOpsManager { OP_GET_ACCOUNTS, OP_RUN_IN_BACKGROUND, OP_AUDIO_ACCESSIBILITY_VOLUME, + OP_READ_PHONE_NUMBER, }; /** @@ -527,6 +533,7 @@ public class AppOpsManager { OPSTR_GET_ACCOUNTS, null, null, // OP_AUDIO_ACCESSIBILITY_VOLUME + OPSTR_READ_PHONE_NUMBER, }; /** @@ -599,6 +606,7 @@ public class AppOpsManager { "GET_ACCOUNTS", "RUN_IN_BACKGROUND", "AUDIO_ACCESSIBILITY_VOLUME", + "READ_PHONE_NUMBER", }; /** @@ -671,6 +679,7 @@ public class AppOpsManager { Manifest.permission.GET_ACCOUNTS, null, // no permission for running in background null, // no permission for changing accessibility volume + Manifest.permission.READ_PHONE_NUMBER, }; /** @@ -744,6 +753,7 @@ public class AppOpsManager { null, // GET_ACCOUNTS null, // RUN_IN_BACKGROUND UserManager.DISALLOW_ADJUST_VOLUME, //AUDIO_ACCESSIBILITY_VOLUME + null, // READ_PHONE_NUMBER }; /** @@ -816,6 +826,7 @@ public class AppOpsManager { false, // GET_ACCOUNTS false, // RUN_IN_BACKGROUND false, // AUDIO_ACCESSIBILITY_VOLUME + false, // READ_PHONE_NUMBER }; /** @@ -887,6 +898,7 @@ public class AppOpsManager { AppOpsManager.MODE_ALLOWED, AppOpsManager.MODE_ALLOWED, // OP_RUN_IN_BACKGROUND AppOpsManager.MODE_ALLOWED, // OP_AUDIO_ACCESSIBILITY_VOLUME + AppOpsManager.MODE_ALLOWED, }; /** @@ -962,6 +974,7 @@ public class AppOpsManager { false, false, false, // OP_AUDIO_ACCESSIBILITY_VOLUME + false, }; /** diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index 2a7341ae6911..927ef6c35b7a 100644 --- a/core/java/android/app/INotificationManager.aidl +++ b/core/java/android/app/INotificationManager.aidl @@ -2,21 +2,22 @@ ** ** Copyright 2007, 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 +** 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 +** 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 +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and ** limitations under the License. */ package android.app; +import android.app.IOnNotificationChannelCreatedListener; import android.app.ITransientNotification; import android.app.Notification; import android.app.NotificationChannel; @@ -58,7 +59,8 @@ interface INotificationManager int getImportance(String pkg, int uid); int getPackageImportance(String pkg); - void createNotificationChannel(String pkg, in NotificationChannel channel); + void createNotificationChannel(String pkg, in NotificationChannel channel, + in IOnNotificationChannelCreatedListener listener); void updateNotificationChannelForPackage(String pkg, int uid, in NotificationChannel channel); NotificationChannel getNotificationChannel(String pkg, String channelId); NotificationChannel getNotificationChannelForPackage(String pkg, int uid, String channelId); diff --git a/core/java/android/app/IOnNotificationChannelCreatedListener.aidl b/core/java/android/app/IOnNotificationChannelCreatedListener.aidl new file mode 100644 index 000000000000..8e6654200017 --- /dev/null +++ b/core/java/android/app/IOnNotificationChannelCreatedListener.aidl @@ -0,0 +1,25 @@ +/* +** +** Copyright 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. +*/ + +package android.app; + +import android.app.NotificationChannel; + +/** {@hide} */ +oneway interface IOnNotificationChannelCreatedListener { + void onNotificationChannelCreated(in NotificationChannel channel); +} diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index 047f349b1e54..7693d7666e19 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -18,6 +18,7 @@ package android.app; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.SdkConstant; import android.annotation.TestApi; import android.app.Notification.Builder; @@ -30,6 +31,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; +import android.os.Looper; import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; @@ -379,12 +381,42 @@ public class NotificationManager } /** + * Listener passed to {@link NotificationManager#createNotificationChannel} to notify + * caller of result. + */ + public interface OnNotificationChannelCreatedListener { + /** + * @param createdChannel NotificationChannel created by the system. Value is null iff an + * exception was thrown during channel creation. + */ + public void onNotificationChannelCreated(NotificationChannel createdChannel); + } + + /** * Creates a notification channel that notifications can be posted to. + * + * @param channel the channel to attempt to create. Note that the created channel may differ + * from this value. + * @param listener Called when operation is finished. + * @param handler The handler to invoke the listener on, or {@code null} to use the main + * handler. */ - public void createNotificationChannel(NotificationChannel channel) { + public void createNotificationChannel( + @NonNull NotificationChannel channel, + @NonNull OnNotificationChannelCreatedListener listener, + @Nullable Handler handler) { INotificationManager service = getService(); try { - service.createNotificationChannel(mContext.getPackageName(), channel); + final Handler actualHandler = + handler != null ? handler : new Handler(Looper.getMainLooper()); + service.createNotificationChannel(mContext.getPackageName(), channel, + new IOnNotificationChannelCreatedListener.Stub() { + @Override public void onNotificationChannelCreated( + NotificationChannel channel) { + actualHandler.post( + () -> { listener.onNotificationChannelCreated(channel); }); + } + }); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -583,7 +615,7 @@ public class NotificationManager * <p> * Callers can only update rules that they own. See {@link AutomaticZenRule#getOwner}. * @param id The id of the rule to update - * @param automaticZenRule the rule to update. + * @param automaticZenRule the rule to update. * @return Whether the rule was successfully updated. */ public boolean updateAutomaticZenRule(String id, AutomaticZenRule automaticZenRule) { diff --git a/core/java/android/content/pm/LauncherActivityInfo.java b/core/java/android/content/pm/LauncherActivityInfo.java index 2beca7bb6022..358787e66428 100644 --- a/core/java/android/content/pm/LauncherActivityInfo.java +++ b/core/java/android/content/pm/LauncherActivityInfo.java @@ -89,6 +89,7 @@ public class LauncherActivityInfo { * @return The label for the activity. */ public CharSequence getLabel() { + // TODO: Go through LauncherAppsService return mActivityInfo.loadLabel(mPm); } @@ -101,6 +102,7 @@ public class LauncherActivityInfo { * @return The drawable associated with the activity. */ public Drawable getIcon(int density) { + // TODO: Go through LauncherAppsService final int iconRes = mActivityInfo.getIconResource(); Drawable icon = null; // Get the preferred density icon from the app's resources @@ -144,8 +146,9 @@ public class LauncherActivityInfo { */ public long getFirstInstallTime() { try { + // TODO: Go through LauncherAppsService return mPm.getPackageInfo(mActivityInfo.packageName, - PackageManager.GET_UNINSTALLED_PACKAGES).firstInstallTime; + PackageManager.MATCH_UNINSTALLED_PACKAGES).firstInstallTime; } catch (NameNotFoundException nnfe) { // Sorry, can't find package return 0; @@ -171,6 +174,7 @@ public class LauncherActivityInfo { Drawable originalIcon = getIcon(density); if (originalIcon instanceof BitmapDrawable) { + // TODO: Go through LauncherAppsService return mPm.getUserBadgedIcon(originalIcon, mUser); } else { Log.e(TAG, "Unable to create badged icon for " + mActivityInfo); diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java index 6b23da93bb86..7fc80442be90 100644 --- a/core/java/android/content/pm/LauncherApps.java +++ b/core/java/android/content/pm/LauncherApps.java @@ -447,12 +447,12 @@ public class LauncherApps { /** * Retrieve all of the information we know about a particular package / application. * - * @param packageName The package of the application + * @param packageName The package name of the application * @param flags Additional option flags {@link PackageManager#getApplicationInfo} * @param user The UserHandle of the profile. * * @return An {@link ApplicationInfo} containing information about the package or - * null of the package isn't found. + * null if the package isn't installed for the given user. * @hide */ public ApplicationInfo getApplicationInfo(String packageName, @ApplicationInfoFlags int flags, diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 5087bc8555a6..3f052d38a2c6 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -435,6 +435,20 @@ public abstract class PackageManager { public static final int MATCH_FACTORY_ONLY = 0x00200000; /** + * Allows querying of packages installed for any user, not just the specific one. This flag + * is only meant for use by apps that have INTERACT_ACROSS_USERS_FULL permission. + * @hide + */ + public static final int MATCH_ANY_USER = 0x00400000; + + /** + * Combination of MATCH_ANY_USER and MATCH_UNINSTALLED_PACKAGES to mean any known + * package. + * @hide + */ + public static final int MATCH_KNOWN_PACKAGES = MATCH_UNINSTALLED_PACKAGES | MATCH_ANY_USER; + + /** * Internal flag used to indicate that a system component has done their * homework and verified that they correctly handle packages and components * that come and go over time. In particular: diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index bb9c18abe1bc..a91027162798 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -478,20 +478,25 @@ public class PackageParser { /** * Returns true if the package is installed and not hidden, or if the caller * explicitly wanted all uninstalled and hidden packages as well. + * @param appInfo The applicationInfo of the app being checked. */ - private static boolean checkUseInstalledOrHidden(int flags, PackageUserState state) { - return (state.installed && !state.hidden) - || (flags & PackageManager.GET_UNINSTALLED_PACKAGES) != 0; + private static boolean checkUseInstalledOrHidden(int flags, PackageUserState state, + ApplicationInfo appInfo) { + // If available for the target user, or trying to match uninstalled packages and it's + // a system app. + return state.isAvailable(flags) + || (appInfo != null && appInfo.isSystemApp() + && (flags & PackageManager.MATCH_KNOWN_PACKAGES) != 0); } public static boolean isAvailable(PackageUserState state) { - return checkUseInstalledOrHidden(0, state); + return checkUseInstalledOrHidden(0, state, null); } public static PackageInfo generatePackageInfo(PackageParser.Package p, int gids[], int flags, long firstInstallTime, long lastUpdateTime, Set<String> grantedPermissions, PackageUserState state, int userId) { - if (!checkUseInstalledOrHidden(flags, state) || !p.isMatch(flags)) { + if (!checkUseInstalledOrHidden(flags, state, p.applicationInfo) || !p.isMatch(flags)) { return null; } PackageInfo pi = new PackageInfo(); @@ -5445,7 +5450,7 @@ public class PackageParser { public static ApplicationInfo generateApplicationInfo(Package p, int flags, PackageUserState state, int userId) { if (p == null) return null; - if (!checkUseInstalledOrHidden(flags, state) || !p.isMatch(flags)) { + if (!checkUseInstalledOrHidden(flags, state, p.applicationInfo) || !p.isMatch(flags)) { return null; } if (!copyNeeded(flags, p, state, null, userId) @@ -5483,7 +5488,7 @@ public class PackageParser { public static ApplicationInfo generateApplicationInfo(ApplicationInfo ai, int flags, PackageUserState state, int userId) { if (ai == null) return null; - if (!checkUseInstalledOrHidden(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state, ai)) { return null; } // This is only used to return the ResolverActivity; we will just always @@ -5549,7 +5554,7 @@ public class PackageParser { public static final ActivityInfo generateActivityInfo(Activity a, int flags, PackageUserState state, int userId) { if (a == null) return null; - if (!checkUseInstalledOrHidden(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state, a.owner.applicationInfo)) { return null; } if (!copyNeeded(flags, a.owner, state, a.metaData, userId)) { @@ -5565,7 +5570,7 @@ public class PackageParser { public static final ActivityInfo generateActivityInfo(ActivityInfo ai, int flags, PackageUserState state, int userId) { if (ai == null) return null; - if (!checkUseInstalledOrHidden(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state, ai.applicationInfo)) { return null; } // This is only used to return the ResolverActivity; we will just always @@ -5603,7 +5608,7 @@ public class PackageParser { public static final ServiceInfo generateServiceInfo(Service s, int flags, PackageUserState state, int userId) { if (s == null) return null; - if (!checkUseInstalledOrHidden(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state, s.owner.applicationInfo)) { return null; } if (!copyNeeded(flags, s.owner, state, s.metaData, userId)) { @@ -5652,7 +5657,7 @@ public class PackageParser { public static final ProviderInfo generateProviderInfo(Provider p, int flags, PackageUserState state, int userId) { if (p == null) return null; - if (!checkUseInstalledOrHidden(flags, state)) { + if (!checkUseInstalledOrHidden(flags, state, p.owner.applicationInfo)) { return null; } if (!copyNeeded(flags, p.owner, state, p.metaData, userId) diff --git a/core/java/android/content/pm/PackageUserState.java b/core/java/android/content/pm/PackageUserState.java index 8ce8a13ea783..1821458c9869 100644 --- a/core/java/android/content/pm/PackageUserState.java +++ b/core/java/android/content/pm/PackageUserState.java @@ -29,7 +29,6 @@ import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import android.util.ArraySet; -import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.ArrayUtils; /** @@ -80,9 +79,14 @@ public class PackageUserState { /** * Test if this package is installed. */ - public boolean isInstalled(int flags) { - return (this.installed && !this.hidden) - || (flags & PackageManager.MATCH_UNINSTALLED_PACKAGES) != 0; + public boolean isAvailable(int flags) { + // True if it is installed for this user and it is not hidden. If it is hidden, + // still return true if the caller requested MATCH_UNINSTALLED_PACKAGES + final boolean matchAnyUser = (flags & PackageManager.MATCH_ANY_USER) != 0; + final boolean matchUninstalled = (flags & PackageManager.MATCH_UNINSTALLED_PACKAGES) != 0; + return matchAnyUser + || (this.installed + && (!this.hidden || matchUninstalled)); } /** @@ -95,11 +99,14 @@ public class PackageUserState { * </p> */ public boolean isMatch(ComponentInfo componentInfo, int flags) { - if (!isInstalled(flags)) return false; + final boolean isSystemApp = componentInfo.applicationInfo.isSystemApp(); + final boolean matchUninstalled = (flags & PackageManager.MATCH_KNOWN_PACKAGES) != 0; + if (!isAvailable(flags) + && !(isSystemApp && matchUninstalled)) return false; if (!isEnabled(componentInfo, flags)) return false; if ((flags & MATCH_SYSTEM_ONLY) != 0) { - if (!componentInfo.applicationInfo.isSystemApp()) { + if (!isSystemApp) { return false; } } diff --git a/core/java/android/net/NetworkScoreManager.java b/core/java/android/net/NetworkScoreManager.java index c2286ad8ae13..a0f74ec9ff21 100644 --- a/core/java/android/net/NetworkScoreManager.java +++ b/core/java/android/net/NetworkScoreManager.java @@ -144,7 +144,7 @@ public class NetworkScoreManager { * scorer. */ public String getActiveScorerPackage() { - NetworkScorerAppData app = NetworkScorerAppManager.getActiveScorer(mContext); + NetworkScorerAppData app = new NetworkScorerAppManager(mContext).getActiveScorer(); if (app == null) { return null; } diff --git a/core/java/android/net/NetworkScorerAppManager.java b/core/java/android/net/NetworkScorerAppManager.java index 29291ca90467..ebb31c9056a9 100644 --- a/core/java/android/net/NetworkScorerAppManager.java +++ b/core/java/android/net/NetworkScorerAppManager.java @@ -41,14 +41,17 @@ import java.util.List; * * @hide */ -public final class NetworkScorerAppManager { +public class NetworkScorerAppManager { private static final String TAG = "NetworkScorerAppManager"; private static final Intent SCORE_INTENT = new Intent(NetworkScoreManager.ACTION_SCORE_NETWORKS); - /** This class cannot be instantiated. */ - private NetworkScorerAppManager() {} + private final Context mContext; + + public NetworkScorerAppManager(Context context) { + mContext = context; + } public static class NetworkScorerAppData { /** Package name of this scorer app. */ @@ -108,7 +111,7 @@ public final class NetworkScorerAppManager { * * @return the list of scorers, or the empty list if there are no valid scorers. */ - public static Collection<NetworkScorerAppData> getAllValidScorers(Context context) { + public Collection<NetworkScorerAppData> getAllValidScorers() { // Network scorer apps can only run as the primary user so exit early if we're not the // primary user. if (UserHandle.getCallingUserId() != UserHandle.USER_SYSTEM) { @@ -116,7 +119,7 @@ public final class NetworkScorerAppManager { } List<NetworkScorerAppData> scorers = new ArrayList<>(); - PackageManager pm = context.getPackageManager(); + PackageManager pm = mContext.getPackageManager(); // Only apps installed under the primary user of the device can be scorers. // TODO: http://b/23422763 List<ResolveInfo> receivers = @@ -179,10 +182,10 @@ public final class NetworkScorerAppManager { * selected) or if the previously-set scorer is no longer a valid scorer app (e.g. because * it was disabled or uninstalled). */ - public static NetworkScorerAppData getActiveScorer(Context context) { - String scorerPackage = Settings.Global.getString(context.getContentResolver(), + public NetworkScorerAppData getActiveScorer() { + String scorerPackage = Settings.Global.getString(mContext.getContentResolver(), Settings.Global.NETWORK_SCORER_APP); - return getScorer(context, scorerPackage); + return getScorer(scorerPackage); } /** @@ -190,13 +193,12 @@ public final class NetworkScorerAppManager { * * <p>The caller must have permission to write to {@link android.provider.Settings.Global}. * - * @param context the context of the calling application * @param packageName the packageName of the new scorer to use. If null, scoring will be * disabled. Otherwise, the scorer will only be set if it is a valid scorer application. * @return true if the scorer was changed, or false if the package is not a valid scorer. */ - public static boolean setActiveScorer(Context context, String packageName) { - String oldPackageName = Settings.Global.getString(context.getContentResolver(), + public boolean setActiveScorer(String packageName) { + String oldPackageName = Settings.Global.getString(mContext.getContentResolver(), Settings.Global.NETWORK_SCORER_APP); if (TextUtils.equals(oldPackageName, packageName)) { // No change. @@ -206,13 +208,13 @@ public final class NetworkScorerAppManager { Log.i(TAG, "Changing network scorer from " + oldPackageName + " to " + packageName); if (packageName == null) { - Settings.Global.putString(context.getContentResolver(), + Settings.Global.putString(mContext.getContentResolver(), Settings.Global.NETWORK_SCORER_APP, null); return true; } else { // We only make the change if the new package is valid. - if (getScorer(context, packageName) != null) { - Settings.Global.putString(context.getContentResolver(), + if (getScorer(packageName) != null) { + Settings.Global.putString(mContext.getContentResolver(), Settings.Global.NETWORK_SCORER_APP, packageName); return true; } else { @@ -223,8 +225,8 @@ public final class NetworkScorerAppManager { } /** Determine whether the application with the given UID is the enabled scorer. */ - public static boolean isCallerActiveScorer(Context context, int callingUid) { - NetworkScorerAppData defaultApp = getActiveScorer(context); + public boolean isCallerActiveScorer(int callingUid) { + NetworkScorerAppData defaultApp = getActiveScorer(); if (defaultApp == null) { return false; } @@ -233,16 +235,16 @@ public final class NetworkScorerAppManager { } // To be extra safe, ensure the caller holds the SCORE_NETWORKS permission. It always // should, since it couldn't become the active scorer otherwise, but this can't hurt. - return context.checkCallingPermission(Manifest.permission.SCORE_NETWORKS) == + return mContext.checkCallingPermission(Manifest.permission.SCORE_NETWORKS) == PackageManager.PERMISSION_GRANTED; } /** Returns the {@link NetworkScorerAppData} for the given app, or null if it's not a scorer. */ - public static NetworkScorerAppData getScorer(Context context, String packageName) { + public NetworkScorerAppData getScorer(String packageName) { if (TextUtils.isEmpty(packageName)) { return null; } - Collection<NetworkScorerAppData> applications = getAllValidScorers(context); + Collection<NetworkScorerAppData> applications = getAllValidScorers(); for (NetworkScorerAppData app : applications) { if (packageName.equals(app.mPackageName)) { return app; diff --git a/core/java/android/os/IProxyFileDescriptorCallback.java b/core/java/android/os/IProxyFileDescriptorCallback.java new file mode 100644 index 000000000000..e41e19422a27 --- /dev/null +++ b/core/java/android/os/IProxyFileDescriptorCallback.java @@ -0,0 +1,59 @@ +/* + * 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. + */ + +package android.os; + +import android.system.ErrnoException; + +/** + * Callback that handles file system requests from ProxyFileDescriptor. + * @hide + */ +public interface IProxyFileDescriptorCallback { + /** + * Returns size of bytes provided by the file descriptor. + * @return Size of bytes + * @throws ErrnoException + */ + long onGetSize() throws ErrnoException; + + /** + * Provides bytes read from file descriptor. + * It needs to return exact requested size of bytes unless it reaches file end. + * @param offset Where to read bytes from. + * @param size Size for read bytes. + * @param data Byte array to store read bytes. + * @return Size of bytes returned by the function. + * @throws ErrnoException + */ + int onRead(long offset, int size, byte[] data) throws ErrnoException; + + /** + * Handles bytes written to file descriptor. + * @param offset Where to write bytes to. + * @param size Size for write bytes. + * @param data Byte array to be written to somewhere. + * @return Size of bytes processed by the function. + * @throws ErrnoException + */ + int onWrite(long offset, int size, byte[] data) throws ErrnoException; + + /** + * Processes fsync request. + * @throws ErrnoException + */ + void onFsync() throws ErrnoException; +} diff --git a/core/java/android/service/notification/StatusBarNotification.java b/core/java/android/service/notification/StatusBarNotification.java index dfb6b8639912..b0b206566a43 100644 --- a/core/java/android/service/notification/StatusBarNotification.java +++ b/core/java/android/service/notification/StatusBarNotification.java @@ -349,7 +349,8 @@ public class StatusBarNotification implements Parcelable { if (mContext == null) { try { ApplicationInfo ai = context.getPackageManager() - .getApplicationInfo(pkg, PackageManager.GET_UNINSTALLED_PACKAGES); + .getApplicationInfoAsUser(pkg, PackageManager.MATCH_UNINSTALLED_PACKAGES, + getUserId()); mContext = context.createApplicationContext(ai, Context.CONTEXT_RESTRICTED); } catch (PackageManager.NameNotFoundException e) { diff --git a/core/java/android/service/persistentdata/PersistentDataBlockManager.java b/core/java/android/service/persistentdata/PersistentDataBlockManager.java index 0f92ed04a457..8e8c019e6398 100644 --- a/core/java/android/service/persistentdata/PersistentDataBlockManager.java +++ b/core/java/android/service/persistentdata/PersistentDataBlockManager.java @@ -79,6 +79,9 @@ public class PersistentDataBlockManager { * Returns the number of bytes written or -1 on error. If the block is too big * to fit on the partition, returns -MAX_BLOCK_SIZE. * + * {@link #wipe} will block any further {@link #write} operation until reboot, + * in which case -1 will be returned. + * * @param data the data to write */ public int write(byte[] data) { @@ -129,6 +132,8 @@ public class PersistentDataBlockManager { /** * Zeroes the previously written block in its entirety. Calling this method * will erase all data written to the persistent data partition. + * It will also prevent any further {@link #write} operation until reboot, + * in order to prevent a potential race condition. See b/30352311. */ public void wipe() { try { diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 84d7548363d1..f9a03c09d6bc 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -4194,6 +4194,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, int endPadding = UNDEFINED_PADDING; int padding = -1; + int paddingHorizontal = -1; + int paddingVertical = -1; int viewFlagValues = 0; int viewFlagMasks = 0; @@ -4240,6 +4242,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback, leftPaddingDefined = true; rightPaddingDefined = true; break; + case com.android.internal.R.styleable.View_paddingHorizontal: + paddingHorizontal = a.getDimensionPixelSize(attr, -1); + mUserPaddingLeftInitial = paddingHorizontal; + mUserPaddingRightInitial = paddingHorizontal; + leftPaddingDefined = true; + rightPaddingDefined = true; + break; + case com.android.internal.R.styleable.View_paddingVertical: + paddingVertical = a.getDimensionPixelSize(attr, -1); + break; case com.android.internal.R.styleable.View_paddingLeft: leftPadding = a.getDimensionPixelSize(attr, -1); mUserPaddingLeftInitial = leftPadding; @@ -4647,6 +4659,17 @@ public class View implements Drawable.Callback, KeyEvent.Callback, bottomPadding = padding; mUserPaddingLeftInitial = padding; mUserPaddingRightInitial = padding; + } else { + if (paddingHorizontal >= 0) { + leftPadding = paddingHorizontal; + rightPadding = paddingHorizontal; + mUserPaddingLeftInitial = paddingHorizontal; + mUserPaddingRightInitial = paddingHorizontal; + } + if (paddingVertical >= 0) { + topPadding = paddingVertical; + bottomPadding = paddingVertical; + } } if (isRtlCompatibilityMode()) { diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index c0191ce0b791..0f8200d794ff 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -7357,34 +7357,48 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager rightMargin= margin; bottomMargin = margin; } else { - leftMargin = a.getDimensionPixelSize( - R.styleable.ViewGroup_MarginLayout_layout_marginLeft, - UNDEFINED_MARGIN); - if (leftMargin == UNDEFINED_MARGIN) { - mMarginFlags |= LEFT_MARGIN_UNDEFINED_MASK; - leftMargin = DEFAULT_MARGIN_RESOLVED; - } - rightMargin = a.getDimensionPixelSize( - R.styleable.ViewGroup_MarginLayout_layout_marginRight, - UNDEFINED_MARGIN); - if (rightMargin == UNDEFINED_MARGIN) { - mMarginFlags |= RIGHT_MARGIN_UNDEFINED_MASK; - rightMargin = DEFAULT_MARGIN_RESOLVED; + int horizontalMargin = a.getDimensionPixelSize( + R.styleable.ViewGroup_MarginLayout_layout_marginHorizontal, -1); + int verticalMargin = a.getDimensionPixelSize( + R.styleable.ViewGroup_MarginLayout_layout_marginVertical, -1); + + if (horizontalMargin >= 0) { + leftMargin = horizontalMargin; + rightMargin = horizontalMargin; + } else { + leftMargin = a.getDimensionPixelSize( + R.styleable.ViewGroup_MarginLayout_layout_marginLeft, + UNDEFINED_MARGIN); + if (leftMargin == UNDEFINED_MARGIN) { + mMarginFlags |= LEFT_MARGIN_UNDEFINED_MASK; + leftMargin = DEFAULT_MARGIN_RESOLVED; + } + rightMargin = a.getDimensionPixelSize( + R.styleable.ViewGroup_MarginLayout_layout_marginRight, + UNDEFINED_MARGIN); + if (rightMargin == UNDEFINED_MARGIN) { + mMarginFlags |= RIGHT_MARGIN_UNDEFINED_MASK; + rightMargin = DEFAULT_MARGIN_RESOLVED; + } + startMargin = a.getDimensionPixelSize( + R.styleable.ViewGroup_MarginLayout_layout_marginStart, + DEFAULT_MARGIN_RELATIVE); + endMargin = a.getDimensionPixelSize( + R.styleable.ViewGroup_MarginLayout_layout_marginEnd, + DEFAULT_MARGIN_RELATIVE); } - topMargin = a.getDimensionPixelSize( - R.styleable.ViewGroup_MarginLayout_layout_marginTop, - DEFAULT_MARGIN_RESOLVED); - bottomMargin = a.getDimensionPixelSize( - R.styleable.ViewGroup_MarginLayout_layout_marginBottom, - DEFAULT_MARGIN_RESOLVED); - - startMargin = a.getDimensionPixelSize( - R.styleable.ViewGroup_MarginLayout_layout_marginStart, - DEFAULT_MARGIN_RELATIVE); - endMargin = a.getDimensionPixelSize( - R.styleable.ViewGroup_MarginLayout_layout_marginEnd, - DEFAULT_MARGIN_RELATIVE); + if (verticalMargin >= 0) { + topMargin = verticalMargin; + bottomMargin = verticalMargin; + } else { + topMargin = a.getDimensionPixelSize( + R.styleable.ViewGroup_MarginLayout_layout_marginTop, + DEFAULT_MARGIN_RESOLVED); + bottomMargin = a.getDimensionPixelSize( + R.styleable.ViewGroup_MarginLayout_layout_marginBottom, + DEFAULT_MARGIN_RESOLVED); + } if (isMarginRelative()) { mMarginFlags |= NEED_RESOLUTION_MASK; diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java index 3171019e1a0e..2f55fc9ed951 100644 --- a/core/java/android/view/WindowManagerPolicy.java +++ b/core/java/android/view/WindowManagerPolicy.java @@ -482,6 +482,16 @@ public interface WindowManagerPolicy { */ public void switchInputMethod(boolean forwardDirection); + /** + * Returns the visibility of the current input method window (false if there is none). + */ + public boolean isInputMethodWindowVisible(); + + /** + * Hides the current input method, if visible. + */ + public void hideCurrentInputMethod(); + public void shutdown(boolean confirm); public void reboot(boolean confirm); public void rebootSafeMode(boolean confirm); diff --git a/core/java/com/android/internal/content/PackageHelper.java b/core/java/com/android/internal/content/PackageHelper.java index a3134b3bc29b..98d87d349de7 100644 --- a/core/java/com/android/internal/content/PackageHelper.java +++ b/core/java/com/android/internal/content/PackageHelper.java @@ -355,7 +355,7 @@ public class PackageHelper { ApplicationInfo existingInfo = null; try { existingInfo = context.getPackageManager().getApplicationInfo(packageName, - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); } catch (NameNotFoundException ignored) { } @@ -445,7 +445,7 @@ public class PackageHelper { ApplicationInfo existingInfo = null; try { existingInfo = context.getPackageManager().getApplicationInfo(packageName, - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); } catch (NameNotFoundException ignored) { } diff --git a/core/java/com/android/internal/os/FuseAppLoop.java b/core/java/com/android/internal/os/FuseAppLoop.java new file mode 100644 index 000000000000..34253ce96a06 --- /dev/null +++ b/core/java/com/android/internal/os/FuseAppLoop.java @@ -0,0 +1,222 @@ +/* + * 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. + */ + +package com.android.internal.os; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.IProxyFileDescriptorCallback; +import android.os.ParcelFileDescriptor; +import android.system.ErrnoException; +import android.system.OsConstants; +import android.util.Log; +import android.util.SparseArray; +import com.android.internal.annotations.GuardedBy; +import com.android.internal.util.Preconditions; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +public class FuseAppLoop { + private static final String TAG = "FuseAppLoop"; + private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); + public static final int ROOT_INODE = 1; + private static final int MIN_INODE = 2; + + private final Object mLock = new Object(); + private final File mParent; + + @GuardedBy("mLock") + private final SparseArray<CallbackEntry> mCallbackMap = new SparseArray<>(); + + @GuardedBy("mLock") + private boolean mActive = true; + + /** + * Sequential number can be used as file name and inode in AppFuse. + * 0 is regarded as an error, 1 is mount point. So we start the number from 2. + */ + @GuardedBy("mLock") + private int mNextInode = MIN_INODE; + + private FuseAppLoop(@NonNull File parent) { + mParent = parent; + } + + public static @NonNull FuseAppLoop open( + @NonNull File parent, @NonNull ParcelFileDescriptor fd) { + Preconditions.checkNotNull(parent); + Preconditions.checkNotNull(fd); + final FuseAppLoop bridge = new FuseAppLoop(parent); + final int rawFd = fd.detachFd(); + new Thread(new Runnable() { + @Override + public void run() { + bridge.native_start_loop(rawFd); + } + }, TAG).start(); + return bridge; + } + + public @NonNull ParcelFileDescriptor openFile(int mode, IProxyFileDescriptorCallback callback) + throws UnmountedException, IOException { + int id; + synchronized (mLock) { + if (!mActive) { + throw new UnmountedException(); + } + if (mCallbackMap.size() >= Integer.MAX_VALUE - MIN_INODE) { + throw new IOException("Too many opened files."); + } + while (true) { + id = mNextInode; + mNextInode++; + if (mNextInode < 0) { + mNextInode = MIN_INODE; + } + if (mCallbackMap.get(id) == null) { + break; + } + } + + // Register callback after we succeed to create pfd. + mCallbackMap.put(id, new CallbackEntry(callback)); + } + try { + return ParcelFileDescriptor.open(new File(mParent, String.valueOf(id)), mode); + } catch (FileNotFoundException error) { + synchronized (mLock) { + mCallbackMap.remove(id); + } + throw error; + } + } + + public @Nullable File getMountPoint() { + synchronized (mLock) { + return mActive ? mParent : null; + } + } + + private CallbackEntry getCallbackEntryOrThrowLocked(long inode) throws ErrnoException { + final CallbackEntry entry = mCallbackMap.get(checkInode(inode)); + if (entry != null) { + return entry; + } else { + throw new ErrnoException("getCallbackEntry", OsConstants.ENOENT); + } + } + + // Called by JNI. + @SuppressWarnings("unused") + private long onGetSize(long inode) { + synchronized(mLock) { + try { + return getCallbackEntryOrThrowLocked(inode).callback.onGetSize(); + } catch (ErrnoException exp) { + return -exp.errno; + } + } + } + + // Called by JNI. + @SuppressWarnings("unused") + private int onOpen(long inode) { + synchronized(mLock) { + try { + final CallbackEntry entry = getCallbackEntryOrThrowLocked(inode); + if (entry.opened) { + throw new ErrnoException("onOpen", OsConstants.EMFILE); + } + entry.opened = true; + // Use inode as file handle. It's OK because AppFuse does not allow to open the same + // file twice. + return (int) inode; + } catch (ErrnoException exp) { + return -exp.errno; + } + } + } + + // Called by JNI. + @SuppressWarnings("unused") + private int onFsync(long inode) { + synchronized(mLock) { + try { + getCallbackEntryOrThrowLocked(inode).callback.onFsync(); + return 0; + } catch (ErrnoException exp) { + return -exp.errno; + } + } + } + + // Called by JNI. + @SuppressWarnings("unused") + private int onRelease(long inode) { + synchronized(mLock) { + mCallbackMap.remove(checkInode(inode)); + if (mCallbackMap.size() == 0) { + mActive = false; + return -1; + } + return 0; + } + } + + // Called by JNI. + @SuppressWarnings("unused") + private int onRead(long inode, long offset, int size, byte[] bytes) { + synchronized(mLock) { + try { + return getCallbackEntryOrThrowLocked(inode).callback.onRead(offset, size, bytes); + } catch (ErrnoException exp) { + return -exp.errno; + } + } + } + + // Called by JNI. + @SuppressWarnings("unused") + private int onWrite(long inode, long offset, int size, byte[] bytes) { + synchronized(mLock) { + try { + return getCallbackEntryOrThrowLocked(inode).callback.onWrite(offset, size, bytes); + } catch (ErrnoException exp) { + return -exp.errno; + } + } + } + + native boolean native_start_loop(int fd); + + private static int checkInode(long inode) { + Preconditions.checkArgumentInRange(inode, MIN_INODE, Integer.MAX_VALUE, "checkInode"); + return (int) inode; + } + + public static class UnmountedException extends Exception {} + + private static class CallbackEntry { + final IProxyFileDescriptorCallback callback; + boolean opened; + CallbackEntry(IProxyFileDescriptorCallback callback) { + Preconditions.checkNotNull(callback); + this.callback = callback; + } + } +} diff --git a/core/jni/Android.mk b/core/jni/Android.mk index a4e957638406..be2e404820bc 100644 --- a/core/jni/Android.mk +++ b/core/jni/Android.mk @@ -183,6 +183,7 @@ LOCAL_SRC_FILES:= \ android_content_res_Configuration.cpp \ android_animation_PropertyValuesHolder.cpp \ com_android_internal_net_NetworkStatsFactory.cpp \ + com_android_internal_os_FuseAppLoop.cpp \ com_android_internal_os_PathClassLoaderFactory.cpp \ com_android_internal_os_Zygote.cpp \ com_android_internal_util_VirtualRefBasePtr.cpp \ @@ -201,6 +202,7 @@ LOCAL_C_INCLUDES += \ $(TOP)/frameworks/base/media/jni \ $(TOP)/system/core/base/include \ $(TOP)/system/core/include \ + $(TOP)/system/core/libappfuse/include \ $(TOP)/system/media/camera/include \ $(TOP)/system/netd/include \ external/giflib \ @@ -230,6 +232,7 @@ LOCAL_STATIC_LIBRARIES := \ LOCAL_SHARED_LIBRARIES := \ libmemtrack \ libandroidfw \ + libappfuse \ libbase \ libexpat \ libnativehelper \ diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index cdaa4dce52eb..1f810ac203ad 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -201,6 +201,7 @@ extern int register_android_content_res_Configuration(JNIEnv* env); extern int register_android_animation_PropertyValuesHolder(JNIEnv *env); extern int register_com_android_internal_content_NativeLibraryHelper(JNIEnv *env); extern int register_com_android_internal_net_NetworkStatsFactory(JNIEnv *env); +extern int register_com_android_internal_os_FuseAppLoop(JNIEnv* env); extern int register_com_android_internal_os_PathClassLoaderFactory(JNIEnv* env); extern int register_com_android_internal_os_Zygote(JNIEnv *env); extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv *env); @@ -1419,7 +1420,7 @@ static const RegJNIRec gRegJNI[] = { REG_JNI(register_android_animation_PropertyValuesHolder), REG_JNI(register_com_android_internal_content_NativeLibraryHelper), REG_JNI(register_com_android_internal_net_NetworkStatsFactory), - + REG_JNI(register_com_android_internal_os_FuseAppLoop), }; /* diff --git a/core/jni/com_android_internal_os_FuseAppLoop.cpp b/core/jni/com_android_internal_os_FuseAppLoop.cpp new file mode 100644 index 000000000000..92a6934b09a4 --- /dev/null +++ b/core/jni/com_android_internal_os_FuseAppLoop.cpp @@ -0,0 +1,164 @@ +/* + * 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. + */ + +#define LOG_TAG "FuseAppLoopJNI" +#define LOG_NDEBUG 0 + +#include <stdlib.h> +#include <sys/stat.h> + +#include <android_runtime/Log.h> +#include <android-base/logging.h> +#include <android-base/unique_fd.h> +#include <jni.h> +#include <libappfuse/FuseAppLoop.h> +#include <nativehelper/ScopedLocalRef.h> + +#include "core_jni_helpers.h" + +namespace android { + +namespace { + +constexpr const char* CLASS_NAME = "com/android/internal/os/FuseAppLoop"; + +jclass gFuseAppLoopClass; +jmethodID gOnGetSizeMethod; +jmethodID gOnOpenMethod; +jmethodID gOnFsyncMethod; +jmethodID gOnReleaseMethod; +jmethodID gOnReadMethod; +jmethodID gOnWriteMethod; + +class Callback : public fuse::FuseAppLoopCallback { +private: + static constexpr size_t kBufferSize = std::max(fuse::kFuseMaxWrite, fuse::kFuseMaxRead); + static_assert(kBufferSize <= INT32_MAX, "kBufferSize should be fit in int32_t."); + + JNIEnv* const mEnv; + jobject const mSelf; + ScopedLocalRef<jbyteArray> mJniBuffer; + bool mActive; + + template <typename T> + T checkException(T result) const { + if (mEnv->ExceptionCheck()) { + LOGE_EX(mEnv, nullptr); + mEnv->ExceptionClear(); + return -EIO; + } + return result; + } + +public: + Callback(JNIEnv* env, jobject self) : + mEnv(env), + mSelf(self), + mJniBuffer(env, nullptr), + mActive(true) {} + + bool Init() { + mJniBuffer.reset(mEnv->NewByteArray(kBufferSize)); + return mJniBuffer.get(); + } + + bool IsActive() override { + return mActive; + } + + int64_t OnGetSize(uint64_t inode) override { + return checkException(mEnv->CallLongMethod(mSelf, gOnGetSizeMethod, inode)); + } + + int32_t OnOpen(uint64_t inode) override { + return checkException(mEnv->CallIntMethod(mSelf, gOnOpenMethod, inode)); + } + + int32_t OnFsync(uint64_t inode) override { + return checkException(mEnv->CallIntMethod(mSelf, gOnFsyncMethod, inode)); + } + + int32_t OnRelease(uint64_t inode) override { + if (checkException(mEnv->CallIntMethod(mSelf, gOnReleaseMethod, inode)) == -1) { + mActive = false; + } + return fuse::kFuseSuccess; + } + + int32_t OnRead(uint64_t inode, uint64_t offset, uint32_t size, void* buffer) override { + CHECK_LE(size, static_cast<uint32_t>(kBufferSize)); + const int32_t result = checkException(mEnv->CallIntMethod( + mSelf, gOnReadMethod, inode, offset, size, mJniBuffer.get())); + if (result <= 0) { + return result; + } + if (result > static_cast<int32_t>(size)) { + LOG(ERROR) << "Returned size is too large."; + return -EIO; + } + + mEnv->GetByteArrayRegion(mJniBuffer.get(), 0, result, static_cast<jbyte*>(buffer)); + CHECK(!mEnv->ExceptionCheck()); + + return checkException(result); + } + + int32_t OnWrite(uint64_t inode, uint64_t offset, uint32_t size, const void* buffer) override { + CHECK_LE(size, static_cast<uint32_t>(kBufferSize)); + + mEnv->SetByteArrayRegion(mJniBuffer.get(), 0, size, static_cast<const jbyte*>(buffer)); + CHECK(!mEnv->ExceptionCheck()); + + return checkException(mEnv->CallIntMethod( + mSelf, gOnWriteMethod, inode, offset, size, mJniBuffer.get())); + } +}; + +jboolean com_android_internal_os_FuseAppLoop_start_loop(JNIEnv* env, jobject self, jint jfd) { + base::unique_fd fd(jfd); + Callback callback(env, self); + + if (!callback.Init()) { + LOG(ERROR) << "Failed to init callback"; + return JNI_FALSE; + } + + return fuse::StartFuseAppLoop(fd.release(), &callback); +} + +const JNINativeMethod methods[] = { + { + "native_start_loop", + "(I)Z", + (void *) com_android_internal_os_FuseAppLoop_start_loop + } +}; + +} // namespace + +int register_com_android_internal_os_FuseAppLoop(JNIEnv* env) { + gFuseAppLoopClass = MakeGlobalRefOrDie(env, FindClassOrDie(env, CLASS_NAME)); + gOnGetSizeMethod = GetMethodIDOrDie(env, gFuseAppLoopClass, "onGetSize", "(J)J"); + gOnOpenMethod = GetMethodIDOrDie(env, gFuseAppLoopClass, "onOpen", "(J)I"); + gOnFsyncMethod = GetMethodIDOrDie(env, gFuseAppLoopClass, "onFsync", "(J)I"); + gOnReleaseMethod = GetMethodIDOrDie(env, gFuseAppLoopClass, "onRelease", "(J)I"); + gOnReadMethod = GetMethodIDOrDie(env, gFuseAppLoopClass, "onRead", "(JJI[B)I"); + gOnWriteMethod = GetMethodIDOrDie(env, gFuseAppLoopClass, "onWrite", "(JJI[B)I"); + RegisterMethodsOrDie(env, CLASS_NAME, methods, NELEM(methods)); + return 0; +} + +} // namespace android diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 94f7bec822d2..6f33f2787340 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -769,6 +769,15 @@ android:permissionGroup="android.permission-group.PHONE" android:label="@string/permlab_readPhoneState" android:description="@string/permdesc_readPhoneState" + android:protectionLevel="dangerous" /> + + <!-- Allows read access to the device's phone number. This is a subset of the capabilities + granted by {@link #READ_PHONE_STATE} but is exposed to ephemeral applications. + <p>Protection level: dangerous--> + <permission android:name="android.permission.READ_PHONE_NUMBER" + android:permissionGroup="android.permission-group.PHONE" + android:label="@string/permlab_readPhoneNumber" + android:description="@string/permdesc_readPhoneNumber" android:protectionLevel="dangerous|ephemeral" /> <!-- Allows an application to initiate a phone call without going through diff --git a/core/res/res/anim/slide_in_enter_micro.xml b/core/res/res/anim/slide_in_enter_micro.xml index c70874c626b8..6e7df4fbef64 100644 --- a/core/res/res/anim/slide_in_enter_micro.xml +++ b/core/res/res/anim/slide_in_enter_micro.xml @@ -19,7 +19,7 @@ <set xmlns:android="http://schemas.android.com/apk/res/android" android:zAdjustment="top"> - <translate android:fromYDelta="5%p" android:toYDelta="0" + <translate android:fromXDelta="5%p" android:toXDelta="0" android:duration="417" android:interpolator="@android:interpolator/launch_task_micro_ydelta" /> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" diff --git a/core/res/res/anim/slide_out_micro.xml b/core/res/res/anim/slide_out_micro.xml index c6470935e5d2..cccf6972ba87 100644 --- a/core/res/res/anim/slide_out_micro.xml +++ b/core/res/res/anim/slide_out_micro.xml @@ -19,8 +19,8 @@ --> <set xmlns:android="http://schemas.android.com/apk/res/android" - android:zAdjustment="top"> - <translate android:fromYDelta="0" android:toYDelta="5%p" + android:zAdjustment="normal"> + <translate android:fromXDelta="0" android:toXDelta="5%p" android:duration="250" android:interpolator="@android:interpolator/fast_out_slow_in"/> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index b2212f92b18f..a24bce127830 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Mediavolume"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Kennisgewing-volume"</string> <string name="ringtone_default" msgid="3789758980357696936">"Verstekluitoon"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Verstek (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Geen"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Luitone"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Wekkerklanke"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Kennisgewingsklanke"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Onbekend"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi netwerke beskikbaar</item> <item quantity="one">Wi-Fi-netwerk beskikbaar</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Kies jaar"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> uitgevee"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Werk-<xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Raak en hou Terug om hierdie skerm te ontspeld."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Program is vasgespeld: Dit mag nie op hierdie toestel ontspeld word nie."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Skerm vasgespeld"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Stel nou terug"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Het <xliff:g id="LABEL">%1$s</xliff:g> gedeaktiveer"</string> <string name="conference_call" msgid="3751093130790472426">"Konferensie-oproep"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Nutswenk-opspringer"</string> </resources> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 2b927308adf0..6bab82c2c52a 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"የማህደረ መረጃ ክፍልፍል"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"የማሳወቂያ ክፍልፍል"</string> <string name="ringtone_default" msgid="3789758980357696936">"ነባሪ የስልክ ላይ ጥሪ"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"ነባሪ (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"ምንም"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"ጥሪ ድምፆች"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"የማንቂያ ድምጾች"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"የማሳወቂያ ድምፆች"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"ያልታወቀ"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">የWi-Fi አውታረ መረቦች አሉ</item> <item quantity="other">የWi-Fi አውታረ መረቦች አሉ</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"ዓመት ይምረጡ"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ተሰርዟል"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"ስራ <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ይህን ማያ ገጽ ለመንቀል ተመለስን ይንኩትና ያዙት።"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"መተግበሪያ ተሰክቷል፦ በዚህ መሣሪያ ላይ ማላቀቅ አይፈቀድም።"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"ማያ ገጽ ተሰክቷል"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"አሁን ዳግም አስጀምር"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> ተሰናክሏል"</string> <string name="conference_call" msgid="3751093130790472426">"የስብሰባ ጥሪ"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"የመሣሪያ ጥቆማ ብቅ-ባይ"</string> </resources> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index b2835cc19333..7c9baeb7e47d 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -1151,16 +1151,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"مستوى صوت الوسائط"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"مستوى صوت الإشعار"</string> <string name="ringtone_default" msgid="3789758980357696936">"نغمة الرنين الافتراضية"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"الافتراضية (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"لا شيء"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"نغمات الرنين"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"أصوات التنبيه"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"أصوات الإشعار"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"غير معروف"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="zero">لا تتوفر أية شبكات Wi-Fi</item> <item quantity="two">تتوفر شبكتا Wi-Fi</item> @@ -1672,6 +1668,10 @@ <string name="select_year" msgid="7952052866994196170">"تحديد العام"</string> <string name="deleted_key" msgid="7659477886625566590">"تم حذف <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> المخصص للعمل"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"لإزالة تثبيت هذه الشاشة، يمكنك لمس زر الرجوع مع الاستمرار."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"التطبيق مقيد: ولا يسمح بإلغاء التقييد على هذا الجهاز."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"تم تثبيت الشاشة"</string> @@ -1827,6 +1827,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"إعادة التعيين الآن"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"تم تعطيل <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"مكالمة جماعية"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"نافذة منبثقة لتلميح"</string> </resources> diff --git a/core/res/res/values-az-rAZ/strings.xml b/core/res/res/values-az-rAZ/strings.xml index 5d09077090b7..11133d11dafe 100644 --- a/core/res/res/values-az-rAZ/strings.xml +++ b/core/res/res/values-az-rAZ/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Media həcmi"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Bildiriş səsi"</string> <string name="ringtone_default" msgid="3789758980357696936">"Defolt rinqton"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Defolt (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Heç biri"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Zəng səsləri"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Zəngli saat səsləri"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Bildiriş səsləri"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Naməlum"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Əlçatan Wi-Fi şəbəkələri</item> <item quantity="one">Əlçatan Wi-Fi şəbəkəsi</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"İl seçin"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> silindi"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"İş <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Sancağı götürmək üçün Geri düyməsinə toxunun və saxlayın."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Tətbiq sancılıb: Açmağa bu cihazda icazə verilmir."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"İndi sıfırlayın"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> deaktiv edildi"</string> <string name="conference_call" msgid="3751093130790472426">"Konfrans Zəngi"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Tooltip Popap"</string> </resources> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index b65ed4d705dd..d2799c43a5b6 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -1082,16 +1082,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Jačina zvuka medija"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Jačina zvuka obaveštenja"</string> <string name="ringtone_default" msgid="3789758980357696936">"Podrazumevani zvuk zvona"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Podrazumevano (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Bez zvuka"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Zvukovi zvona"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Zvuci alarma"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Zvuci obaveštenja"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Nepoznato"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Wi-Fi mreže su dostupne</item> <item quantity="few">Wi-Fi mreže su dostupne</item> @@ -1591,6 +1587,10 @@ <string name="select_year" msgid="7952052866994196170">"Izaberite godinu"</string> <string name="deleted_key" msgid="7659477886625566590">"Izbrisali ste <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> na poslu"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Da biste otkačili ovaj ekran, dodirnite i zadržite Nazad."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je zakačena: otkačinjanje nije dozvoljeno na ovom uređaju."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekran je zakačen"</string> @@ -1719,6 +1719,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Resetuj"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Vidžet <xliff:g id="LABEL">%1$s</xliff:g> je onemogućen"</string> <string name="conference_call" msgid="3751093130790472426">"Konferencijski poziv"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Iskačuće objašnjenje"</string> </resources> diff --git a/core/res/res/values-be-rBY/strings.xml b/core/res/res/values-be-rBY/strings.xml index 63359a1ae6d0..a7be24e2f2c6 100644 --- a/core/res/res/values-be-rBY/strings.xml +++ b/core/res/res/values-be-rBY/strings.xml @@ -1105,16 +1105,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Гучнасць прайгравальніка"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Гучнасць апавяшчэнняў"</string> <string name="ringtone_default" msgid="3789758980357696936">"Стандартны рынгтон"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Стандартны (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Няма"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Рынгтоны"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Гукі будзільніка"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Гукі апавяшчэнняў"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Невядома"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">сетка Wi-Fi даступная</item> <item quantity="few">сеткі Wi-Fi даступныя</item> @@ -1618,6 +1614,10 @@ <string name="select_year" msgid="7952052866994196170">"Выберыце год"</string> <string name="deleted_key" msgid="7659477886625566590">"Выдалена: <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (праца)"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Каб адмацаваць гэты экран, дакраніцеся і ўтрымлівайце кнопку \"Назад\"."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Праграма замацавана: адмацаванне на гэтай прыладзе не дапускаецца."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Экран замацаваны"</string> @@ -1755,6 +1755,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Выканаць скід"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Адключаны <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Канферэнц-выклік"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Усплывальная падказка"</string> </resources> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index a818b7ec03aa..1900b074bf28 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Сила на звука"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Сила на звука при известие"</string> <string name="ringtone_default" msgid="3789758980357696936">"Стандартна мелодия"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"По подразбиране (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Без"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Мелодии"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Звуци на будилника"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Звуци на известията"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Няма информация"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Има достъпни Wi-Fi мрежи</item> <item quantity="one">Има достъпна Wi-Fi мрежа</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Избиране на година"</string> <string name="deleted_key" msgid="7659477886625566590">"Изтрихте <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> за работа"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"За да освободите този екран, докоснете и задръжте бутона за връщане назад."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Приложението е фиксирано. Освобождаването му не е разрешено на това устройство."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Екранът е фиксиран"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Нулиране сега"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g>: Деактивирано"</string> <string name="conference_call" msgid="3751093130790472426">"Конферентно обаждане"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Изскачащ прозорец с подсказка"</string> </resources> diff --git a/core/res/res/values-bn-rBD/strings.xml b/core/res/res/values-bn-rBD/strings.xml index 20343af4c0b2..bdbea68bde7d 100644 --- a/core/res/res/values-bn-rBD/strings.xml +++ b/core/res/res/values-bn-rBD/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"বছর নির্বাচন করুন"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> মুছে ফেলা হয়েছে"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"কর্মক্ষেত্র <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"এই স্ক্রীনটিকে আনপিন করতে, \'ফিরুন\' স্পর্শ করুন এবং ধরে রাখুন৷"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"অ্যাপ্লিকেশান পিন করা আছে: এই ডিভাইস এটিকে পিনমুক্ত করা মঞ্জুরিপ্রাপ্ত নয়৷"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"স্ক্রীন পিন করা হয়েছে"</string> diff --git a/core/res/res/values-bs-rBA/strings.xml b/core/res/res/values-bs-rBA/strings.xml index 205bffb3f0b0..f62dac7516fe 100644 --- a/core/res/res/values-bs-rBA/strings.xml +++ b/core/res/res/values-bs-rBA/strings.xml @@ -551,35 +551,35 @@ <string-array name="phoneTypes"> <item msgid="8901098336658710359">"Kuća"</item> <item msgid="869923650527136615">"Mobilni"</item> - <item msgid="7897544654242874543">"Poslovni"</item> + <item msgid="7897544654242874543">"Posao"</item> <item msgid="1103601433382158155">"Poslovni faks"</item> <item msgid="1735177144948329370">"Kućni faks"</item> <item msgid="603878674477207394">"Pejdžer"</item> <item msgid="1650824275177931637">"Ostalo"</item> - <item msgid="9192514806975898961">"Dodatno"</item> + <item msgid="9192514806975898961">"Prilagođeno"</item> </string-array> <string-array name="emailAddressTypes"> <item msgid="8073994352956129127">"Kućni"</item> - <item msgid="7084237356602625604">"Poslovni"</item> - <item msgid="1112044410659011023">"Ostali"</item> - <item msgid="2374913952870110618">"Dodatni"</item> + <item msgid="7084237356602625604">"Posao"</item> + <item msgid="1112044410659011023">"Ostalo"</item> + <item msgid="2374913952870110618">"Prilagođeno"</item> </string-array> <string-array name="postalAddressTypes"> <item msgid="6880257626740047286">"Kuća"</item> <item msgid="5629153956045109251">"Posao"</item> <item msgid="4966604264500343469">"Ostalo"</item> - <item msgid="4932682847595299369">"Dodatno"</item> + <item msgid="4932682847595299369">"Prilagođeno"</item> </string-array> <string-array name="imAddressTypes"> <item msgid="1738585194601476694">"Kućni"</item> - <item msgid="1359644565647383708">"Poslovni"</item> - <item msgid="7868549401053615677">"Ostali"</item> - <item msgid="3145118944639869809">"Dodatni"</item> + <item msgid="1359644565647383708">"Posao"</item> + <item msgid="7868549401053615677">"Ostalo"</item> + <item msgid="3145118944639869809">"Prilagođeno"</item> </string-array> <string-array name="organizationTypes"> <item msgid="7546335612189115615">"Posao"</item> <item msgid="4378074129049520373">"Ostalo"</item> - <item msgid="3455047468583965104">"Dodatno"</item> + <item msgid="3455047468583965104">"Prilagođeno"</item> </string-array> <string-array name="imProtocols"> <item msgid="8595261363518459565">"AIM"</item> @@ -600,15 +600,15 @@ <string name="phoneTypePager" msgid="7582359955394921732">"Pejdžer"</string> <string name="phoneTypeOther" msgid="1544425847868765990">"Ostalo"</string> <string name="phoneTypeCallback" msgid="2712175203065678206">"Povratni poziv"</string> - <string name="phoneTypeCar" msgid="8738360689616716982">"Auto"</string> - <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Glavni broj kompanije"</string> + <string name="phoneTypeCar" msgid="8738360689616716982">"Automobil"</string> + <string name="phoneTypeCompanyMain" msgid="540434356461478916">"Poslovni glavni"</string> <string name="phoneTypeIsdn" msgid="8022453193171370337">"ISDN"</string> <string name="phoneTypeMain" msgid="6766137010628326916">"Glavni"</string> <string name="phoneTypeOtherFax" msgid="8587657145072446565">"Drugi faks"</string> <string name="phoneTypeRadio" msgid="4093738079908667513">"Radio"</string> <string name="phoneTypeTelex" msgid="3367879952476250512">"Teleks"</string> <string name="phoneTypeTtyTdd" msgid="8606514378585000044">"TTY TDD"</string> - <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Posao mobilni"</string> + <string name="phoneTypeWorkMobile" msgid="1311426989184065709">"Poslovni mobilni"</string> <string name="phoneTypeWorkPager" msgid="649938731231157056">"Poslovni pejdžer"</string> <string name="phoneTypeAssistant" msgid="5596772636128562884">"Pomoćnik"</string> <string name="phoneTypeMms" msgid="7254492275502768992">"MMS"</string> @@ -616,10 +616,10 @@ <string name="eventTypeBirthday" msgid="2813379844211390740">"Rođendan"</string> <string name="eventTypeAnniversary" msgid="3876779744518284000">"Godišnjica"</string> <string name="eventTypeOther" msgid="7388178939010143077">"Ostalo"</string> - <string name="emailTypeCustom" msgid="8525960257804213846">"Prilagođeni"</string> + <string name="emailTypeCustom" msgid="8525960257804213846">"Prilagođeno"</string> <string name="emailTypeHome" msgid="449227236140433919">"Kućni"</string> - <string name="emailTypeWork" msgid="3548058059601149973">"Poslovni"</string> - <string name="emailTypeOther" msgid="2923008695272639549">"Ostali"</string> + <string name="emailTypeWork" msgid="3548058059601149973">"Posao"</string> + <string name="emailTypeOther" msgid="2923008695272639549">"Ostalo"</string> <string name="emailTypeMobile" msgid="119919005321166205">"Mobilni"</string> <string name="postalTypeCustom" msgid="8903206903060479902">"Prilagođeno"</string> <string name="postalTypeHome" msgid="8165756977184483097">"Kućna adresa"</string> @@ -1084,16 +1084,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Jačina zvuka za medijske sadržaje"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Jačina zvuka za obavještenja"</string> <string name="ringtone_default" msgid="3789758980357696936">"Zadana melodija zvona"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Zadano (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Bez zvuka"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Melodije zvona"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Zvuci alarma"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Zvuci obavještenja"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Nepoznato"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Wi-Fi mreže su dostupne</item> <item quantity="few">Wi-Fi mreže su dostupne</item> @@ -1593,6 +1589,10 @@ <string name="select_year" msgid="7952052866994196170">"Odaberite godinu"</string> <string name="deleted_key" msgid="7659477886625566590">"Broj <xliff:g id="KEY">%1$s</xliff:g> je izbrisan"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Poslovni <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Da biste otkačili ovaj ekran, dodirnite i držite dugme Nazad."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je prikačena. Na ovom uređaju nije dozvoljeno otkačivanje."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekran je zakačen"</string> @@ -1721,6 +1721,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Vrati sada na početne postavke"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Onemogućen <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Konferencijski poziv"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Iskočni prozor sa savjetom u vezi alata"</string> </resources> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index a1797cbd7feb..f335d44febb2 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volum de multimèdia"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volum de notificació"</string> <string name="ringtone_default" msgid="3789758980357696936">"So predeterminat"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Predeterminat (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Cap"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Sons"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Sons de l\'alarma"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Sons de notificació"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Desconegut"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Xarxes Wi-Fi disponibles</item> <item quantity="one">Xarxa Wi-Fi disponible</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Selecciona un any"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> suprimit"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de la feina"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Toca i mantén premuda l\'opció Enrere per deixar de fixar aquesta pantalla."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"S\'ha fixat l\'aplicació. En aquest dispositiu no es permet anul·lar-ne la fixació."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fixada"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Restableix ara"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> s\'ha desactivat"</string> <string name="conference_call" msgid="3751093130790472426">"Conferència"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Descripció emergent"</string> </resources> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 2c8f84381500..0bdd212a9f12 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1105,16 +1105,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Hlasitost médií"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Hlasitost oznámení"</string> <string name="ringtone_default" msgid="3789758980357696936">"Výchozí vyzváněcí tón"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Výchozí (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Žádný"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Vyzváněcí tóny"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Zvuky budíku"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Zvuky upozornění"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Neznámé"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="few">K dispozici jsou sítě Wi-Fi</item> <item quantity="many">K dispozici jsou sítě Wi-Fi</item> @@ -1618,6 +1614,10 @@ <string name="select_year" msgid="7952052866994196170">"Vyberte rok"</string> <string name="deleted_key" msgid="7659477886625566590">"Číslice <xliff:g id="KEY">%1$s</xliff:g> byla smazána"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Pracovní <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Chcete-li tuto obrazovku uvolnit, klepněte na tlačítko Zpět a podržte jej."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikace je připnutá: Odepnutí v tomto zařízení není povoleno."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Obrazovka připnuta"</string> @@ -1755,6 +1755,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Resetovat"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> – zakázáno"</string> <string name="conference_call" msgid="3751093130790472426">"Konferenční hovor"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Vyskakovací okno s popiskem"</string> </resources> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 20b859cdc6c2..f80f5f0e7c04 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Vælg år"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> er slettet"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> – arbejde"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Hvis du vil frigøre dette skærmbillede, skal du trykke på Tilbage og holde fingeren nede."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen er fastgjort: Det er ikke tilladt at frigøre den på denne enhed."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Skærmen blev fastgjort"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index fcad7c2c4ae2..1ceb0ccd2396 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Jahr auswählen"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> gelöscht"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (geschäftlich)"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Um die Fixierung dieses Bildschirms aufzuheben, \"Zurück\" berühren und halten."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Die App ist fixiert. Das Aufheben der Fixierung ist auf diesem Gerät nicht zulässig."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Bildschirm fixiert"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 2117233a37d9..b9d950358f61 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Ένταση ήχου πολυμέσων"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Ένταση ήχου ειδοποιήσεων"</string> <string name="ringtone_default" msgid="3789758980357696936">"Προεπιλεγμένος ήχος κλήσης"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Προεπιλογή (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Κανένας"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Ήχοι κλήσης"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Ήχοι ξυπνητηριού"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Ήχοι ειδοποίησης"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Άγνωστο"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Υπάρχουν διαθέσιμα δίκτυα Wi-Fi</item> <item quantity="one">Υπάρχει διαθέσιμο δίκτυο Wi-Fi</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Επιλογή έτους"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> διαγράφηκε"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Εργασία <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Για να ξεκαρφιτσώσετε αυτήν την οθόνη, αγγίξτε παρατεταμένα \"Επιστροφή\"."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Η εφαρμογή καρφιτσώθηκε: Το ξεκαρφίτσωμα δεν επιτρέπεται σε αυτήν τη συσκευή."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Η οθόνη καρφιτσώθηκε"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Επαναφορά τώρα"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Απενεργοποιημένο <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Κλήση συνδιάσκεψης"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Αναδυόμενο παράθυρο επεξήγησης εργαλείου"</string> </resources> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 47be8cf72a94..5bc43e0d92f9 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Media volume"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Notification volume"</string> <string name="ringtone_default" msgid="3789758980357696936">"Default ringtone"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Default (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"None"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Ringtones"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Alarm Sounds"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Notification Sounds"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Unknown"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi networks available</item> <item quantity="one">Wi-Fi network available</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Select year"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"To unpin this screen, touch & hold Back."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Reset now"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Disabled <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Conference Call"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Tooltip Pop-up"</string> </resources> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 47be8cf72a94..5bc43e0d92f9 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Media volume"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Notification volume"</string> <string name="ringtone_default" msgid="3789758980357696936">"Default ringtone"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Default (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"None"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Ringtones"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Alarm Sounds"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Notification Sounds"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Unknown"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi networks available</item> <item quantity="one">Wi-Fi network available</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Select year"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"To unpin this screen, touch & hold Back."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Reset now"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Disabled <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Conference Call"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Tooltip Pop-up"</string> </resources> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 47be8cf72a94..5bc43e0d92f9 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Media volume"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Notification volume"</string> <string name="ringtone_default" msgid="3789758980357696936">"Default ringtone"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Default (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"None"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Ringtones"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Alarm Sounds"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Notification Sounds"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Unknown"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi networks available</item> <item quantity="one">Wi-Fi network available</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Select year"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> deleted"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Work <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"To unpin this screen, touch & hold Back."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is pinned: unpinning isn\'t allowed on this device."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Screen pinned"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Reset now"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Disabled <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Conference Call"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Tooltip Pop-up"</string> </resources> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 50c4a67e46a5..cd2c5aa22ef8 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volumen de los medios"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volumen de notificación"</string> <string name="ringtone_default" msgid="3789758980357696936">"Tono predeterminado"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Predeterminado (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ninguno"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Tonos de llamada"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Sonidos de la alarma"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Sonidos de notificaciones"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Desconocido"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">redes de Wi-Fi disponibles</item> <item quantity="one">red de Wi-Fi disponible</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Seleccionar año"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> borrado"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabajo"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Para dejar de fijar esta pantalla, mantén presionado Atrás."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"La aplicación está fijada, no se puede anular la fijación en este dispositivo."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fija"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Restablecer ahora"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Se inhabilitó <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Conferencia"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Ventana emergente de la información sobre la herramienta"</string> </resources> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index a91fc1cf58cb..fe7d1ac1cf69 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volumen multimedia"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volumen de notificaciones"</string> <string name="ringtone_default" msgid="3789758980357696936">"Tono por defecto"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Predeterminado (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ninguno"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Tonos"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Sonidos de la alarma"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Sonidos de notificaciones"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Desconocido"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Redes Wi-Fi disponibles</item> <item quantity="one">Red Wi-Fi disponible</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Seleccionar año"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabajo"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Mantén pulsado el botón Atrás para dejar de fijar esta pantalla."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"La aplicación está fijada: no se puede deshacer la fijación en este dispositivo."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fijada"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Restablecer ahora"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> inhabilitado"</string> <string name="conference_call" msgid="3751093130790472426">"Conferencia"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Descripción emergente"</string> </resources> diff --git a/core/res/res/values-et-rEE/strings.xml b/core/res/res/values-et-rEE/strings.xml index dc926d4c5c32..09668cb09728 100644 --- a/core/res/res/values-et-rEE/strings.xml +++ b/core/res/res/values-et-rEE/strings.xml @@ -650,7 +650,7 @@ <string name="relationTypeMother" msgid="4578571352962758304">"Ema"</string> <string name="relationTypeParent" msgid="4755635567562925226">"Vanem"</string> <string name="relationTypePartner" msgid="7266490285120262781">"Partner"</string> - <string name="relationTypeReferredBy" msgid="101573059844135524">"Viitas:"</string> + <string name="relationTypeReferredBy" msgid="101573059844135524">"Soovitaja"</string> <string name="relationTypeRelative" msgid="1799819930085610271">"Sugulane"</string> <string name="relationTypeSister" msgid="1735983554479076481">"Õde"</string> <string name="relationTypeSpouse" msgid="394136939428698117">"Abikaasa"</string> @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Aasta valimine"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> on kustutatud"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Töö <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Ekraani vabastamiseks puudutage pikalt nuppu Tagasi."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Rakendus on kinnitatud: vabastamine pole selles seadmes lubatud."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekraan on kinnitatud"</string> diff --git a/core/res/res/values-eu-rES/strings.xml b/core/res/res/values-eu-rES/strings.xml index 190d61ba0b08..2ea4bed74653 100644 --- a/core/res/res/values-eu-rES/strings.xml +++ b/core/res/res/values-eu-rES/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Euskarriaren bolumena"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Jakinarazpenen bolumena"</string> <string name="ringtone_default" msgid="3789758980357696936">"Tonu lehenetsia"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Lehenetsia (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Bat ere ez"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Tonuak"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Alarma-soinuak"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Jakinarazpen-soinuak"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Ezezaguna"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi sareak erabilgarri</item> <item quantity="one">Wi-Fi sarea erabilgarri</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Hautatu urtea"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ezabatu da"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Laneko <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Pantailari aingura kentzeko, eduki sakatuta Atzera botoia."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikazioa ainguratuta dago. Gailu honetan ezin da aingura kendu."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Pantaila ainguratu da"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Berrezarri"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> desgaituta dago"</string> <string name="conference_call" msgid="3751093130790472426">"Konferentzia-deia"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Aholkudun leiho gainerakorra"</string> </resources> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index d1d120f0f160..55e67bc4260a 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"انتخاب سال"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> حذف شد"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> محل کار"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"برای برداشتن پین این صفحه، «برگشت» را لمس کنید و نگه دارید."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"برنامه پین شده است: برداشتن پین در این دستگاه مجاز نیست."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"صفحه پین شد"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 425b235dbe51..6800fa87cf18 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Median äänenvoimakkuus"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Ilmoituksen äänenvoimakkuus"</string> <string name="ringtone_default" msgid="3789758980357696936">"Oletussoittoääni"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Oletus (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ei mitään"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Soittoäänet"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Hälytysäänet"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Ilmoitusäänet"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Tuntematon"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi-verkkoja käytettävissä</item> <item quantity="one">Wi-Fi-verkko käytettävissä</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Valitse vuosi"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> poistettiin"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (työ)"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Irrota näyttö koskettamalla Takaisin-painiketta pitkään."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Sovellus on kiinnitetty. Irrottaminen ei ole sallittua tällä laitteella."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Näyttö kiinnitetty"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Palauta nyt"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> ei ole käytössä."</string> <string name="conference_call" msgid="3751093130790472426">"Puhelinneuvottelu"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Työkaluvinkki ponnahdusikkunassa"</string> </resources> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 4ba4871e7364..009b9eba6597 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Sélectionnez une année"</string> <string name="deleted_key" msgid="7659477886625566590">"« <xliff:g id="KEY">%1$s</xliff:g> » a été supprimé"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Pour annuler l\'épinglage de cet écran, maintenez enfoncée la touche Retour."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'application est épinglée : l\'annulation de l\'épinglage n\'est pas autorisée sur cet appareil."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Écran épinglé"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 3dc8b28fc733..5b21dd40d21e 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Sélectionner une année"</string> <string name="deleted_key" msgid="7659477886625566590">"\"<xliff:g id="KEY">%1$s</xliff:g>\" supprimé"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Pour annuler l\'épinglage, appuyez de manière prolongée sur \"Retour\"."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'application est épinglée. L\'annulation de l\'épinglage n\'est pas autorisée sur cet appareil."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Écran épinglé."</string> diff --git a/core/res/res/values-gl-rES/strings.xml b/core/res/res/values-gl-rES/strings.xml index 077f4e0538da..10a76474026d 100644 --- a/core/res/res/values-gl-rES/strings.xml +++ b/core/res/res/values-gl-rES/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volume dos elementos multimedia"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volume das notificacións"</string> <string name="ringtone_default" msgid="3789758980357696936">"Ton de chamada predeterminado"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Predeterminado (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ningún"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Tons de chamada"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Sons de alarma"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Sons de notificación"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Descoñecido"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Redes wifi dispoñibles</item> <item quantity="one">Rede wifi dispoñible</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Seleccionar ano"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> do traballo"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Para soltar a pantalla, mantén premido Volver."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"A aplicación está fixada: non se permite soltala neste dispositivo."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Pantalla fixada"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Restablecer agora"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Desactivouse <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Conferencia telefónica"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Ventá emerxente do cadro de información"</string> </resources> diff --git a/core/res/res/values-gu-rIN/strings.xml b/core/res/res/values-gu-rIN/strings.xml index 149e466346a1..9a7d43266df0 100644 --- a/core/res/res/values-gu-rIN/strings.xml +++ b/core/res/res/values-gu-rIN/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"મીડિયા વોલ્યુમ"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"સૂચના વૉલ્યૂમ"</string> <string name="ringtone_default" msgid="3789758980357696936">"ડિફોલ્ટ રિંગટોન"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"ડિફૉલ્ટ (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"કોઈ નહીં"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"રિંગટોન્સ"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"એલાર્મ ધ્વનિઓ"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"સૂચના ધ્વનિઓ"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"અજાણી"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Wi-Fi નેટવર્ક્સ ઉપલબ્ધ</item> <item quantity="other">Wi-Fi નેટવર્ક્સ ઉપલબ્ધ</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"વર્ષ પસંદ કરો"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> કાઢી નાખી"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"કાર્યાલય <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"આ સ્ક્રીનને અનપિન કરવા માટે, પાછળને ટચ કરીને પકડી રાખો."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ઍપ્લિકેશન પિન કરેલ છે. આ ઉપકરણ પર અનપિન કરવાની મંજૂરી નથી."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"સ્ક્રીન પિન કરી"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"હમણાં ફરીથી સેટ કરો"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> અક્ષમ કર્યું"</string> <string name="conference_call" msgid="3751093130790472426">"કોન્ફરન્સ કૉલ"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"ટૂલટિપ પોપઅપ"</string> </resources> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index c006df95c3eb..c46102b08d96 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"वर्ष चुनें"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> को हटा दिया गया"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्यस्थल का <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"इस स्क्रीन को अनपिन करने के लिए, वापस जाएं को स्पर्श करके रखें."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ऐप पिन किया गया है: इस डिवाइस पर अनपिन करने की अनुमति नहीं है."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रीन पिन की गई"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 8d90eb929662..fa593acda2ce 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1082,16 +1082,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Glasnoća medija"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Glasnoća obavijesti"</string> <string name="ringtone_default" msgid="3789758980357696936">"Zadana melodija zvona"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Zadano (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ništa"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Melodije zvona"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Zvukovi alarma"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Zvukovi obavijesti"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Nepoznato"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Dostupne su Wi-Fi mreže</item> <item quantity="few">Dostupne su Wi-Fi mreže</item> @@ -1591,6 +1587,10 @@ <string name="select_year" msgid="7952052866994196170">"Odaberite godinu"</string> <string name="deleted_key" msgid="7659477886625566590">"Izbrisan je broj <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> za posao"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Da biste otkvačili ovaj zaslon, dodirnite i zadržite Natrag."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je prikvačena: otkvačivanje nije dopušteno na tom uređaju."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Zaslon je pričvršćen"</string> @@ -1719,6 +1719,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Vrati na zadano sada"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> – onemogućeno"</string> <string name="conference_call" msgid="3751093130790472426">"Konferencijski poziv"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Skočni prozor opisa"</string> </resources> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 67e1c0fd79fb..d21e47e6d48c 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Média hangereje"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Értesítés hangereje"</string> <string name="ringtone_default" msgid="3789758980357696936">"Alapértelmezett csengőhang"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Alapértelmezett (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Egyik sem"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Csengőhangok"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Ébresztőhangok"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Értesítőhangok"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Ismeretlen"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi hálózatok érhetők el</item> <item quantity="one">Van elérhető Wi-Fi hálózat</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Válassza ki az évet"</string> <string name="deleted_key" msgid="7659477886625566590">"A(z) <xliff:g id="KEY">%1$s</xliff:g> érték törölve"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Munkahelyi <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"A képernyő rögzítésének feloldásához tartsa lenyomva a Vissza lehetőséget."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Az alkalmazás rögzítve van: a rögzítés feloldása nem engedélyezett ezen az eszközön."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Képernyő rögzítve"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Visszaállítás most"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"A(z) <xliff:g id="LABEL">%1$s</xliff:g> letiltva"</string> <string name="conference_call" msgid="3751093130790472426">"Konferenciahívás"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Elemleíró előugró ablak"</string> </resources> diff --git a/core/res/res/values-hy-rAM/strings.xml b/core/res/res/values-hy-rAM/strings.xml index 6444b51586da..10072a260071 100644 --- a/core/res/res/values-hy-rAM/strings.xml +++ b/core/res/res/values-hy-rAM/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Ընտրեք տարին"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> թիվը ջնջված է"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Աշխատանքային <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Այս էկրանն ապամրացնելու համար հպեք և պահեք Հետ կոճակը:"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Հավելվածն ամրացված է: Ապամրացումն այս սարքում չի թույլատրվում:"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Էկրանն ամրացված է"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 873e3ae9150a..29d820e9700c 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volume media"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volume pemberitahuan"</string> <string name="ringtone_default" msgid="3789758980357696936">"Nada dering default"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Default (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Tidak Ada"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Nada dering"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Suara alarm"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Suara notifikasi"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Tidak diketahui"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Jaringan Wi-Fi tersedia</item> <item quantity="one">Jaringan Wi-Fi tersedia</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Pilih tahun"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> dihapus"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Kantor <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Untuk melepas pin layar ini, sentuh & tahan tombol Kembali."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Pin dipasang ke aplikasi. Melepas pin tidak diizinkan di perangkat ini."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Layar disematkan"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Setel ulang sekarang"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> dinonaktifkan"</string> <string name="conference_call" msgid="3751093130790472426">"Konferensi Telepon"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Munculan Keterangan Alat"</string> </resources> diff --git a/core/res/res/values-is-rIS/strings.xml b/core/res/res/values-is-rIS/strings.xml index 70a41be3ab34..655c5215f8fb 100644 --- a/core/res/res/values-is-rIS/strings.xml +++ b/core/res/res/values-is-rIS/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Hljóðstyrkur efnisspilunar"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Hljóðstyrkur tilkynninga"</string> <string name="ringtone_default" msgid="3789758980357696936">"Sjálfgefinn hringitónn"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Sjálfgefið (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ekkert"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Hringitónar"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Vekjarahljóð"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Tilkynningarhljóð"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Óþekkt"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Wi-Fi net í boði</item> <item quantity="other">Wi-Fi net í boði</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Veldu ár"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eytt"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> í vinnu"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Til að taka lásinn af þessari skjámynd skaltu halda inni bakkhnappinum."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Forritið er fest: Ekki er hægt að losa forrit í þessu tæki."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Skjár festur"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Endurstilla núna"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Slökkt <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Símafundur"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Ábendingarsprettigluggi"</string> </resources> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index b3521ff049a8..446e36712d06 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volume contenuti multimediali"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volume notifiche"</string> <string name="ringtone_default" msgid="3789758980357696936">"Suoneria predefinita"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Predefinita (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Nessuna"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Suonerie"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Suoni delle sveglie"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Suoni di notifica"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Sconosciuta"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Reti Wi-Fi disponibili</item> <item quantity="one">Rete Wi-Fi disponibile</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Seleziona anno"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminato"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> lavoro"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Per sbloccare questa schermata tieni premuta l\'opzione Indietro."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"L\'app è bloccata. Su questo dispositivo non è consentito lo sblocco."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Schermata bloccata"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Ripristina ora"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Widget <xliff:g id="LABEL">%1$s</xliff:g> disattivato"</string> <string name="conference_call" msgid="3751093130790472426">"Audioconferenza"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Popup descrizione comando"</string> </resources> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index dd41f2344a17..1881ae4a1947 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -1618,6 +1618,10 @@ <string name="select_year" msgid="7952052866994196170">"בחר שנה"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> נמחק"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"עבודה <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"כדי לבטל את הצמדת המסך הזה, לחץ לחיצה ממושכת על הלחצן \'הקודם\'."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"האפליקציה מוצמדת: ביטול ההצמדה אסור במכשיר הזה."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"המסך מוצמד"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 28db181af126..fdfb890d2485 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"年を選択"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g>を削除しました"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"仕事の<xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"この画面の固定を解除するには [戻る] を押し続けます。"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"アプリは固定されています。この端末では固定を解除できません。"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"画面を固定しました"</string> diff --git a/core/res/res/values-ka-rGE/strings.xml b/core/res/res/values-ka-rGE/strings.xml index c58803d3c20d..56f0a6215274 100644 --- a/core/res/res/values-ka-rGE/strings.xml +++ b/core/res/res/values-ka-rGE/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"მედიის ხმა"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"შეტყობინების ხმა"</string> <string name="ringtone_default" msgid="3789758980357696936">"ნაგულისხმევი ზარი"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"ნაგულისხმევი (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"არც ერთი"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"ზარები"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"მაღვიძარას ხმები"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"შეტყობინების ხმები"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"უცნობი"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">ხელმისაწვდომია Wi-Fi ქსელები</item> <item quantity="one">ხელმისაწვდომია Wi-Fi ქსელი</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"აირჩიეთ წელი"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> წაიშალა"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"სამსახური <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ამ ეკრანის ჩამაგრების მოსახსნელად, ხანგრძლივად შეეხეთ ღილაკს „უკან“."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"აპი მიმაგრებულია: მიმაგრების მოხსნა არ არის ნებადართული ამ მოწყობილობაზე."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"ეკრანი დაფიქსირდა"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"ახლავე გადაყენება"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"გათიშული <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"საკონფერენციო ზარი"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"მინიშნების კონტექსტური სარკმელი"</string> </resources> diff --git a/core/res/res/values-kk-rKZ/strings.xml b/core/res/res/values-kk-rKZ/strings.xml index a62cbf0aa3ae..51d1dcc7d9ee 100644 --- a/core/res/res/values-kk-rKZ/strings.xml +++ b/core/res/res/values-kk-rKZ/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Жыл таңдау"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> жойылды"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Жұмыс <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Осы экранды босату үшін \"Артқа\" түймесін басып тұрыңыз."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Бағдарлама белгіленді: Бұл құрылғыда белгіні алуға рұқсат берілмейді."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Экран түйрелді"</string> diff --git a/core/res/res/values-km-rKH/strings.xml b/core/res/res/values-km-rKH/strings.xml index 08cac8c63bd8..aa6cb7731e6a 100644 --- a/core/res/res/values-km-rKH/strings.xml +++ b/core/res/res/values-km-rKH/strings.xml @@ -1566,6 +1566,10 @@ <string name="select_year" msgid="7952052866994196170">"ជ្រើសឆ្នាំ"</string> <string name="deleted_key" msgid="7659477886625566590">"បានលុប <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"កន្លែងធ្វើការ <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ដើម្បីផ្តាច់អេក្រង់នេះ សូមប៉ះ និងសង្កត់ប៊ូតុងថយក្រោយឲ្យជាប់។"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"កម្មវិធីនេះត្រូវបានខ្ទាស់។ មិនអនុញ្ញាតឲ្យដោះការខ្ទាស់នៅលើឧបករណ៍នេះទេ។"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"បានភ្ជាប់អេក្រង់"</string> diff --git a/core/res/res/values-kn-rIN/strings.xml b/core/res/res/values-kn-rIN/strings.xml index ab9cd90e258e..30d7e4e00932 100644 --- a/core/res/res/values-kn-rIN/strings.xml +++ b/core/res/res/values-kn-rIN/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"ವರ್ಷವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ಅಳಿಸಲಾಗಿದೆ"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"ಕೆಲಸ <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ಈ ಪರದೆಯನ್ನು ಅನ್ಪಿನ್ ಮಾಡಲು, ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಂಂದೆ ಒತ್ತಿ ಹಿಡಿಯಿರಿ."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ಅಪ್ಲಿಕೇಶನ್ ಪಿನ್ ಮಾಡಲಾಗಿದೆ: ಈ ಸಾಧನದಲ್ಲಿ ಅನ್ಪಿನ್ ಮಾಡುವುದನ್ನು ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"ಸ್ಕ್ರೀನ್ ಪಿನ್ ಮಾಡಲಾಗಿದೆ"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 10bb801d3d5c..dbb14890ba34 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"연도 선택"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> 삭제됨"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"업무용 <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"이 화면을 고정 해제하려면 \'뒤로\'를 길게 터치합니다."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"앱이 고정되었습니다. 이 기기에서는 고정 해제를 허용하지 않습니다."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"화면 고정됨"</string> diff --git a/core/res/res/values-ky-rKG/strings.xml b/core/res/res/values-ky-rKG/strings.xml index 0d8a38ea6498..358318929d68 100644 --- a/core/res/res/values-ky-rKG/strings.xml +++ b/core/res/res/values-ky-rKG/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Медиа үнүнүн деңгээли"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Эскертме үнүнүн деңгээли"</string> <string name="ringtone_default" msgid="3789758980357696936">"Демейки рингтон"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Демейки рингтон (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Эч бир"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Ринтондор"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Ойготкучтун добуштары"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Эскертменин добуштары"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Белгисиз"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi тармагы жеткиликтүү</item> <item quantity="one">Wi-Fi тармагы жеткиликтүү</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Жылды тандаңыз"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> өчүрүлдү"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Жумуш <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Бул экранды бошотуу үчүн \"Артка\" баскычын басып, кармап туруңуз."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Колдонмо кадалган: Бул түзмөктө бошотууга уруксат жок."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Экран кадалды"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Баштапкы абалга келтирүү"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> өчүрүлдү"</string> <string name="conference_call" msgid="3751093130790472426">"Конференц чалуу"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Калкып чыгуучу кеңеш"</string> </resources> diff --git a/core/res/res/values-lo-rLA/strings.xml b/core/res/res/values-lo-rLA/strings.xml index ab1a4684e6e4..baf6d51b5de8 100644 --- a/core/res/res/values-lo-rLA/strings.xml +++ b/core/res/res/values-lo-rLA/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"ເລືອກປີ"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ຖືກລຶບແລ້ວ"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"ບ່ອນເຮັດວຽກ <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ກົດປຸ່ມກັບຄືນຄ້າງໄວ້ເພື່ອເຊົາປັກໝຸດໜ້າຈໍນີ້."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ແອັບຖືກປັກໝຸດແລ້ວ: ບໍ່ອະນຸຍາດໃຫ້ຖອນປັກໝຸດຢູ່ເທິງອຸປະກອນນີ້."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"ປັກໝຸດໜ້າຈໍແລ້ວ"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 455726430bf2..f9293c4ec722 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1618,6 +1618,10 @@ <string name="select_year" msgid="7952052866994196170">"Pasirinkite metus"</string> <string name="deleted_key" msgid="7659477886625566590">"Ištrinta: <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Darbo <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Kad atsegtumėte šį ekraną, palieskite ir palaikykite „Atgal“."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Programa prisegta: šiame įrenginyje negalima atsegti."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekrano prisegtas"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 0965cf6acf6f..04ea14e7ba77 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1591,6 +1591,10 @@ <string name="select_year" msgid="7952052866994196170">"Atlasiet gadu."</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> tika dzēsts."</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Darbā: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Lai atspraustu šo ekrānu, pieskarieties pogai “Atpakaļ” un turiet to."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Lietotne ir piesprausta. Atspraušana šajā ierīcē nav atļauta."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekrāns ir piesprausts"</string> diff --git a/core/res/res/values-mk-rMK/strings.xml b/core/res/res/values-mk-rMK/strings.xml index 8d96f5c706ec..aeb0c41ce253 100644 --- a/core/res/res/values-mk-rMK/strings.xml +++ b/core/res/res/values-mk-rMK/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Јачина на звук на медиуми"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Јачина на звук на известување"</string> <string name="ringtone_default" msgid="3789758980357696936">"Стандардна мелодија"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Стандардна (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ниедна"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Мелодии"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Звуци за аларм"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Звуци за известување"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Непозната"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Wi-Fi мрежи се достапни</item> <item quantity="other">Wi-Fi мрежи се достапни</item> @@ -1566,6 +1562,10 @@ <string name="select_year" msgid="7952052866994196170">"Избери година"</string> <string name="deleted_key" msgid="7659477886625566590">"Избришано <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Работа <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"За откачување на екранов, допрете и задржете Назад."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Апликацијата е закачена: откачување не е дозволено на уредов."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Екранот е закачен"</string> @@ -1685,6 +1685,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Ресетирај сега"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Оневозможен <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Конференциски повик"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Појавен прозорец на совет за алатка"</string> </resources> diff --git a/core/res/res/values-ml-rIN/strings.xml b/core/res/res/values-ml-rIN/strings.xml index 446d4f200b6e..4193079c8e63 100644 --- a/core/res/res/values-ml-rIN/strings.xml +++ b/core/res/res/values-ml-rIN/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"വർഷം തിരഞ്ഞെടുക്കുക"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ഇല്ലാതാക്കി"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"ഔദ്യോഗികം <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ഈ സ്ക്രീൻ അൺപിൻ ചെയ്യാൻ, ബാക്ക് ബട്ടൺ സ്പർശിച്ച് പിടിക്കുക"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"അപ്ലിക്കേഷൻ പിൻ ചെയ്തു: ഈ ഉപകരണത്തിൽ അൺപിൻ ചെയ്യാനാവില്ല."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"സ്ക്രീൻ പിൻ ചെയ്തു"</string> diff --git a/core/res/res/values-mn-rMN/strings.xml b/core/res/res/values-mn-rMN/strings.xml index 61997276550a..74006da176e2 100644 --- a/core/res/res/values-mn-rMN/strings.xml +++ b/core/res/res/values-mn-rMN/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Жилийг сонгоно уу"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> устсан"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Ажлын <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Энэ дэлгэцийг эхэнд нээхийг болиулахын тулд Буцах товчлуурыг дараад, хүлээнэ үү."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App-ыг тусгайлан тэмдэглэсэн байна: Энэ төхөөрөмж дээр тусгайлан тэмдэглэсэн сонголтыг устгах боломжгүй."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Дэлгэцийг тогтоосон"</string> diff --git a/core/res/res/values-mr-rIN/strings.xml b/core/res/res/values-mr-rIN/strings.xml index 8f2fc0f7d6b8..dd99f158e635 100644 --- a/core/res/res/values-mr-rIN/strings.xml +++ b/core/res/res/values-mr-rIN/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"मीडिया व्हॉल्यूम"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"सूचना व्हॉल्यूम"</string> <string name="ringtone_default" msgid="3789758980357696936">"डीफॉल्ट रिंगटोन"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"डीफॉल्ट (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"काहीही नाही"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"रिंगटोन"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"अलार्म ध्वनी"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"सूचना ध्वनी"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"अज्ञात"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">वाय-फाय नेटवर्क उपलब्ध</item> <item quantity="other">वाय-फाय नेटवर्क उपलब्ध</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"वर्ष निवडा"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> हटविली"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्य <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ही स्क्रीन अनपिन करण्यासाठी, परत ला स्पर्श करा आणि धरून ठेवा."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"अॅप पिन केलेला आहे: या डिव्हाइसवर अनपिन करण्यास अनुमती नाही."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रीन पिन केली"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"आता रीसेट करा"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> अक्षम केले"</string> <string name="conference_call" msgid="3751093130790472426">"परिषद कॉल"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"टूलटिप पॉपअप"</string> </resources> diff --git a/core/res/res/values-ms-rMY/strings.xml b/core/res/res/values-ms-rMY/strings.xml index 9b6a20a8588e..57edab848e69 100644 --- a/core/res/res/values-ms-rMY/strings.xml +++ b/core/res/res/values-ms-rMY/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Pilih tahun"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> dipadamkan"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Kerja <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Untuk menyahsematkan skrin ni, ketik & tahan Kembali."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Apl disemat: Nyahsemat tidak dibenarkan pada peranti ini."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Skrin disemat"</string> diff --git a/core/res/res/values-my-rMM/strings.xml b/core/res/res/values-my-rMM/strings.xml index 3276dcd87aac..834a665217e6 100644 --- a/core/res/res/values-my-rMM/strings.xml +++ b/core/res/res/values-my-rMM/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"မီဒီယာအသံအတိုးအကျယ်"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"အကြောင်းကြားသံအတိုးအကျယ်"</string> <string name="ringtone_default" msgid="3789758980357696936">"မူရင်းမြည်သံ"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"မူရင်း (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"တစ်ခုမှမဟုတ်"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"မြည်သံများ"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"နှိုးစက်သံ"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"အကြောင်းကြားချက်အသံ"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"အမျိုးအမည်မသိ"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi ကွန်ယက်များရရှိနိုင်သည်</item> <item quantity="one">Wi-Fi ကွန်ယက်ရရှိနိုင်သည်</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"ခုနှစ်ကို ရွေးပါ"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ကို ဖျက်ပြီးပါပြီ"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"အလုပ် <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ဤမျက်နှာပြင်ကို ပင်ဖြုတ်ရန် \"နောက်သို့\" ကိုထိပြီးဖိထားပါ။"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"အက်ပ်ကို ပင်ထိုးထားသည်။ ပင်ဖျက်ခြင်းကို ဒီစက်မှာ မရနိုင်ပါ။"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"မျက်နှာပြင်ကို ပင်ထိုးထား"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"ယခုပြန်လည်သတ်မှတ်ပါ"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"ပိတ်ထားသည့် <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"လူအမြောက်အမြားတပြိုင်နက် ခေါ်ဆိုမှု"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"အကြံပြုချက်ပြ ပေါ့အပ်ဝင်းဒိုး"</string> </resources> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index dba56dc9168c..61e74a2f9661 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Medievolum"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Varslingsvolum"</string> <string name="ringtone_default" msgid="3789758980357696936">"Standard ringetone"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Standard (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ingen"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Ringelyder"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Alarmlyder"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Varsellyder"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Ukjent"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi-nettverk er tilgjengelig</item> <item quantity="one">Wi-Fi-nettverk er tilgjengelig</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Velg året"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> er slettet"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Jobb-<xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"For å løsne denne skjermen, trykk og hold inne Tilbake."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen er festet – du kan ikke løsne apper på denne enheten."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Skjermen er festet"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Tilbakestill nå"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> er slått av"</string> <string name="conference_call" msgid="3751093130790472426">"Konferansesamtale"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Verktøytips i forgrunnen"</string> </resources> diff --git a/core/res/res/values-ne-rNP/strings.xml b/core/res/res/values-ne-rNP/strings.xml index 27abf1a03712..d6c8612a21cf 100644 --- a/core/res/res/values-ne-rNP/strings.xml +++ b/core/res/res/values-ne-rNP/strings.xml @@ -1065,16 +1065,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"मिडियाको मात्रा"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"सूचना भोल्युम"</string> <string name="ringtone_default" msgid="3789758980357696936">"पूर्वनिर्धारित रिङटोन"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"पूर्वनिर्धारित (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"कुनै पनि होइन"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"रिङटोनहरू"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"अलार्मका आवाजहरू"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"सूचना सम्बन्धी आवाजहरू"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"अज्ञात"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi सञ्जालहरू उपलब्ध छन्</item> <item quantity="one">Wi-Fi सञ्जाल उपलब्ध छ</item> @@ -1570,6 +1566,10 @@ <string name="select_year" msgid="7952052866994196170">"वर्ष चयन गर्नुहोस्"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> हटाइयो"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"कार्य <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"यस स्क्रिनलाई अनपिन गर्न पछाडि बटनलाई छोइराख्नुहोस्।"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"अनुप्रयोग पिन गरियो: यस यन्त्रमा अनपिन गर्ने अनुमति छैन।"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"स्क्रिन पिन गरियो"</string> @@ -1689,6 +1689,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"अहिले रिसेट गर्नुहोस्"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> लाई असक्षम गरियो"</string> <string name="conference_call" msgid="3751093130790472426">"सम्मेलन कल"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"उपकरणको वर्णन गर्ने पपअप"</string> </resources> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index b02c9e1d9ce6..f7c76cdfe0b1 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Mediavolume"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Meldingsvolume"</string> <string name="ringtone_default" msgid="3789758980357696936">"Standaardbeltoon"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Standaard (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Geen"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Beltonen"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Alarmgeluiden"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Meldingsgeluiden"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Onbekend"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wifi-netwerken beschikbaar</item> <item quantity="one">Wifi-netwerk beschikbaar</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Jaar selecteren"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> verwijderd"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Werk <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Tik op Terug en houd vast om dit scherm los te maken."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"App is vastgezet: losmaken is niet toegestaan op dit apparaat."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Scherm vastgezet"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Nu resetten"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> uitgeschakeld"</string> <string name="conference_call" msgid="3751093130790472426">"Telefonische vergadering"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Pop-up met knopinfo"</string> </resources> diff --git a/core/res/res/values-pa-rIN/strings.xml b/core/res/res/values-pa-rIN/strings.xml index cb63a545175a..39c5dfaa5cc4 100644 --- a/core/res/res/values-pa-rIN/strings.xml +++ b/core/res/res/values-pa-rIN/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"ਸਾਲ ਚੁਣੋ"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> ਹਟਾਇਆ ਗਿਆ"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"ਕੰਮ <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਅਨਪਿੰਨ ਕਰਨ ਲਈ, ਸਪਰਸ਼ ਕਰੋ & ਦਬਾਈ ਰੱਖੋ।"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ਐਪ ਪਿੰਨਡ ਹੈ: ਇਸ ਡੀਵਾਈਸ ਤੇ ਅਨਪਿਨ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ।"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"ਸਕ੍ਰੀਨ ਪਿੰਨ ਕੀਤੀ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 3cfb2423e9aa..4ffd9636b00f 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1105,16 +1105,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Głośność multimediów"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Głośność powiadomień"</string> <string name="ringtone_default" msgid="3789758980357696936">"Dzwonek domyślny"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Domyślny (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Brak"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Dzwonki"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Dźwięki alarmu"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Dźwięki powiadomień"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Nieznany"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="few">Dostępne są sieci Wi-Fi</item> <item quantity="many">Dostępne są sieci Wi-Fi</item> @@ -1618,6 +1614,10 @@ <string name="select_year" msgid="7952052866994196170">"Wybierz rok"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> usunięte"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (praca)"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Aby odpiąć ten ekran, naciśnij i przytrzymaj Wstecz."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacja jest przypięta. Nie możesz jej odpiąć na tym urządzeniu."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekran przypięty"</string> @@ -1755,6 +1755,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Resetuj teraz"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Wyłączono: <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Połączenie konferencyjne"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Wyskakujące okno z etykietką"</string> </resources> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index b5b30a861e71..482c1e9316ee 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volume da mídia"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volume da notificação"</string> <string name="ringtone_default" msgid="3789758980357696936">"Toque padrão"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Padrão (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Nenhum"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Toques"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Sons do alarme"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Sons de notificação"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Desconhecido"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Redes Wi-Fi disponíveis</item> <item quantity="other">Redes Wi-Fi disponíveis</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Selecione o ano"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> excluído"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Trabalho: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Para liberar esta tela, toque no botão \"Voltar\" e mantenha-o pressionado."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"O app está fixado. A liberação não é permitida neste dispositivo."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Tela fixada"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Reiniciar agora"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Widget <xliff:g id="LABEL">%1$s</xliff:g> desativado"</string> <string name="conference_call" msgid="3751093130790472426">"Teleconferência"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Pop-up de dica"</string> </resources> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 952df716556a..3f9417e10dad 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volume de multimédia"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volume de notificações"</string> <string name="ringtone_default" msgid="3789758980357696936">"Toque predefinido"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Predefinição (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Nada"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Toques"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Sons de alarme"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Sons de notificação"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Desconhecido"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Redes Wi-Fi disponíveis</item> <item quantity="one">Rede Wi-Fi disponível</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Selecionar ano"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> eliminado"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de trabalho"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Para soltar este ecrã, toque sem soltar em Anterior."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"A aplicação está fixa: não é permitido soltá-la neste dispositivo."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ecrã fixo"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Repor agora"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> desativado"</string> <string name="conference_call" msgid="3751093130790472426">"Conferência"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Pop-up de sugestão"</string> </resources> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index b5b30a861e71..482c1e9316ee 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Volume da mídia"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Volume da notificação"</string> <string name="ringtone_default" msgid="3789758980357696936">"Toque padrão"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Padrão (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Nenhum"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Toques"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Sons do alarme"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Sons de notificação"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Desconhecido"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Redes Wi-Fi disponíveis</item> <item quantity="other">Redes Wi-Fi disponíveis</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Selecione o ano"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> excluído"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Trabalho: <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Para liberar esta tela, toque no botão \"Voltar\" e mantenha-o pressionado."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"O app está fixado. A liberação não é permitida neste dispositivo."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Tela fixada"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Reiniciar agora"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Widget <xliff:g id="LABEL">%1$s</xliff:g> desativado"</string> <string name="conference_call" msgid="3751093130790472426">"Teleconferência"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Pop-up de dica"</string> </resources> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 6f938d9dbb88..5735f7c9ac9f 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1591,6 +1591,10 @@ <string name="select_year" msgid="7952052866994196170">"Selectați anul"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> a fost șters"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> de serviciu"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Pentru a anula fixarea acestui ecran, atingeți lung opțiunea Înapoi."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplicația este fixată: Anularea fixării nu este permisă pe acest dispozitiv."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ecran fixat"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 83ae58b708fd..0d6ca0681fbf 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1105,16 +1105,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Громкость мультимедиа"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Громкость уведомлений"</string> <string name="ringtone_default" msgid="3789758980357696936">"Мелодия по умолчанию"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"По умолчанию (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Без звука"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Мелодии"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Сигнал будильника"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Мелодии уведомлений"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Неизвестно"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Есть доступные сети Wi-Fi</item> <item quantity="few">Есть доступные сети Wi-Fi</item> @@ -1618,6 +1614,10 @@ <string name="select_year" msgid="7952052866994196170">"Выберите год"</string> <string name="deleted_key" msgid="7659477886625566590">"Цифра <xliff:g id="KEY">%1$s</xliff:g> удалена"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Рабочий <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Чтобы открепить экран, нажмите и удерживайте кнопку \"Назад\"."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Включена блокировка в приложении. Ее отключение запрещено правилами организации."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Блокировка включена"</string> @@ -1755,6 +1755,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Сбросить"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Виджет <xliff:g id="LABEL">%1$s</xliff:g> отключен"</string> <string name="conference_call" msgid="3751093130790472426">"Конференц-связь"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Подсказка"</string> </resources> diff --git a/core/res/res/values-si-rLK/strings.xml b/core/res/res/values-si-rLK/strings.xml index 2a4ee6626e52..7526c1eefa40 100644 --- a/core/res/res/values-si-rLK/strings.xml +++ b/core/res/res/values-si-rLK/strings.xml @@ -108,7 +108,7 @@ <string name="serviceClassDataSync" msgid="7530000519646054776">"සමමුහුර්ත කිරීම"</string> <string name="serviceClassPacket" msgid="6991006557993423453">"පැකැට්ටුව"</string> <string name="serviceClassPAD" msgid="3235259085648271037">"PAD"</string> - <string name="roamingText0" msgid="7170335472198694945">"රෝමිං දර්ශකය සක්රියයි"</string> + <string name="roamingText0" msgid="7170335472198694945">"රෝමිං දර්ශකය ක්රියාත්මකයි"</string> <string name="roamingText1" msgid="5314861519752538922">"රෝමිං දර්ශකය අක්රියයි"</string> <string name="roamingText2" msgid="8969929049081268115">"රෝමිං දර්ශකය සැණෙලි වෙයි"</string> <string name="roamingText3" msgid="5148255027043943317">"වටපිටාවෙන් ඉවත්ව"</string> @@ -189,7 +189,7 @@ <string name="turn_on_radio" msgid="3912793092339962371">"නොරැහන් සක්රිය කරන්න"</string> <string name="turn_off_radio" msgid="8198784949987062346">"නොරැහැන් අක්රිය කරන්න"</string> <string name="screen_lock" msgid="799094655496098153">"තිර අගුල"</string> - <string name="power_off" msgid="4266614107412865048">"බලය අක්රිය කරන්න"</string> + <string name="power_off" msgid="4266614107412865048">"බල රහිත කරන්න"</string> <string name="silent_mode_silent" msgid="319298163018473078">"හඬ නඟනය අක්රියයි"</string> <string name="silent_mode_vibrate" msgid="7072043388581551395">"හඬ නඟනය කම්පනය"</string> <string name="silent_mode_ring" msgid="8592241816194074353">"හඬ නඟනය සක්රීයයි"</string> @@ -213,7 +213,7 @@ <string name="global_actions" product="tv" msgid="7240386462508182976">"රූපවාහිනී විකල්ප"</string> <string name="global_actions" product="default" msgid="2406416831541615258">"දුරකථන විකල්ප"</string> <string name="global_action_lock" msgid="2844945191792119712">"තිර අගුල"</string> - <string name="global_action_power_off" msgid="4471879440839879722">"බලය අක්රිය කරන්න"</string> + <string name="global_action_power_off" msgid="4471879440839879722">"බල රහිත කරන්න"</string> <string name="global_action_emergency" msgid="7112311161137421166">"හදිසි"</string> <string name="global_action_bug_report" msgid="7934010578922304799">"දෝෂ වර්තාව"</string> <string name="bugreport_title" msgid="2667494803742548533">"දෝෂ වාර්තාවක් ගන්න"</string> @@ -228,7 +228,7 @@ </plurals> <string name="global_action_toggle_silent_mode" msgid="8219525344246810925">"නිහඬ ආකාරය"</string> <string name="global_action_silent_mode_on_status" msgid="3289841937003758806">"ශබ්දය අක්රියයි"</string> - <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"හඬ සක්රියයි"</string> + <string name="global_action_silent_mode_off_status" msgid="1506046579177066419">"හඬ ක්රියාත්මකයි"</string> <string name="global_actions_toggle_airplane_mode" msgid="5884330306926307456">"අහස්යානා ආකාරය"</string> <string name="global_actions_airplane_mode_on_status" msgid="2719557982608919750">"අහස්යානා ආකාරය සක්රීයයි."</string> <string name="global_actions_airplane_mode_off_status" msgid="5075070442854490296">"අහස්යානා අකාරය අක්රියයි"</string> @@ -975,7 +975,7 @@ <string name="whichViewApplicationLabel" msgid="2666774233008808473">"විවෘත කරන්න"</string> <string name="whichEditApplication" msgid="144727838241402655">"සමඟ සංස්කරණය කරන්න"</string> <string name="whichEditApplicationNamed" msgid="1775815530156447790">"%1$s සමඟ සංස්කරණය කරන්න"</string> - <string name="whichEditApplicationLabel" msgid="7183524181625290300">"සංස්කරණය කරන්න"</string> + <string name="whichEditApplicationLabel" msgid="7183524181625290300">"සංස්කරණය"</string> <string name="whichSendApplication" msgid="6902512414057341668">"සමඟ බෙදාගන්න"</string> <string name="whichSendApplicationNamed" msgid="2799370240005424391">"%s සමඟ බෙදාගන්න"</string> <string name="whichSendApplicationLabel" msgid="4579076294675975354">"බෙදා ගන්න"</string> @@ -1104,7 +1104,7 @@ <string name="wifi_p2p_dialog_title" msgid="97611782659324517">"ඍජු Wi-Fi"</string> <string name="wifi_p2p_turnon_message" msgid="2909250942299627244">"ඍජු Wi-Fi ආරම්භ කරන්න. මෙය Wi-Fi සේවාදායක/හොට්ස්පොට් එක අක්රිය කරනු ඇත."</string> <string name="wifi_p2p_failed_message" msgid="3763669677935623084">"ඍජු Wi-Fi ආරම්භ කළ නොහැක."</string> - <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi ඍජු සම්බන්ධතාව සක්රියයි"</string> + <string name="wifi_p2p_enabled_notification_title" msgid="2068321881673734886">"Wi-Fi Direct ක්රියාත්මකයි"</string> <string name="wifi_p2p_enabled_notification_message" msgid="8064677407830620023">"සැකසීම් සඳහා තට්ටු කරන්න"</string> <string name="accept" msgid="1645267259272829559">"පිළිගන්න"</string> <string name="decline" msgid="2112225451706137894">"ප්රතික්ෂේප කරන්න"</string> @@ -1336,7 +1336,7 @@ <string name="storage_usb_drive" msgid="6261899683292244209">"USB ධාවකය"</string> <string name="storage_usb_drive_label" msgid="4501418548927759953">"<xliff:g id="MANUFACTURER">%s</xliff:g> USB ධාවකය"</string> <string name="storage_usb" msgid="3017954059538517278">"USB ආචයනය"</string> - <string name="extract_edit_menu_button" msgid="8940478730496610137">"සංස්කරණය කරන්න"</string> + <string name="extract_edit_menu_button" msgid="8940478730496610137">"සංස්කරණය"</string> <string name="data_usage_warning_title" msgid="3620440638180218181">"දත්ත භාවිතය ගැන ඇඟවීම"</string> <string name="data_usage_warning_body" msgid="6660692274311972007">"භාවිතය සහ සැකසීම් බැලීමට තට්ටු කරන්න."</string> <string name="data_usage_3g_limit_title" msgid="4361523876818447683">"2G-3G දත්ත සීමාවට ළඟාවී ඇත"</string> @@ -1382,7 +1382,7 @@ <string name="default_media_route_name_hdmi" msgid="2450970399023478055">"HDMI"</string> <string name="default_audio_route_category_name" msgid="3722811174003886946">"පද්ධතිය"</string> <string name="bluetooth_a2dp_audio_route_name" msgid="8575624030406771015">"බ්ලූටූත් ශ්රව්ය"</string> - <string name="wireless_display_route_description" msgid="9070346425023979651">"රැහැන් රහිත දර්ශනය"</string> + <string name="wireless_display_route_description" msgid="9070346425023979651">"නොරැහැන් සංදර්ශකය"</string> <string name="media_route_button_content_description" msgid="591703006349356016">"Cast"</string> <string name="media_route_chooser_title" msgid="1751618554539087622">"උපාංගයට සම්බන්ධ වන්න"</string> <string name="media_route_chooser_title_for_remote_display" msgid="3395541745872017583">"තිරය උපාංගයට යොමු කරන්න"</string> @@ -1566,6 +1566,10 @@ <string name="select_year" msgid="7952052866994196170">"වසර තෝරන්න"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> මකා දමන ලදි"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"වැඩ <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"මෙම තිරය ඇමුණුම් ඉවත් කිරීමට, ස්පර්ශ කර අල්ලා ගෙන සිටින්න."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"යෙදුම අමුණා ඇත: ගැලවීමට මෙම උපාංගය මත ඉඩ දිය නොහැකිය."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"තිරය අගුළු දමා ඇත"</string> @@ -1614,7 +1618,7 @@ </plurals> <string name="zen_mode_until" msgid="7336308492289875088">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> තෙක්"</string> <string name="zen_mode_alarm" msgid="9128205721301330797">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> තෙක් (ඊළඟ එලාමය)"</string> - <string name="zen_mode_forever" msgid="7420011936770086993">"ඔබ මෙය අක්රිය කරන තුරු"</string> + <string name="zen_mode_forever" msgid="7420011936770086993">"ඔබ මෙය ක්රියාවිරහිත කරන තුරු"</string> <string name="zen_mode_forever_dnd" msgid="3792132696572189081">"බාධා නොකරන්න ඔබ අක්රිය කරන තුරු"</string> <string name="zen_mode_rule_name_combination" msgid="191109939968076477">"<xliff:g id="FIRST">%1$s</xliff:g> / <xliff:g id="REST">%2$s</xliff:g>"</string> <string name="toolbar_collapse_description" msgid="2821479483960330739">"හකුළන්න"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index ef7678c9703f..7ff3ce2944e0 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1105,16 +1105,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Hlasitosť médií"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Hlasitosť upozornení"</string> <string name="ringtone_default" msgid="3789758980357696936">"Predvolený tón zvonenia"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Predvolený (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Žiadny"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Tóny zvonenia"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Zvuky budíka"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Zvuky upozornení"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Neznáme"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="few">K dispozícii sú siete Wi-Fi</item> <item quantity="many">K dispozícii sú siete Wi-Fi</item> @@ -1618,6 +1614,10 @@ <string name="select_year" msgid="7952052866994196170">"Vyberte rok"</string> <string name="deleted_key" msgid="7659477886625566590">"Číslo <xliff:g id="KEY">%1$s</xliff:g> bolo odstránené"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Práca – <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Ak chcete uvoľniť túto obrazovku, klepnite na tlačidlo Späť a podržte ho."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikácia je pripnutá. Uvoľnenie nie je na tomto zariadení povolené."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Obrazovka bola pripnutá"</string> @@ -1755,6 +1755,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Resetovať"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Deaktivovaná miniaplikácia <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="conference_call" msgid="3751093130790472426">"Konferenčný hovor"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Kontextové okno s popisom"</string> </resources> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index f3a2d234534c..f7b80966b16e 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -656,7 +656,7 @@ <string name="relationTypeMother" msgid="4578571352962758304">"Mati"</string> <string name="relationTypeParent" msgid="4755635567562925226">"Starši"</string> <string name="relationTypePartner" msgid="7266490285120262781">"Partner"</string> - <string name="relationTypeReferredBy" msgid="101573059844135524">"Predlagatelj:"</string> + <string name="relationTypeReferredBy" msgid="101573059844135524">"Predlagatelj"</string> <string name="relationTypeRelative" msgid="1799819930085610271">"Sorodnik"</string> <string name="relationTypeSister" msgid="1735983554479076481">"Sestra"</string> <string name="relationTypeSpouse" msgid="394136939428698117">"Zakonski partner"</string> @@ -1618,6 +1618,10 @@ <string name="select_year" msgid="7952052866994196170">"Izberite leto"</string> <string name="deleted_key" msgid="7659477886625566590">"Številka <xliff:g id="KEY">%1$s</xliff:g> je izbrisana"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> za delo"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Če želite odpeti ta zaslon, se dotaknite tipke za nazaj in jo pridržite."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Aplikacija je pripeta: v tej napravi odpenjanje ni dovoljeno."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Zaslon je pripet"</string> diff --git a/core/res/res/values-sq-rAL/strings.xml b/core/res/res/values-sq-rAL/strings.xml index 69f14d5dbd68..c3ccaca5e5c7 100644 --- a/core/res/res/values-sq-rAL/strings.xml +++ b/core/res/res/values-sq-rAL/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Përzgjidh vitin"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> u fshi"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Puna <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Për të hequr gozhdimin e ekranit, prek dhe mbaj të shtypur \"Prapa\"."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ekrani është i gozhduar. Anulimi i mbërthimit nuk lejohet nga organizata jote."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekrani u gozhdua"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 881421c6b1b4..da44a654d18d 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1082,16 +1082,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Јачина звука медија"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Јачина звука обавештења"</string> <string name="ringtone_default" msgid="3789758980357696936">"Подразумевани звук звона"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Подразумевано (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Без звука"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Звукови звона"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Звуци аларма"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Звуци обавештења"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Непознато"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Wi-Fi мреже су доступне</item> <item quantity="few">Wi-Fi мреже су доступне</item> @@ -1591,6 +1587,10 @@ <string name="select_year" msgid="7952052866994196170">"Изаберите годину"</string> <string name="deleted_key" msgid="7659477886625566590">"Избрисали сте <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> на послу"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Да бисте откачили овај екран, додирните и задржите Назад."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Апликација је закачена: откачињање није дозвољено на овом уређају."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Екран је закачен"</string> @@ -1719,6 +1719,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Ресетуј"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"Виџет <xliff:g id="LABEL">%1$s</xliff:g> је онемогућен"</string> <string name="conference_call" msgid="3751093130790472426">"Конференцијски позив"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Искачуће објашњење"</string> </resources> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index fdffd4622f34..1bf5196e56b9 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Mediavolym"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Meddelandevolym"</string> <string name="ringtone_default" msgid="3789758980357696936">"Standardringsignal"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Standard (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Ingen"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Ringsignaler"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Ljud för alarm"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Aviseringsljud"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Okänt"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi-nätverk är tillgängliga</item> <item quantity="one">Wi-Fi-nätverk är tillgängligt</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Välj år"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> har tagits bort"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> för arbetet"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Om du vill lossa skärmen trycker du länge på Tillbaka."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Appen är fäst. Att lossa den är inte tillåtet på den här enheten."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Skärmen är fäst"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Återställ nu"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> har inaktiverats"</string> <string name="conference_call" msgid="3751093130790472426">"Konferenssamtal"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Popup-fönster med beskrivning"</string> </resources> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 500b33b4e94e..1d3c7ac350ad 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -1057,16 +1057,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Sauti ya midia"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Sauti ya arifa"</string> <string name="ringtone_default" msgid="3789758980357696936">"Mlio chaguo-msingi"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Chaguo-msingi (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Hamna"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Toni za mlio"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Sauti za kengele"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Sauti za arifa"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Haijulikani"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Mitandao ya Wi-Fi inapatikana</item> <item quantity="one">Mtandao wa Wi-Fi unapatikana</item> @@ -1562,6 +1558,10 @@ <string name="select_year" msgid="7952052866994196170">"Chagua mwaka"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> kimefutwa"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Ya kazini <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Ili kubandua skrini hii, gusa na ushikilie Nyuma."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Programu imebanwa: Kubanuliwa hakuruhusiwi kwenye kifaa hiki."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Skrini imebandikwa"</string> @@ -1681,6 +1681,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Weka upya sasa"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> imezimwa"</string> <string name="conference_call" msgid="3751093130790472426">"Simu ya Kongamano"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Kidirisha Ibukizi cha vidokezo"</string> </resources> diff --git a/core/res/res/values-ta-rIN/strings.xml b/core/res/res/values-ta-rIN/strings.xml index 131d03fc512f..46a45899a01f 100644 --- a/core/res/res/values-ta-rIN/strings.xml +++ b/core/res/res/values-ta-rIN/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"ஆண்டைத் தேர்ந்தெடுக்கவும்"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> நீக்கப்பட்டது"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"பணியிடம் <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"இந்தத் திரையை விலக்க, \"முந்தையது\" பொத்தானைத் தொட்டுப் பிடிக்கவும்."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"பயன்பாடு பொருத்தப்பட்டது: பொருத்தியதை நீக்குவதற்கு இந்தச் சாதனத்தில் அனுமதியில்லை."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"திரை பின் செய்யப்பட்டது"</string> diff --git a/core/res/res/values-te-rIN/strings.xml b/core/res/res/values-te-rIN/strings.xml index 2d6b2ad3cb87..c6722eeb7335 100644 --- a/core/res/res/values-te-rIN/strings.xml +++ b/core/res/res/values-te-rIN/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"సంవత్సరాన్ని ఎంచుకోండి"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> తొలగించబడింది"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"కార్యాలయం <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"ఈ స్క్రీన్ని అన్పిన్ చేయడానికి, వెనుకకు తాకి & అలాగే పట్టుకోండి."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"అనువర్తనం పిన్ చేయబడింది: ఈ పరికరంలో అన్పిన్ చేయడానికి అనుమతి లేదు."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"స్క్రీన్ పిన్ చేయబడింది"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index c6a854474616..ab04bec0308f 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"เลือกปี"</string> <string name="deleted_key" msgid="7659477886625566590">"ลบ <xliff:g id="KEY">%1$s</xliff:g> แล้ว"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g>ที่ทำงาน"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"หากต้องการเลิกตรึงหน้าจอนี้ แตะ \"กลับ\" ค้างไว้"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"มีการตรึงแอป: ไม่อนุญาตให้เลิกตรึงบนอุปกรณ์นี้"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"ตรึงหน้าจอแล้ว"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index abcb19a5a36e..e7cec5635ed1 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Pumili ng taon"</string> <string name="deleted_key" msgid="7659477886625566590">"Tinanggal ang <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> sa Trabaho"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Upang i-unpin ang screen na ito, pindutin nang matagal ang Bumalik."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Naka-pin ang app: Hindi pinapayagan ang pag-a-unpin sa device na ito."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Naka-pin ang screen"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 455078421acc..59dc68e79e8e 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Yılı seçin"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> silindi"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> (İş)"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Bu ekranın sabitlemesini kaldırmak için Geri\'ye dokunup basılı tutun."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Uygulama sabitlendi. Bu cihazda sabitlemenin kaldırılmasına izin verilmiyor."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekran sabitlendi"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index b5561b9352a5..0ac3b805cb97 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1105,16 +1105,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Гучність медіа"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Гучність сповіщення"</string> <string name="ringtone_default" msgid="3789758980357696936">"Мелодія за умовчанням"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"За умовчанням (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Немає"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Мелодії"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Сигнали будильника"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Сигнали сповіщень"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Невідомо"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Мережі Wi-Fi доступні</item> <item quantity="few">Мережі Wi-Fi доступні</item> @@ -1618,6 +1614,10 @@ <string name="select_year" msgid="7952052866994196170">"Виберіть рік"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> видалено"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Робоча <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Щоб відкріпити цей екран, натисніть і утримуйте кнопку \"Назад\"."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Додаток закріплено. Його не можна відкріпити на цьому пристрої."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Екран закріплено"</string> @@ -1755,6 +1755,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Скинути"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> вимкнено"</string> <string name="conference_call" msgid="3751093130790472426">"Конференц-виклик"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Спливаюча підказка"</string> </resources> diff --git a/core/res/res/values-ur-rPK/strings.xml b/core/res/res/values-ur-rPK/strings.xml index ecb6ee0b3233..715dbed9504a 100644 --- a/core/res/res/values-ur-rPK/strings.xml +++ b/core/res/res/values-ur-rPK/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"سال منتخب کریں"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> کو حذف کر دیا گیا"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"دفتر <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"اس اسکرین سے پن ہٹانے کیلئے، پیچھے کو تھپتھپائیں اور دبا کر رکھیں۔"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"ایپ کو پن کر دیا گیا ہے: اس آلہ پر پن ہٹانے کی اجازت نہیں ہے۔"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"اسکرین کو پن کر دیا گیا"</string> diff --git a/core/res/res/values-uz-rUZ/strings.xml b/core/res/res/values-uz-rUZ/strings.xml index dd8b8baa48d6..255982c063e9 100644 --- a/core/res/res/values-uz-rUZ/strings.xml +++ b/core/res/res/values-uz-rUZ/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Multimedia ovozi"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Eslatma tovushi"</string> <string name="ringtone_default" msgid="3789758980357696936">"Standart rington"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Standart (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Yo‘q"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Ringtonlar"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Signal ovozlari"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Bildirishnoma ovozlari"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Noma’lum"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="other">Wi-Fi tarmoqlari aniqlandi</item> <item quantity="one">Wi-Fi tarmog‘i aniqlandi</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Yilni tanlash"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> raqami o‘chirib tashlandi"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Ish <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Bu ekrandan chiqish uchun “Orqaga” tugmasini bosib turing."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ilova qadab qo‘yilgan. Uni ekrandan yechish ushbu qurilmada ta’qiqlangan."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Ekran qadab qo‘yildi"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Asl holatga qaytarish"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"<xliff:g id="LABEL">%1$s</xliff:g> vidjeti o‘chirilgan"</string> <string name="conference_call" msgid="3751093130790472426">"Konferens-aloqa"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Qalqib chiquvchi maslahat oynasi"</string> </resources> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 37f1a9b08a7e..1f6a1cd7aa4e 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"Chọn năm"</string> <string name="deleted_key" msgid="7659477886625566590">"Đã xóa <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"<xliff:g id="LABEL">%1$s</xliff:g> làm việc"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Để bỏ ghim màn hình này, nhấn và giữ Quay lại."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Ứng dụng được ghim: Không được phép bỏ ghim trên thiết bị này."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Đã ghim màn hình"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 9def7dbf6563..5991f54c59c7 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"选择年份"</string> <string name="deleted_key" msgid="7659477886625566590">"已删除<xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"工作<xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"要取消固定此屏幕,请触摸并按住“返回”按钮。"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"应用处于固定状态:在此设备上不允许退出该模式。"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"已固定屏幕"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 6f101ab2348c..7191a3d76621 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -1240,7 +1240,7 @@ <string name="wallpaper_binding_label" msgid="1240087844304687662">"桌布"</string> <string name="chooser_wallpaper" msgid="7873476199295190279">"變更桌布"</string> <string name="notification_listener_binding_label" msgid="2014162835481906429">"通知接聽器"</string> - <string name="vr_listener_binding_label" msgid="4316591939343607306">"虛擬現實接聽器"</string> + <string name="vr_listener_binding_label" msgid="4316591939343607306">"VR 接聽器"</string> <string name="condition_provider_service_binding_label" msgid="1321343352906524564">"條件供應商"</string> <string name="notification_ranker_binding_label" msgid="774540592299064747">"通知排序服務"</string> <string name="vpn_title" msgid="19615213552042827">"VPN 已啟用。"</string> @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"選取年份"</string> <string name="deleted_key" msgid="7659477886625566590">"<xliff:g id="KEY">%1$s</xliff:g> 已刪除"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"公司<xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"如要取消固定這個畫面,請按住 [返回]。"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"應用程式已固定:不允許在此裝置上取消固定。"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"螢幕已固定"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 93acd0ec7772..9e37672c0881 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -1564,6 +1564,10 @@ <string name="select_year" msgid="7952052866994196170">"選取年份"</string> <string name="deleted_key" msgid="7659477886625566590">"已刪除 <xliff:g id="KEY">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"公司<xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"如要取消固定這個畫面,請按住「返回」按鈕。"</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"應用程式已固定:無法在這部裝置取消固定。"</string> <string name="lock_to_app_start" msgid="6643342070839862795">"已固定螢幕"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 14ea7386a09b..66d1010e7c64 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1059,16 +1059,12 @@ <string name="volume_icon_description_media" msgid="4217311719665194215">"Ivolumu yemidiya"</string> <string name="volume_icon_description_notification" msgid="7044986546477282274">"Ivolumu yesaziso"</string> <string name="ringtone_default" msgid="3789758980357696936">"Iringithoni emisiwe"</string> - <!-- no translation found for ringtone_default_with_actual (1767304850491060581) --> - <skip /> + <string name="ringtone_default_with_actual" msgid="1767304850491060581">"Okuzenzakalelayo (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> <string name="ringtone_silent" msgid="7937634392408977062">"Akunalutho"</string> <string name="ringtone_picker_title" msgid="3515143939175119094">"Amaringithoni"</string> - <!-- no translation found for ringtone_picker_title_alarm (6473325356070549702) --> - <skip /> - <!-- no translation found for ringtone_picker_title_notification (4837740874822788802) --> - <skip /> - <!-- no translation found for ringtone_unknown (3914515995813061520) --> - <skip /> + <string name="ringtone_picker_title_alarm" msgid="6473325356070549702">"Imisindo ye-alamu"</string> + <string name="ringtone_picker_title_notification" msgid="4837740874822788802">"Imisindo yezaziso"</string> + <string name="ringtone_unknown" msgid="3914515995813061520">"Akwaziwa"</string> <plurals name="wifi_available" formatted="false" msgid="7900333017752027322"> <item quantity="one">Amanethiwekhi we-Wi-Fi ayatholakala</item> <item quantity="other">Amanethiwekhi we-Wi-Fi ayatholakala</item> @@ -1564,6 +1560,10 @@ <string name="select_year" msgid="7952052866994196170">"Khetha unyaka"</string> <string name="deleted_key" msgid="7659477886625566590">"I-<xliff:g id="KEY">%1$s</xliff:g> isusiwe"</string> <string name="managed_profile_label_badge" msgid="2355652472854327647">"Umsebenzi <xliff:g id="LABEL">%1$s</xliff:g>"</string> + <!-- no translation found for managed_profile_label_badge_2 (5048136430082124036) --> + <skip /> + <!-- no translation found for managed_profile_label_badge_3 (2808305070321719040) --> + <skip /> <string name="lock_to_app_toast" msgid="1420543809500606964">"Ukuze ususe ukuphina lesi sikrini, thinta futhi ubambe okuthi Emuva."</string> <string name="lock_to_app_toast_locked" msgid="9125176335701699164">"Uhlelo lokusebenza luphiniwe: Ukususa ukuphina akuvunyelwe kule divayisi."</string> <string name="lock_to_app_start" msgid="6643342070839862795">"Isikrini siphiniwe"</string> @@ -1683,6 +1683,5 @@ <string name="demo_user_inactivity_timeout_right_button" msgid="5019306703066964808">"Setha kabusha manje"</string> <string name="suspended_widget_accessibility" msgid="6712143096475264190">"I-<xliff:g id="LABEL">%1$s</xliff:g> ekhutshaziwe"</string> <string name="conference_call" msgid="3751093130790472426">"Ikholi yengqungquthela"</string> - <!-- no translation found for tooltip_popup_title (8101791425834697618) --> - <skip /> + <string name="tooltip_popup_title" msgid="8101791425834697618">"Okuzivelelayo kwe-tooltip"</string> </resources> diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 95f372c43a59..7045eafabbd5 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2239,13 +2239,23 @@ (black). --> <attr name="background" format="reference|color" /> - <!-- Sets the padding, in pixels, of all four edges. Padding is defined as - space between the edges of the view and the view's content. A views size - will include it's padding. If a {@link android.R.attr#background} + <!-- Sets the padding, in pixels, of all four edges. Padding is defined as + space between the edges of the view and the view's content. This value will take + precedence over any of the edge-specific values, including + paddingHorizontal and paddingVertical, if set. A view's size + will include its padding. If a {@link android.R.attr#background} is provided, the padding will initially be set to that (0 if the - drawable does not have padding). Explicitly setting a padding value + drawable does not have padding). Explicitly setting a padding value will override the corresponding padding found in the background. --> <attr name="padding" format="dimension" /> + <!-- Sets the padding, in pixels, of the left and right edges; see + {@link android.R.attr#padding}. This value will take precedence over + paddingLeft, paddingRight, paddingStart, and paddingEnd, if set. --> + <attr name="paddingHorizontal" format="dimension" /> + <!-- Sets the padding, in pixels, of the top and bottom edges; see + {@link android.R.attr#padding}. This value will take precedence over + paddingTop and paddingBottom, if set. --> + <attr name="paddingVertical" format="dimension" /> <!-- Sets the padding, in pixels, of the left edge; see {@link android.R.attr#padding}. --> <attr name="paddingLeft" format="dimension" /> <!-- Sets the padding, in pixels, of the top edge; see {@link android.R.attr#padding}. --> @@ -3059,7 +3069,11 @@ <attr name="layout_width" /> <attr name="layout_height" /> <!-- Specifies extra space on the left, top, right and bottom - sides of this view. This space is outside this view's bounds. + sides of this view. If both layout_margin and any of layout_marginLeft, + layout_marginRight, layout_marginStart, layout_marginEnd, + layout_marginTop, and layout_marginBottom are + also specified, the layout_margin value will take precedence over the + edge-specific values. This space is outside this view's bounds. Margin values should be positive. --> <attr name="layout_margin" format="dimension" /> <!-- Specifies extra space on the left side of this view. @@ -3086,6 +3100,29 @@ This space is outside this view's bounds. Margin values should be positive.--> <attr name="layout_marginEnd" format="dimension" /> + <!-- Specifies extra space on the left and right sides of this view. + Specifying layout_marginHorizontal is equivalent to specifying + either layout_marginLeft and layout_marginRight or + layout_marginStart and layout_marginEnd with that same value. + If both layout_marginHorizontal and any of layout_marginLeft, + layout_marginRight, layout_marginStart, and layout_marginEnd are + also specified, the layout_marginHorizontal value will take precedence over the + edge-specific values. Also, layout_margin will always take precendent over + any of these values, including layout_marginHorizontal. + This space is outside this view's bounds. + Margin values should be positive.--> + <attr name="layout_marginHorizontal" format="dimension" /> + <!-- Specifies extra space on the tyop and bottom sides of this view. + Specifying layout_marginVertical is equivalent to specifying + layout_marginTop and layout_marginBottom with that same value. + If both layout_marginVertical and either/both layout_marginTop and + layout_marginBottom are also specified, the layout_marginVertical value + will take precedence over the edge-specific values. + Also, layout_margin will always take precendent over + any of these values, including layout_marginHorizontal. + This space is outside this view's bounds. + Margin values should be positive.--> + <attr name="layout_marginVertical" format="dimension" /> </declare-styleable> <!-- Use <code>input-method</code> as the root tag of the XML resource that diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 200961f1c8a8..deeaf3509c16 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2752,6 +2752,11 @@ <public name="exampleAttr1" /> <public name="exampleAttr2" /> </public-group> + + To add a new public-group block, choose an id value that is 1 greater + than the last of that item above. For example, the last "attr" id + value above is 0x01010530, so the public-group of attrs below has + the id value of 0x01010531. =============================================================== --> <eat-comment /> @@ -2764,6 +2769,12 @@ <public name="autoSizeStepGranularity" /> <public name="autoSizeStepSizeSet" /> <public name="autoSizeMinTextSize" /> + <public name="min" /> + <public name="rotationAnimation" /> + <public name="layout_marginHorizontal" /> + <public name="layout_marginVertical" /> + <public name="paddingHorizontal" /> + <public name="paddingVertical" /> </public-group> <public-group type="style" first-id="0x010302e0"> @@ -2772,6 +2783,12 @@ <public-group type="id" first-id="0x01020041"> </public-group> - <public type="attr" name="min" /> - <public type="attr" name="rotationAnimation" /> + <!-- =============================================================== + DO NOT ADD UN-GROUPED ITEMS HERE + + Any new items (attrs, styles, ids, etc.) *must* be added in a + public-group block, as the preceding comment explains. + Items added outside of a group may have their value recalculated + every time something new is added to this file. + =============================================================== --> </resources> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 8546aa50aa5c..af77b1f0793b 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1059,6 +1059,11 @@ connected by a call.</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permlab_readPhoneNumber">read phone number</string> + <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. --> + <string name="permdesc_readPhoneNumber">Allows the app to access the phone number of the device.</string> + + <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_wakeLock" product="tablet">prevent tablet from sleeping</string> <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. --> <string name="permlab_wakeLock" product="tv">prevent TV from sleeping</string> diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java index a15cba07e7bb..33a04939387a 100644 --- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java +++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java @@ -620,7 +620,7 @@ public class PackageManagerTests extends AndroidTestCase { try { pkgInfo = pm.getPackageInfo(pkg, PackageManager.GET_PERMISSIONS - | PackageManager.GET_UNINSTALLED_PACKAGES); + | PackageManager.MATCH_UNINSTALLED_PACKAGES); } catch (NameNotFoundException e) { pkgInfo = null; } @@ -712,7 +712,7 @@ public class PackageManagerTests extends AndroidTestCase { // Make sure the package doesn't exist try { ApplicationInfo appInfo = pm.getApplicationInfo(pkg.packageName, - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_UNINSTALLED_PACKAGES); GenericReceiver receiver = new DeleteReceiver(pkg.packageName); invokeDeletePackage(pkg.packageName, 0, receiver); } catch (NameNotFoundException e) { @@ -974,7 +974,7 @@ public class PackageManagerTests extends AndroidTestCase { public boolean invokeDeletePackage(final String pkgName, int flags, GenericReceiver receiver) throws Exception { ApplicationInfo info = getPm().getApplicationInfo(pkgName, - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_UNINSTALLED_PACKAGES); mContext.registerReceiver(receiver, receiver.filter); try { @@ -1019,7 +1019,7 @@ public class PackageManagerTests extends AndroidTestCase { Log.i(TAG, "okay4"); try { info = getPm().getApplicationInfo(ip.pkg.packageName, - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_UNINSTALLED_PACKAGES); } catch (NameNotFoundException e) { info = null; } @@ -1323,7 +1323,7 @@ public class PackageManagerTests extends AndroidTestCase { ApplicationInfo info = null; try { - info = getPm().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES); + info = getPm().getApplicationInfo(packageName, PackageManager.MATCH_UNINSTALLED_PACKAGES); } catch (NameNotFoundException ignored) { } @@ -1350,7 +1350,7 @@ public class PackageManagerTests extends AndroidTestCase { Log.i(TAG, "Deleting package : " + pkgName); try { ApplicationInfo info = getPm().getApplicationInfo(pkgName, - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_UNINSTALLED_PACKAGES); if (info != null) { DeleteObserver observer = new DeleteObserver(pkgName); @@ -3756,7 +3756,7 @@ public class PackageManagerTests extends AndroidTestCase { public void testGetUnInstalledPackages() throws Exception { List<PackageInfo> packages = getPm().getInstalledPackages( - PackageManager.GET_UNINSTALLED_PACKAGES); + PackageManager.MATCH_UNINSTALLED_PACKAGES); assertNotNull("installed packages cannot be null", packages); assertTrue("installed packages cannot be empty", packages.size() > 0); } @@ -3769,7 +3769,7 @@ public class PackageManagerTests extends AndroidTestCase { | PackageManager.GET_CONFIGURATIONS | PackageManager.GET_INSTRUMENTATION | PackageManager.GET_PERMISSIONS | PackageManager.GET_PROVIDERS | PackageManager.GET_RECEIVERS | PackageManager.GET_SERVICES - | PackageManager.GET_SIGNATURES | PackageManager.GET_UNINSTALLED_PACKAGES; + | PackageManager.GET_SIGNATURES | PackageManager.MATCH_UNINSTALLED_PACKAGES; final InstallParams ip = installFromRawResource("install.apk", R.raw.install_complete_package_info, @@ -3809,12 +3809,12 @@ public class PackageManagerTests extends AndroidTestCase { * flags when the GET_UNINSTALLED_PACKAGES flag is set. */ public void testGetUnInstalledPackagesAll() throws Exception { - final int flags = PackageManager.GET_UNINSTALLED_PACKAGES + final int flags = PackageManager.MATCH_UNINSTALLED_PACKAGES | PackageManager.GET_ACTIVITIES | PackageManager.GET_GIDS | PackageManager.GET_CONFIGURATIONS | PackageManager.GET_INSTRUMENTATION | PackageManager.GET_PERMISSIONS | PackageManager.GET_PROVIDERS | PackageManager.GET_RECEIVERS | PackageManager.GET_SERVICES - | PackageManager.GET_SIGNATURES | PackageManager.GET_UNINSTALLED_PACKAGES; + | PackageManager.GET_SIGNATURES; // first, install the package final InstallParams ip = diff --git a/core/tests/coretests/src/android/net/NetworkScorerAppManagerTest.java b/core/tests/coretests/src/android/net/NetworkScorerAppManagerTest.java index e7aca78a0720..02c25170bb74 100644 --- a/core/tests/coretests/src/android/net/NetworkScorerAppManagerTest.java +++ b/core/tests/coretests/src/android/net/NetworkScorerAppManagerTest.java @@ -42,6 +42,8 @@ public class NetworkScorerAppManagerTest extends InstrumentationTestCase { @Mock private Context mMockContext; @Mock private PackageManager mMockPm; + private NetworkScorerAppManager mNetworkScorerAppManager; + @Override public void setUp() throws Exception { super.setUp(); @@ -54,6 +56,7 @@ public class NetworkScorerAppManagerTest extends InstrumentationTestCase { MockitoAnnotations.initMocks(this); Mockito.when(mMockContext.getPackageManager()).thenReturn(mMockPm); + mNetworkScorerAppManager = new NetworkScorerAppManager(mMockContext); } public void testGetAllValidScorers() throws Exception { @@ -81,7 +84,7 @@ public class NetworkScorerAppManagerTest extends InstrumentationTestCase { setScorers(scorers); Iterator<NetworkScorerAppData> result = - NetworkScorerAppManager.getAllValidScorers(mMockContext).iterator(); + mNetworkScorerAppManager.getAllValidScorers().iterator(); assertTrue(result.hasNext()); NetworkScorerAppData next = result.next(); diff --git a/docs/html/reference/images/graphics/colorspace_clipped.png b/docs/html/reference/images/graphics/colorspace_clipped.png Binary files differnew file mode 100644 index 000000000000..28204e6e3a88 --- /dev/null +++ b/docs/html/reference/images/graphics/colorspace_clipped.png diff --git a/docs/html/reference/images/graphics/colorspace_comparison.png b/docs/html/reference/images/graphics/colorspace_comparison.png Binary files differnew file mode 100644 index 000000000000..b1b015c73e74 --- /dev/null +++ b/docs/html/reference/images/graphics/colorspace_comparison.png diff --git a/docs/html/reference/images/graphics/colorspace_comparison2.png b/docs/html/reference/images/graphics/colorspace_comparison2.png Binary files differnew file mode 100644 index 000000000000..b263aa1f5d2e --- /dev/null +++ b/docs/html/reference/images/graphics/colorspace_comparison2.png diff --git a/docs/html/reference/images/graphics/colorspace_points.png b/docs/html/reference/images/graphics/colorspace_points.png Binary files differnew file mode 100644 index 000000000000..84d1e77377a2 --- /dev/null +++ b/docs/html/reference/images/graphics/colorspace_points.png diff --git a/docs/html/reference/images/graphics/colorspace_renderer.png b/docs/html/reference/images/graphics/colorspace_renderer.png Binary files differnew file mode 100644 index 000000000000..acf30c3e1716 --- /dev/null +++ b/docs/html/reference/images/graphics/colorspace_renderer.png diff --git a/graphics/java/android/graphics/ColorSpace.java b/graphics/java/android/graphics/ColorSpace.java index 4f2465fd5da4..7dc5de3051e6 100644 --- a/graphics/java/android/graphics/ColorSpace.java +++ b/graphics/java/android/graphics/ColorSpace.java @@ -16,12 +16,16 @@ package android.graphics; +import android.annotation.ColorInt; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Size; import android.annotation.Nullable; +import android.util.Pair; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import java.util.function.DoubleUnaryOperator; /** @@ -118,11 +122,38 @@ import java.util.function.DoubleUnaryOperator; * and {@link #connect(ColorSpace, ColorSpace)}, are also guaranteed to be * thread-safe.</p> * + * <h3>Visualization and debugging</h3> + * + * <p>To visualize and debug color spaces, you can call {@link #createRenderer()}. + * The {@link Renderer} created by calling this method can be used to compare + * color spaces and locate specific colors on a CIE 1931 chromaticity diagram.</p> + * + * <p>The following code snippet shows how to render a bitmap that compares + * the color gamuts and white points of {@link Named#DCI_P3} and + * {@link Named#PRO_PHOTO_RGB}:</p> + * + * <pre class="prettyprint"> + * Bitmap bitmap = ColorSpace.createRenderer() + * .size(768) + * .clip(true) + * .add(ColorSpace.get(ColorSpace.Named.DCI_P3), 0xffffc845) + * .add(ColorSpace.get(ColorSpace.Named.PRO_PHOTO_RGB), 0xff097ae9) + * .render(); + * </pre> + * <p> + * <img src="{@docRoot}reference/android/images/graphics/colorspace_renderer.png" /> + * <figcaption style="text-align: center;">DCI-P3 vs ProPhoto RGB</figcaption> + * </p> + * + * <p>Please refer to the documentation of the {@link Renderer} class for more + * information about its options and capabilities.</p> + * * @see #get(Named) * @see Named * @see Model * @see Connector * @see Adaptation + * @see Renderer */ @SuppressWarnings("StaticInitializerReferencesSubClass") public abstract class ColorSpace { @@ -1333,6 +1364,20 @@ public abstract class ColorSpace { return sNamedColorSpaces[name.ordinal()]; } + /** + * <p>Creates a new {@link Renderer} that can be used to visualize and + * debug color spaces. See the documentation of {@link Renderer} for + * more information.</p> + * + * @return A new non-null {@link Renderer} instance + * + * @see Renderer + */ + @NonNull + public static Renderer createRenderer() { + return new Renderer(); + } + static { sNamedColorSpaces[Named.SRGB.ordinal()] = new ColorSpace.Rgb( "sRGB IEC61966-2.1", @@ -3113,4 +3158,688 @@ public abstract class ColorSpace { }; } } + + /** + * <p>A color space renderer can be used to visualize and compare the gamut and + * white point of one or more color spaces. The output is an sRGB {@link Bitmap} + * showing a CIE 1931 xyY chromaticity diagram.</p> + * + * <p>The following code snippet shows how to compare the {@link Named#SRGB} + * and {@link Named#DCI_P3} color spaces:</p> + * + * <pre class="prettyprint"> + * Bitmap bitmap = ColorSpace.createRenderer() + * .size(768) + * .clip(true) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.DCI_P3), 0xffffc845) + * .render(); + * </pre> + * <p> + * <img src="{@docRoot}reference/android/images/graphics/colorspace_clipped.png" /> + * <figcaption style="text-align: center;">sRGB vs DCI-P3</figcaption> + * </p> + * + * <p>A renderer can also be used to show the location of specific colors, + * associated with a color space, in the CIE 1931 xyY chromaticity diagram. + * See {@link #add(ColorSpace, float, float, float, int)} for more information.</p> + * + * @see ColorSpace#createRenderer() + */ + public static class Renderer { + private static final int NATIVE_SIZE = 1440; + + @IntRange(from = 128, to = Integer.MAX_VALUE) + private int mSize = 1024; + + private boolean mShowWhitePoint = true; + private boolean mClip = false; + + private final List<Pair<ColorSpace, Integer>> mColorSpaces = new ArrayList<>(2); + private final List<Point> mPoints = new ArrayList<>(0); + + private Renderer() { + } + + /** + * <p>Defines whether the chromaticity diagram should be clipped by the first + * registered color space. The default value is false.</p> + * + * <p>The following code snippet and image show the default behavior:</p> + * <pre class="prettyprint"> + * Bitmap bitmap = ColorSpace.createRenderer() + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.DCI_P3), 0xffffc845) + * .render(); + * </pre> + * <p> + * <img src="{@docRoot}reference/android/images/graphics/colorspace_comparison.png" /> + * <figcaption style="text-align: center;">Clipping disabled</figcaption> + * </p> + * + * <p>Here is the same example with clipping enabled:</p> + * <pre class="prettyprint"> + * Bitmap bitmap = ColorSpace.createRenderer() + * .clip(true) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.DCI_P3), 0xffffc845) + * .render(); + * </pre> + * <p> + * <img src="{@docRoot}reference/android/images/graphics/colorspace_clipped.png" /> + * <figcaption style="text-align: center;">Clipping enabled</figcaption> + * </p> + * + * @param clip True to clip the chromaticity diagram to the first registered color space, + * false otherwise + * @return This instance of {@link Renderer} + */ + @NonNull + public Renderer clip(boolean clip) { + mClip = clip; + return this; + } + + /** + * Sets the dimensions (width and height) in pixels of the output bitmap. + * The size must be at least 128px and defaults to 1024px. + * + * @param size The size in pixels of the output bitmap + * @return This instance of {@link Renderer} + */ + @NonNull + public Renderer size(@IntRange(from = 128, to = Integer.MAX_VALUE) int size) { + mSize = Math.max(128, size); + return this; + } + + /** + * Shows or hides the white point of each color space in the output bitmap. + * The default is true. + * + * @param show True to show the white point of each color space, false + * otherwise + * @return This instance of {@link Renderer} + */ + @NonNull + public Renderer showWhitePoint(boolean show) { + mShowWhitePoint = show; + return this; + } + + /** + * <p>Adds a color space to represent on the output CIE 1931 chromaticity + * diagram. The color space is represented as a triangle showing the + * footprint of its color gamut and, optionally, the location of its + * white point.</p> + * + * <p class="note">Color spaces with a color model that is not RGB are + * accepted but ignored.</p> + * + * <p>The following code snippet and image show an example of calling this + * method to compare {@link Named#SRGB sRGB} and {@link Named#DCI_P3 DCI-P3}:</p> + * <pre class="prettyprint"> + * Bitmap bitmap = ColorSpace.createRenderer() + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.DCI_P3), 0xffffc845) + * .render(); + * </pre> + * <p> + * <img src="{@docRoot}reference/android/images/graphics/colorspace_comparison.png" /> + * <figcaption style="text-align: center;">sRGB vs DCI-P3</figcaption> + * </p> + * + * <p>Adding a color space extending beyond the boundaries of the + * spectral locus will alter the size of the diagram within the output + * bitmap as shown in this example:</p> + * <pre class="prettyprint"> + * Bitmap bitmap = ColorSpace.createRenderer() + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.DCI_P3), 0xffffc845) + * .add(ColorSpace.get(ColorSpace.Named.ACES), 0xff097ae9) + * .add(ColorSpace.get(ColorSpace.Named.EXTENDED_SRGB), 0xff000000) + * .render(); + * </pre> + * <p> + * <img src="{@docRoot}reference/android/images/graphics/colorspace_comparison2.png" /> + * <figcaption style="text-align: center;">sRGB vs DCI-P3</figcaption> + * </p> + * + * @param colorSpace The color space whose gamut to render on the diagram + * @param color The sRGB color to use to render the color space's gamut and white point + * @return This instance of {@link Renderer} + * + * @see #clip(boolean) + * @see #showWhitePoint(boolean) + */ + @NonNull + public Renderer add(@NonNull ColorSpace colorSpace, @ColorInt int color) { + mColorSpaces.add(new Pair<>(colorSpace, color)); + return this; + } + + /** + * <p>Adds a color to represent as a point on the chromaticity diagram. + * The color is associated with a color space which will be used to + * perform the conversion to CIE XYZ and compute the location of the point + * on the diagram. The point is rendered as a colored circle.</p> + * + * <p>The following code snippet and image show an example of calling this + * method to render the location of several sRGB colors as white circles:</p> + * <pre class="prettyprint"> + * Bitmap bitmap = ColorSpace.createRenderer() + * .clip(true) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0.1f, 0.0f, 0.1f, 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0.1f, 0.1f, 0.1f, 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0.1f, 0.2f, 0.1f, 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0.1f, 0.3f, 0.1f, 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0.1f, 0.4f, 0.1f, 0xffffffff) + * .add(ColorSpace.get(ColorSpace.Named.SRGB), 0.1f, 0.5f, 0.1f, 0xffffffff) + * .render(); + * </pre> + * <p> + * <img src="{@docRoot}reference/android/images/graphics/colorspace_points.png" /> + * <figcaption style="text-align: center;"> + * Locating colors on the chromaticity diagram + * </figcaption> + * </p> + * + * @param colorSpace The color space of the color to locate on the diagram + * @param r The first component of the color to locate on the diagram + * @param g The second component of the color to locate on the diagram + * @param b The third component of the color to locate on the diagram + * @param pointColor The sRGB color to use to render the point on the diagram + * @return This instance of {@link Renderer} + */ + @NonNull + public Renderer add(@NonNull ColorSpace colorSpace, float r, float g, float b, + @ColorInt int pointColor) { + mPoints.add(new Point(colorSpace, new float[] { r, g, b }, pointColor)); + return this; + } + + /** + * <p>Renders the {@link #add(ColorSpace, int) color spaces} and + * {@link #add(ColorSpace, float, float, float, int) points} registered + * with this renderer. The output bitmap is an sRGB image with the + * dimensions specified by calling {@link #size(int)} (1204x1024px by + * default).</p> + * + * @return A new non-null {@link Bitmap} with the dimensions specified + * by {@link #size(int)} (1024x1024 by default) + */ + @NonNull + public Bitmap render() { + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + Bitmap bitmap = Bitmap.createBitmap(mSize, mSize, Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + + float[] primaries = new float[6]; + float[] whitePoint = new float[2]; + + int width = NATIVE_SIZE; + int height = NATIVE_SIZE; + + Path path = new Path(); + + setTransform(canvas, width, height, primaries); + drawBox(canvas, width, height, paint, path); + drawLocus(canvas, width, height, paint, path, primaries); + drawGamuts(canvas, width, height, paint, path, primaries, whitePoint); + drawPoints(canvas, width, height, paint); + + return bitmap; + } + + /** + * Draws registered points at their correct position in the xyY coordinates. + * Each point is positioned according to its associated color space. + * + * @param canvas The canvas to transform + * @param width Width in pixel of the final image + * @param height Height in pixel of the final image + * @param paint A pre-allocated paint used to avoid temporary allocations + */ + private void drawPoints(@NonNull Canvas canvas, int width, int height, + @NonNull Paint paint) { + + paint.setStyle(Paint.Style.FILL); + + float[] v = new float[3]; + for (final Point point : mPoints) { + v[0] = point.mRgb[0]; + v[1] = point.mRgb[1]; + v[2] = point.mRgb[2]; + point.mColorSpace.toXyz(v); + + paint.setColor(point.mColor); + + // XYZ to xyY, assuming Y=1.0 + float sum = v[0] + v[1] + v[2]; + canvas.drawCircle(width * v[0] / sum, height - height * v[1] / sum, + 4.0f, paint); + } + } + + /** + * Draws the color gamuts and white points of all the registered color + * spaces. Only color spaces with an RGB color model are rendered, the + * others are ignored. + * + * @param canvas The canvas to transform + * @param width Width in pixel of the final image + * @param height Height in pixel of the final image + * @param paint A pre-allocated paint used to avoid temporary allocations + * @param path A pre-allocated path used to avoid temporary allocations + * @param primaries A pre-allocated array of 6 floats to avoid temporary allocations + * @param whitePoint A pre-allocated array of 2 floats to avoid temporary allocations + */ + private void drawGamuts( + @NonNull Canvas canvas, int width, int height, + @NonNull Paint paint, @NonNull Path path, + @NonNull @Size(6) float[] primaries, @NonNull @Size(2) float[] whitePoint) { + + for (final Pair<ColorSpace, Integer> item : mColorSpaces) { + ColorSpace colorSpace = item.first; + int color = item.second; + + if (colorSpace.getModel() != Model.RGB) continue; + + Rgb rgb = (Rgb) colorSpace; + getPrimaries(rgb, primaries); + + path.rewind(); + path.moveTo(width * primaries[0], height - height * primaries[1]); + path.lineTo(width * primaries[2], height - height * primaries[3]); + path.lineTo(width * primaries[4], height - height * primaries[5]); + path.close(); + + paint.setStyle(Paint.Style.STROKE); + paint.setColor(color); + canvas.drawPath(path, paint); + + // Draw the white point + if (mShowWhitePoint) { + rgb.getWhitePoint(whitePoint); + + paint.setStyle(Paint.Style.FILL); + paint.setColor(color); + canvas.drawCircle(width * whitePoint[0], height - height * whitePoint[1], + 4.0f, paint); + } + } + } + + /** + * Returns the primaries of the specified RGB color space. This method handles + * the special case of the {@link Named#EXTENDED_SRGB} family of color spaces. + * + * @param rgb The color space whose primaries to extract + * @param primaries A pre-allocated array of 6 floats that will hold the result + */ + @NonNull + @Size(6) + private static float[] getPrimaries(@NonNull Rgb rgb, @NonNull @Size(6) float[] primaries) { + // TODO: We should find a better way to handle these cases + if (rgb.equals(ColorSpace.get(Named.EXTENDED_SRGB)) || + rgb.equals(ColorSpace.get(Named.LINEAR_EXTENDED_SRGB))) { + primaries[0] = 1.41f; + primaries[1] = 0.33f; + primaries[2] = 0.27f; + primaries[3] = 1.24f; + primaries[4] = -0.23f; + primaries[5] = -0.57f; + return primaries; + } + return rgb.getPrimaries(primaries); + } + + /** + * Draws the CIE 1931 chromaticity diagram: the spectral locus and its inside. + * This method respect the clip parameter. + * + * @param canvas The canvas to transform + * @param width Width in pixel of the final image + * @param height Height in pixel of the final image + * @param paint A pre-allocated paint used to avoid temporary allocations + * @param path A pre-allocated path used to avoid temporary allocations + * @param primaries A pre-allocated array of 6 floats to avoid temporary allocations + */ + private void drawLocus( + @NonNull Canvas canvas, int width, int height, @NonNull Paint paint, + @NonNull Path path, @NonNull @Size(6) float[] primaries) { + + int vertexCount = SPECTRUM_LOCUS_X.length * CHROMATICITY_RESOLUTION * 6; + float[] vertices = new float[vertexCount * 2]; + int[] colors = new int[vertices.length]; + computeChromaticityMesh(NATIVE_SIZE, NATIVE_SIZE, vertices, colors); + + // Draw the spectral locus + if (mClip && mColorSpaces.size() > 0) { + for (final Pair<ColorSpace, Integer> item : mColorSpaces) { + ColorSpace colorSpace = item.first; + if (colorSpace.getModel() != Model.RGB) continue; + + Rgb rgb = (Rgb) colorSpace; + getPrimaries(rgb, primaries); + break; + } + + path.rewind(); + path.moveTo(width * primaries[0], height - height * primaries[1]); + path.lineTo(width * primaries[2], height - height * primaries[3]); + path.lineTo(width * primaries[4], height - height * primaries[5]); + path.close(); + + int[] solid = new int[colors.length]; + Arrays.fill(solid, 0xff6c6c6c); + canvas.drawVertices(Canvas.VertexMode.TRIANGLES, vertices.length, vertices, 0, + null, 0, solid, 0, null, 0, 0, paint); + + canvas.save(); + canvas.clipPath(path); + + canvas.drawVertices(Canvas.VertexMode.TRIANGLES, vertices.length, vertices, 0, + null, 0, colors, 0, null, 0, 0, paint); + + canvas.restore(); + } else { + canvas.drawVertices(Canvas.VertexMode.TRIANGLES, vertices.length, vertices, 0, + null, 0, colors, 0, null, 0, 0, paint); + } + + // Draw the non-spectral locus + int index = (CHROMATICITY_RESOLUTION - 1) * 12; + path.reset(); + path.moveTo(vertices[index], vertices[index + 1]); + for (int x = 2; x < SPECTRUM_LOCUS_X.length; x++) { + index += CHROMATICITY_RESOLUTION * 12; + path.lineTo(vertices[index], vertices[index + 1]); + } + path.close(); + + paint.setStyle(Paint.Style.STROKE); + paint.setColor(0xff000000); + canvas.drawPath(path, paint); + } + + /** + * Draws the diagram box, including borders, tick marks, grid lines + * and axis labels. + * + * @param canvas The canvas to transform + * @param width Width in pixel of the final image + * @param height Height in pixel of the final image + * @param paint A pre-allocated paint used to avoid temporary allocations + * @param path A pre-allocated path used to avoid temporary allocations + */ + private void drawBox(@NonNull Canvas canvas, int width, int height, @NonNull Paint paint, + @NonNull Path path) { + // Draw the unit grid + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(2.0f); + paint.setColor(0xffc0c0c0); + for (int i = 1; i <= 9; i++) { + canvas.drawLine(0.0f, height - (height * i / 10.0f), + 0.9f * width, height - (height * i / 10.0f), paint); + canvas.drawLine(width * i / 10.0f, height, + width * i / 10.0f, 0.1f * height, paint); + } + + // Draw tick marks + paint.setStrokeWidth(4.0f); + paint.setColor(0xff000000); + for (int i = 1; i <= 9; i++) { + canvas.drawLine(0.0f, height - (height * i / 10.0f), + width / 100.0f, height - (height * i / 10.0f), paint); + canvas.drawLine(width * i / 10.0f, height, + width * i / 10.0f, height - (height / 100.0f), paint); + } + + // Draw the axis labels + paint.setStyle(Paint.Style.FILL); + paint.setTextSize(36.0f); + paint.setTypeface(Typeface.create("sans-serif-light", Typeface.NORMAL)); + + Rect bounds = new Rect(); + for (int i = 1; i < 9; i++) { + String text = "0." + i; + paint.getTextBounds(text, 0, text.length(), bounds); + + float y = height - (height * i / 10.0f); + canvas.drawText(text, -0.05f * width + 10, y + bounds.height() / 2.0f, paint); + + float x = width * i / 10.0f; + canvas.drawText(text, x - bounds.width() / 2.0f, + height + bounds.height() + 16, paint); + } + paint.setStyle(Paint.Style.STROKE); + + // Draw the diagram box + path.moveTo(0.0f, height); + path.lineTo(0.9f * width, height); + path.lineTo(0.9f * width, 0.1f * height); + path.lineTo(0.0f, 0.1f * height); + path.close(); + canvas.drawPath(path, paint); + } + + /** + * Computes and applies the Canvas transforms required to make the color + * gamut of each color space visible in the final image. + * + * @param canvas The canvas to transform + * @param width Width in pixel of the final image + * @param height Height in pixel of the final image + * @param primaries Array of 6 floats used to avoid temporary allocations + */ + private void setTransform(@NonNull Canvas canvas, int width, int height, + @NonNull @Size(6) float[] primaries) { + + RectF primariesBounds = new RectF(); + for (final Pair<ColorSpace, Integer> item : mColorSpaces) { + ColorSpace colorSpace = item.first; + if (colorSpace.getModel() != Model.RGB) continue; + + Rgb rgb = (Rgb) colorSpace; + getPrimaries(rgb, primaries); + + primariesBounds.left = Math.min(primariesBounds.left, primaries[4]); + primariesBounds.top = Math.min(primariesBounds.top, primaries[5]); + primariesBounds.right = Math.max(primariesBounds.right, primaries[0]); + primariesBounds.bottom = Math.max(primariesBounds.bottom, primaries[3]); + } + + primariesBounds.left = Math.min(0.0f, primariesBounds.left); + primariesBounds.top = Math.min(0.0f, primariesBounds.top); + primariesBounds.right = Math.max(0.9f, primariesBounds.right); + primariesBounds.bottom = Math.max(0.9f, primariesBounds.bottom); + + float scaleX = 0.9f / primariesBounds.width(); + float scaleY = 0.9f / primariesBounds.height(); + float scale = Math.min(scaleX, scaleY); + + canvas.scale(mSize / (float) NATIVE_SIZE, mSize / (float) NATIVE_SIZE); + canvas.scale(scale, scale); + canvas.translate( + (primariesBounds.width() - 0.9f) * width / 2.0f, + (primariesBounds.height() - 0.9f) * height / 2.0f); + + // The spectrum extends ~0.85 vertically and ~0.65 horizontally + // We shift the canvas a little bit to get nicer margins + canvas.translate(0.05f * width, -0.05f * height); + } + + // X coordinates of the spectral locus in CIE 1931 + private static final float[] SPECTRUM_LOCUS_X = { + 0.175596f, 0.172787f, 0.170806f, 0.170085f, 0.160343f, + 0.146958f, 0.139149f, 0.133536f, 0.126688f, 0.115830f, + 0.109616f, 0.099146f, 0.091310f, 0.078130f, 0.068717f, + 0.054675f, 0.040763f, 0.027497f, 0.016270f, 0.008169f, + 0.004876f, 0.003983f, 0.003859f, 0.004646f, 0.007988f, + 0.013870f, 0.022244f, 0.027273f, 0.032820f, 0.038851f, + 0.045327f, 0.052175f, 0.059323f, 0.066713f, 0.074299f, + 0.089937f, 0.114155f, 0.138695f, 0.154714f, 0.192865f, + 0.229607f, 0.265760f, 0.301588f, 0.337346f, 0.373083f, + 0.408717f, 0.444043f, 0.478755f, 0.512467f, 0.544767f, + 0.575132f, 0.602914f, 0.627018f, 0.648215f, 0.665746f, + 0.680061f, 0.691487f, 0.700589f, 0.707901f, 0.714015f, + 0.719017f, 0.723016f, 0.734674f, 0.717203f, 0.699732f, + 0.682260f, 0.664789f, 0.647318f, 0.629847f, 0.612376f, + 0.594905f, 0.577433f, 0.559962f, 0.542491f, 0.525020f, + 0.507549f, 0.490077f, 0.472606f, 0.455135f, 0.437664f, + 0.420193f, 0.402721f, 0.385250f, 0.367779f, 0.350308f, + 0.332837f, 0.315366f, 0.297894f, 0.280423f, 0.262952f, + 0.245481f, 0.228010f, 0.210538f, 0.193067f, 0.175596f + }; + // Y coordinates of the spectral locus in CIE 1931 + private static final float[] SPECTRUM_LOCUS_Y = { + 0.005295f, 0.004800f, 0.005472f, 0.005976f, 0.014496f, + 0.026643f, 0.035211f, 0.042704f, 0.053441f, 0.073601f, + 0.086866f, 0.112037f, 0.132737f, 0.170464f, 0.200773f, + 0.254155f, 0.317049f, 0.387997f, 0.463035f, 0.538504f, + 0.587196f, 0.610526f, 0.654897f, 0.675970f, 0.715407f, + 0.750246f, 0.779682f, 0.792153f, 0.802971f, 0.812059f, + 0.819430f, 0.825200f, 0.829460f, 0.832306f, 0.833833f, + 0.833316f, 0.826231f, 0.814796f, 0.805884f, 0.781648f, + 0.754347f, 0.724342f, 0.692326f, 0.658867f, 0.624470f, + 0.589626f, 0.554734f, 0.520222f, 0.486611f, 0.454454f, + 0.424252f, 0.396516f, 0.372510f, 0.351413f, 0.334028f, + 0.319765f, 0.308359f, 0.299317f, 0.292044f, 0.285945f, + 0.280951f, 0.276964f, 0.265326f, 0.257200f, 0.249074f, + 0.240948f, 0.232822f, 0.224696f, 0.216570f, 0.208444f, + 0.200318f, 0.192192f, 0.184066f, 0.175940f, 0.167814f, + 0.159688f, 0.151562f, 0.143436f, 0.135311f, 0.127185f, + 0.119059f, 0.110933f, 0.102807f, 0.094681f, 0.086555f, + 0.078429f, 0.070303f, 0.062177f, 0.054051f, 0.045925f, + 0.037799f, 0.029673f, 0.021547f, 0.013421f, 0.005295f + }; + + // Number of subdivision of the inside of the spectral locus + private static final int CHROMATICITY_RESOLUTION = 32; + private static final double ONE_THIRD = 1.0 / 3.0; + + /** + * Computes a 2D mesh representation of the CIE 1931 chromaticity + * diagram. + * + * @param width Width in pixels of the mesh + * @param height Height in pixels of the mesh + * @param vertices Array of floats that will hold the mesh vertices + * @param colors Array of floats that will hold the mesh colors + */ + private static void computeChromaticityMesh(int width, int height, + @NonNull float[] vertices, @NonNull int[] colors) { + + ColorSpace colorSpace = get(Named.SRGB); + + float[] color = new float[3]; + + int vertexIndex = 0; + int colorIndex = 0; + + for (int x = 0; x < SPECTRUM_LOCUS_X.length; x++) { + int nextX = (x % (SPECTRUM_LOCUS_X.length - 1)) + 1; + + float a1 = (float) Math.atan2( + SPECTRUM_LOCUS_Y[x] - ONE_THIRD, + SPECTRUM_LOCUS_X[x] - ONE_THIRD); + float a2 = (float) Math.atan2( + SPECTRUM_LOCUS_Y[nextX] - ONE_THIRD, + SPECTRUM_LOCUS_X[nextX] - ONE_THIRD); + + float radius1 = (float) Math.pow( + sqr(SPECTRUM_LOCUS_X[x] - ONE_THIRD) + + sqr(SPECTRUM_LOCUS_Y[x] - ONE_THIRD), + 0.5); + float radius2 = (float) Math.pow( + sqr(SPECTRUM_LOCUS_X[nextX] - ONE_THIRD) + + sqr(SPECTRUM_LOCUS_Y[nextX] - ONE_THIRD), + 0.5); + + // Compute patches; each patch is a quad with a different + // color associated with each vertex + for (int c = 1; c <= CHROMATICITY_RESOLUTION; c++) { + float f1 = c / (float) CHROMATICITY_RESOLUTION; + float f2 = (c - 1) / (float) CHROMATICITY_RESOLUTION; + + double cr1 = radius1 * Math.cos(a1); + double sr1 = radius1 * Math.sin(a1); + double cr2 = radius2 * Math.cos(a2); + double sr2 = radius2 * Math.sin(a2); + + // Compute the XYZ coordinates of the 4 vertices of the patch + float v1x = (float) (ONE_THIRD + cr1 * f1); + float v1y = (float) (ONE_THIRD + sr1 * f1); + float v1z = 1 - v1x - v1y; + + float v2x = (float) (ONE_THIRD + cr1 * f2); + float v2y = (float) (ONE_THIRD + sr1 * f2); + float v2z = 1 - v2x - v2y; + + float v3x = (float) (ONE_THIRD + cr2 * f2); + float v3y = (float) (ONE_THIRD + sr2 * f2); + float v3z = 1 - v3x - v3y; + + float v4x = (float) (ONE_THIRD + cr2 * f1); + float v4y = (float) (ONE_THIRD + sr2 * f1); + float v4z = 1 - v4x - v4y; + + // Compute the sRGB representation of each XYZ coordinate of the patch + colors[colorIndex ] = computeColor(color, v1x, v1y, v1z, colorSpace); + colors[colorIndex + 1] = computeColor(color, v2x, v2y, v2z, colorSpace); + colors[colorIndex + 2] = computeColor(color, v3x, v3y, v3z, colorSpace); + colors[colorIndex + 3] = colors[colorIndex]; + colors[colorIndex + 4] = colors[colorIndex + 2]; + colors[colorIndex + 5] = computeColor(color, v4x, v4y, v4z, colorSpace); + colorIndex += 6; + + // Flip the mesh upside down to match Canvas' coordinates system + vertices[vertexIndex++] = v1x * width; + vertices[vertexIndex++] = height - v1y * height; + vertices[vertexIndex++] = v2x * width; + vertices[vertexIndex++] = height - v2y * height; + vertices[vertexIndex++] = v3x * width; + vertices[vertexIndex++] = height - v3y * height; + vertices[vertexIndex++] = v1x * width; + vertices[vertexIndex++] = height - v1y * height; + vertices[vertexIndex++] = v3x * width; + vertices[vertexIndex++] = height - v3y * height; + vertices[vertexIndex++] = v4x * width; + vertices[vertexIndex++] = height - v4y * height; + } + } + } + + @ColorInt + private static int computeColor(@NonNull @Size(3) float[] color, + float x, float y, float z, @NonNull ColorSpace cs) { + color[0] = x; + color[1] = y; + color[2] = z; + cs.fromXyz(color); + return 0xff000000 | + (((int) (color[0] * 255.0f) & 0xff) << 16) | + (((int) (color[1] * 255.0f) & 0xff) << 8) | + (((int) (color[2] * 255.0f) & 0xff) ); + } + + private static double sqr(double v) { + return v * v; + } + + private static class Point { + @NonNull final ColorSpace mColorSpace; + @NonNull final float[] mRgb; + final int mColor; + + Point(@NonNull ColorSpace colorSpace, + @NonNull @Size(3) float[] rgb, @ColorInt int color) { + mColorSpace = colorSpace; + mRgb = rgb; + mColor = color; + } + } + } } diff --git a/graphics/java/android/graphics/drawable/Icon.java b/graphics/java/android/graphics/drawable/Icon.java index 2b950d3d5c5d..977200906d62 100644 --- a/graphics/java/android/graphics/drawable/Icon.java +++ b/graphics/java/android/graphics/drawable/Icon.java @@ -299,7 +299,7 @@ public final class Icon implements Parcelable { final PackageManager pm = context.getPackageManager(); try { ApplicationInfo ai = pm.getApplicationInfo( - resPackage, PackageManager.GET_UNINSTALLED_PACKAGES); + resPackage, PackageManager.MATCH_UNINSTALLED_PACKAGES); if (ai != null) { mObj1 = pm.getResourcesForApplication(ai); } else { diff --git a/libs/hwui/Android.mk b/libs/hwui/Android.mk index eff24990a438..361e9018ccbd 100644 --- a/libs/hwui/Android.mk +++ b/libs/hwui/Android.mk @@ -278,6 +278,7 @@ LOCAL_SRC_FILES += \ tests/unit/BakedOpDispatcherTests.cpp \ tests/unit/BakedOpRendererTests.cpp \ tests/unit/BakedOpStateTests.cpp \ + tests/unit/BitmapTests.cpp \ tests/unit/CanvasContextTests.cpp \ tests/unit/CanvasStateTests.cpp \ tests/unit/ClipAreaTests.cpp \ diff --git a/libs/hwui/Extensions.cpp b/libs/hwui/Extensions.cpp index 1d675791b851..00238a25ebde 100644 --- a/libs/hwui/Extensions.cpp +++ b/libs/hwui/Extensions.cpp @@ -37,6 +37,26 @@ namespace uirenderer { Extensions::Extensions() { + const char* version = (const char*) glGetString(GL_VERSION); + + // Section 6.1.5 of the OpenGL ES specification indicates the GL version + // string strictly follows this format: + // + // OpenGL<space>ES<space><version number><space><vendor-specific information> + // + // In addition section 6.1.5 describes the version number thusly: + // + // "The version number is either of the form major number.minor number or + // major number.minor number.release number, where the numbers all have one + // or more digits. The release number and vendor specific information are + // optional." + + if (sscanf(version, "OpenGL ES %d.%d", &mVersionMajor, &mVersionMinor) != 2) { + // If we cannot parse the version number, assume OpenGL ES 2.0 + mVersionMajor = 2; + mVersionMinor = 0; + } + auto extensions = StringUtils::split((const char*) glGetString(GL_EXTENSIONS)); mHasNPot = extensions.has("GL_OES_texture_npot"); mHasFramebufferFetch = extensions.has("GL_NV_shader_framebuffer_fetch"); @@ -58,26 +78,6 @@ Extensions::Extensions() { mHasSRGB = false; mHasSRGBWriteControl = false; #endif - - const char* version = (const char*) glGetString(GL_VERSION); - - // Section 6.1.5 of the OpenGL ES specification indicates the GL version - // string strictly follows this format: - // - // OpenGL<space>ES<space><version number><space><vendor-specific information> - // - // In addition section 6.1.5 describes the version number thusly: - // - // "The version number is either of the form major number.minor number or - // major number.minor number.release number, where the numbers all have one - // or more digits. The release number and vendor specific information are - // optional." - - if (sscanf(version, "OpenGL ES %d.%d", &mVersionMajor, &mVersionMinor) != 2) { - // If we cannot parse the version number, assume OpenGL ES 2.0 - mVersionMajor = 2; - mVersionMinor = 0; - } } }; // namespace uirenderer diff --git a/libs/hwui/Interpolator.cpp b/libs/hwui/Interpolator.cpp index cc47f0052b73..bddb01b97865 100644 --- a/libs/hwui/Interpolator.cpp +++ b/libs/hwui/Interpolator.cpp @@ -97,7 +97,8 @@ LUTInterpolator::~LUTInterpolator() { } float LUTInterpolator::interpolate(float input) { - float lutpos = input * mSize; + // lut position should only be at the end of the table when input is 1f. + float lutpos = input * (mSize - 1); if (lutpos >= (mSize - 1)) { return mValues[mSize - 1]; } diff --git a/libs/hwui/tests/unit/BitmapTests.cpp b/libs/hwui/tests/unit/BitmapTests.cpp new file mode 100644 index 000000000000..8c7e08183a1e --- /dev/null +++ b/libs/hwui/tests/unit/BitmapTests.cpp @@ -0,0 +1,44 @@ +/* + * 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. + */ + +#include <gtest/gtest.h> + +#include "hwui/Bitmap.h" + +#include <SkBitmap.h> +#include <SkColorTable.h> +#include <SkImageInfo.h> + +#include <tests/common/TestUtils.h> + +using namespace android; +using namespace android::uirenderer; + +TEST(Bitmap, colorTableRefCounting) { + const SkPMColor c[] = { SkPackARGB32(0x80, 0x80, 0, 0) }; + SkColorTable* ctable = new SkColorTable(c, SK_ARRAY_COUNT(c)); + + SkBitmap* bm = new SkBitmap(); + bm->allocPixels(SkImageInfo::Make(1, 1, kIndex_8_SkColorType, kPremul_SkAlphaType), + nullptr, ctable); + sk_sp<Bitmap> bitmap = Bitmap::allocateHeapBitmap(bm, ctable); + EXPECT_FALSE(ctable->unique()); + delete bm; + bitmap.reset(); + EXPECT_TRUE(ctable->unique()); + ctable->unref(); +} + diff --git a/opengl/java/android/opengl/GLES30.java b/opengl/java/android/opengl/GLES30.java index 74181c513753..3b805d20773c 100644 --- a/opengl/java/android/opengl/GLES30.java +++ b/opengl/java/android/opengl/GLES30.java @@ -590,6 +590,10 @@ public class GLES30 extends GLES20 { // C function void glGetBufferPointerv ( GLenum target, GLenum pname, GLvoid** params ) + /** + * The {@link java.nio.Buffer} instance returned by this method is guaranteed + * to be an instance of {@link java.nio.ByteBuffer}. + */ public static native java.nio.Buffer glGetBufferPointerv( int target, int pname @@ -761,6 +765,10 @@ public class GLES30 extends GLES20 { // C function GLvoid * glMapBufferRange ( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) + /** + * The {@link java.nio.Buffer} instance returned by this method is guaranteed + * to be an instance of {@link java.nio.ByteBuffer}. + */ public static native java.nio.Buffer glMapBufferRange( int target, int offset, diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index d0abbf983ff5..a281bba741e8 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"ብጁ (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"እገዛ እና ግብረመልስ"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"ምናሌ"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"ጂኤምቲ"</string> </resources> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index 0eebcd7cbe68..9f6c440216ed 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"مخصص (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"المساعدة والتعليقات"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"القائمة"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"غرينيتش"</string> </resources> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index cbb227138e67..cad5980fa336 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Prilagođeni (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Pomoć i povratne informacije"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Meni"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-be-rBY/strings.xml b/packages/SettingsLib/res/values-be-rBY/strings.xml index 12f103d5b216..ba5b100c1641 100644 --- a/packages/SettingsLib/res/values-be-rBY/strings.xml +++ b/packages/SettingsLib/res/values-be-rBY/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Карыстальніцкі (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Даведка і водгукі"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Меню"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index 19382ecf6c49..c360f87b798f 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Personalitzat (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Ajuda i suggeriments"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menú"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index 032d73daae58..f3310809a611 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Προσαρμοσμένη (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Βοήθεια και σχόλια"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Μενού"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 57738e8ff495..e27822f80dc3 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Custom (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Help & feedback"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 57738e8ff495..e27822f80dc3 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Custom (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Help & feedback"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 57738e8ff495..e27822f80dc3 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Custom (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Help & feedback"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 259e7fbc0b23..4353282d6b72 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Personalizado (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Ayuda y sugerencias"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menú"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-eu-rES/strings.xml b/packages/SettingsLib/res/values-eu-rES/strings.xml index 952fda8d0168..3e08c770745e 100644 --- a/packages/SettingsLib/res/values-eu-rES/strings.xml +++ b/packages/SettingsLib/res/values-eu-rES/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Pertsonalizatua (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Laguntza eta iritziak"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menua"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index bf96b59b9179..648f7b3e10de 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Muokattu (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Ohje ja palaute"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Valikko"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-gu-rIN/strings.xml b/packages/SettingsLib/res/values-gu-rIN/strings.xml index 1cded3d3cfe3..a732ea1dbd8a 100644 --- a/packages/SettingsLib/res/values-gu-rIN/strings.xml +++ b/packages/SettingsLib/res/values-gu-rIN/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"કસ્ટમ (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"સહાય અને પ્રતિસાદ"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"મેનુ"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 07241b5bf8e5..9559887b7e80 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"(<xliff:g id="DENSITYDPI">%d</xliff:g>) khusus"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Bantuan & masukan"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-is-rIS/strings.xml b/packages/SettingsLib/res/values-is-rIS/strings.xml index 8e8307b8b9e1..8be84442b1b3 100644 --- a/packages/SettingsLib/res/values-is-rIS/strings.xml +++ b/packages/SettingsLib/res/values-is-rIS/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Sérsniðið (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Hjálp og ábendingar"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Valmynd"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index d894ccf6c33e..74ee5a1e828d 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Personalizzato (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Guida e feedback"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-ka-rGE/strings.xml b/packages/SettingsLib/res/values-ka-rGE/strings.xml index 609cb339059c..8a3b81b85720 100644 --- a/packages/SettingsLib/res/values-ka-rGE/strings.xml +++ b/packages/SettingsLib/res/values-ka-rGE/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"მორგებული (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"დახმარება და გამოხმაურება"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"მენიუ"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-ky-rKG/strings.xml b/packages/SettingsLib/res/values-ky-rKG/strings.xml index a2eb86d470df..3783cce69c59 100644 --- a/packages/SettingsLib/res/values-ky-rKG/strings.xml +++ b/packages/SettingsLib/res/values-ky-rKG/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Ыңгайлаштырылган (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Жардам жана жооп пикир"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Меню"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-mk-rMK/strings.xml b/packages/SettingsLib/res/values-mk-rMK/strings.xml index 711b949bedad..ebe8d00396f6 100644 --- a/packages/SettingsLib/res/values-mk-rMK/strings.xml +++ b/packages/SettingsLib/res/values-mk-rMK/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Приспособен (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Помош и повратни информации"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Мени"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-mr-rIN/strings.xml b/packages/SettingsLib/res/values-mr-rIN/strings.xml index 20f64fe40a28..be1fbc692023 100644 --- a/packages/SettingsLib/res/values-mr-rIN/strings.xml +++ b/packages/SettingsLib/res/values-mr-rIN/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"सानुकूल करा (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"मदत आणि अभिप्राय"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"मेनू"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-ne-rNP/strings.xml b/packages/SettingsLib/res/values-ne-rNP/strings.xml index a8a918b549f1..834580b4f639 100644 --- a/packages/SettingsLib/res/values-ne-rNP/strings.xml +++ b/packages/SettingsLib/res/values-ne-rNP/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"अनुकूलन (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"मद्दत र प्रतिक्रिया"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"मेनु"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index 8bb4579f0b19..0f2e6d4046a9 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Aangepast (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Help en feedback"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index 4db3e6e4fa7b..738974f176cb 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Niestandardowe (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Pomoc i opinie"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index 7855beb3d1fe..ab866c890ed9 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Personalizada (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Ajuda e feedback"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index 2c366c6197a9..2e4bbdc8ae05 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Personalizado (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Ajuda e comentários"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 7855beb3d1fe..ab866c890ed9 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Personalizada (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Ajuda e feedback"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index 2cf68a537064..5fd58a5c6c45 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Прилагођени (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Помоћ и повратне информације"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Мени"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index 975a4aa13571..ee9362234465 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Anpassad (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Hjälp och feedback"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Meny"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index b538545f9b3b..29557ec6942f 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Спеціальний масштаб (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Довідка й відгуки"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Меню"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/res/values-uz-rUZ/strings.xml b/packages/SettingsLib/res/values-uz-rUZ/strings.xml index 8d1056a1bca8..05879a2d4405 100644 --- a/packages/SettingsLib/res/values-uz-rUZ/strings.xml +++ b/packages/SettingsLib/res/values-uz-rUZ/strings.xml @@ -341,6 +341,5 @@ <string name="screen_zoom_summary_custom" msgid="5611979864124160447">"Moslashtirilgan (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="help_feedback_label" msgid="6815040660801785649">"Yordam va fikr-mulohaza"</string> <string name="content_description_menu_button" msgid="8182594799812351266">"Menyu"</string> - <!-- no translation found for time_zone_gmt (2587097992671450782) --> - <skip /> + <string name="time_zone_gmt" msgid="2587097992671450782">"GMT"</string> </resources> diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java index f0ec10786507..2b1582d14830 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java @@ -135,11 +135,11 @@ public class ApplicationsState { mBackgroundHandler = new BackgroundHandler(mThread.getLooper()); // Only the owner can see all apps. - mAdminRetrieveFlags = PackageManager.GET_UNINSTALLED_PACKAGES | - PackageManager.GET_DISABLED_COMPONENTS | - PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS; - mRetrieveFlags = PackageManager.GET_DISABLED_COMPONENTS | - PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS; + mAdminRetrieveFlags = PackageManager.MATCH_ANY_USER | + PackageManager.MATCH_DISABLED_COMPONENTS | + PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS; + mRetrieveFlags = PackageManager.MATCH_DISABLED_COMPONENTS | + PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS; /** * This is a trick to prevent the foreground thread from being delayed. @@ -855,7 +855,7 @@ public class ApplicationsState { // explicitly include both direct boot aware and unaware components here. List<ResolveInfo> intents = mPm.queryIntentActivitiesAsUser( launchIntent, - PackageManager.GET_DISABLED_COMPONENTS + PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, userId diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java index 5c577f8aa83c..e520319c1eb7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java @@ -409,8 +409,8 @@ public class StorageMeasurement { // Measure all apps hosted on this volume for all users if (mVolume.getType() == VolumeInfo.TYPE_PRIVATE) { final List<ApplicationInfo> apps = packageManager.getInstalledApplications( - PackageManager.GET_UNINSTALLED_PACKAGES - | PackageManager.GET_DISABLED_COMPONENTS); + PackageManager.MATCH_ANY_USER + | PackageManager.MATCH_DISABLED_COMPONENTS); final List<ApplicationInfo> volumeApps = new ArrayList<>(); for (ApplicationInfo app : apps) { diff --git a/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java b/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java index c189e1d51499..c4aa57d7b593 100644 --- a/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java +++ b/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java @@ -112,7 +112,7 @@ public class AppRestrictionsHelper { // Enable selected apps try { ApplicationInfo info = mIPm.getApplicationInfo(packageName, - PackageManager.MATCH_UNINSTALLED_PACKAGES, userId); + PackageManager.MATCH_ANY_USER, userId); if (info == null || !info.enabled || (info.flags&ApplicationInfo.FLAG_INSTALLED) == 0) { mIPm.installExistingPackageAsUser(packageName, mUser.getIdentifier()); @@ -178,7 +178,7 @@ public class AppRestrictionsHelper { addSystemApps(mVisibleApps, widgetIntent, excludePackages); List<ApplicationInfo> installedApps = pm.getInstalledApplications( - PackageManager.MATCH_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); for (ApplicationInfo app : installedApps) { // If it's not installed, skip if ((app.flags & ApplicationInfo.FLAG_INSTALLED) == 0) continue; diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml index 444f0f016b85..078f9d73ffec 100644 --- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml +++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml @@ -24,17 +24,36 @@ android:outlineProvider="none" android:elevation="5dp" > <!-- Put it above the status bar header --> - <com.android.systemui.statusbar.phone.KeyguardIndicationTextView - android:id="@+id/keyguard_indication_text" + <LinearLayout + android:id="@+id/keyguard_indication_area" + android:forceHasOverlappingRendering="false" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/keyguard_indication_margin_bottom" android:layout_gravity="bottom|center_horizontal" - android:gravity="center_horizontal" - android:textStyle="italic" - android:textColor="#ffffff" - android:textAppearance="?android:attr/textAppearanceSmall" - android:accessibilityLiveRegion="polite" /> + android:orientation="vertical"> + + <com.android.systemui.statusbar.phone.KeyguardIndicationTextView + android:id="@+id/keyguard_indication_enterprise_disclosure" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:textStyle="italic" + android:textColor="#ffffff" + android:textAppearance="?android:attr/textAppearanceSmall" + android:visibility="gone" /> + + <com.android.systemui.statusbar.phone.KeyguardIndicationTextView + android:id="@+id/keyguard_indication_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_horizontal" + android:textStyle="italic" + android:textColor="#ffffff" + android:textAppearance="?android:attr/textAppearanceSmall" + android:accessibilityLiveRegion="polite" /> + + </LinearLayout> <FrameLayout android:id="@+id/preview_container" diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 5294c9c46429..40308dcc3eb2 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Toeganklikheid"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tik om te ontdemp."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tik om op vibreer te stel. Toeganklikheidsdienste kan dalk gedemp wees."</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index 601930a91591..f807ba98ad5e 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"ተደራሽነት"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s። ድምጸ-ከል ለማድረግ መታ ያድርጉ"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s። ወደ ንዝረት ለማቀናበር መታ ያድርጉ። የተደራሽነት አገልግሎቶች ድምጸ-ከል ሊደረግባቸው ይችላል።"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index a1a8f8d2d0f2..33110ce69d6a 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -459,6 +459,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"إمكانية الوصول"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. انقر لإلغاء التجاهل."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. انقر للتعيين على الاهتزاز. قد يتم تجاهل خدمات إمكانية الوصول."</string> diff --git a/packages/SystemUI/res/values-az-rAZ/strings.xml b/packages/SystemUI/res/values-az-rAZ/strings.xml index 1bc9e59e9046..49f27b200995 100644 --- a/packages/SystemUI/res/values-az-rAZ/strings.xml +++ b/packages/SystemUI/res/values-az-rAZ/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Münasiblik"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Səsli etmək üçün tıklayın."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Vibrasiyanı ayarlamaq üçün tıklayın. Əlçatımlılıq xidmətləri səssiz edilmiş ola bilər."</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 8105d9ea50b2..dc21bdedcd9d 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Pristupačnost"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Dodirnite da biste uključili zvuk."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Dodirnite da biste podesili na vibraciju. Zvuk usluga pristupačnosti će možda biti isključen."</string> diff --git a/packages/SystemUI/res/values-be-rBY/strings.xml b/packages/SystemUI/res/values-be-rBY/strings.xml index 83c67d4b81a7..ac93da7838a2 100644 --- a/packages/SystemUI/res/values-be-rBY/strings.xml +++ b/packages/SystemUI/res/values-be-rBY/strings.xml @@ -457,6 +457,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Спецыяльныя магчымасці"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Дакраніцеся, каб уключыць гук."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Дакраніцеся, каб уключыць вібрацыю. Можа быць адключаны гук службаў спецыяльных магчымасцей."</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index bf3a6148c973..7814efbd5f0c 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Достъпност"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Докоснете, за да включите отново звука."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Докоснете, за да зададете вибриране. Възможно е звукът на услугите за достъпност да бъде заглушен."</string> diff --git a/packages/SystemUI/res/values-bn-rBD/strings.xml b/packages/SystemUI/res/values-bn-rBD/strings.xml index bd599bcdb2ab..c80efa4111b0 100644 --- a/packages/SystemUI/res/values-bn-rBD/strings.xml +++ b/packages/SystemUI/res/values-bn-rBD/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> হল ভলিউম ডায়লগ"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"আসলটি পুনঃস্থাপন করতে আলতো চাপ দিন৷"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"আপনি আপনার কাজের প্রোফাইল ব্যবহার করছেন"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"কল করুন"</item> - <item msgid="5997713001067658559">"সিস্টেম"</item> - <item msgid="7858983209929864160">"রিং"</item> - <item msgid="1850038478268896762">"মিডিয়া"</item> - <item msgid="8265110906352372092">"অ্যালার্ম"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"ব্লুটুথ"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s। সশব্দ করতে আলতো চাপুন।"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s। কম্পন এ সেট করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে নিঃশব্দ করা হতে পারে।"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s। নিঃশব্দ করতে আলতো চাপুন। অ্যাক্সেসযোগ্যতার পরিষেবাগুলিকে নিঃশব্দ করা হতে পারে।"</string> diff --git a/packages/SystemUI/res/values-bs-rBA/strings.xml b/packages/SystemUI/res/values-bs-rBA/strings.xml index 5ba720ccef7a..2d02a4fbc46d 100644 --- a/packages/SystemUI/res/values-bs-rBA/strings.xml +++ b/packages/SystemUI/res/values-bs-rBA/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Pristupačnost"</item> </string-array> <!-- String.format failed for translation --> <!-- no translation found for volume_stream_content_description_unmute (4436631538779230857) --> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 927e75b12ee2..b0e6fe507374 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Accessibilitat"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toca per activar el so."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toca per activar la vibració. Pot ser que els serveis d\'accessibilitat se silenciïn."</string> @@ -472,7 +473,7 @@ <string name="status_bar_airplane" msgid="7057575501472249002">"Mode d\'avió"</string> <string name="add_tile" msgid="2995389510240786221">"Afegeix un mosaic"</string> <string name="broadcast_tile" msgid="3894036511763289383">"Mosaic d\'emissió"</string> - <string name="zen_alarm_warning_indef" msgid="3482966345578319605">"Si no desactives aquesta opció abans, <xliff:g id="WHEN">%1$s</xliff:g> no sentiràs la pròxima alarma"</string> + <string name="zen_alarm_warning_indef" msgid="3482966345578319605">"Si no desactives aquesta opció abans, no sentiràs la pròxima alarma (<xliff:g id="WHEN">%1$s</xliff:g>)"</string> <string name="zen_alarm_warning" msgid="444533119582244293">"<xliff:g id="WHEN">%1$s</xliff:g> no sentiràs la pròxima alarma"</string> <string name="alarm_template" msgid="3980063409350522735">"Hora: <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="alarm_template_far" msgid="4242179982586714810">"Dia: <xliff:g id="WHEN">%1$s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 69629a9eb208..639f8b5c2c76 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -457,6 +457,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Přístupnost"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Klepnutím zapnete zvuk."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Klepnutím aktivujete režim vibrací. Služby přístupnosti mohou být ztlumeny."</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 8e34bd037fc6..8fa27ad9a9ba 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> er dialogboksen for lydstyrke"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Tryk for at gendanne det oprindelige."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Du bruger din arbejdsprofil"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Opkald"</item> - <item msgid="5997713001067658559">"System"</item> - <item msgid="7858983209929864160">"Ring"</item> - <item msgid="1850038478268896762">"Medier"</item> - <item msgid="8265110906352372092">"Alarm"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tryk for at slå lyden til."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tryk for at konfigurere til at vibrere. Tilgængelighedstjenester kan blive deaktiveret."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Tryk for at slå lyden fra. Lyden i tilgængelighedstjenester kan blive slået fra."</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index b3a457d7e326..564625fc1456 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -442,18 +442,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> regelt die Lautstärke."</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Tippe, um das Original wiederherzustellen."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Du verwendest dein Arbeitsprofil."</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Anruf"</item> - <item msgid="5997713001067658559">"System"</item> - <item msgid="7858983209929864160">"Klingeln lassen"</item> - <item msgid="1850038478268896762">"Medien"</item> - <item msgid="8265110906352372092">"Wecker"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Zum Aufheben der Stummschaltung tippen."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tippen, um Vibrieren festzulegen. Bedienungshilfen werden unter Umständen stummgeschaltet."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Zum Stummschalten tippen. Bedienungshilfen werden unter Umständen stummgeschaltet."</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 050d7f8ca18e..a5c790c72535 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Προσβασιμότητα"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Πατήστε για κατάργηση σίγασης."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Πατήστε για ενεργοποιήσετε τη δόνηση. Οι υπηρεσίες προσβασιμότητας ενδέχεται να τεθούν σε σίγαση."</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 9aca3cc290e8..5dacfb242791 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Accessibility"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tap to unmute."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 9aca3cc290e8..5dacfb242791 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Accessibility"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tap to unmute."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 9aca3cc290e8..5dacfb242791 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Accessibility"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tap to unmute."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tap to set to vibrate. Accessibility services may be muted."</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 90c2ca1a8817..3ba43600278f 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Accesibilidad"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Presiona para dejar de silenciar."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Presiona para establecer el modo vibración. Es posible que los servicios de accesibilidad estén silenciados."</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 5558cac6d708..969f81285fad 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Accesibilidad"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toca para activar el sonido."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toca para poner el dispositivo en vibración. Los servicios de accesibilidad pueden silenciarse."</string> diff --git a/packages/SystemUI/res/values-et-rEE/strings.xml b/packages/SystemUI/res/values-et-rEE/strings.xml index 84fadb2b50d6..e1ebfd2593b1 100644 --- a/packages/SystemUI/res/values-et-rEE/strings.xml +++ b/packages/SystemUI/res/values-et-rEE/strings.xml @@ -442,18 +442,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> on helitugevuse dialoog"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Puudutage originaali taastamiseks."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Kasutate oma tööprofiili"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Helistamine"</item> - <item msgid="5997713001067658559">"Süsteem"</item> - <item msgid="7858983209929864160">"Helin"</item> - <item msgid="1850038478268896762">"Meedia"</item> - <item msgid="8265110906352372092">"Äratus"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Puudutage vaigistuse tühistamiseks."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Puudutage värinarežiimi määramiseks. Juurdepääsetavuse teenused võidakse vaigistada."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Puudutage vaigistamiseks. Juurdepääsetavuse teenused võidakse vaigistada."</string> diff --git a/packages/SystemUI/res/values-eu-rES/strings.xml b/packages/SystemUI/res/values-eu-rES/strings.xml index d6578a24a0c4..fa0c71168814 100644 --- a/packages/SystemUI/res/values-eu-rES/strings.xml +++ b/packages/SystemUI/res/values-eu-rES/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Erabilerraztasuna"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Sakatu audioa aktibatzeko."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Sakatu dardara ezartzeko. Baliteke erabilerraztasun-eginbideen audioa desaktibatzea."</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index e00c5b5fbf5f..bd3c4fc0c581 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> کنترلکننده صدا است"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"برای بازیابی نسخه اصلی ضربه بزنید."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"درحال استفاده از نمایه کاریتان هستید"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"تماس"</item> - <item msgid="5997713001067658559">"سیستم"</item> - <item msgid="7858983209929864160">"تماس"</item> - <item msgid="1850038478268896762">"رسانه"</item> - <item msgid="8265110906352372092">"هشدار"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"بلوتوث"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. برای باصدا کردن ضربه بزنید."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. برای تنظیم روی لرزش ضربه بزنید. ممکن است سرویسهای دسترسپذیری بیصدا شوند."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. برای بیصدا کردن ضربه بزنید. ممکن است سرویسهای دسترسپذیری بیصدا شوند."</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 08572fe22ffe..446c9f8efc08 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Esteettömyys"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Poista mykistys koskettamalla."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Siirry värinätilaan koskettamalla. Myös esteettömyyspalvelut saattavat mykistyä."</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 830bfa7b6269..a03e89728ff2 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -442,18 +442,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> correspond à la boîte de dialogue du volume"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Touchez pour restaurer l\'original."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Vous utilisez votre profil professionnel."</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Appeler"</item> - <item msgid="5997713001067658559">"Système"</item> - <item msgid="7858983209929864160">"Sonnerie"</item> - <item msgid="1850038478268896762">"Multimédia"</item> - <item msgid="8265110906352372092">"Alarme"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Touchez pour réactiver le son."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Touchez pour activer les vibrations. Il est possible de couper le son des services d\'accessibilité."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Touchez pour couper le son. Il est possible de couper le son des services d\'accessibilité."</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index 3b138c2ce244..1e72795df7a0 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -442,18 +442,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> correspond à la boîte de dialogue du volume"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Appuyez pour rétablir la version d\'origine."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Vous utilisez votre profil professionnel."</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Appeler"</item> - <item msgid="5997713001067658559">"Système"</item> - <item msgid="7858983209929864160">"Sonnerie"</item> - <item msgid="1850038478268896762">"Multimédia"</item> - <item msgid="8265110906352372092">"Alarme"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Appuyez pour ne plus ignorer."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Appuyez pour mettre en mode vibreur. Vous pouvez ignorer les services d\'accessibilité."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Appuyez pour ignorer. Vous pouvez ignorer les services d\'accessibilité."</string> diff --git a/packages/SystemUI/res/values-gl-rES/strings.xml b/packages/SystemUI/res/values-gl-rES/strings.xml index 579335d5ef20..515c729b6d57 100644 --- a/packages/SystemUI/res/values-gl-rES/strings.xml +++ b/packages/SystemUI/res/values-gl-rES/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Accesibilidade"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toca para activar o son."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toca para establecer a vibración. Pódense silenciar os servizos de accesibilidade."</string> diff --git a/packages/SystemUI/res/values-gu-rIN/strings.xml b/packages/SystemUI/res/values-gu-rIN/strings.xml index 48a6d0fe699b..9778b86cbf22 100644 --- a/packages/SystemUI/res/values-gu-rIN/strings.xml +++ b/packages/SystemUI/res/values-gu-rIN/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"ઍક્સેસિબિલિટી"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. અનમ્યૂટ કરવા માટે ટૅપ કરો."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. વાઇબ્રેટ પર સેટ કરવા માટે ટૅપ કરો. ઍક્સેસિબિલિટી સેવાઓ મ્યૂટ કરવામાં આવી શકે છે."</string> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 97f3926c940c..101012690493 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> वॉल्यूम संवाद है"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"मूल को पुन: स्थापित करने के लिए टैप करें."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"आप अपनी कार्य प्रोफ़ाइल का उपयोग कर रहे हैं"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"कॉल करें"</item> - <item msgid="5997713001067658559">"सिस्टम"</item> - <item msgid="7858983209929864160">"रिंग करें"</item> - <item msgid="1850038478268896762">"मीडिया"</item> - <item msgid="8265110906352372092">"अलार्म"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"ब्लूटूथ"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. अनम्यूट करने के लिए टैप करें."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. कंपन पर सेट करने के लिए टैप करें. एक्सेस-योग्यता सेवाएं म्यूट हो सकती हैं."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. म्यूट करने के लिए टैप करें. एक्सेस-योग्यता सेवाएं म्यूट हो सकती हैं."</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 7ff63bdac12f..5d9162e9e474 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Pristupačnost"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Dodirnite da biste uključili zvuk."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Dodirnite da biste postavili na vibraciju. Usluge pristupačnosti možda neće imati zvuk."</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index bd0805bf5d2a..bb780302bc7c 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Kisegítő lehetőségek"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Koppintson a némítás megszüntetéséhez."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Koppintson a rezgés beállításához. Előfordulhat, hogy a kisegítő lehetőségek szolgáltatásai le vannak némítva."</string> diff --git a/packages/SystemUI/res/values-hy-rAM/strings.xml b/packages/SystemUI/res/values-hy-rAM/strings.xml index 07966cf1c9d8..d9ec09ed757a 100644 --- a/packages/SystemUI/res/values-hy-rAM/strings.xml +++ b/packages/SystemUI/res/values-hy-rAM/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ը ձայնի ուժգնության երկխոսության հավելված է"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Հպեք՝ բնօրինակը վերականգնելու համար:"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Դուք օգտագործում եք ձեր աշխատանքային պրոֆիլը"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Զանգել"</item> - <item msgid="5997713001067658559">"Համակարգ"</item> - <item msgid="7858983209929864160">"Զանգ"</item> - <item msgid="1850038478268896762">"Մեդիա"</item> - <item msgid="8265110906352372092">"Զարթուցիչ"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s: Հպեք՝ ձայնը միացնելու համար:"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s: Հպեք՝ թրթռումը միացնելու համար: Մատչելիության ծառայությունների ձայնը կարող է անջատվել:"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s: Հպեք՝ ձայնն անջատելու համար: Մատչելիության ծառայությունների ձայնը կարող է անջատվել:"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 6444ae57bf0c..49d5221f15c1 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Aksesibilitas"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ketuk untuk menyuarakan."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Ketuk untuk menyetel agar bergetar. Layanan aksesibilitas mungkin dibisukan."</string> diff --git a/packages/SystemUI/res/values-is-rIS/strings.xml b/packages/SystemUI/res/values-is-rIS/strings.xml index 7e08a01f752e..f95d35ffaf35 100644 --- a/packages/SystemUI/res/values-is-rIS/strings.xml +++ b/packages/SystemUI/res/values-is-rIS/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Aðgengi"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ýttu til að hætta að þagga."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Ýttu til að stilla á titring. Hugsanlega verður slökkt á hljóði aðgengisþjónustu."</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 8ffb10d2641f..b30516d5b05d 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Accessibilità"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tocca per riattivare l\'audio."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tocca per attivare la vibrazione. L\'audio dei servizi di accessibilità può essere disattivato."</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index a6d7983c6096..c9f907a76846 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -444,18 +444,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> הוא תיבת הדו-שיח של עוצמת הקול"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"הקש כדי לשחזר את המקור."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"אתה משתמש בפרופיל העבודה שלך"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"שיחה"</item> - <item msgid="5997713001067658559">"מערכת"</item> - <item msgid="7858983209929864160">"השמע צלצול"</item> - <item msgid="1850038478268896762">"מדיה"</item> - <item msgid="8265110906352372092">"התראה"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. הקש כדי לבטל את ההשתקה."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. הקש כדי להגדיר רטט. ייתכן ששירותי הנגישות מושתקים."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. הקש כדי להשתיק. ייתכן ששירותי הנגישות מושתקים."</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 6ef9f73a6aa6..b891b61815ac 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -442,18 +442,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g>を音量ダイアログとして使用"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"タップすると元に戻ります。"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"仕事用プロファイルを使用しています"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"通話"</item> - <item msgid="5997713001067658559">"システム"</item> - <item msgid="7858983209929864160">"着信音"</item> - <item msgid="1850038478268896762">"メディア"</item> - <item msgid="8265110906352372092">"アラーム"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s。タップしてミュートを解除します。"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s。タップしてバイブレーションに設定します。ユーザー補助機能サービスがミュートされる場合があります。"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s。タップしてミュートします。ユーザー補助機能サービスがミュートされる場合があります。"</string> diff --git a/packages/SystemUI/res/values-ka-rGE/strings.xml b/packages/SystemUI/res/values-ka-rGE/strings.xml index 695279da446b..e00d6b3629dc 100644 --- a/packages/SystemUI/res/values-ka-rGE/strings.xml +++ b/packages/SystemUI/res/values-ka-rGE/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"მარტივი წვდომა"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. შეეხეთ დადუმების გასაუქმებლად."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. შეეხეთ ვიბრაციაზე დასაყენებლად. შეიძლება დადუმდეს მარტივი წვდომის სერვისებიც."</string> diff --git a/packages/SystemUI/res/values-kk-rKZ/strings.xml b/packages/SystemUI/res/values-kk-rKZ/strings.xml index ba71182b8926..92b94bd8a708 100644 --- a/packages/SystemUI/res/values-kk-rKZ/strings.xml +++ b/packages/SystemUI/res/values-kk-rKZ/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> — көлем диалогтық терезесі"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Бастапқы қалпына келтіру үшін түртіңіз."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Сіз жұмыс профиліңізді пайдаланып жатырсыз"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Қоңырау шалу"</item> - <item msgid="5997713001067658559">"Жүйе"</item> - <item msgid="7858983209929864160">"Шылдырлау"</item> - <item msgid="1850038478268896762">"Мультимeдиа"</item> - <item msgid="8265110906352372092">"Дабыл"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Дыбысын қосу үшін түртіңіз."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Діріл режимін орнату үшін түртіңіз. Арнайы мүмкіндік қызметтерінің дыбысы өшуі мүмкін."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Дыбысын өшіру үшін түртіңіз. Арнайы мүмкіндік қызметтерінің дыбысы өшуі мүмкін."</string> diff --git a/packages/SystemUI/res/values-km-rKH/strings.xml b/packages/SystemUI/res/values-km-rKH/strings.xml index b222555765f5..9a352fc9502f 100644 --- a/packages/SystemUI/res/values-km-rKH/strings.xml +++ b/packages/SystemUI/res/values-km-rKH/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> គឺជាប្រអប់សម្លេង"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"ប៉ះដើម្បីស្តារច្បាប់ដើម"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"អ្នកកំពុងប្រើប្រវត្តិរូបការងាររបស់អ្នក"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"ហៅ"</item> - <item msgid="5997713001067658559">"ប្រព័ន្ធ"</item> - <item msgid="7858983209929864160">"រោទ៍"</item> - <item msgid="1850038478268896762">"មេឌៀ"</item> - <item msgid="8265110906352372092">"ម៉ោងរោទ៍"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"ប៊្លូធូស"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s។ ប៉ះដើម្បីបើកសំឡេង។"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s។ ប៉ះដើម្បីកំណត់ឲ្យញ័រ។ សេវាកម្មលទ្ធភាពប្រើប្រាស់អាចនឹងត្រូវបានបិទសំឡេង។"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s។ ប៉ះដើម្បីបិទសំឡេង។ សេវាកម្មលទ្ធភាពប្រើប្រាស់អាចនឹងត្រូវបានបិទសំឡេង។"</string> diff --git a/packages/SystemUI/res/values-kn-rIN/strings.xml b/packages/SystemUI/res/values-kn-rIN/strings.xml index b2a6f27e504b..990c721d7809 100644 --- a/packages/SystemUI/res/values-kn-rIN/strings.xml +++ b/packages/SystemUI/res/values-kn-rIN/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ವಾಲ್ಯೂಮ್ ಸಂವಾದವಾಗಿದೆ"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"ಮೂಲಕ್ಕೆ ಮರುಸ್ಥಾಪಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"ನಿಮ್ಮ ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಅನ್ನು ನೀವು ಬಳಸುತ್ತಿರುವಿರಿ"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"ಕರೆಮಾಡಿ"</item> - <item msgid="5997713001067658559">"ಸಿಸ್ಟಂ"</item> - <item msgid="7858983209929864160">"ಉಂಗುರ"</item> - <item msgid="1850038478268896762">"ಮಾಧ್ಯಮ"</item> - <item msgid="8265110906352372092">"ಅಲಾರಮ್"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"ಬ್ಲೂಟೂತ್"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. ಅನ್ಮ್ಯೂಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. ಕಂಪನಕ್ಕೆ ಹೊಂದಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ. ಪ್ರವೇಶಿಸುವಿಕೆ ಸೇವೆಗಳನ್ನು ಮ್ಯೂಟ್ ಮಾಡಬಹುದು."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. ಮ್ಯೂಟ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ. ಪ್ರವೇಶಿಸುವಿಕೆ ಸೇವೆಗಳನ್ನು ಮ್ಯೂಟ್ ಮಾಡಬಹುದು."</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index cefb57a514b1..b06f15e36fca 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -442,18 +442,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g>은(는) 볼륨 대화입니다."</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"원본을 복원하려면 탭하세요."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"직장 프로필을 사용하고 있습니다."</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"통화"</item> - <item msgid="5997713001067658559">"시스템"</item> - <item msgid="7858983209929864160">"벨 울리기"</item> - <item msgid="1850038478268896762">"미디어"</item> - <item msgid="8265110906352372092">"알람"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"블루투스"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. 탭하여 음소거를 해제하세요."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. 탭하여 진동으로 설정하세요. 접근성 서비스가 음소거될 수 있습니다."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. 탭하여 음소거로 설정하세요. 접근성 서비스가 음소거될 수 있습니다."</string> diff --git a/packages/SystemUI/res/values-ky-rKG/strings.xml b/packages/SystemUI/res/values-ky-rKG/strings.xml index e013c6b7c383..d5af0b39c593 100644 --- a/packages/SystemUI/res/values-ky-rKG/strings.xml +++ b/packages/SystemUI/res/values-ky-rKG/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Атайын мүмкүнчүлүктөр"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Үнүн чыгаруу үчүн таптап коюңуз."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Дирилдөөгө коюу үчүн таптап коюңуз. Атайын мүмкүнчүлүктөр кызматынын үнүн өчүрүп койсо болот."</string> diff --git a/packages/SystemUI/res/values-lo-rLA/strings.xml b/packages/SystemUI/res/values-lo-rLA/strings.xml index 94e789a1325a..711a68d6e398 100644 --- a/packages/SystemUI/res/values-lo-rLA/strings.xml +++ b/packages/SystemUI/res/values-lo-rLA/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ແມ່ນໜ້າຕ່າງລະດັບສຽງ"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"ແຕະເພື່ອກູ້ຕົ້ນສະບັບຄືນມາ."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"ທ່ານກຳລັງໃຊ້ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານ"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"ໂທ"</item> - <item msgid="5997713001067658559">"ລະບົບ"</item> - <item msgid="7858983209929864160">"ເຕືອນດ້ວຍສຽງ"</item> - <item msgid="1850038478268896762">"ມີເດຍ"</item> - <item msgid="8265110906352372092">"ໂມງປຸກ"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. ແຕະເພື່ອເຊົາປິດສຽງ."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. ແຕະເພື່ອຕັ້ງເປັນສັ່ນ. ບໍລິການຊ່ວຍເຂົ້າເຖິງອາດຖືກປິດສຽງໄວ້."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. ແຕະເພື່ອປິດສຽງ. ບໍລິການຊ່ວຍເຂົ້າເຖິງອາດຖືກປິດສຽງໄວ້."</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index 5af5979ae904..aec484dbab30 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -444,18 +444,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ yra garsumo valdymo dialogo langas"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Palieskite, kad atkurtumėte originalą."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Naudojate darbo profilį"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Skambinti"</item> - <item msgid="5997713001067658559">"Sistema"</item> - <item msgid="7858983209929864160">"Skambinti"</item> - <item msgid="1850038478268896762">"Medija"</item> - <item msgid="8265110906352372092">"Signalas"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Palieskite, kad įjungtumėte garsą."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Palieskite, kad nustatytumėte vibravimą. Gali būti nutildytos pritaikymo neįgaliesiems paslaugos."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Palieskite, kad nutildytumėte. Gali būti nutildytos pritaikymo neįgaliesiems paslaugos."</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 503c8c8bd742..900a955df770 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -442,18 +442,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ir skaļuma dialoglodziņš"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Pieskarieties, lai atjaunotu sākotnējo saturu."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Jūs izmantojat darba profilu."</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Zvans"</item> - <item msgid="5997713001067658559">"Sistēma"</item> - <item msgid="7858983209929864160">"Zvanīt"</item> - <item msgid="1850038478268896762">"Multivide"</item> - <item msgid="8265110906352372092">"Signāls"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Pieskarieties, lai ieslēgtu skaņu."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Pieskarieties, lai iestatītu uz vibrozvanu. Var tikt izslēgti pieejamības pakalpojumu signāli."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Pieskarieties, lai izslēgtu skaņu. Var tikt izslēgti pieejamības pakalpojumu signāli."</string> diff --git a/packages/SystemUI/res/values-mk-rMK/strings.xml b/packages/SystemUI/res/values-mk-rMK/strings.xml index 62fc35081cbc..716f76c19831 100644 --- a/packages/SystemUI/res/values-mk-rMK/strings.xml +++ b/packages/SystemUI/res/values-mk-rMK/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Пристапност"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Допрете за да вклучите звук."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Допрете за да поставите на вибрации. Можеби ќе се исклучи звукот на услугите за достапност."</string> diff --git a/packages/SystemUI/res/values-ml-rIN/strings.xml b/packages/SystemUI/res/values-ml-rIN/strings.xml index 9e7d2f29fd91..6c14826bafde 100644 --- a/packages/SystemUI/res/values-ml-rIN/strings.xml +++ b/packages/SystemUI/res/values-ml-rIN/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g>, വോളിയം ഡയലോഗാണ്"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"ഒറിജിനൽ പുനഃസ്ഥാപിക്കാൻ ടാപ്പുചെയ്യുക."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"നിങ്ങൾ ഉപയോഗിക്കുന്നത് ഔദ്യോഗിക പ്രൊഫൈലാണ്"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"വിളിക്കുക"</item> - <item msgid="5997713001067658559">"സിസ്റ്റം"</item> - <item msgid="7858983209929864160">"റിംഗുചെയ്യുക"</item> - <item msgid="1850038478268896762">"മീഡിയ"</item> - <item msgid="8265110906352372092">"അലാറം"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"ബ്ലൂടൂത്ത്"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. അൺമ്യൂട്ടുചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. വൈബ്രേറ്റിലേക്ക് സജ്ജമാക്കുന്നതിന് ടാപ്പുചെയ്യുക. പ്രവേശനക്ഷമതാ സേവനങ്ങൾ മ്യൂട്ടുചെയ്യപ്പെട്ടേക്കാം."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. മ്യൂട്ടുചെയ്യുന്നതിന് ടാപ്പുചെയ്യുക. പ്രവേശനക്ഷമതാ സേവനങ്ങൾ മ്യൂട്ടുചെയ്യപ്പെട്ടേക്കാം."</string> diff --git a/packages/SystemUI/res/values-mn-rMN/strings.xml b/packages/SystemUI/res/values-mn-rMN/strings.xml index 04fb4c23cc7d..817131048eff 100644 --- a/packages/SystemUI/res/values-mn-rMN/strings.xml +++ b/packages/SystemUI/res/values-mn-rMN/strings.xml @@ -410,12 +410,12 @@ <string name="monitoring_description_vpn_device_owned" msgid="3090670777499161246">"Таны төхөөрөмжийн удирдагч <xliff:g id="ORGANIZATION">%1$s</xliff:g>.\n\nТаны админ таны төхөөрөмжтэй холбоотой тохиргоо, байгууллагын хандалт, мэдээлэл болон байршлын мэдээллийг удирдан, хяналт тавих боломжтой.\n\nТа таны имэйл, апп, вэб сайтын үйл ажиллагааг хянах VPN-д холбогдсон байна.\n\nДэлгэрэнгүй мэдээлэл авахыг хүсвэл админтайгаа холбогдоно уу."</string> <string name="monitoring_description_vpn_profile_owned" msgid="2054949132145039290">"Таны ажлын профайлыг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг.\n\nАдмин нь таны имэйл,апп болон вэбсайт зэрэг сүлжээний үйл ажиллагааг хянадаг. \n\n Дэлгэрэнгүй мэдээлэл авахыг хүсвэл админтайгаа холбогдоно уу. \n\nМөн та VPN-д холбогдсон бөгөөд ингэснээр өөрийн сүлжээний үйл ажиллагааг хянах боломжтой байна."</string> <string name="legacy_vpn_name" msgid="6604123105765737830">"VPN"</string> - <string name="monitoring_description_app" msgid="6259179342284742878">"Та <xliff:g id="APPLICATION">%1$s</xliff:g>-д холбогдсон бөгөөд энэ нь таны имэйл, апп, вебсайт зэрэг сүлжээний үйл ажиллагааг хянах боломжтой."</string> - <string name="monitoring_description_app_personal" msgid="484599052118316268">"Та <xliff:g id="APPLICATION">%1$s</xliff:g>-д холбогдсон бөгөөд энэ нь таны имэйл, апп, вебсайт зэрэг сүлжээний хувийн үйл ажиллагааг хянах боломжтой."</string> + <string name="monitoring_description_app" msgid="6259179342284742878">"Та <xliff:g id="APPLICATION">%1$s</xliff:g>-д холбогдсон бөгөөд энэ нь таны имэйл, апп, вэбсайт зэрэг сүлжээний үйл ажиллагааг хянах боломжтой."</string> + <string name="monitoring_description_app_personal" msgid="484599052118316268">"Та <xliff:g id="APPLICATION">%1$s</xliff:g>-д холбогдсон бөгөөд энэ нь таны имэйл, апп, вэбсайт зэрэг сүлжээний хувийн үйл ажиллагааг хянах боломжтой."</string> <string name="branded_monitoring_description_app_personal" msgid="2669518213949202599">"Та имэйл, апп, вэб хуудас зэрэг хувийн сүлжээнийхээ үйл ажиллагааг хянах боломжтой <xliff:g id="APPLICATION">%1$s</xliff:g>-д холбогдсон байна."</string> - <string name="monitoring_description_app_work" msgid="1754325860918060897">"Таны ажлын профайлыг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг. Энэ нь <xliff:g id="APPLICATION">%2$s</xliff:g>-тэй холбогдсон бөгөөд таны имэйл, апп, вебсайт зэрэг сүлжээний үйл ажиллагааг хянах боломжтой.\n\nДэлгэрэнгүй мэдээлэл авахыг хүсвэл админтайгаа холбогдоно уу."</string> - <string name="monitoring_description_app_personal_work" msgid="4946600443852045903">"Таны ажлын профайлыг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг. Энэ нь <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>-тай холбогдсон бөгөөд таны имэйл, апп, вебсайт зэрэг ажлын сүлжээний үйл ажиллагааг хянах боломжтой.\n\nМөн та <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>-д холбогдсон бөгөөд энэ нь таны сүлжээний хувийн үйл ажиллагааг хянаж чадна."</string> - <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"Таны төхөөрөмжийг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг.\n\n Танай админ төхөөрөмж, төхөөрөмжийн байршилтай холбоотой өгөгдлийг холбох, тохиргоог өөрчлөх болон хяналт тавих боломжтой.\n\nТа <xliff:g id="APPLICATION">%2$s</xliff:g>-тай холбогдсон бөгөөд ингэснээр таны имэйл,апп, аюулгүй вебсайт зэрэг сүлжээний үйл ажиллагаагаа хянах боломжтой.\n\n Дэлгэрэнгүй мэдээлэл авахыг хүсвэл админтайгаа холбогдоно уу."</string> + <string name="monitoring_description_app_work" msgid="1754325860918060897">"Таны ажлын профайлыг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг. Энэ нь <xliff:g id="APPLICATION">%2$s</xliff:g>-тэй холбогдсон бөгөөд таны имэйл, апп, вэбсайт зэрэг сүлжээний үйл ажиллагааг хянах боломжтой.\n\nДэлгэрэнгүй мэдээлэл авахыг хүсвэл админтайгаа холбогдоно уу."</string> + <string name="monitoring_description_app_personal_work" msgid="4946600443852045903">"Таны ажлын профайлыг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг. Энэ нь <xliff:g id="APPLICATION_WORK">%2$s</xliff:g>-тай холбогдсон бөгөөд таны имэйл, апп, вэбсайт зэрэг ажлын сүлжээний үйл ажиллагааг хянах боломжтой.\n\nМөн та <xliff:g id="APPLICATION_PERSONAL">%3$s</xliff:g>-д холбогдсон бөгөөд энэ нь таны сүлжээний хувийн үйл ажиллагааг хянаж чадна."</string> + <string name="monitoring_description_vpn_app_device_owned" msgid="4970443827043261703">"Таны төхөөрөмжийг <xliff:g id="ORGANIZATION">%1$s</xliff:g> удирддаг.\n\n Танай админ төхөөрөмж, төхөөрөмжийн байршилтай холбоотой өгөгдлийг холбох, тохиргоог өөрчлөх болон хяналт тавих боломжтой.\n\nТа <xliff:g id="APPLICATION">%2$s</xliff:g>-тай холбогдсон бөгөөд ингэснээр таны имэйл,апп, аюулгүй вэбсайт зэрэг сүлжээний үйл ажиллагаагаа хянах боломжтой.\n\n Дэлгэрэнгүй мэдээлэл авахыг хүсвэл админтайгаа холбогдоно уу."</string> <string name="keyguard_indication_trust_disabled" msgid="7412534203633528135">"Таныг гараар онгойлгох хүртэл төхөөрөмж түгжээтэй байх болно"</string> <string name="hidden_notifications_title" msgid="7139628534207443290">"Мэдэгдлийг хурдан авах"</string> <string name="hidden_notifications_text" msgid="2326409389088668981">"Түгжээг тайлахын өмнө үзнэ үү"</string> @@ -438,18 +438,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь дууны диалог юм."</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Эх хувилбарыг сэргээхийн тулд дарна уу."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Та өөрийн ажлын профайлыг ашиглаж байна"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Дуудлага"</item> - <item msgid="5997713001067658559">"Систем"</item> - <item msgid="7858983209929864160">"Хонх дуугаргах"</item> - <item msgid="1850038478268896762">"Медиа"</item> - <item msgid="8265110906352372092">"Сэрүүлэг"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Дууг нь нээхийн тулд товшино уу."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Чичиргээнд тохируулахын тулд товшино уу. Хүртээмжийн үйлчилгээний дууг хаасан."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Дууг нь хаахын тулд товшино уу. Хүртээмжийн үйлчилгээний дууг хаасан."</string> diff --git a/packages/SystemUI/res/values-mr-rIN/strings.xml b/packages/SystemUI/res/values-mr-rIN/strings.xml index a21019ad50f7..ade3921c1bf1 100644 --- a/packages/SystemUI/res/values-mr-rIN/strings.xml +++ b/packages/SystemUI/res/values-mr-rIN/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"प्रवेशयोग्यता"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. सशब्द करण्यासाठी टॅप करा."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. कंपन सेट करण्यासाठी टॅप करा. प्रवेशयोग्यता सेवा नि:शब्द केल्या जाऊ शकतात."</string> diff --git a/packages/SystemUI/res/values-ms-rMY/strings.xml b/packages/SystemUI/res/values-ms-rMY/strings.xml index ce942952ccd0..ebe2cf8ed475 100644 --- a/packages/SystemUI/res/values-ms-rMY/strings.xml +++ b/packages/SystemUI/res/values-ms-rMY/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ialah dialog kelantangan"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Ketik untuk memulihkan yang asal."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Anda sedang menggunakan profil kerja"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Panggil"</item> - <item msgid="5997713001067658559">"Sistem"</item> - <item msgid="7858983209929864160">"Dering"</item> - <item msgid="1850038478268896762">"Media"</item> - <item msgid="8265110906352372092">"Penggera"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ketik untuk menyahredam."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Ketik untuk menetapkan pada getar. Perkhidmatan kebolehaksesan mungkin diredamkan."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Ketik untuk meredam. Perkhidmatan kebolehaksesan mungkin diredamkan."</string> diff --git a/packages/SystemUI/res/values-my-rMM/strings.xml b/packages/SystemUI/res/values-my-rMM/strings.xml index 8ab1de0f707e..a1e6d373fa5b 100644 --- a/packages/SystemUI/res/values-my-rMM/strings.xml +++ b/packages/SystemUI/res/values-my-rMM/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"အများသုံးစွဲနိုင်မှု"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s။ အသံပြန်ဖွင့်ရန် တို့ပါ။"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s။ တုန်ခါမှုကို သတ်မှတ်ရန် တို့ပါ။ အများသုံးစွဲနိုင်မှု ဝန်ဆောင်မှုများကို အသံပိတ်ထားနိုင်ပါသည်။"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index c6312e1b5697..4508276923ef 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Tilgjengelighet"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Trykk for å slå på lyden."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Trykk for å angi vibrasjon. Lyden kan bli slått av for tilgjengelighetstjenestene."</string> diff --git a/packages/SystemUI/res/values-ne-rNP/strings.xml b/packages/SystemUI/res/values-ne-rNP/strings.xml index f87223c4aff8..7afcac162a0a 100644 --- a/packages/SystemUI/res/values-ne-rNP/strings.xml +++ b/packages/SystemUI/res/values-ne-rNP/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"पहुँच"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s। अनम्यूट गर्नका लागि ट्याप गर्नुहोस्।"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s। कम्पनमा सेट गर्नका लागि ट्याप गर्नुहोस्। पहुँच सम्बन्धी सेवाहरू म्यूट हुन सक्छन्।"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 4ea958584ca0..a13030d8f9aa 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Toegankelijkheid"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tik om dempen op te heffen."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tik om in te stellen op trillen. Toegankelijkheidsservices kunnen zijn gedempt."</string> diff --git a/packages/SystemUI/res/values-pa-rIN/strings.xml b/packages/SystemUI/res/values-pa-rIN/strings.xml index f25662b745f6..6b5abe46d460 100644 --- a/packages/SystemUI/res/values-pa-rIN/strings.xml +++ b/packages/SystemUI/res/values-pa-rIN/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਵੋਲਯੂਮ ਡਾਇਲੌਗ ਹੈ"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"ਅਸਲ ਨੂੰ ਮੁੜ-ਬਹਾਲ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"ਤੁਸੀਂ ਆਪਣੀ ਕੰਮ ਪ੍ਰੋਫਾਈਲ ਵਰਤ ਰਹੇ ਹੋ"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"ਕਾਲ ਕਰੋ"</item> - <item msgid="5997713001067658559">"ਸਿਸਟਮ"</item> - <item msgid="7858983209929864160">"ਰਿੰਗ ਕਰੋ"</item> - <item msgid="1850038478268896762">"ਮੀਡੀਆ"</item> - <item msgid="8265110906352372092">"ਅਲਾਰਮ"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"ਬਲੂਟੁੱਥ"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s। ਅਣਮਿਊਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s। ਥਰਥਰਾਹਟ ਸੈੱਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ। ਪਹੁੰਚਯੋਗਤਾ ਸੇਵਾਵਾਂ ਮਿਊਟ ਹੋ ਸਕਦੀਆਂ ਹਨ।"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s। ਮਿਊਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ। ਪਹੁੰਚਯੋਗਤਾ ਸੇਵਾਵਾਂ ਮਿਊਟ ਹੋ ਸਕਦੀਆਂ ਹਨ।"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 78c61029e57c..429fdfb9834f 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -399,7 +399,7 @@ <string name="battery_saver_notification_action_text" msgid="109158658238110382">"Wyłącz oszczędzanie baterii"</string> <string name="media_projection_dialog_text" msgid="3071431025448218928">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> będzie zapisywać wszystko, co wyświetli się na ekranie."</string> <string name="media_projection_remember_text" msgid="3103510882172746752">"Nie pokazuj ponownie"</string> - <string name="clear_all_notifications_text" msgid="814192889771462828">"Usuń wszystkie"</string> + <string name="clear_all_notifications_text" msgid="814192889771462828">"Ukryj wszystkie"</string> <string name="media_projection_action_text" msgid="8470872969457985954">"Rozpocznij teraz"</string> <string name="empty_shade_text" msgid="708135716272867002">"Brak powiadomień"</string> <string name="device_owned_footer" msgid="3802752663326030053">"Urządzenie może być monitorowane"</string> @@ -455,6 +455,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Ułatwienia dostępu"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Kliknij, by wyłączyć wyciszenie."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Kliknij, by włączyć wibracje. Ułatwienia dostępu mogą być wyciszone."</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 0dbdcb9b05d3..828d4d95a416 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Acessibilidade"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toque para ativar o som."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toque para configurar para vibrar. É possível que os serviços de acessibilidade sejam silenciados."</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index d037cdacd0c2..60a1cda8fdb8 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Acessibilidade"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toque para reativar o som."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toque para ativar a vibração. Os serviços de acessibilidade podem ser silenciados."</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 0dbdcb9b05d3..828d4d95a416 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Acessibilidade"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Toque para ativar o som."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Toque para configurar para vibrar. É possível que os serviços de acessibilidade sejam silenciados."</string> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index e33ebb5a3c78..b418d4a2dcfc 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -444,18 +444,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> afișează caseta de dialog pentru volum"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Atingeți pentru a restabili versiunea originală."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Acum folosiți profilul de serviciu"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Apel"</item> - <item msgid="5997713001067658559">"Sistem"</item> - <item msgid="7858983209929864160">"Sonerie"</item> - <item msgid="1850038478268896762">"Conținut media"</item> - <item msgid="8265110906352372092">"Alarmă"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Atingeți pentru a activa sunetul."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Atingeți pentru a seta vibrarea. Sunetul se poate dezactiva pentru serviciile de accesibilitate."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Atingeți pentru a dezactiva sunetul. Sunetul se poate dezactiva pentru serviciile de accesibilitate."</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 0fbb0bd3c413..05f0d3830931 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -457,6 +457,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Специальные возможности"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Нажмите, чтобы включить звук."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Нажмите, чтобы включить вибрацию. Специальные возможности могут прекратить работу."</string> diff --git a/packages/SystemUI/res/values-si-rLK/strings.xml b/packages/SystemUI/res/values-si-rLK/strings.xml index c4d23788d7f3..2db54d0d9c0e 100644 --- a/packages/SystemUI/res/values-si-rLK/strings.xml +++ b/packages/SystemUI/res/values-si-rLK/strings.xml @@ -187,7 +187,7 @@ <string name="accessibility_desc_close" msgid="7479755364962766729">"වසන්න"</string> <string name="accessibility_quick_settings_wifi" msgid="5518210213118181692">"<xliff:g id="SIGNAL">%1$s</xliff:g>."</string> <string name="accessibility_quick_settings_wifi_changed_off" msgid="8716484460897819400">"Wifi අක්රියයි."</string> - <string name="accessibility_quick_settings_wifi_changed_on" msgid="6440117170789528622">"Wifi සක්රියයි."</string> + <string name="accessibility_quick_settings_wifi_changed_on" msgid="6440117170789528622">"Wifi ක්රියාත්මකයි."</string> <string name="accessibility_quick_settings_mobile" msgid="4876806564086241341">"ජංගම <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string> <string name="accessibility_quick_settings_battery" msgid="1480931583381408972">"බැටරිය <xliff:g id="STATE">%s</xliff:g>."</string> <string name="accessibility_quick_settings_airplane_off" msgid="7786329360056634412">"අහස්යානා අකාරය අක්රියයි."</string> @@ -203,15 +203,15 @@ <string name="accessibility_quick_settings_dnd_changed_on" msgid="4483780856613561039">"බාධා නොකරන්න ක්රියාත්මක කරන ලදි"</string> <string name="accessibility_quick_settings_bluetooth" msgid="6341675755803320038">"බ්ලූටූත්."</string> <string name="accessibility_quick_settings_bluetooth_off" msgid="2133631372372064339">"බ්ලූටූත් අක්රියයි."</string> - <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"බ්ලූටූත් සක්රියයි."</string> + <string name="accessibility_quick_settings_bluetooth_on" msgid="7681999166216621838">"බ්ලූටූත් ක්රියාත්මකයි."</string> <string name="accessibility_quick_settings_bluetooth_connecting" msgid="6953242966685343855">"බ්ලූටූත් සම්බන්ධවෙමින්."</string> <string name="accessibility_quick_settings_bluetooth_connected" msgid="4306637793614573659">"බ්ලූටූත් සම්බන්ධිතයි."</string> <string name="accessibility_quick_settings_bluetooth_changed_off" msgid="2730003763480934529">"බ්ලූටූත් අක්රියයි."</string> - <string name="accessibility_quick_settings_bluetooth_changed_on" msgid="8722351798763206577">"බ්ලූටූත් සක්රියයි."</string> + <string name="accessibility_quick_settings_bluetooth_changed_on" msgid="8722351798763206577">"බ්ලූටූත් ක්රියාත්මක කෙරිණි."</string> <string name="accessibility_quick_settings_location_off" msgid="5119080556976115520">"ස්ථානය වාර්තාකරණය අක්රියයි."</string> - <string name="accessibility_quick_settings_location_on" msgid="5809937096590102036">"ස්ථානය වාර්තාකරණය සක්රියයි."</string> + <string name="accessibility_quick_settings_location_on" msgid="5809937096590102036">"ස්ථානය වාර්තාකරණය ක්රියාත්මකයි."</string> <string name="accessibility_quick_settings_location_changed_off" msgid="8526845571503387376">"ස්ථානය වාර්තාකරණය අක්රියයි."</string> - <string name="accessibility_quick_settings_location_changed_on" msgid="339403053079338468">"ස්ථානය වාර්තාකරණය සක්රියයි."</string> + <string name="accessibility_quick_settings_location_changed_on" msgid="339403053079338468">"ස්ථානය වාර්තාකරණය ක්රියාත්මක කෙරිණි."</string> <string name="accessibility_quick_settings_alarm" msgid="3959908972897295660">"<xliff:g id="TIME">%s</xliff:g> සඳහා සීනුව සකස් කර ඇත."</string> <string name="accessibility_quick_settings_close" msgid="3115847794692516306">"පැනලය වහන්න."</string> <string name="accessibility_quick_settings_more_time" msgid="3659274935356197708">"වේලාව වැඩියෙන්."</string> @@ -232,7 +232,7 @@ <string name="accessibility_quick_settings_work_mode_changed_on" msgid="249840330756998612">"වැඩ ප්රකාරය ක්රියාත්මක කරන ලදී."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="650231949881093289">"දත්ත සුරැකුම ක්රියාවිරහිත කරන ලදී."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="4218725402373934151">"දත්ත සුරැකුම ක්රියාත්මක කරන ලදී."</string> - <string name="accessibility_brightness" msgid="8003681285547803095">"දීප්තිය දර්ශනය කරන්න"</string> + <string name="accessibility_brightness" msgid="8003681285547803095">"සංදර්ශක දීප්තිය"</string> <string name="data_usage_disabled_dialog_3g_title" msgid="5281770593459841889">"2G-3G දත්ත විරාම කර ඇත"</string> <string name="data_usage_disabled_dialog_4g_title" msgid="1601769736881078016">"4G දත්ත විරාම කර ඇත"</string> <string name="data_usage_disabled_dialog_mobile_title" msgid="4651001290947318931">"සෙලියුලර් දත්ත විරාම කර ඇත"</string> @@ -263,7 +263,7 @@ <string name="ethernet_label" msgid="7967563676324087464">"ඊතර නෙට්"</string> <string name="quick_settings_dnd_label" msgid="8735855737575028208">"බාධා නොකරන්න"</string> <string name="quick_settings_dnd_priority_label" msgid="483232950670692036">"ප්රමුඛතාව පමණයි"</string> - <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"ඇඟවීම් පමණි"</string> + <string name="quick_settings_dnd_alarms_label" msgid="2559229444312445858">"එලාම පමණි"</string> <string name="quick_settings_dnd_none_label" msgid="5025477807123029478">"සම්පූර්ණ නිහඬතාව"</string> <string name="quick_settings_bluetooth_label" msgid="6304190285170721401">"බ්ලූටූත්"</string> <string name="quick_settings_bluetooth_multiple_devices_label" msgid="3912245565613684735">"බ්ලූටූත් (උපාංග <xliff:g id="NUMBER">%d</xliff:g>)"</string> @@ -356,7 +356,7 @@ <string name="interruption_level_none_with_warning" msgid="5114872171614161084">"සම්පූර්ණ නිහඬතාව. මෙය තිර කියවන්නන්ද නිහඬ කරනු ඇත."</string> <string name="interruption_level_none" msgid="6000083681244492992">"සම්පූර්ණ නිහඬතාව"</string> <string name="interruption_level_priority" msgid="6426766465363855505">"ප්රමුඛතාව පමණයි"</string> - <string name="interruption_level_alarms" msgid="5226306993448328896">"ඇඟවීම් පමණි"</string> + <string name="interruption_level_alarms" msgid="5226306993448328896">"එලාම පමණි"</string> <string name="interruption_level_none_twoline" msgid="3957581548190765889">"සම්පූර්ණ\nනිහඬතාව"</string> <string name="interruption_level_priority_twoline" msgid="1564715335217164124">"ප්රමුඛතා\nපමණි"</string> <string name="interruption_level_alarms_twoline" msgid="3266909566410106146">"ඇඟවීම්\nපමණි"</string> @@ -370,8 +370,8 @@ <string name="user_add_user" msgid="5110251524486079492">"පරිශීලකයෙක් එක් කරන්න"</string> <string name="user_new_user_name" msgid="426540612051178753">"නව පරිශීලකයා"</string> <string name="guest_nickname" msgid="8059989128963789678">"අමුත්තා"</string> - <string name="guest_new_guest" msgid="600537543078847803">"ආගන්තුකයා එකතු කරන්න"</string> - <string name="guest_exit_guest" msgid="7187359342030096885">"අමුත්තාන් ඉවත් කරන්න"</string> + <string name="guest_new_guest" msgid="600537543078847803">"අමුත්තා එක් කරන්න"</string> + <string name="guest_exit_guest" msgid="7187359342030096885">"අමුත්තා ඉවත් කරන්න"</string> <string name="guest_exit_guest_dialog_title" msgid="8480693520521766688">"අමුත්තාන් ඉවත් කරන්නද?"</string> <string name="guest_exit_guest_dialog_message" msgid="4155503224769676625">"මෙම සැසියේ සියළුම යෙදුම් සහ දත්ත මකාවී."</string> <string name="guest_exit_guest_dialog_remove" msgid="7402231963862520531">"ඉවත් කරන්න"</string> @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ධාරිතා සංවාදයයි"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"මුල් තත්ත්වය නැවත ප්රතිසාධනය කිරීමට තට්ටු කරන්න."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"ඔබ ඔබේ කාර්යාල පැතිකඩ භාවිත කරමින් සිටී"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"ඇමතුම"</item> - <item msgid="5997713001067658559">"පද්ධතිය"</item> - <item msgid="7858983209929864160">"නාද කරන්න"</item> - <item msgid="1850038478268896762">"මාධ්ය"</item> - <item msgid="8265110906352372092">"එලාමය"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"බ්ලූටූත්"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. නිහඬ කිරීම ඉවත් කිරීමට තට්ටු කරන්න."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. කම්පනය කිරීමට තට්ටු කරන්න. ප්රවේශ්යතා සේවා නිහඬ කළ හැකිය."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. නිහඬ කිරීමට තට්ටු කරන්න. ප්රවේශ්යතා සේවා නිහඬ කළ හැකිය."</string> @@ -602,7 +591,7 @@ <string name="preview" msgid="9077832302472282938">"පෙරදසුන"</string> <string name="drag_to_add_tiles" msgid="7058945779098711293">"ටයිල් එක් කිරීමට අදින්න"</string> <string name="drag_to_remove_tiles" msgid="3361212377437088062">"ඉවත් කිරීමට මෙතැනට අදින්න"</string> - <string name="qs_edit" msgid="2232596095725105230">"සංස්කරණය කරන්න"</string> + <string name="qs_edit" msgid="2232596095725105230">"සංස්කරණය"</string> <string name="tuner_time" msgid="6572217313285536011">"වේලාව"</string> <string-array name="clock_options"> <item msgid="5965318737560463480">"පැය, මිනිත්තු, සහ තත්පර පෙන්වන්න"</item> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 23daf91fb07b..803be7f53879 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -457,6 +457,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Dostupnosť"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Klepnutím zapnite zvuk."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Klepnutím aktivujte režim vibrovania. Služby dostupnosti je možné stlmiť."</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 90985e78b12a..0f03de944c90 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -446,18 +446,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> je pogovorno okno glede prostornine"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Dotaknite se, če želite obnoviti prvotno stanje."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Uporabljate delovni profil"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Klic"</item> - <item msgid="5997713001067658559">"Sistem"</item> - <item msgid="7858983209929864160">"Zvonjenje"</item> - <item msgid="1850038478268896762">"Predstavnost"</item> - <item msgid="8265110906352372092">"Alarm"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Dotaknite se, če želite vklopiti zvok."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Dotaknite se, če želite nastaviti vibriranje. V storitvah za ljudi s posebnimi potrebami bo morda izklopljen zvok."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Dotaknite se, če želite izklopiti zvok. V storitvah za ljudi s posebnimi potrebami bo morda izklopljen zvok."</string> diff --git a/packages/SystemUI/res/values-sq-rAL/strings.xml b/packages/SystemUI/res/values-sq-rAL/strings.xml index 9616c073aca2..c03c0fee5753 100644 --- a/packages/SystemUI/res/values-sq-rAL/strings.xml +++ b/packages/SystemUI/res/values-sq-rAL/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> është dialogu i volumit"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Trokit për të restauruar origjinalin."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Po përdor profilin tënd të punës"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Telefono"</item> - <item msgid="5997713001067658559">"Sistemi"</item> - <item msgid="7858983209929864160">"Bjeri ziles"</item> - <item msgid="1850038478268896762">"Media"</item> - <item msgid="8265110906352372092">"Alarmi"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Trokit për të aktivizuar."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Trokit për ta caktuar te dridhja. Shërbimet e qasshmërisë mund të çaktivizohen."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Trokit për të çaktivizuar. Shërbimet e qasshmërisë mund të çaktivizohen."</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 667c65d4e724..fd560de29f85 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Приступачност"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Додирните да бисте укључили звук."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Додирните да бисте подесили на вибрацију. Звук услуга приступачности ће можда бити искључен."</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 0a9501784f10..e0c84729593b 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Tillgänglighet"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Tryck här om du vill slå på ljudet."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tryck här om du vill sätta på vibrationen. Tillgänglighetstjänster kanske inaktiveras."</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index afc5ee40bcf4..7c89410c4bb8 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Zana za walio na matatizo ya kuona au kusikia"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Gonga ili urejeshe."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Gonga ili uweke mtetemo. Huenda ikakomesha huduma za zana za walio na matatizo ya kuona au kusikia."</string> diff --git a/packages/SystemUI/res/values-ta-rIN/strings.xml b/packages/SystemUI/res/values-ta-rIN/strings.xml index 99b84392198f..bd23b43c665c 100644 --- a/packages/SystemUI/res/values-ta-rIN/strings.xml +++ b/packages/SystemUI/res/values-ta-rIN/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"ஒலியளவு செய்தி: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"அசலை மீட்டமைக்க, தட்டவும்."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"பணி சுயவிவரத்தைப் பயன்படுத்துகிறீர்கள்"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"அழைப்பு"</item> - <item msgid="5997713001067658559">"சாதனம்"</item> - <item msgid="7858983209929864160">"ரிங்"</item> - <item msgid="1850038478268896762">"மீடியா"</item> - <item msgid="8265110906352372092">"அலாரம்"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"புளூடூத்"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. ஒலி இயக்க, தட்டவும்."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. அதிர்விற்கு அமைக்க, தட்டவும். அணுகல்தன்மை சேவைகள் ஒலியடக்கப்படக்கூடும்."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. ஒலியடக்க, தட்டவும். அணுகல்தன்மை சேவைகள் ஒலியடக்கப்படக்கூடும்."</string> diff --git a/packages/SystemUI/res/values-te-rIN/strings.xml b/packages/SystemUI/res/values-te-rIN/strings.xml index c1aeb09bb582..6ae1e67559ec 100644 --- a/packages/SystemUI/res/values-te-rIN/strings.xml +++ b/packages/SystemUI/res/values-te-rIN/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> అనేది వాల్యూమ్ డైలాగ్"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"అసలు దాన్ని పునరుద్ధరించడానికి నొక్కండి."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"మీరు మీ కార్యాలయ ప్రొఫైల్ను ఉపయోగిస్తున్నారు"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"కాల్"</item> - <item msgid="5997713001067658559">"సిస్టమ్"</item> - <item msgid="7858983209929864160">"రింగ్"</item> - <item msgid="1850038478268896762">"మీడియా"</item> - <item msgid="8265110906352372092">"అలారం"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"బ్లూటూత్"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. అన్మ్యూట్ చేయడానికి నొక్కండి."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. వైబ్రేషన్కు సెట్ చేయడానికి నొక్కండి. ప్రాప్యత సేవలు మ్యూట్ చేయబడవచ్చు."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. మ్యూట్ చేయడానికి నొక్కండి. ప్రాప్యత సేవలు మ్యూట్ చేయబడవచ్చు."</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 0c461b41c677..7e2c00f85e51 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> เป็นช่องโต้ตอบระดับเสียง"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"แตะเพื่อคืนค่าเป็นค่าเดิม"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"คุณกำลังใช้โปรไฟล์งานของคุณ"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"โทร"</item> - <item msgid="5997713001067658559">"ระบบ"</item> - <item msgid="7858983209929864160">"ทำให้ส่งเสียง"</item> - <item msgid="1850038478268896762">"สื่อ"</item> - <item msgid="8265110906352372092">"การปลุก"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"บลูทูธ"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s แตะเพื่อเปิดเสียง"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s แตะเพื่อตั้งค่าให้สั่น อาจมีการปิดเสียงบริการการเข้าถึง"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s แตะเพื่อปิดเสียง อาจมีการปิดเสียงบริการการเข้าถึง"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index caa9f97af345..e1e06dfca6a9 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"Ang <xliff:g id="APP_NAME">%1$s</xliff:g> ang volume dialog"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"I-tap upang i-restore ang orihinal."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Ginagamit mo ang iyong profile sa trabaho"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Tawag"</item> - <item msgid="5997713001067658559">"System"</item> - <item msgid="7858983209929864160">"Ipa-ring"</item> - <item msgid="1850038478268896762">"Media"</item> - <item msgid="8265110906352372092">"Alarm"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. I-tap upang i-unmute."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. I-tap upang itakda na mag-vibrate. Maaaring i-mute ang mga serbisyo sa Accessibility."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. I-tap upang i-mute. Maaaring i-mute ang mga serbisyo sa Accessibility."</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 030c97fef490..d416fdf40d63 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> ses denetimi iletişim kutusu olarak ayarlandı"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Orijinali geri yüklemek için dokunun."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"İş profilinizi kullanıyorsunuz"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Çağrı"</item> - <item msgid="5997713001067658559">"Sistem"</item> - <item msgid="7858983209929864160">"Zili Çaldır"</item> - <item msgid="1850038478268896762">"Medya"</item> - <item msgid="8265110906352372092">"Alarm"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Sesi açmak için hafifçe dokunun."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Titreşime ayarlamak için hafifçe dokunun. Erişilebilirlik hizmetlerinin sesi kapatılabilir."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Sesi kapatmak için hafifçe dokunun. Erişilebilirlik hizmetlerinin sesi kapatılabilir."</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index c086fff2a786..5db654598961 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -457,6 +457,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Спеціальні можливості"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Торкніться, щоб увімкнути звук."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Торкніться, щоб налаштувати вібросигнал. Спеціальні можливості може бути вимкнено."</string> diff --git a/packages/SystemUI/res/values-ur-rPK/strings.xml b/packages/SystemUI/res/values-ur-rPK/strings.xml index ff46ad3d1643..bc893015271c 100644 --- a/packages/SystemUI/res/values-ur-rPK/strings.xml +++ b/packages/SystemUI/res/values-ur-rPK/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> والیوم ڈائلاگ ہے"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"اصل بحال کرنے کیلئے تھپتھپائیں۔"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"آپ اپنا دفتری پروفائل استعمال کر رہے ہیں۔"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"کال"</item> - <item msgid="5997713001067658559">"سسٹم"</item> - <item msgid="7858983209929864160">"رِنگ"</item> - <item msgid="1850038478268896762">"میڈیا"</item> - <item msgid="8265110906352372092">"الارم"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"بلوٹوتھ"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s۔ آواز چالو کرنے کیلئے تھپتھپائیں۔"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s۔ ارتعاش پر سیٹ کرنے کیلئے تھپتھپائیں۔ Accessibility سروسز شاید خاموش ہوں۔"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s۔ خاموش کرنے کیلئے تھپتھپائیں۔ Accessibility سروسز شاید خاموش ہوں۔"</string> diff --git a/packages/SystemUI/res/values-uz-rUZ/strings.xml b/packages/SystemUI/res/values-uz-rUZ/strings.xml index f2d266109479..a71b5390c527 100644 --- a/packages/SystemUI/res/values-uz-rUZ/strings.xml +++ b/packages/SystemUI/res/values-uz-rUZ/strings.xml @@ -453,6 +453,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Maxsus imkoniyatlar"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Ovozini yoqish uchun ustiga bosing."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Tebranishni yoqish uchun ustiga bosing. Maxsus imkoniyatlar ishlamasligi mumkin."</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 48b1e4fb9fd3..d0d8216585ca 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"<xliff:g id="APP_NAME">%1$s</xliff:g> là hộp thoại khối lượng"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"Nhấn để khôi phục ảnh chụp màn hình gốc."</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"Bạn đang sử dụng hồ sơ công việc của mình"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"Gọi"</item> - <item msgid="5997713001067658559">"Hệ thống"</item> - <item msgid="7858983209929864160">"Chuông"</item> - <item msgid="1850038478268896762">"Phương tiện"</item> - <item msgid="8265110906352372092">"Báo thức"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"Bluetooth"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Nhấn để bật tiếng."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Nhấn để đặt chế độ rung. Bạn có thể tắt tiếng dịch vụ trợ năng."</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s. Nhấn để tắt tiếng. Bạn có thể tắt tiếng dịch vụ trợ năng."</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 94c3af1b9b65..7928bf9362b0 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"“<xliff:g id="APP_NAME">%1$s</xliff:g>”已用作音量控制对话框"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"点按即可恢复原始设置。"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"您当前正在使用工作资料"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"通话"</item> - <item msgid="5997713001067658559">"系统"</item> - <item msgid="7858983209929864160">"铃声"</item> - <item msgid="1850038478268896762">"媒体"</item> - <item msgid="8265110906352372092">"闹钟"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"蓝牙"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s。点按即可取消静音。"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s。点按即可设为振动,但可能会同时将无障碍服务设为静音。"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s。点按即可设为静音,但可能会同时将无障碍服务设为静音。"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 5785af922224..b4ea6f86b89d 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -442,18 +442,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」為音量對話框"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"輕按即可復原。"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"您正在使用工作設定檔"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"通話"</item> - <item msgid="5997713001067658559">"系統"</item> - <item msgid="7858983209929864160">"鈴聲"</item> - <item msgid="1850038478268896762">"媒體"</item> - <item msgid="8265110906352372092">"鬧鐘"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"藍牙"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s。輕按即可取消靜音。"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s。輕按即可設為震動。無障礙功能服務可能已經設為靜音。"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s。輕按即可設為靜音。無障礙功能服務可能已經設為靜音。"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 6562b3902b95..a6a87f6f25b8 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -440,18 +440,7 @@ <string name="volumeui_notification_title" msgid="4906770126345910955">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」現在是預設的音量控制對話方塊。"</string> <string name="volumeui_notification_text" msgid="8819536904234337445">"輕觸即可恢復原始設定。"</string> <string name="managed_profile_foreground_toast" msgid="5421487114739245972">"您正在使用 Work 設定檔"</string> - <string-array name="volume_stream_titles"> - <item msgid="5841843895402729630">"通話"</item> - <item msgid="5997713001067658559">"系統"</item> - <item msgid="7858983209929864160">"鈴聲"</item> - <item msgid="1850038478268896762">"媒體"</item> - <item msgid="8265110906352372092">"鬧鐘"</item> - <item msgid="5339394737636839168"></item> - <item msgid="2951313578278086204">"藍牙"</item> - <item msgid="2919807739709798970"></item> - <item msgid="150349973435223405"></item> - <item msgid="6761963760295549099"></item> - </string-array> + <!-- no translation found for volume_stream_titles:10 (8119402510273906841) --> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s。輕觸即可取消靜音。"</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s。輕觸即可設為震動,但系統可能會將無障礙服務一併設為靜音。"</string> <string name="volume_stream_content_description_mute" msgid="3625049841390467354">"%1$s。輕觸即可設為靜音,但系統可能會將無障礙服務一併設為靜音。"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index e3c419b481d9..324d306e6e80 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -451,6 +451,7 @@ <item msgid="2919807739709798970"></item> <item msgid="150349973435223405"></item> <item msgid="6761963760295549099"></item> + <item msgid="8119402510273906841">"Ukufinyeleleka"</item> </string-array> <string name="volume_stream_content_description_unmute" msgid="4436631538779230857">"%1$s. Thepha ukuze ususe ukuthula."</string> <string name="volume_stream_content_description_vibrate" msgid="1187944970457807498">"%1$s. Thepha ukuze usethe ukudlidliza. Amasevisi okufinyelela angathuliswa."</string> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 5fec64777a05..bfc26e39cdcc 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -840,6 +840,12 @@ <!-- Shows when people have pressed the unlock icon to explain how to unlock. [CHAR LIMIT=60] --> <string name="keyguard_unlock">Swipe up to unlock</string> + <!-- Text on keyguard screen indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=60] --> + <string name="do_disclosure_generic">This device is managed</string> + + <!-- Text on keyguard screen indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=40] --> + <string name="do_disclosure_with_name">This device is managed by <xliff:g id="organization_name" example="Foo, Inc.">%s</xliff:g></string> + <!-- Shows when people have clicked on the phone icon [CHAR LIMIT=60] --> <string name="phone_hint">Swipe from icon for phone</string> @@ -1120,7 +1126,6 @@ <item></item> <!-- STREAM_SYSTEM_ENFORCED --> <item></item> <!-- STREAM_DTMF --> <item></item> <!-- STREAM_TTS --> - <item>Accessibility</item> <!-- STREAM_ACCESSIBILITY --> </string-array> <string name="volume_stream_muted" translatable="false">%s silent</string> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java index f5ca67897c38..414ebec86bc2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java @@ -1073,8 +1073,8 @@ public abstract class BaseStatusBar extends SystemUI implements int appUid = -1; try { final ApplicationInfo info = pmUser.getApplicationInfo(pkg, - PackageManager.GET_UNINSTALLED_PACKAGES - | PackageManager.GET_DISABLED_COMPONENTS); + PackageManager.MATCH_UNINSTALLED_PACKAGES + | PackageManager.MATCH_DISABLED_COMPONENTS); if (info != null) { appname = String.valueOf(pmUser.getApplicationLabel(info)); pkgicon = pmUser.getApplicationIcon(info); @@ -1643,8 +1643,8 @@ public abstract class BaseStatusBar extends SystemUI implements String appname = pkg; try { final ApplicationInfo info = pmUser.getApplicationInfo(pkg, - PackageManager.GET_UNINSTALLED_PACKAGES - | PackageManager.GET_DISABLED_COMPONENTS); + PackageManager.MATCH_UNINSTALLED_PACKAGES + | PackageManager.MATCH_DISABLED_COMPONENTS); if (info != null) { appname = String.valueOf(pmUser.getApplicationLabel(info)); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index 0ef9715259c2..218c1bbae48c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -17,6 +17,7 @@ package com.android.systemui.statusbar; import android.app.ActivityManager; +import android.app.admin.DevicePolicyManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -36,6 +37,7 @@ import android.text.TextUtils; import android.text.format.Formatter; import android.util.Log; import android.view.View; +import android.view.ViewGroup; import com.android.internal.app.IBatteryStats; import com.android.keyguard.KeyguardUpdateMonitor; @@ -58,7 +60,9 @@ public class KeyguardIndicationController { private static final long TRANSIENT_FP_ERROR_TIMEOUT = 1300; private final Context mContext; + private final ViewGroup mIndicationArea; private final KeyguardIndicationTextView mTextView; + private final KeyguardIndicationTextView mDisclosure; private final UserManager mUserManager; private final IBatteryStats mBatteryInfo; @@ -78,10 +82,16 @@ public class KeyguardIndicationController { private int mChargingWattage; private String mMessageToShowOnScreenOn; - public KeyguardIndicationController(Context context, KeyguardIndicationTextView textView, - LockIcon lockIcon) { + private final DevicePolicyManager mDevicePolicyManager; + + public KeyguardIndicationController(Context context, ViewGroup indicationArea, + LockIcon lockIcon) { mContext = context; - mTextView = textView; + mIndicationArea = indicationArea; + mTextView = (KeyguardIndicationTextView) indicationArea.findViewById( + R.id.keyguard_indication_text); + mDisclosure = (KeyguardIndicationTextView) indicationArea.findViewById( + R.id.keyguard_indication_enterprise_disclosure); mLockIcon = lockIcon; Resources res = context.getResources(); @@ -92,14 +102,39 @@ public class KeyguardIndicationController { mBatteryInfo = IBatteryStats.Stub.asInterface( ServiceManager.getService(BatteryStats.SERVICE_NAME)); + mDevicePolicyManager = (DevicePolicyManager) context.getSystemService( + Context.DEVICE_POLICY_SERVICE); + KeyguardUpdateMonitor.getInstance(context).registerCallback(mUpdateMonitor); context.registerReceiverAsUser(mTickReceiver, UserHandle.SYSTEM, new IntentFilter(Intent.ACTION_TIME_TICK), null, null); + + updateDisclosure(); + } + + private void updateDisclosure() { + if (mDevicePolicyManager == null) { + return; + } + + if (mDevicePolicyManager.isDeviceManaged()) { + final CharSequence organizationName = + mDevicePolicyManager.getDeviceOwnerOrganizationName(); + if (organizationName != null) { + mDisclosure.switchIndication(mContext.getResources().getString( + R.string.do_disclosure_with_name, organizationName)); + } else { + mDisclosure.switchIndication(R.string.do_disclosure_generic); + } + mDisclosure.setVisibility(View.VISIBLE); + } else { + mDisclosure.setVisibility(View.GONE); + } } public void setVisible(boolean visible) { mVisible = visible; - mTextView.setVisibility(visible ? View.VISIBLE : View.GONE); + mIndicationArea.setVisibility(visible ? View.VISIBLE : View.GONE); if (visible) { hideTransientIndication(); updateIndication(); @@ -242,6 +277,13 @@ public class KeyguardIndicationController { } @Override + public void onKeyguardVisibilityChanged(boolean showing) { + if (showing) { + updateDisclosure(); + } + } + + @Override public void onFingerprintHelp(int msgId, String helpString) { KeyguardUpdateMonitor updateMonitor = KeyguardUpdateMonitor.getInstance(mContext); if (!updateMonitor.isUnlockingWithFingerprintAllowed()) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java index 89defec6f94c..daa57c63ad9d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java @@ -107,6 +107,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL private KeyguardAffordanceView mRightAffordanceView; private KeyguardAffordanceView mLeftAffordanceView; private LockIcon mLockIcon; + private ViewGroup mIndicationArea; + private TextView mEnterpriseDisclosure; private TextView mIndicationText; private ViewGroup mPreviewContainer; @@ -208,6 +210,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL mRightAffordanceView = (KeyguardAffordanceView) findViewById(R.id.camera_button); mLeftAffordanceView = (KeyguardAffordanceView) findViewById(R.id.left_button); mLockIcon = (LockIcon) findViewById(R.id.lock_icon); + mIndicationArea = (ViewGroup) findViewById(R.id.keyguard_indication_area); + mEnterpriseDisclosure = (TextView) findViewById( + R.id.keyguard_indication_enterprise_disclosure); mIndicationText = (TextView) findViewById(R.id.keyguard_indication_text); watchForCameraPolicyChanges(); updateCameraVisibility(); @@ -252,13 +257,16 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL super.onConfigurationChanged(newConfig); int indicationBottomMargin = getResources().getDimensionPixelSize( R.dimen.keyguard_indication_margin_bottom); - MarginLayoutParams mlp = (MarginLayoutParams) mIndicationText.getLayoutParams(); + MarginLayoutParams mlp = (MarginLayoutParams) mIndicationArea.getLayoutParams(); if (mlp.bottomMargin != indicationBottomMargin) { mlp.bottomMargin = indicationBottomMargin; - mIndicationText.setLayoutParams(mlp); + mIndicationArea.setLayoutParams(mlp); } // Respect font size setting. + mEnterpriseDisclosure.setTextSize(TypedValue.COMPLEX_UNIT_PX, + getResources().getDimensionPixelSize( + com.android.internal.R.dimen.text_size_small_material)); mIndicationText.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize( com.android.internal.R.dimen.text_size_small_material)); @@ -595,8 +603,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL return mLockIcon; } - public View getIndicationView() { - return mIndicationText; + public View getIndicationArea() { + return mIndicationArea; } @Override @@ -658,8 +666,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL if (mRightAffordanceView.getVisibility() == View.VISIBLE) { startFinishDozeAnimationElement(mRightAffordanceView, delay); } - mIndicationText.setAlpha(0f); - mIndicationText.animate() + mIndicationArea.setAlpha(0f); + mIndicationArea.animate() .alpha(1f) .setInterpolator(Interpolators.LINEAR_OUT_SLOW_IN) .setDuration(NotificationPanelView.DOZE_ANIMATION_DURATION); 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 97df23709c45..a0ea9bf5650a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -577,6 +577,7 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); mDeadZone = (DeadZone) mCurrentView.findViewById(R.id.deadzone); + mDeadZone.setDisplayRotation(mCurrentRotation); // force the low profile & disabled states into compliance mBarTransitions.init(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index 570d5d40064f..f16c8346d1b0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -1006,14 +1006,14 @@ public abstract class PanelView extends FrameLayout { }); animator.start(); mHeightAnimator = animator; - mKeyguardBottomArea.getIndicationView().animate() + mKeyguardBottomArea.getIndicationArea().animate() .translationY(-mHintDistance) .setDuration(250) .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .withEndAction(new Runnable() { @Override public void run() { - mKeyguardBottomArea.getIndicationView().animate() + mKeyguardBottomArea.getIndicationArea().animate() .translationY(0) .setDuration(450) .setInterpolator(mBounceInterpolator) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index bbbdc13d69e3..2b74c84759e5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -857,8 +857,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mKeyguardBottomArea.setActivityStarter(this); mKeyguardBottomArea.setAssistManager(mAssistManager); mKeyguardIndicationController = new KeyguardIndicationController(mContext, - (KeyguardIndicationTextView) mStatusBarWindow.findViewById( - R.id.keyguard_indication_text), + (ViewGroup) mStatusBarWindow.findViewById(R.id.keyguard_indication_area), mKeyguardBottomArea.getLockIcon()); mKeyguardBottomArea.setKeyguardIndicationController(mKeyguardIndicationController); @@ -1873,6 +1872,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, updateQsExpansionEnabled(); mShadeUpdates.check(); + + // Let's also update the icons + mIconController.updateNotificationIcons(mNotificationData); } /** @@ -2021,7 +2023,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mNotificationData.filterAndSort(); updateNotificationShade(); - mIconController.updateNotificationIcons(mNotificationData); } public void requestNotificationUpdate() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java index 1cad61fb6728..4c879c68f2ff 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeadZone.java @@ -24,6 +24,7 @@ import android.os.SystemClock; import android.util.AttributeSet; import android.util.Slog; import android.view.MotionEvent; +import android.view.Surface; import android.view.View; import com.android.systemui.R; @@ -54,6 +55,7 @@ public class DeadZone extends View { private int mHold, mDecay; private boolean mVertical; private long mLastPokeTime; + private int mDisplayRotation; private final Runnable mDebugFlash = new Runnable() { @Override @@ -132,7 +134,16 @@ public class DeadZone extends View { int size = (int) getSize(event.getEventTime()); // In the vertical orientation consume taps along the left edge. // In horizontal orientation consume taps along the top edge. - final boolean consumeEvent = mVertical ? event.getX() < size : event.getY() < size; + final boolean consumeEvent; + if (mVertical) { + if (mDisplayRotation == Surface.ROTATION_270) { + consumeEvent = event.getX() > getWidth() - size; + } else { + consumeEvent = event.getX() < size; + } + } else { + consumeEvent = event.getY() < size; + } if (consumeEvent) { if (CHATTY) { Slog.v(TAG, "consuming errant click: (" + event.getX() + "," + event.getY() + ")"); @@ -170,7 +181,16 @@ public class DeadZone extends View { } final int size = (int) getSize(SystemClock.uptimeMillis()); - can.clipRect(0, 0, mVertical ? size : can.getWidth(), mVertical ? can.getHeight() : size); + if (mVertical) { + if (mDisplayRotation == Surface.ROTATION_270) { + can.clipRect(can.getWidth() - size, 0, can.getWidth(), can.getHeight()); + } else { + can.clipRect(0, 0, size, can.getHeight()); + } + } else { + can.clipRect(0, 0, can.getWidth(), size); + } + final float frac = DEBUG ? (mFlashFrac - 0.5f) + 0.5f : mFlashFrac; can.drawARGB((int) (frac * 0xFF), 0xDD, 0xEE, 0xAA); @@ -178,4 +198,8 @@ public class DeadZone extends View { // crazy aggressive redrawing here, for debugging only postInvalidateDelayed(100); } + + public void setDisplayRotation(int rotation) { + mDisplayRotation = rotation; + } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java index 5393d60e4edd..ec0e4cd1d7b6 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogController.java @@ -78,7 +78,6 @@ public class VolumeDialogController { AudioSystem.STREAM_SYSTEM_ENFORCED, AudioSystem.STREAM_TTS, AudioSystem.STREAM_VOICE_CALL, - AudioSystem.STREAM_ACCESSIBILITY, }; private final HandlerThread mWorkerThread; diff --git a/packages/SystemUI/tests/AndroidManifest.xml b/packages/SystemUI/tests/AndroidManifest.xml index 6e17cf404854..b03189cb77ce 100644 --- a/packages/SystemUI/tests/AndroidManifest.xml +++ b/packages/SystemUI/tests/AndroidManifest.xml @@ -26,6 +26,7 @@ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.BIND_QUICK_SETTINGS_TILE" /> + <uses-permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE" /> <application> <uses-library android:name="android.test.runner" /> diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java new file mode 100644 index 000000000000..639c8daf586b --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java @@ -0,0 +1,154 @@ +/* + * 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 + */ + +package com.android.systemui.statusbar; + +import android.app.admin.DevicePolicyManager; +import android.app.trust.TrustManager; +import android.content.ContentResolver; +import android.content.Context; +import android.content.pm.PackageManager; +import android.content.res.Resources; +import android.os.Looper; +import android.support.test.runner.AndroidJUnit4; +import android.telephony.SubscriptionManager; +import android.test.suitebuilder.annotation.SmallTest; +import android.view.View; +import android.view.ViewGroup; + +import com.android.keyguard.KeyguardUpdateMonitor; +import com.android.systemui.R; +import com.android.systemui.SysuiTestCase; +import com.android.systemui.statusbar.phone.KeyguardIndicationTextView; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; + +@SmallTest +@RunWith(AndroidJUnit4.class) +public class KeyguardIndicationControllerTest extends SysuiTestCase { + + private final String ORGANIZATION_NAME = "organization"; + private final String DISCLOSURE_WITH_ORGANIZATION_NAME = "managed by organization"; + + private Context mContext = mock(Context.class); + private DevicePolicyManager mDevicePolicyManager = mock(DevicePolicyManager.class); + private ViewGroup mIndicationArea = mock(ViewGroup.class); + private KeyguardIndicationTextView mDisclosure = mock(KeyguardIndicationTextView.class); + + private KeyguardIndicationController mController; + + @Before + public void setUp() throws Exception { + final Resources resources = mock(Resources.class); + when(mContext.getResources()).thenReturn(resources); + when(mContext.getContentResolver()).thenReturn(mock(ContentResolver.class)); + when(mContext.getPackageManager()).thenReturn(mock(PackageManager.class)); + when(mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE)).thenReturn( + mock(SubscriptionManager.class)); + when(mContext.getSystemService(Context.TRUST_SERVICE)).thenReturn( + mock(TrustManager.class)); + when(mContext.getSystemService(Context.DEVICE_POLICY_SERVICE)).thenReturn( + mDevicePolicyManager); + + when(resources.getString(R.string.do_disclosure_with_name, ORGANIZATION_NAME)) + .thenReturn(DISCLOSURE_WITH_ORGANIZATION_NAME); + + when(mIndicationArea.findViewById(R.id.keyguard_indication_enterprise_disclosure)) + .thenReturn(mDisclosure); + } + + private void createController() { + if (Looper.myLooper() == null) { + Looper.prepare(); + } + mController = new KeyguardIndicationController(mContext, mIndicationArea, null); + } + + @Test + public void unmanaged() { + when(mDevicePolicyManager.isDeviceManaged()).thenReturn(false); + createController(); + + verify(mDisclosure).setVisibility(View.GONE); + verifyNoMoreInteractions(mDisclosure); + } + + @Test + public void managedNoOwnerName() { + when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); + when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(null); + createController(); + + verify(mDisclosure).setVisibility(View.VISIBLE); + verify(mDisclosure).switchIndication(R.string.do_disclosure_generic); + verifyNoMoreInteractions(mDisclosure); + } + + @Test + public void managedOwnerName() { + when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); + when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(ORGANIZATION_NAME); + createController(); + + verify(mDisclosure).setVisibility(View.VISIBLE); + verify(mDisclosure).switchIndication(DISCLOSURE_WITH_ORGANIZATION_NAME); + verifyNoMoreInteractions(mDisclosure); + } + + @Test + public void updateOnTheFly() { + when(mDevicePolicyManager.isDeviceManaged()).thenReturn(false); + createController(); + + final KeyguardUpdateMonitor monitor = KeyguardUpdateMonitor.getInstance(mContext); + reset(mDisclosure); + + when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); + when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(null); + monitor.onKeyguardVisibilityChanged(true); + + verify(mDisclosure).setVisibility(View.VISIBLE); + verify(mDisclosure).switchIndication(R.string.do_disclosure_generic); + verifyNoMoreInteractions(mDisclosure); + reset(mDisclosure); + + when(mDevicePolicyManager.isDeviceManaged()).thenReturn(true); + when(mDevicePolicyManager.getDeviceOwnerOrganizationName()).thenReturn(ORGANIZATION_NAME); + monitor.onKeyguardVisibilityChanged(false); + monitor.onKeyguardVisibilityChanged(true); + + verify(mDisclosure).setVisibility(View.VISIBLE); + verify(mDisclosure).switchIndication(DISCLOSURE_WITH_ORGANIZATION_NAME); + verifyNoMoreInteractions(mDisclosure); + reset(mDisclosure); + + when(mDevicePolicyManager.isDeviceManaged()).thenReturn(false); + monitor.onKeyguardVisibilityChanged(false); + monitor.onKeyguardVisibilityChanged(true); + + verify(mDisclosure).setVisibility(View.GONE); + verifyNoMoreInteractions(mDisclosure); + } +} diff --git a/services/core/java/com/android/server/DeviceIdleController.java b/services/core/java/com/android/server/DeviceIdleController.java index 07322fcbf915..8092b4af1a4a 100644 --- a/services/core/java/com/android/server/DeviceIdleController.java +++ b/services/core/java/com/android/server/DeviceIdleController.java @@ -1430,7 +1430,7 @@ public class DeviceIdleController extends SystemService synchronized (this) { try { ApplicationInfo ai = getContext().getPackageManager().getApplicationInfo(name, - PackageManager.MATCH_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); if (mPowerSaveWhitelistUserApps.put(name, UserHandle.getAppId(ai.uid)) == null) { reportPowerSaveWhitelistChangedLocked(); updateWhitelistAppIdsLocked(); @@ -2396,7 +2396,7 @@ public class DeviceIdleController extends SystemService if (name != null) { try { ApplicationInfo ai = pm.getApplicationInfo(name, - PackageManager.MATCH_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); mPowerSaveWhitelistUserApps.put(ai.packageName, UserHandle.getAppId(ai.uid)); } catch (PackageManager.NameNotFoundException e) { diff --git a/services/core/java/com/android/server/MmsServiceBroker.java b/services/core/java/com/android/server/MmsServiceBroker.java index 0414b47e0604..8402087cddae 100644 --- a/services/core/java/com/android/server/MmsServiceBroker.java +++ b/services/core/java/com/android/server/MmsServiceBroker.java @@ -17,6 +17,7 @@ package com.android.server; import android.Manifest; +import android.app.ActivityManagerInternal; import android.app.AppOpsManager; import android.app.PendingIntent; import android.content.ComponentName; @@ -499,13 +500,21 @@ public class MmsServiceBroker extends SystemService { */ private Uri adjustUriForUserAndGrantPermission(Uri contentUri, String action, int permission) { + final Intent grantIntent = new Intent(); + grantIntent.setData(contentUri); + grantIntent.setFlags(permission); + + final int callingUid = Binder.getCallingUid(); final int callingUserId = UserHandle.getCallingUserId(); if (callingUserId != UserHandle.USER_SYSTEM) { contentUri = ContentProvider.maybeAddUserId(contentUri, callingUserId); } + long token = Binder.clearCallingIdentity(); try { - mContext.grantUriPermission(PHONE_PACKAGE_NAME, contentUri, permission); + LocalServices.getService(ActivityManagerInternal.class) + .grantUriPermissionFromIntent(callingUid, PHONE_PACKAGE_NAME, + grantIntent, UserHandle.USER_SYSTEM); // Grant permission for the carrier app. Intent intent = new Intent(action); @@ -514,7 +523,9 @@ public class MmsServiceBroker extends SystemService { List<String> carrierPackages = telephonyManager.getCarrierPackageNamesForIntent( intent); if (carrierPackages != null && carrierPackages.size() == 1) { - mContext.grantUriPermission(carrierPackages.get(0), contentUri, permission); + LocalServices.getService(ActivityManagerInternal.class) + .grantUriPermissionFromIntent(callingUid, carrierPackages.get(0), + grantIntent, UserHandle.USER_SYSTEM); } } finally { Binder.restoreCallingIdentity(token); diff --git a/services/core/java/com/android/server/NetworkScoreService.java b/services/core/java/com/android/server/NetworkScoreService.java index f5cda0ab4d63..72fa1e3b3493 100644 --- a/services/core/java/com/android/server/NetworkScoreService.java +++ b/services/core/java/com/android/server/NetworkScoreService.java @@ -41,6 +41,7 @@ import android.util.Log; import com.android.internal.R; import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.PackageMonitor; import com.android.internal.os.TransferPipe; @@ -63,6 +64,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { private static final boolean DBG = false; private final Context mContext; + private final NetworkScorerAppManager mNetworkScorerAppManager; private final Map<Integer, INetworkScoreCache> mScoreCaches; /** Lock used to update mPackageMonitor when scorer package changes occur. */ private final Object mPackageMonitorLock = new Object[0]; @@ -133,7 +135,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { + ", forceUnbind=" + forceUnbind); } final NetworkScorerAppData activeScorer = - NetworkScorerAppManager.getActiveScorer(mContext); + mNetworkScorerAppManager.getActiveScorer(); if (activeScorer == null) { // Package change has invalidated a scorer, this will also unbind any service // connection. @@ -154,7 +156,13 @@ public class NetworkScoreService extends INetworkScoreService.Stub { } public NetworkScoreService(Context context) { + this(context, new NetworkScorerAppManager(context)); + } + + @VisibleForTesting + NetworkScoreService(Context context, NetworkScorerAppManager networkScoreAppManager) { mContext = context; + mNetworkScorerAppManager = networkScoreAppManager; mScoreCaches = new HashMap<>(); IntentFilter filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED); // TODO: Need to update when we support per-user scorers. http://b/23422763 @@ -173,7 +181,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { String defaultPackage = mContext.getResources().getString( R.string.config_defaultNetworkScorerPackageName); if (!TextUtils.isEmpty(defaultPackage)) { - NetworkScorerAppManager.setActiveScorer(mContext, defaultPackage); + mNetworkScorerAppManager.setActiveScorer(defaultPackage); } Settings.Global.putInt(cr, Settings.Global.NETWORK_SCORING_PROVISIONED, 1); } @@ -194,7 +202,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { private void registerPackageMonitorIfNeeded() { if (DBG) Log.d(TAG, "registerPackageMonitorIfNeeded"); - NetworkScorerAppData scorer = NetworkScorerAppManager.getActiveScorer(mContext); + NetworkScorerAppData scorer = mNetworkScorerAppManager.getActiveScorer(); synchronized (mPackageMonitorLock) { // Unregister the current monitor if needed. if (mPackageMonitor != null) { @@ -222,7 +230,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { private void bindToScoringServiceIfNeeded() { if (DBG) Log.d(TAG, "bindToScoringServiceIfNeeded"); - NetworkScorerAppData scorerData = NetworkScorerAppManager.getActiveScorer(mContext); + NetworkScorerAppData scorerData = mNetworkScorerAppManager.getActiveScorer(); bindToScoringServiceIfNeeded(scorerData); } @@ -259,7 +267,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { @Override public boolean updateScores(ScoredNetwork[] networks) { - if (!NetworkScorerAppManager.isCallerActiveScorer(mContext, getCallingUid())) { + if (!mNetworkScorerAppManager.isCallerActiveScorer(getCallingUid())) { throw new SecurityException("Caller with UID " + getCallingUid() + " is not the active scorer."); } @@ -298,7 +306,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { public boolean clearScores() { // Only the active scorer or the system (who can broadcast BROADCAST_NETWORK_PRIVILEGED) // should be allowed to flush all scores. - if (NetworkScorerAppManager.isCallerActiveScorer(mContext, getCallingUid()) || + if (mNetworkScorerAppManager.isCallerActiveScorer(getCallingUid()) || mContext.checkCallingOrSelfPermission(permission.BROADCAST_NETWORK_PRIVILEGED) == PackageManager.PERMISSION_GRANTED) { clearInternal(); @@ -328,7 +336,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { public void disableScoring() { // Only the active scorer or the system (who can broadcast BROADCAST_NETWORK_PRIVILEGED) // should be allowed to disable scoring. - if (NetworkScorerAppManager.isCallerActiveScorer(mContext, getCallingUid()) || + if (mNetworkScorerAppManager.isCallerActiveScorer(getCallingUid()) || mContext.checkCallingOrSelfPermission(permission.BROADCAST_NETWORK_PRIVILEGED) == PackageManager.PERMISSION_GRANTED) { // The return value is discarded here because at this point, the call should always @@ -352,8 +360,8 @@ public class NetworkScoreService extends INetworkScoreService.Stub { // only be allowing valid apps to be set as scorers, so failure here should be rare. clearInternal(); // Get the scorer that is about to be replaced, if any, so we can notify it directly. - NetworkScorerAppData prevScorer = NetworkScorerAppManager.getActiveScorer(mContext); - boolean result = NetworkScorerAppManager.setActiveScorer(mContext, packageName); + NetworkScorerAppData prevScorer = mNetworkScorerAppManager.getActiveScorer(); + boolean result = mNetworkScorerAppManager.setActiveScorer(packageName); // Unconditionally attempt to bind to the current scorer. If setActiveScorer() failed // then we'll attempt to restore the previous binding (if any), otherwise an attempt // will be made to bind to the new scorer. @@ -411,7 +419,7 @@ public class NetworkScoreService extends INetworkScoreService.Stub { @Override protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) { mContext.enforceCallingOrSelfPermission(permission.DUMP, TAG); - NetworkScorerAppData currentScorer = NetworkScorerAppManager.getActiveScorer(mContext); + NetworkScorerAppData currentScorer = mNetworkScorerAppManager.getActiveScorer(); if (currentScorer == null) { writer.println("Scoring is disabled."); return; diff --git a/services/core/java/com/android/server/PersistentDataBlockService.java b/services/core/java/com/android/server/PersistentDataBlockService.java index 080b46c24a2f..698f1ebfb594 100644 --- a/services/core/java/com/android/server/PersistentDataBlockService.java +++ b/services/core/java/com/android/server/PersistentDataBlockService.java @@ -26,7 +26,6 @@ import android.os.RemoteException; import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; -import android.provider.Settings; import android.service.persistentdata.IPersistentDataBlockService; import android.service.persistentdata.PersistentDataBlockManager; import android.util.Slog; @@ -53,15 +52,14 @@ import java.util.Arrays; * This data will live across factory resets not initiated via the Settings UI. * When a device is factory reset through Settings this data is wiped. * - * Allows writing one block at a time. Namely, each time - * {@link android.service.persistentdata.IPersistentDataBlockService}.write(byte[] data) - * is called, it will overwite the data that was previously written on the block. + * Allows writing one block at a time. Namely, each time {@link IPersistentDataBlockService#write} + * is called, it will overwrite the data that was previously written on the block. * * Clients can query the size of the currently written block via - * {@link android.service.persistentdata.IPersistentDataBlockService}.getTotalDataSize(). + * {@link IPersistentDataBlockService#getDataBlockSize} * - * Clients can any number of bytes from the currently written block up to its total size by invoking - * {@link android.service.persistentdata.IPersistentDataBlockService}.read(byte[] data) + * Clients can read any number of bytes from the currently written block up to its total size by + * invoking {@link IPersistentDataBlockService#read} */ public class PersistentDataBlockService extends SystemService { private static final String TAG = PersistentDataBlockService.class.getSimpleName(); @@ -84,6 +82,7 @@ public class PersistentDataBlockService extends SystemService { private int mAllowedUid = -1; private long mBlockDeviceSize; + private boolean mIsWritable = true; public PersistentDataBlockService(Context context) { super(context); @@ -377,6 +376,11 @@ public class PersistentDataBlockService extends SystemService { headerAndData.put(data); synchronized (mLock) { + if (!mIsWritable) { + IoUtils.closeQuietly(outputStream); + return -1; + } + try { byte[] checksum = new byte[DIGEST_SIZE_BYTES]; outputStream.write(checksum, 0, DIGEST_SIZE_BYTES); @@ -451,6 +455,9 @@ public class PersistentDataBlockService extends SystemService { if (ret < 0) { Slog.e(TAG, "failed to wipe persistent partition"); + } else { + mIsWritable = false; + Slog.i(TAG, "persistent partition now wiped and unwritable"); } } } diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 2932a1ac79a4..62f4f19a6028 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -1381,7 +1381,6 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { } Intent intent = new Intent(TelephonyIntents.ACTION_SIGNAL_STRENGTH_CHANGED); - intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING); Bundle data = new Bundle(); signalStrength.fillInNotifierBundle(data); intent.putExtras(data); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index dce0378cdb86..229a68b3f46f 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -200,6 +200,7 @@ import android.os.WorkSource; import android.os.storage.IStorageManager; import android.os.storage.StorageManagerInternal; import android.os.storage.StorageManager; +import android.provider.Downloads; import android.provider.Settings; import android.service.voice.IVoiceInteractionSession; import android.service.voice.VoiceInteractionManagerInternal; @@ -275,6 +276,7 @@ import static android.content.pm.PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEME import static android.content.pm.PackageManager.FEATURE_LEANBACK_ONLY; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.GET_PROVIDERS; +import static android.content.pm.PackageManager.MATCH_ANY_USER; import static android.content.pm.PackageManager.MATCH_DEBUG_TRIAGED_MISSING; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE; @@ -8512,6 +8514,12 @@ public class ActivityManagerService extends IActivityManager.Stub // Only inspect grants matching package if (packageName == null || perm.sourcePkg.equals(packageName) || perm.targetPkg.equals(packageName)) { + // Hacky solution as part of fixing a security bug; ignore + // grants associated with DownloadManager so we don't have + // to immediately launch it to regrant the permissions + if (Downloads.Impl.AUTHORITY.equals(perm.uri.uri.getAuthority()) + && !persistable) continue; + persistChanged |= perm.revokeModes(persistable ? ~0 : ~Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION, true); @@ -14430,7 +14438,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpPackage != null) { IPackageManager pm = AppGlobals.getPackageManager(); try { - dumpUid = pm.getPackageUid(dumpPackage, MATCH_UNINSTALLED_PACKAGES, 0); + dumpUid = pm.getPackageUid(dumpPackage, MATCH_ANY_USER, 0); } catch (RemoteException e) { } } @@ -15407,7 +15415,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (dumpPackage != null) { try { dumpUid = mContext.getPackageManager().getPackageUidAsUser(dumpPackage, - MATCH_UNINSTALLED_PACKAGES, 0); + MATCH_ANY_USER, 0); } catch (NameNotFoundException e) { dumpUid = -1; } @@ -22140,6 +22148,15 @@ public class ActivityManagerService extends IActivityManager.Stub private final class LocalService extends ActivityManagerInternal { @Override + public void grantUriPermissionFromIntent(int callingUid, String targetPkg, Intent intent, + int targetUserId) { + synchronized (ActivityManagerService.this) { + ActivityManagerService.this.grantUriPermissionFromIntentLocked(callingUid, + targetPkg, intent, null, targetUserId); + } + } + + @Override public String checkContentProviderAccess(String authority, int userId) { return ActivityManagerService.this.checkContentProviderAccess(authority, userId); } diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 67cac4776440..0ea78b3e9e83 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -1283,7 +1283,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub if (useCheckinFormat) { List<ApplicationInfo> apps = mContext.getPackageManager().getInstalledApplications( - PackageManager.MATCH_UNINSTALLED_PACKAGES | PackageManager.MATCH_ALL); + PackageManager.MATCH_ANY_USER | PackageManager.MATCH_ALL); if (isRealCheckin) { // For a real checkin, first we want to prefer to use the last complete checkin // file if there is one. diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java index 86e3ccce2944..0bc12eec2d85 100644 --- a/services/core/java/com/android/server/am/TaskRecord.java +++ b/services/core/java/com/android/server/am/TaskRecord.java @@ -1417,8 +1417,8 @@ final class TaskRecord extends ConfigurationContainer { try { ApplicationInfo ai = pm.getApplicationInfo( checkIntent.getComponent().getPackageName(), - PackageManager.GET_UNINSTALLED_PACKAGES - | PackageManager.GET_DISABLED_COMPONENTS, userId); + PackageManager.MATCH_UNINSTALLED_PACKAGES + | PackageManager.MATCH_DISABLED_COMPONENTS, userId); if (ai != null) { effectiveUid = ai.uid; } diff --git a/services/core/java/com/android/server/firewall/SenderPackageFilter.java b/services/core/java/com/android/server/firewall/SenderPackageFilter.java index 91c9671357a8..2184245934c7 100644 --- a/services/core/java/com/android/server/firewall/SenderPackageFilter.java +++ b/services/core/java/com/android/server/firewall/SenderPackageFilter.java @@ -47,7 +47,7 @@ public class SenderPackageFilter implements Filter { try { // USER_SYSTEM here is not important. Only app id is used and getPackageUid() will // return a uid whether the app is installed for a user or not. - packageUid = pm.getPackageUid(mPackageName, PackageManager.MATCH_UNINSTALLED_PACKAGES, + packageUid = pm.getPackageUid(mPackageName, PackageManager.MATCH_ANY_USER, UserHandle.USER_SYSTEM); } catch (RemoteException ex) { // handled below diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index c99d8be230d7..f42c5be0ebf9 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -1820,7 +1820,7 @@ public final class JobSchedulerService extends com.android.server.SystemService String pkg = args[opti]; try { filterUid = getContext().getPackageManager().getPackageUid(pkg, - PackageManager.MATCH_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); } catch (NameNotFoundException ignored) { pw.println("Invalid package: " + pkg); return; diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index c1506b958e83..533307ec2f1a 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -2720,7 +2720,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // update rules for all installed applications final List<UserInfo> users = mUserManager.getUsers(); final List<ApplicationInfo> apps = pm.getInstalledApplications( - PackageManager.MATCH_UNINSTALLED_PACKAGES | PackageManager.MATCH_DISABLED_COMPONENTS + PackageManager.MATCH_ANY_USER | PackageManager.MATCH_DISABLED_COMPONENTS | PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE); diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index 4658c0463f0e..8ca608693b3e 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -1212,7 +1212,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // Build list of UIDs that we should clean up int[] uids = new int[0]; final List<ApplicationInfo> apps = mContext.getPackageManager().getInstalledApplications( - PackageManager.GET_UNINSTALLED_PACKAGES | PackageManager.GET_DISABLED_COMPONENTS); + PackageManager.MATCH_ANY_USER + | PackageManager.MATCH_DISABLED_COMPONENTS); for (ApplicationInfo app : apps) { final int uid = UserHandle.getUid(userId, app.uid); uids = ArrayUtils.appendInt(uids, uid); diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 84c298b06284..c78a0f57b0ca 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -53,16 +53,17 @@ import android.app.ActivityManagerInternal; import android.app.AppGlobals; import android.app.AppOpsManager; import android.app.AutomaticZenRule; +import android.app.backup.BackupManager; import android.app.IActivityManager; +import android.app.IOnNotificationChannelCreatedListener; import android.app.INotificationManager; import android.app.ITransientNotification; import android.app.Notification; import android.app.NotificationChannel; -import android.app.NotificationManager; import android.app.NotificationManager.Policy; +import android.app.NotificationManager; import android.app.PendingIntent; import android.app.StatusBarManager; -import android.app.backup.BackupManager; import android.app.usage.UsageEvents; import android.app.usage.UsageStatsManagerInternal; import android.content.BroadcastReceiver; @@ -224,6 +225,7 @@ public class NotificationManagerService extends SystemService { private static final long MIN_PACKAGE_OVERRATE_LOG_INTERVAL = 5000; // milliseconds private IActivityManager mAm; + private IPackageManager mPackageManager; AudioManager mAudioManager; AudioManagerInternal mAudioManagerInternal; @Nullable StatusBarManagerInternal mStatusBar; @@ -718,10 +720,10 @@ public class NotificationManagerService extends SystemService { if (packageChanged) { // We cancel notifications for packages which have just been disabled try { - final IPackageManager pm = AppGlobals.getPackageManager(); - final int enabled = pm.getApplicationEnabledSetting(pkgName, + final int enabled = mPackageManager.getApplicationEnabledSetting( + pkgName, changeUserId != UserHandle.USER_ALL ? changeUserId : - UserHandle.USER_SYSTEM); + UserHandle.USER_SYSTEM); if (enabled == PackageManager.COMPONENT_ENABLED_STATE_ENABLED || enabled == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { cancelNotifications = false; @@ -884,6 +886,7 @@ public class NotificationManagerService extends SystemService { super(context); } + // TODO - replace these methods with a single VisibleForTesting constructor @VisibleForTesting void setAudioManager(AudioManager audioMananger) { mAudioManager = audioMananger; @@ -931,6 +934,17 @@ public class NotificationManagerService extends SystemService { mFallbackVibrationPattern = vibrationPattern; } + @VisibleForTesting + void setPackageManager(IPackageManager packageManager) { + mPackageManager = packageManager; + } + + // TODO: This probably should not be mocked, it's an implementation detail. + @VisibleForTesting + void setRankingHelper(RankingHelper rankingHelper) { + mRankingHelper = rankingHelper; + } + @Override public void onStart() { Resources resources = getContext().getResources(); @@ -940,6 +954,7 @@ public class NotificationManagerService extends SystemService { DEFAULT_MAX_NOTIFICATION_ENQUEUE_RATE); mAm = ActivityManager.getService(); + mPackageManager = AppGlobals.getPackageManager(); mAppOps = (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE); mVibrator = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE); mAppUsageStats = LocalServices.getService(UsageStatsManagerInternal.class); @@ -1312,6 +1327,11 @@ public class NotificationManagerService extends SystemService { scheduleInterruptionFilterChanged(interruptionFilter); } + @VisibleForTesting + INotificationManager getBinderService() { + return INotificationManager.Stub.asInterface(mService); + } + private final IBinder mService = new INotificationManager.Stub() { // Toasts // ============================================================================ @@ -1529,13 +1549,15 @@ public class NotificationManagerService extends SystemService { } @Override - public void createNotificationChannel(String pkg, NotificationChannel channel) { + public void createNotificationChannel(String pkg, NotificationChannel channel, + IOnNotificationChannelCreatedListener listener) throws RemoteException { Preconditions.checkNotNull(channel); Preconditions.checkNotNull(channel.getId()); Preconditions.checkNotNull(channel.getName()); checkCallerIsSystemOrSameApp(pkg); mRankingHelper.createNotificationChannel(pkg, Binder.getCallingUid(), channel); savePolicyFile(); + listener.onNotificationChannelCreated(channel); } @Override @@ -3906,23 +3928,23 @@ public class NotificationManagerService extends SystemService { throw new SecurityException("Disallowed call for uid " + Binder.getCallingUid()); } - private static void checkCallerIsSystemOrSameApp(String pkg) { + private void checkCallerIsSystemOrSameApp(String pkg) { if (isCallerSystem()) { return; } checkCallerIsSameApp(pkg); } - private static void checkCallerIsSameApp(String pkg) { + private void checkCallerIsSameApp(String pkg) { final int uid = Binder.getCallingUid(); try { - ApplicationInfo ai = AppGlobals.getPackageManager().getApplicationInfo( + ApplicationInfo ai = mPackageManager.getApplicationInfo( pkg, 0, UserHandle.getCallingUserId()); if (ai == null) { throw new SecurityException("Unknown package " + pkg); } if (!UserHandle.isSameApp(ai.uid, uid)) { - throw new SecurityException("Calling uid " + uid + " gave package" + throw new SecurityException("Calling uid " + uid + " gave package " + pkg + " which is owned by uid " + ai.uid); } } catch (RemoteException re) { @@ -4009,7 +4031,7 @@ public class NotificationManagerService extends SystemService { private boolean isPackageSuspendedForUser(String pkg, int uid) { int userId = UserHandle.getUserId(uid); try { - return AppGlobals.getPackageManager().isPackageSuspendedForUser(pkg, userId); + return mPackageManager.isPackageSuspendedForUser(pkg, userId); } catch (RemoteException re) { throw new SecurityException("Could not talk to package manager service"); } catch (IllegalArgumentException ex) { @@ -4510,7 +4532,7 @@ public class NotificationManagerService extends SystemService { } public String[] getRequestingPackages() throws RemoteException { - final ParceledListSlice list = AppGlobals.getPackageManager() + final ParceledListSlice list = mPackageManager .getPackagesHoldingPermissions(PERM, 0 /*flags*/, ActivityManager.getCurrentUser()); final List<PackageInfo> pkgs = list.getList(); diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index 29fa7540f36e..66fb9766749a 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -595,7 +595,7 @@ public class ZenModeHelper { if (RULE_INSTANCE_GRACE_PERIOD < (currentTime - rule.creationTime)) { try { mPm.getPackageInfo(rule.component.getPackageName(), - PackageManager.MATCH_UNINSTALLED_PACKAGES); + PackageManager.MATCH_ANY_USER); } catch (PackageManager.NameNotFoundException e) { newConfig.automaticRules.removeAt(i); } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 3490503b91ab..dc25ce427885 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -59,11 +59,13 @@ import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATIO import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER; import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED; import static android.content.pm.PackageManager.MATCH_ALL; +import static android.content.pm.PackageManager.MATCH_ANY_USER; import static android.content.pm.PackageManager.MATCH_DEBUG_TRIAGED_MISSING; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE; import static android.content.pm.PackageManager.MATCH_DISABLED_COMPONENTS; import static android.content.pm.PackageManager.MATCH_FACTORY_ONLY; +import static android.content.pm.PackageManager.MATCH_KNOWN_PACKAGES; import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES; import static android.content.pm.PackageManager.MOVE_FAILED_DEVICE_ADMIN; @@ -100,6 +102,7 @@ import static com.android.server.pm.PermissionsState.PERMISSION_OPERATION_SUCCES import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.AppOpsManager; import android.app.IActivityManager; @@ -3140,6 +3143,11 @@ public class PackageManagerService extends IPackageManager.Stub { ? Collections.<String>emptySet() : permissionsState.getPermissions(userId); final PackageUserState state = ps.readUserState(userId); + if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 + && ps.isSystem()) { + flags |= MATCH_ANY_USER; + } + return PackageParser.generatePackageInfo(p, gids, flags, ps.firstInstallTime, ps.lastUpdateTime, permissions, state, userId); } @@ -3221,7 +3229,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (p != null) { return generatePackageInfo((PackageSetting)p.mExtras, flags, userId); } - if (!matchFactoryOnly && (flags & MATCH_UNINSTALLED_PACKAGES) != 0) { + if (!matchFactoryOnly && (flags & MATCH_KNOWN_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); return generatePackageInfo(ps, flags, userId); } @@ -3268,7 +3276,7 @@ public class PackageManagerService extends IPackageManager.Stub { if (p != null && p.isMatch(flags)) { return UserHandle.getUid(userId, p.applicationInfo.uid); } - if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0) { + if ((flags & MATCH_KNOWN_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null && ps.isMatch(flags)) { return UserHandle.getUid(userId, ps.appId); @@ -3292,9 +3300,11 @@ public class PackageManagerService extends IPackageManager.Stub { final PackageParser.Package p = mPackages.get(packageName); if (p != null && p.isMatch(flags)) { PackageSetting ps = (PackageSetting) p.mExtras; + // TODO: Shouldn't this be checking for package installed state for userId and + // return null? return ps.getPermissionsState().computeGids(userId); } - if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0) { + if ((flags & MATCH_KNOWN_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null && ps.isMatch(flags)) { return ps.getPermissionsState().computeGids(userId); @@ -3418,7 +3428,7 @@ public class PackageManagerService extends IPackageManager.Stub { if ("android".equals(packageName)||"system".equals(packageName)) { return mAndroidApplication; } - if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0) { + if ((flags & MATCH_KNOWN_PACKAGES) != 0) { return generateApplicationInfoFromSettingsLPw(packageName, flags, userId); } } @@ -3527,6 +3537,7 @@ public class PackageManagerService extends IPackageManager.Stub { * Update given flags when being used to request {@link PackageInfo}. */ private int updateFlagsForPackage(int flags, int userId, Object cookie) { + final boolean isCallerSystemUser = UserHandle.getCallingUserId() == UserHandle.USER_SYSTEM; boolean triaged = true; if ((flags & (PackageManager.GET_ACTIVITIES | PackageManager.GET_RECEIVERS | PackageManager.GET_SERVICES | PackageManager.GET_PROVIDERS)) != 0) { @@ -3543,6 +3554,18 @@ public class PackageManagerService extends IPackageManager.Stub { | PackageManager.MATCH_DEBUG_TRIAGED_MISSING)) == 0) { triaged = false; } + if ((flags & PackageManager.MATCH_ANY_USER) != 0) { + enforceCrossUserPermission(Binder.getCallingUid(), userId, false, false, + "MATCH_ANY_USER flag requires INTERACT_ACROSS_USERS permission at " + + Debug.getCallers(5)); + } else if ((flags & PackageManager.MATCH_UNINSTALLED_PACKAGES) != 0 && isCallerSystemUser + && sUserManager.hasManagedProfile(UserHandle.USER_SYSTEM)) { + // If the caller wants all packages and has a restricted profile associated with it, + // then match all users. This is to make sure that launchers that need to access work + // profile apps don't start breaking. TODO: Remove this hack when launchers stop using + // MATCH_UNINSTALLED_PACKAGES to query apps in other profiles. b/31000380 + flags |= PackageManager.MATCH_ANY_USER; + } if (DEBUG_TRIAGED_MISSING && (Binder.getCallingUid() == Process.SYSTEM_UID) && !triaged) { Log.w(TAG, "Caller hasn't been triaged for missing apps; they asked about " + cookie + " with flags 0x" + Integer.toHexString(flags), new Throwable()); @@ -6299,7 +6322,7 @@ public class PackageManagerService extends IPackageManager.Stub { public ParceledListSlice<PackageInfo> getInstalledPackages(int flags, int userId) { if (!sUserManager.exists(userId)) return ParceledListSlice.emptyList(); flags = updateFlagsForPackage(flags, userId, null); - final boolean listUninstalled = (flags & MATCH_UNINSTALLED_PACKAGES) != 0; + final boolean listUninstalled = (flags & MATCH_KNOWN_PACKAGES) != 0; enforceCrossUserPermission(Binder.getCallingUid(), userId, true /* requireFullPermission */, false /* checkShell */, "get installed packages"); @@ -6383,7 +6406,10 @@ public class PackageManagerService extends IPackageManager.Stub { String[] permissions, int flags, int userId) { if (!sUserManager.exists(userId)) return ParceledListSlice.emptyList(); flags = updateFlagsForPackage(flags, userId, permissions); - final boolean listUninstalled = (flags & MATCH_UNINSTALLED_PACKAGES) != 0; + enforceCrossUserPermission(Binder.getCallingUid(), userId, + true /* requireFullPermission */, false /* checkShell */, + "get packages holding permissions"); + final boolean listUninstalled = (flags & MATCH_KNOWN_PACKAGES) != 0; // writer synchronized (mPackages) { @@ -6391,7 +6417,8 @@ public class PackageManagerService extends IPackageManager.Stub { boolean[] tmpBools = new boolean[permissions.length]; if (listUninstalled) { for (PackageSetting ps : mSettings.mPackages.values()) { - addPackageHoldingPermissions(list, ps, permissions, tmpBools, flags, userId); + addPackageHoldingPermissions(list, ps, permissions, tmpBools, flags, + userId); } } else { for (PackageParser.Package pkg : mPackages.values()) { @@ -6411,7 +6438,7 @@ public class PackageManagerService extends IPackageManager.Stub { public ParceledListSlice<ApplicationInfo> getInstalledApplications(int flags, int userId) { if (!sUserManager.exists(userId)) return ParceledListSlice.emptyList(); flags = updateFlagsForApplication(flags, userId, null); - final boolean listUninstalled = (flags & MATCH_UNINSTALLED_PACKAGES) != 0; + final boolean listUninstalled = (flags & MATCH_KNOWN_PACKAGES) != 0; // writer synchronized (mPackages) { @@ -6420,11 +6447,16 @@ public class PackageManagerService extends IPackageManager.Stub { list = new ArrayList<ApplicationInfo>(mSettings.mPackages.size()); for (PackageSetting ps : mSettings.mPackages.values()) { ApplicationInfo ai; + int effectiveFlags = flags; + if (ps.isSystem()) { + effectiveFlags |= PackageManager.MATCH_ANY_USER; + } if (ps.pkg != null) { - ai = PackageParser.generateApplicationInfo(ps.pkg, flags, + ai = PackageParser.generateApplicationInfo(ps.pkg, effectiveFlags, ps.readUserState(userId), userId); } else { - ai = generateApplicationInfoFromSettingsLPw(ps.name, flags, userId); + ai = generateApplicationInfoFromSettingsLPw(ps.name, effectiveFlags, + userId); } if (ai != null) { list.add(ai); diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 834d343e2649..fd2b5045f3ab 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -610,7 +610,7 @@ class PackageManagerShellCommand extends ShellCommand { showUid = true; break; case "-u": - getFlags |= PackageManager.GET_UNINSTALLED_PACKAGES; + getFlags |= PackageManager.MATCH_UNINSTALLED_PACKAGES; break; case "-3": listThirdParty = true; diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 20afed736bab..c4241e772dd7 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -2716,7 +2716,7 @@ public class UserManagerService extends IUserManager.Stub { public Bundle getApplicationRestrictionsForUser(String packageName, int userId) { if (UserHandle.getCallingUserId() != userId || !UserHandle.isSameApp(Binder.getCallingUid(), getUidForPackage(packageName))) { - checkSystemOrRoot("get application restrictions for other users/apps"); + checkSystemOrRoot("get application restrictions for other user/app " + packageName); } synchronized (mPackagesLock) { // Read the restrictions from XML @@ -2751,7 +2751,7 @@ public class UserManagerService extends IUserManager.Stub { long ident = Binder.clearCallingIdentity(); try { return mContext.getPackageManager().getApplicationInfo(packageName, - PackageManager.MATCH_UNINSTALLED_PACKAGES).uid; + PackageManager.MATCH_ANY_USER).uid; } catch (NameNotFoundException nnfe) { return -1; } finally { @@ -3717,4 +3717,23 @@ public class UserManagerService extends IUserManager.Stub { } return 0; } + + /** + * Checks if the given user has a managed profile associated with it. + * @param userId The parent user + * @return + */ + boolean hasManagedProfile(int userId) { + synchronized (mUsersLock) { + UserInfo userInfo = getUserInfoLU(userId); + final int userSize = mUsers.size(); + for (int i = 0; i < userSize; i++) { + UserInfo profile = mUsers.valueAt(i).info; + if (userId != profile.id && isProfileOf(userInfo, profile)) { + return true; + } + } + return false; + } + } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index f48db05adbd0..a1cce2bc6a91 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -265,6 +265,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { static final int SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP = 2; static final int SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME = 3; static final int SHORT_PRESS_POWER_GO_HOME = 4; + static final int SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME = 5; static final int LONG_PRESS_POWER_NOTHING = 0; static final int LONG_PRESS_POWER_GLOBAL_ACTIONS = 1; @@ -1345,6 +1346,14 @@ public class PhoneWindowManager implements WindowManagerPolicy { case SHORT_PRESS_POWER_GO_HOME: launchHomeFromHotKey(true /* awakenFromDreams */, false /*respectKeyguard*/); break; + case SHORT_PRESS_POWER_CLOSE_IME_OR_GO_HOME: + if (mWindowManagerFuncs.isInputMethodWindowVisible()) { + mWindowManagerFuncs.hideCurrentInputMethod(); + } else { + launchHomeFromHotKey(true /* awakenFromDreams */, + false /*respectKeyguard*/); + } + break; } } } diff --git a/services/core/java/com/android/server/webkit/SystemImpl.java b/services/core/java/com/android/server/webkit/SystemImpl.java index 61319cf1e30e..7ba95a4ab268 100644 --- a/services/core/java/com/android/server/webkit/SystemImpl.java +++ b/services/core/java/com/android/server/webkit/SystemImpl.java @@ -291,5 +291,5 @@ public class SystemImpl implements SystemInterface { // flags declaring we want extra info from the package manager for webview providers private final static int PACKAGE_FLAGS = PackageManager.GET_META_DATA | PackageManager.GET_SIGNATURES | PackageManager.MATCH_DEBUG_TRIAGED_MISSING - | PackageManager.MATCH_UNINSTALLED_PACKAGES; + | PackageManager.MATCH_ANY_USER; } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 8119230548eb..77da22c09abd 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -4089,6 +4089,24 @@ public class WindowManagerService extends IWindowManager.Stub } } + // Called by window manager policy. Not exposed externally. + @Override + public boolean isInputMethodWindowVisible() { + synchronized (mWindowMap) { + return mInputMethodWindow != null && mInputMethodWindow.isVisibleLw(); + } + } + + // Called by window manager policy. Not exposed externally. + @Override + public void hideCurrentInputMethod() { + final InputMethodManagerInternal inputMethodManagerInternal = + LocalServices.getService(InputMethodManagerInternal.class); + if (inputMethodManagerInternal != null) { + inputMethodManagerInternal.hideCurrentInputMethod(); + } + } + // Called by window manager policy. Not exposed externally. @Override public void lockDeviceNow() { diff --git a/services/core/jni/com_android_server_SystemServer.cpp b/services/core/jni/com_android_server_SystemServer.cpp index c7d6b95083d2..e46490bb3fac 100644 --- a/services/core/jni/com_android_server_SystemServer.cpp +++ b/services/core/jni/com_android_server_SystemServer.cpp @@ -22,15 +22,22 @@ #include <cutils/properties.h> #include <utils/Log.h> #include <utils/misc.h> +#include <utils/AndroidThreads.h> namespace android { +static int start_sensor_service(void* /*unused*/) { + SensorService::instantiate(); + return 0; +} + static void android_server_SystemServer_startSensorService(JNIEnv* /* env */, jobject /* clazz */) { char propBuf[PROPERTY_VALUE_MAX]; property_get("system_init.startsensorservice", propBuf, "1"); if (strcmp(propBuf, "1") == 0) { - // Start the sensor service - SensorService::instantiate(); + // Start the sensor service in a new thread + createThreadEtc(start_sensor_service, nullptr, + "StartSensorThread", PRIORITY_FOREGROUND); } } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 2f27201df1a4..a2af40c246ab 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -20,7 +20,7 @@ import static android.Manifest.permission.MANAGE_CA_CERTIFICATES; import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_COMPLEX; import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE; import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA; -import static android.content.pm.PackageManager.GET_UNINSTALLED_PACKAGES; +import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES; import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PROVISIONING_ENTRY_POINT_ADB; import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW; @@ -7032,7 +7032,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { boolean systemService = false; try { ApplicationInfo applicationInfo = mIPackageManager.getApplicationInfo( - enabledPackage, PackageManager.GET_UNINSTALLED_PACKAGES, userIdToCheck); + enabledPackage, PackageManager.MATCH_UNINSTALLED_PACKAGES, + userIdToCheck); systemService = (applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0; } catch (RemoteException e) { Log.i(LOG_TAG, "Can't talk to package managed", e); @@ -7787,7 +7788,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { private boolean isSystemApp(IPackageManager pm, String packageName, int userId) throws RemoteException { - ApplicationInfo appInfo = pm.getApplicationInfo(packageName, GET_UNINSTALLED_PACKAGES, + ApplicationInfo appInfo = pm.getApplicationInfo(packageName, MATCH_UNINSTALLED_PACKAGES, userId); if (appInfo == null) { throw new IllegalArgumentException("The application " + packageName + @@ -9608,6 +9609,10 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { Preconditions.checkNotNull(admin); Preconditions.checkNotNull(caller); Preconditions.checkNotNull(serviceIntent); + Preconditions.checkArgument( + serviceIntent.getComponent() != null || serviceIntent.getPackage() != null, + "Service intent must be explicit (with a package name or component): " + + serviceIntent); Preconditions.checkNotNull(connection); Preconditions.checkArgument(mInjector.userHandleGetCallingUserId() != targetUserId, "target user id must be different from the calling user id"); @@ -9628,9 +9633,8 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { createCrossUserServiceIntent(serviceIntent, targetPackage, targetUserId); if (sanitizedIntent == null) { // Fail, cannot lookup the target service. - throw new SecurityException("Invalid intent or failed to look up the service"); + return false; } - // Ask ActivityManager to bind it. Notice that we are binding the service with the // caller app instead of DevicePolicyManagerService. return mInjector.getIActivityManager().bindService( @@ -9885,35 +9889,30 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } /** - * @param rawIntent Original service intent specified by caller. - * @param expectedPackageName The expected package name in the incoming intent. - * @return Intent that have component explicitly set. {@code null} if the incoming intent - * or target service is invalid. + * @param rawIntent Original service intent specified by caller. It must be explicit. + * @param expectedPackageName The expected package name of the resolved service. + * @return Intent that have component explicitly set. {@code null} if no service is resolved + * with the given intent. + * @throws SecurityException if the intent is resolved to an invalid service. */ private Intent createCrossUserServiceIntent( @NonNull Intent rawIntent, @NonNull String expectedPackageName, - @UserIdInt int targetUserId) throws RemoteException { - if (rawIntent.getComponent() == null && rawIntent.getPackage() == null) { - Log.e(LOG_TAG, "Service intent must be explicit (with a package name or component): " - + rawIntent); - return null; - } + @UserIdInt int targetUserId) throws RemoteException, SecurityException { ResolveInfo info = mIPackageManager.resolveService( rawIntent, rawIntent.resolveTypeIfNeeded(mContext.getContentResolver()), 0, // flags targetUserId); if (info == null || info.serviceInfo == null) { - Log.e(LOG_TAG, "Fail to look up the service: " + rawIntent); + Log.e(LOG_TAG, "Fail to look up the service: " + rawIntent + + " or user " + targetUserId + " is not running"); return null; } if (!expectedPackageName.equals(info.serviceInfo.packageName)) { - Log.e(LOG_TAG, "Only allow to bind service in " + expectedPackageName); - return null; + throw new SecurityException("Only allow to bind service in " + expectedPackageName); } if (info.serviceInfo.exported) { - Log.e(LOG_TAG, "The service must be unexported."); - return null; + throw new SecurityException("The service must be unexported"); } // It is the system server to bind the service, it would be extremely dangerous if it // can be exploited to bind any service. Set the component explicitly to make sure we diff --git a/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java new file mode 100644 index 000000000000..e4a355f632f4 --- /dev/null +++ b/services/tests/notification/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -0,0 +1,96 @@ +/* + * 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. + */ + +package com.android.server.notification; + +import static junit.framework.Assert.fail; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyInt; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import android.app.INotificationManager; +import android.app.IOnNotificationChannelCreatedListener; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.IPackageManager; +import android.os.Binder; +import android.os.Handler; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.SmallTest; +import java.util.concurrent.CountDownLatch; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@SmallTest +@RunWith(AndroidJUnit4.class) +public class NotificationManagerServiceTest { + private NotificationManagerService mNotificationManagerService; + private INotificationManager mBinderService; + + @Before + public void setUp() throws Exception { + final Context context = InstrumentationRegistry.getTargetContext(); + mNotificationManagerService = new NotificationManagerService(context); + + // MockPackageManager - default returns ApplicationInfo with matching calling UID + final IPackageManager mockPackageManager = mock(IPackageManager.class); + final ApplicationInfo applicationInfo = new ApplicationInfo(); + applicationInfo.uid = Binder.getCallingUid(); + when(mockPackageManager.getApplicationInfo(any(), anyInt(), anyInt())) + .thenReturn(applicationInfo); + mNotificationManagerService.setPackageManager(mockPackageManager); + + mNotificationManagerService.setRankingHelper(mock(RankingHelper.class)); + mNotificationManagerService.setHandler(new Handler(context.getMainLooper())); + + // Tests call directly into the Binder. + mBinderService = mNotificationManagerService.getBinderService(); + } + + @Test + public void testCreateNotificationChannel_SuccessCallsListener() throws Exception { + final NotificationChannel channel = + new NotificationChannel("id", "name", NotificationManager.IMPORTANCE_DEFAULT); + final CountDownLatch latch = new CountDownLatch(1); + mBinderService.createNotificationChannel("test_pkg", channel, + new IOnNotificationChannelCreatedListener.Stub() { + @Override public void onNotificationChannelCreated( + NotificationChannel channel) { + latch.countDown(); + }}); + latch.await(); + } + + @Test + public void testCreateNotificationChannel_FailureDoesNotCallListener() throws Exception { + try { + mBinderService.createNotificationChannel("test_pkg", null, + new IOnNotificationChannelCreatedListener.Stub() { + @Override public void onNotificationChannelCreated( + NotificationChannel channel) { + fail("Listener was triggered from failure."); + }}); + fail("Exception should be thrown immediately."); + } catch (NullPointerException e) { + // pass + } + } +} diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java index 7217c3b973ec..515370fa00a0 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UsageStatsService.java @@ -791,7 +791,7 @@ public class UsageStatsService extends SystemService implements int getAppId(String packageName) { try { ApplicationInfo ai = mPackageManager.getApplicationInfo(packageName, - PackageManager.MATCH_UNINSTALLED_PACKAGES + PackageManager.MATCH_ANY_USER | PackageManager.MATCH_DISABLED_COMPONENTS); return ai.uid; } catch (NameNotFoundException re) { diff --git a/telephony/java/android/telephony/CellSignalStrengthGsm.java b/telephony/java/android/telephony/CellSignalStrengthGsm.java index addf7ef025aa..4137853e79aa 100644 --- a/telephony/java/android/telephony/CellSignalStrengthGsm.java +++ b/telephony/java/android/telephony/CellSignalStrengthGsm.java @@ -141,6 +141,16 @@ public final class CellSignalStrengthGsm extends CellSignalStrength implements P } /** + * Get the GSM timing advance between 0..219 symbols (normally 0..63). + * Integer.MAX_VALUE is reported when there is no RR connection. + * Refer to 3GPP 45.010 Sec 5.8 + * @return the current GSM timing advance, if available. + */ + public int getTimingAdvance() { + return mTimingAdvance; + } + + /** * Get the signal strength as dBm */ @Override diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java index 434caadeedc6..0d07a40822d4 100644 --- a/telephony/java/android/telephony/CellSignalStrengthLte.java +++ b/telephony/java/android/telephony/CellSignalStrengthLte.java @@ -220,8 +220,10 @@ public final class CellSignalStrengthLte extends CellSignalStrength implements P } /** - * Get the timing advance value for LTE. - * See 3GPP xxxx + * Get the timing advance value for LTE, as a value between 0..63. + * Integer.MAX_VALUE is reported when there is no active RRC + * connection. Refer to 3GPP 36.213 Sec 4.2.3 + * @return the LTE timing advance, if available. */ public int getTimingAdvance() { return mTimingAdvance; diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 457fd88e1f7c..918ef5eccbde 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -2275,6 +2275,8 @@ public class TelephonyManager { * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * OR * {@link android.Manifest.permission#READ_SMS} + * OR + * {@link android.Manifest.permission#READ_PHONE_NUMBER} * <p> * The default SMS app can also use this. */ @@ -2290,6 +2292,8 @@ public class TelephonyManager { * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * OR * {@link android.Manifest.permission#READ_SMS} + * OR + * {@link android.Manifest.permission#READ_PHONE_NUMBER} * <p> * The default SMS app can also use this. * diff --git a/tools/apilint/apilint.py b/tools/apilint/apilint.py index ca2d2e75ee89..6ca59b0fb93b 100644 --- a/tools/apilint/apilint.py +++ b/tools/apilint/apilint.py @@ -91,7 +91,7 @@ class Method(): while r in raw: raw.remove(r) self.split = list(raw) - for r in ["method", "public", "protected", "static", "final", "deprecated", "abstract"]: + for r in ["method", "public", "protected", "static", "final", "deprecated", "abstract", "default"]: while r in raw: raw.remove(r) self.typ = raw[0] diff --git a/tools/layoutlib/bridge/src/com/android/internal/view/animation/NativeInterpolatorFactoryHelper_Delegate.java b/tools/layoutlib/bridge/src/com/android/internal/view/animation/NativeInterpolatorFactoryHelper_Delegate.java index 0f39e8042883..ffce1a0496d9 100644 --- a/tools/layoutlib/bridge/src/com/android/internal/view/animation/NativeInterpolatorFactoryHelper_Delegate.java +++ b/tools/layoutlib/bridge/src/com/android/internal/view/animation/NativeInterpolatorFactoryHelper_Delegate.java @@ -104,7 +104,7 @@ public class NativeInterpolatorFactoryHelper_Delegate { @Override public float getInterpolation(float input) { - float lutpos = input * mSize; + float lutpos = input * (mSize - 1); if (lutpos >= (mSize - 1)) { return mValues[mSize - 1]; } diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 24cd275fc254..82d41e3dc7ae 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -685,12 +685,22 @@ public class WifiConfiguration implements Parcelable { /** * @hide * A hint about whether or not the network represented by this WifiConfiguration - * is metered. + * is metered. This is hinted at via the meteredHint bit on DHCP results set in + * {@link com.android.server.wifi.WifiStateMachine}, or via a network score in + * {@link com.android.server.wifi.ExternalScoreEvaluator}. */ public boolean meteredHint; /** * @hide + * Indicates if a user has specified the WifiConfiguration to be metered. Users + * can toggle if a network is metered within Settings -> Data Usage -> Network + * Restrictions. + */ + public boolean meteredOverride; + + /** + * @hide * Setting this value will force scan results associated with this configuration to * be included in the bucket of networks that are externally scored. * If not set, associated scan results will be treated as legacy saved networks and @@ -1367,6 +1377,7 @@ public class WifiConfiguration implements Parcelable { didSelfAdd = false; ephemeral = false; meteredHint = false; + meteredOverride = false; useExternalScores = false; validatedInternetAccess = false; mIpConfiguration = new IpConfiguration(); @@ -1470,9 +1481,11 @@ public class WifiConfiguration implements Parcelable { if (this.validatedInternetAccess) sbuf.append(" validatedInternetAccess"); if (this.ephemeral) sbuf.append(" ephemeral"); if (this.meteredHint) sbuf.append(" meteredHint"); + if (this.meteredOverride) sbuf.append(" meteredOverride"); if (this.useExternalScores) sbuf.append(" useExternalScores"); if (this.didSelfAdd || this.selfAdded || this.validatedInternetAccess - || this.ephemeral || this.meteredHint || this.useExternalScores) { + || this.ephemeral || this.meteredHint || this.meteredOverride + || this.useExternalScores) { sbuf.append("\n"); } sbuf.append(" KeyMgmt:"); @@ -1897,6 +1910,7 @@ public class WifiConfiguration implements Parcelable { validatedInternetAccess = source.validatedInternetAccess; ephemeral = source.ephemeral; meteredHint = source.meteredHint; + meteredOverride = source.meteredOverride; useExternalScores = source.useExternalScores; if (source.visibility != null) { visibility = new Visibility(source.visibility); @@ -1978,6 +1992,7 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(validatedInternetAccess ? 1 : 0); dest.writeInt(ephemeral ? 1 : 0); dest.writeInt(meteredHint ? 1 : 0); + dest.writeInt(meteredOverride ? 1 : 0); dest.writeInt(useExternalScores ? 1 : 0); dest.writeInt(creatorUid); dest.writeInt(lastConnectUid); @@ -2049,6 +2064,7 @@ public class WifiConfiguration implements Parcelable { config.validatedInternetAccess = in.readInt() != 0; config.ephemeral = in.readInt() != 0; config.meteredHint = in.readInt() != 0; + config.meteredOverride = in.readInt() != 0; config.useExternalScores = in.readInt() != 0; config.creatorUid = in.readInt(); config.lastConnectUid = in.readInt(); |