diff options
144 files changed, 963 insertions, 759 deletions
diff --git a/Android.bp b/Android.bp index e19fe640d32b..4cb9020f878f 100644 --- a/Android.bp +++ b/Android.bp @@ -433,7 +433,7 @@ java_library { "apex_aidl_interface-java", "suspend_control_aidl_interface-java", "framework-protos", - "game-driver-protos", + "updatable-driver-protos", "android.hidl.base-V1.0-java", "android.hardware.cas-V1.0-java", "android.hardware.cas-V1.1-java", diff --git a/apct-tests/perftests/autofill/Android.bp b/apct-tests/perftests/autofill/Android.bp index 65c28fb4d0a7..9ac8c87d3de0 100644 --- a/apct-tests/perftests/autofill/Android.bp +++ b/apct-tests/perftests/autofill/Android.bp @@ -20,6 +20,7 @@ android_test { "androidx.test.rules", "androidx.annotation_annotation", "apct-perftests-utils", + "collector-device-lib-platform", ], platform_apis: true, test_suites: ["device-tests"], diff --git a/apct-tests/perftests/autofill/AndroidManifest.xml b/apct-tests/perftests/autofill/AndroidManifest.xml index 57595a213d20..51f6a76b2782 100644 --- a/apct-tests/perftests/autofill/AndroidManifest.xml +++ b/apct-tests/perftests/autofill/AndroidManifest.xml @@ -16,6 +16,11 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.perftests.autofill"> + <uses-sdk android:targetSdkVersion="28" /> + + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.REAL_GET_TASKS" /> + <application> <uses-library android:name="android.test.runner" /> <activity android:name="android.perftests.utils.PerfTestActivity" diff --git a/apex/statsd/aidl/Android.bp b/apex/statsd/aidl/Android.bp index 04339e67d799..f66cf7c9e23c 100644 --- a/apex/statsd/aidl/Android.bp +++ b/apex/statsd/aidl/Android.bp @@ -30,6 +30,7 @@ aidl_interface { "android/os/StatsDimensionsValueParcel.aidl", "android/util/StatsEventParcel.aidl", ], + host_supported: true, backend: { java: { enabled: false, // framework-statsd and service-statsd use framework-statsd-aidl-sources diff --git a/api/current.txt b/api/current.txt index 75ea7d7adc4c..da0b0da92a76 100644 --- a/api/current.txt +++ b/api/current.txt @@ -45455,6 +45455,7 @@ package android.system { package android.telecom { public final class Call { + method public void addConferenceParticipants(@NonNull java.util.List<android.net.Uri>); method public void answer(int); method public void conference(android.telecom.Call); method public void deflect(android.net.Uri); @@ -45563,6 +45564,7 @@ package android.telecom { method public static boolean hasProperty(int, int); method public boolean hasProperty(int); method public static String propertiesToString(int); + field public static final int CAPABILITY_ADD_PARTICIPANT = 33554432; // 0x2000000 field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_PULL_CALL = 8388608; // 0x800000 @@ -45592,6 +45594,7 @@ package android.telecom { field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2 field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 128; // 0x80 field public static final int PROPERTY_HIGH_DEF_AUDIO = 16; // 0x10 + field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 8192; // 0x2000 field public static final int PROPERTY_IS_EXTERNAL_CALL = 64; // 0x40 field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 2048; // 0x800 field public static final int PROPERTY_RTT = 1024; // 0x400 @@ -45669,6 +45672,7 @@ package android.telecom { public abstract class Conference extends android.telecom.Conferenceable { ctor public Conference(android.telecom.PhoneAccountHandle); method public final boolean addConnection(android.telecom.Connection); + method @NonNull public static android.telecom.Conference createFailedConference(@NonNull android.telecom.DisconnectCause, @NonNull android.telecom.PhoneAccountHandle); method public final void destroy(); method public final android.telecom.CallAudioState getCallAudioState(); method public final java.util.List<android.telecom.Connection> getConferenceableConnections(); @@ -45684,6 +45688,9 @@ package android.telecom { method public final android.telecom.StatusHints getStatusHints(); method public android.telecom.Connection.VideoProvider getVideoProvider(); method public int getVideoState(); + method public final boolean isRingbackRequested(); + method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>); + method public void onAnswer(int); method public void onCallAudioStateChanged(android.telecom.CallAudioState); method public void onConnectionAdded(android.telecom.Connection); method public void onDisconnect(); @@ -45692,6 +45699,7 @@ package android.telecom { method public void onMerge(android.telecom.Connection); method public void onMerge(); method public void onPlayDtmfTone(char); + method public void onReject(); method public void onSeparate(android.telecom.Connection); method public void onStopDtmfTone(); method public void onSwap(); @@ -45712,6 +45720,8 @@ package android.telecom { method public final void setDisconnected(android.telecom.DisconnectCause); method public final void setExtras(@Nullable android.os.Bundle); method public final void setOnHold(); + method public final void setRingbackRequested(boolean); + method public final void setRinging(); method public final void setStatusHints(android.telecom.StatusHints); method public final void setVideoProvider(android.telecom.Connection, android.telecom.Connection.VideoProvider); method public final void setVideoState(android.telecom.Connection, int); @@ -45748,6 +45758,7 @@ package android.telecom { method public final boolean isRingbackRequested(); method public final void notifyConferenceMergeFailed(); method public void onAbort(); + method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>); method public void onAnswer(int); method public void onAnswer(); method public void onCallAudioStateChanged(android.telecom.CallAudioState); @@ -45827,6 +45838,7 @@ package android.telecom { field public static final int AUDIO_CODEC_GSM_HR = 10; // 0xa field public static final int AUDIO_CODEC_NONE = 0; // 0x0 field public static final int AUDIO_CODEC_QCELP13K = 3; // 0x3 + field public static final int CAPABILITY_ADD_PARTICIPANT = 67108864; // 0x4000000 field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_PULL_CALL = 16777216; // 0x1000000 @@ -45870,6 +45882,7 @@ package android.telecom { field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200 field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 32; // 0x20 field public static final int PROPERTY_HIGH_DEF_AUDIO = 4; // 0x4 + field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 4096; // 0x1000 field public static final int PROPERTY_IS_EXTERNAL_CALL = 16; // 0x10 field public static final int PROPERTY_IS_RTT = 256; // 0x100 field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 1024; // 0x400 @@ -45965,9 +45978,13 @@ package android.telecom { method public void onConference(android.telecom.Connection, android.telecom.Connection); method public void onConnectionServiceFocusGained(); method public void onConnectionServiceFocusLost(); + method @Nullable public android.telecom.Conference onCreateIncomingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest); + method public void onCreateIncomingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest); method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); method public void onCreateIncomingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); method public android.telecom.Connection onCreateIncomingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); + method @Nullable public android.telecom.Conference onCreateOutgoingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest); + method public void onCreateOutgoingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest); method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); method public void onCreateOutgoingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); method public android.telecom.Connection onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); @@ -46278,6 +46295,7 @@ package android.telecom { method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(int); method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle); + method public void addNewIncomingConference(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.os.Bundle); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void cancelMissedCallsNotification(); method public android.content.Intent createManageBlockedNumbersIntent(); method @Deprecated @RequiresPermission(android.Manifest.permission.ANSWER_PHONE_CALLS) public boolean endCall(); @@ -46305,6 +46323,7 @@ package android.telecom { method public void registerPhoneAccount(android.telecom.PhoneAccount); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public void showInCallScreen(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void silenceRinger(); + method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void startConference(@NonNull java.util.List<android.net.Uri>, @NonNull android.os.Bundle); method public void unregisterPhoneAccount(android.telecom.PhoneAccountHandle); field public static final String ACTION_CHANGE_DEFAULT_DIALER = "android.telecom.action.CHANGE_DEFAULT_DIALER"; field public static final String ACTION_CHANGE_PHONE_ACCOUNTS = "android.telecom.action.CHANGE_PHONE_ACCOUNTS"; @@ -46844,6 +46863,8 @@ package android.telephony { field public static final String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool"; field public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool"; field public static final String KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL = "support_3gpp_call_forwarding_while_roaming_bool"; + field public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL = "support_add_conference_participants_bool"; + field public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL = "support_adhoc_conference_calls_bool"; field public static final String KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL = "support_clir_network_default_bool"; field public static final String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool"; field public static final String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool"; diff --git a/api/module-lib-current.txt b/api/module-lib-current.txt index c91c39a4293d..696e02972c23 100644 --- a/api/module-lib-current.txt +++ b/api/module-lib-current.txt @@ -77,6 +77,11 @@ package android.os { method public final void markVintfStability(); } + public interface Parcelable { + field public static final int PARCELABLE_STABILITY_LOCAL = 0; // 0x0 + field public static final int PARCELABLE_STABILITY_VINTF = 1; // 0x1 + } + public class StatsFrameworkInitializer { method public static void registerServiceWrappers(); method public static void setStatsServiceManager(@NonNull android.os.StatsServiceManager); diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp index 124f815f51f0..1579715727ac 100644 --- a/cmds/statsd/Android.bp +++ b/cmds/statsd/Android.bp @@ -171,7 +171,8 @@ cc_library_static { export_generated_headers: ["statslog_statsdtest.h"], shared_libs: [ "libstatssocket", - ] + "libstatspull", + ], } cc_library_static { @@ -185,7 +186,11 @@ cc_library_static { ], shared_libs: [ "libstatssocket", - ] + "libstatspull", + ], + export_shared_lib_headers: [ + "libstatspull", + ], } // ========= diff --git a/cmds/statsd/tests/LogEntryMatcher_test.cpp b/cmds/statsd/tests/LogEntryMatcher_test.cpp index 26423d464027..6264c075426a 100644 --- a/cmds/statsd/tests/LogEntryMatcher_test.cpp +++ b/cmds/statsd/tests/LogEntryMatcher_test.cpp @@ -13,9 +13,6 @@ // limitations under the License. #include <gtest/gtest.h> -#include <log/log_event_list.h> -#include <log/log_read.h> -#include <log/logprint.h> #include <stdio.h> #include "annotations.h" diff --git a/cmds/telecom/src/com/android/commands/telecom/Telecom.java b/cmds/telecom/src/com/android/commands/telecom/Telecom.java index fed9c43faa38..5f13a5ce3aae 100644 --- a/cmds/telecom/src/com/android/commands/telecom/Telecom.java +++ b/cmds/telecom/src/com/android/commands/telecom/Telecom.java @@ -69,6 +69,7 @@ public final class Telecom extends BaseCommand { private static final String COMMAND_SET_DEFAULT_DIALER = "set-default-dialer"; private static final String COMMAND_GET_DEFAULT_DIALER = "get-default-dialer"; private static final String COMMAND_STOP_BLOCK_SUPPRESSION = "stop-block-suppression"; + private static final String COMMAND_CLEANUP_STUCK_CALLS = "cleanup-stuck-calls"; /** * Change the system dialer package name if a package name was specified, @@ -119,6 +120,8 @@ public final class Telecom extends BaseCommand { + "usage: telecom get-max-phones\n" + "usage: telecom stop-block-suppression: Stop suppressing the blocked number" + " provider after a call to emergency services.\n" + + "usage: telecom cleanup-stuck-calls: Clear any disconnected calls that have" + + " gotten wedged in Telecom.\n" + "usage: telecom set-emer-phone-account-filter <PACKAGE>\n" + "\n" + "telecom set-phone-account-enabled: Enables the given phone account, if it has" @@ -214,6 +217,9 @@ public final class Telecom extends BaseCommand { case COMMAND_STOP_BLOCK_SUPPRESSION: runStopBlockSuppression(); break; + case COMMAND_CLEANUP_STUCK_CALLS: + runCleanupStuckCalls(); + break; case COMMAND_SET_DEFAULT_DIALER: runSetDefaultDialer(); break; @@ -335,6 +341,10 @@ public final class Telecom extends BaseCommand { mTelecomService.stopBlockSuppression(); } + private void runCleanupStuckCalls() throws RemoteException { + mTelecomService.cleanupStuckCalls(); + } + private void runSetDefaultDialer() throws RemoteException { String packageName = nextArg(); if ("default".equals(packageName)) packageName = null; diff --git a/cmds/uiautomator/api/current.txt b/cmds/uiautomator/api/current.txt index 489c2eadfd91..bf87d091934e 100644 --- a/cmds/uiautomator/api/current.txt +++ b/cmds/uiautomator/api/current.txt @@ -1,221 +1,222 @@ +// Signature format: 2.0 package com.android.uiautomator.core { - public final deprecated class Configurator { - method public long getActionAcknowledgmentTimeout(); - method public static com.android.uiautomator.core.Configurator getInstance(); - method public long getKeyInjectionDelay(); - method public long getScrollAcknowledgmentTimeout(); - method public long getWaitForIdleTimeout(); - method public long getWaitForSelectorTimeout(); - method public com.android.uiautomator.core.Configurator setActionAcknowledgmentTimeout(long); - method public com.android.uiautomator.core.Configurator setKeyInjectionDelay(long); - method public com.android.uiautomator.core.Configurator setScrollAcknowledgmentTimeout(long); - method public com.android.uiautomator.core.Configurator setWaitForIdleTimeout(long); - method public com.android.uiautomator.core.Configurator setWaitForSelectorTimeout(long); + @Deprecated public final class Configurator { + method @Deprecated public long getActionAcknowledgmentTimeout(); + method @Deprecated public static com.android.uiautomator.core.Configurator getInstance(); + method @Deprecated public long getKeyInjectionDelay(); + method @Deprecated public long getScrollAcknowledgmentTimeout(); + method @Deprecated public long getWaitForIdleTimeout(); + method @Deprecated public long getWaitForSelectorTimeout(); + method @Deprecated public com.android.uiautomator.core.Configurator setActionAcknowledgmentTimeout(long); + method @Deprecated public com.android.uiautomator.core.Configurator setKeyInjectionDelay(long); + method @Deprecated public com.android.uiautomator.core.Configurator setScrollAcknowledgmentTimeout(long); + method @Deprecated public com.android.uiautomator.core.Configurator setWaitForIdleTimeout(long); + method @Deprecated public com.android.uiautomator.core.Configurator setWaitForSelectorTimeout(long); } - public deprecated class UiCollection extends com.android.uiautomator.core.UiObject { - ctor public UiCollection(com.android.uiautomator.core.UiSelector); - method public com.android.uiautomator.core.UiObject getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public com.android.uiautomator.core.UiObject getChildByInstance(com.android.uiautomator.core.UiSelector, int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public com.android.uiautomator.core.UiObject getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public int getChildCount(com.android.uiautomator.core.UiSelector); + @Deprecated public class UiCollection extends com.android.uiautomator.core.UiObject { + ctor @Deprecated public UiCollection(com.android.uiautomator.core.UiSelector); + method @Deprecated public com.android.uiautomator.core.UiObject getChildByDescription(com.android.uiautomator.core.UiSelector, String) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public com.android.uiautomator.core.UiObject getChildByInstance(com.android.uiautomator.core.UiSelector, int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public com.android.uiautomator.core.UiObject getChildByText(com.android.uiautomator.core.UiSelector, String) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public int getChildCount(com.android.uiautomator.core.UiSelector); } - public deprecated class UiDevice { - method public void clearLastTraversedText(); - method public boolean click(int, int); - method public boolean drag(int, int, int, int, int); - method public void dumpWindowHierarchy(java.lang.String); - method public void freezeRotation() throws android.os.RemoteException; - method public deprecated java.lang.String getCurrentActivityName(); - method public java.lang.String getCurrentPackageName(); - method public int getDisplayHeight(); - method public int getDisplayRotation(); - method public android.graphics.Point getDisplaySizeDp(); - method public int getDisplayWidth(); - method public static com.android.uiautomator.core.UiDevice getInstance(); - method public java.lang.String getLastTraversedText(); - method public java.lang.String getProductName(); - method public boolean hasAnyWatcherTriggered(); - method public boolean hasWatcherTriggered(java.lang.String); - method public boolean isNaturalOrientation(); - method public boolean isScreenOn() throws android.os.RemoteException; - method public boolean openNotification(); - method public boolean openQuickSettings(); - method public boolean pressBack(); - method public boolean pressDPadCenter(); - method public boolean pressDPadDown(); - method public boolean pressDPadLeft(); - method public boolean pressDPadRight(); - method public boolean pressDPadUp(); - method public boolean pressDelete(); - method public boolean pressEnter(); - method public boolean pressHome(); - method public boolean pressKeyCode(int); - method public boolean pressKeyCode(int, int); - method public boolean pressMenu(); - method public boolean pressRecentApps() throws android.os.RemoteException; - method public boolean pressSearch(); - method public void registerWatcher(java.lang.String, com.android.uiautomator.core.UiWatcher); - method public void removeWatcher(java.lang.String); - method public void resetWatcherTriggers(); - method public void runWatchers(); - method public void setCompressedLayoutHeirarchy(boolean); - method public void setOrientationLeft() throws android.os.RemoteException; - method public void setOrientationNatural() throws android.os.RemoteException; - method public void setOrientationRight() throws android.os.RemoteException; - method public void sleep() throws android.os.RemoteException; - method public boolean swipe(int, int, int, int, int); - method public boolean swipe(android.graphics.Point[], int); - method public boolean takeScreenshot(java.io.File); - method public boolean takeScreenshot(java.io.File, float, int); - method public void unfreezeRotation() throws android.os.RemoteException; - method public void waitForIdle(); - method public void waitForIdle(long); - method public boolean waitForWindowUpdate(java.lang.String, long); - method public void wakeUp() throws android.os.RemoteException; + @Deprecated public class UiDevice { + method @Deprecated public void clearLastTraversedText(); + method @Deprecated public boolean click(int, int); + method @Deprecated public boolean drag(int, int, int, int, int); + method @Deprecated public void dumpWindowHierarchy(String); + method @Deprecated public void freezeRotation() throws android.os.RemoteException; + method @Deprecated public String getCurrentActivityName(); + method @Deprecated public String getCurrentPackageName(); + method @Deprecated public int getDisplayHeight(); + method @Deprecated public int getDisplayRotation(); + method @Deprecated public android.graphics.Point getDisplaySizeDp(); + method @Deprecated public int getDisplayWidth(); + method @Deprecated public static com.android.uiautomator.core.UiDevice getInstance(); + method @Deprecated public String getLastTraversedText(); + method @Deprecated public String getProductName(); + method @Deprecated public boolean hasAnyWatcherTriggered(); + method @Deprecated public boolean hasWatcherTriggered(String); + method @Deprecated public boolean isNaturalOrientation(); + method @Deprecated public boolean isScreenOn() throws android.os.RemoteException; + method @Deprecated public boolean openNotification(); + method @Deprecated public boolean openQuickSettings(); + method @Deprecated public boolean pressBack(); + method @Deprecated public boolean pressDPadCenter(); + method @Deprecated public boolean pressDPadDown(); + method @Deprecated public boolean pressDPadLeft(); + method @Deprecated public boolean pressDPadRight(); + method @Deprecated public boolean pressDPadUp(); + method @Deprecated public boolean pressDelete(); + method @Deprecated public boolean pressEnter(); + method @Deprecated public boolean pressHome(); + method @Deprecated public boolean pressKeyCode(int); + method @Deprecated public boolean pressKeyCode(int, int); + method @Deprecated public boolean pressMenu(); + method @Deprecated public boolean pressRecentApps() throws android.os.RemoteException; + method @Deprecated public boolean pressSearch(); + method @Deprecated public void registerWatcher(String, com.android.uiautomator.core.UiWatcher); + method @Deprecated public void removeWatcher(String); + method @Deprecated public void resetWatcherTriggers(); + method @Deprecated public void runWatchers(); + method @Deprecated public void setCompressedLayoutHeirarchy(boolean); + method @Deprecated public void setOrientationLeft() throws android.os.RemoteException; + method @Deprecated public void setOrientationNatural() throws android.os.RemoteException; + method @Deprecated public void setOrientationRight() throws android.os.RemoteException; + method @Deprecated public void sleep() throws android.os.RemoteException; + method @Deprecated public boolean swipe(int, int, int, int, int); + method @Deprecated public boolean swipe(android.graphics.Point[], int); + method @Deprecated public boolean takeScreenshot(java.io.File); + method @Deprecated public boolean takeScreenshot(java.io.File, float, int); + method @Deprecated public void unfreezeRotation() throws android.os.RemoteException; + method @Deprecated public void waitForIdle(); + method @Deprecated public void waitForIdle(long); + method @Deprecated public boolean waitForWindowUpdate(String, long); + method @Deprecated public void wakeUp() throws android.os.RemoteException; } - public deprecated class UiObject { - ctor public UiObject(com.android.uiautomator.core.UiSelector); - method public void clearTextField() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean click() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean clickAndWaitForNewWindow() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean clickAndWaitForNewWindow(long) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean clickBottomRight() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean clickTopLeft() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean dragTo(com.android.uiautomator.core.UiObject, int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean dragTo(int, int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean exists(); - method protected android.view.accessibility.AccessibilityNodeInfo findAccessibilityNodeInfo(long); - method public android.graphics.Rect getBounds() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public com.android.uiautomator.core.UiObject getChild(com.android.uiautomator.core.UiSelector) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public int getChildCount() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public java.lang.String getClassName() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public java.lang.String getContentDescription() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public com.android.uiautomator.core.UiObject getFromParent(com.android.uiautomator.core.UiSelector) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public java.lang.String getPackageName() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public final com.android.uiautomator.core.UiSelector getSelector(); - method public java.lang.String getText() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public android.graphics.Rect getVisibleBounds() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isCheckable() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isChecked() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isClickable() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isEnabled() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isFocusable() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isFocused() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isLongClickable() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isScrollable() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean isSelected() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean longClick() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean longClickBottomRight() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean longClickTopLeft() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean performMultiPointerGesture(android.view.MotionEvent.PointerCoords...); - method public boolean performTwoPointerGesture(android.graphics.Point, android.graphics.Point, android.graphics.Point, android.graphics.Point, int); - method public boolean pinchIn(int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean pinchOut(int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean setText(java.lang.String) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean swipeDown(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean swipeLeft(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean swipeRight(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean swipeUp(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean waitForExists(long); - method public boolean waitUntilGone(long); - field protected static final int FINGER_TOUCH_HALF_WIDTH = 20; // 0x14 - field protected static final int SWIPE_MARGIN_LIMIT = 5; // 0x5 - field protected static final deprecated long WAIT_FOR_EVENT_TMEOUT = 3000L; // 0xbb8L - field protected static final long WAIT_FOR_SELECTOR_POLL = 1000L; // 0x3e8L - field protected static final deprecated long WAIT_FOR_SELECTOR_TIMEOUT = 10000L; // 0x2710L - field protected static final long WAIT_FOR_WINDOW_TMEOUT = 5500L; // 0x157cL + @Deprecated public class UiObject { + ctor @Deprecated public UiObject(com.android.uiautomator.core.UiSelector); + method @Deprecated public void clearTextField() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean click() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean clickAndWaitForNewWindow() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean clickAndWaitForNewWindow(long) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean clickBottomRight() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean clickTopLeft() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean dragTo(com.android.uiautomator.core.UiObject, int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean dragTo(int, int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean exists(); + method @Deprecated protected android.view.accessibility.AccessibilityNodeInfo findAccessibilityNodeInfo(long); + method @Deprecated public android.graphics.Rect getBounds() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public com.android.uiautomator.core.UiObject getChild(com.android.uiautomator.core.UiSelector) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public int getChildCount() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public String getClassName() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public String getContentDescription() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public com.android.uiautomator.core.UiObject getFromParent(com.android.uiautomator.core.UiSelector) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public String getPackageName() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public final com.android.uiautomator.core.UiSelector getSelector(); + method @Deprecated public String getText() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public android.graphics.Rect getVisibleBounds() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isCheckable() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isChecked() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isClickable() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isEnabled() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isFocusable() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isFocused() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isLongClickable() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isScrollable() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean isSelected() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean longClick() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean longClickBottomRight() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean longClickTopLeft() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean performMultiPointerGesture(android.view.MotionEvent.PointerCoords[]...); + method @Deprecated public boolean performTwoPointerGesture(android.graphics.Point, android.graphics.Point, android.graphics.Point, android.graphics.Point, int); + method @Deprecated public boolean pinchIn(int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean pinchOut(int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean setText(String) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean swipeDown(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean swipeLeft(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean swipeRight(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean swipeUp(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean waitForExists(long); + method @Deprecated public boolean waitUntilGone(long); + field @Deprecated protected static final int FINGER_TOUCH_HALF_WIDTH = 20; // 0x14 + field @Deprecated protected static final int SWIPE_MARGIN_LIMIT = 5; // 0x5 + field @Deprecated protected static final long WAIT_FOR_EVENT_TMEOUT = 3000L; // 0xbb8L + field @Deprecated protected static final long WAIT_FOR_SELECTOR_POLL = 1000L; // 0x3e8L + field @Deprecated protected static final long WAIT_FOR_SELECTOR_TIMEOUT = 10000L; // 0x2710L + field @Deprecated protected static final long WAIT_FOR_WINDOW_TMEOUT = 5500L; // 0x157cL } - public deprecated class UiObjectNotFoundException extends java.lang.Exception { - ctor public UiObjectNotFoundException(java.lang.String); - ctor public UiObjectNotFoundException(java.lang.String, java.lang.Throwable); - ctor public UiObjectNotFoundException(java.lang.Throwable); + @Deprecated public class UiObjectNotFoundException extends java.lang.Exception { + ctor @Deprecated public UiObjectNotFoundException(String); + ctor @Deprecated public UiObjectNotFoundException(String, Throwable); + ctor @Deprecated public UiObjectNotFoundException(Throwable); } - public deprecated class UiScrollable extends com.android.uiautomator.core.UiCollection { - ctor public UiScrollable(com.android.uiautomator.core.UiSelector); - method protected boolean exists(com.android.uiautomator.core.UiSelector); - method public boolean flingBackward() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean flingForward() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean flingToBeginning(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean flingToEnd(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public com.android.uiautomator.core.UiObject getChildByDescription(com.android.uiautomator.core.UiSelector, java.lang.String, boolean) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public com.android.uiautomator.core.UiObject getChildByText(com.android.uiautomator.core.UiSelector, java.lang.String, boolean) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public int getMaxSearchSwipes(); - method public double getSwipeDeadZonePercentage(); - method public boolean scrollBackward() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollBackward(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollDescriptionIntoView(java.lang.String) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollForward() throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollForward(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollIntoView(com.android.uiautomator.core.UiObject) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollIntoView(com.android.uiautomator.core.UiSelector) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollTextIntoView(java.lang.String) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollToBeginning(int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollToBeginning(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollToEnd(int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public boolean scrollToEnd(int) throws com.android.uiautomator.core.UiObjectNotFoundException; - method public com.android.uiautomator.core.UiScrollable setAsHorizontalList(); - method public com.android.uiautomator.core.UiScrollable setAsVerticalList(); - method public com.android.uiautomator.core.UiScrollable setMaxSearchSwipes(int); - method public com.android.uiautomator.core.UiScrollable setSwipeDeadZonePercentage(double); + @Deprecated public class UiScrollable extends com.android.uiautomator.core.UiCollection { + ctor @Deprecated public UiScrollable(com.android.uiautomator.core.UiSelector); + method @Deprecated protected boolean exists(com.android.uiautomator.core.UiSelector); + method @Deprecated public boolean flingBackward() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean flingForward() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean flingToBeginning(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean flingToEnd(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public com.android.uiautomator.core.UiObject getChildByDescription(com.android.uiautomator.core.UiSelector, String, boolean) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public com.android.uiautomator.core.UiObject getChildByText(com.android.uiautomator.core.UiSelector, String, boolean) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public int getMaxSearchSwipes(); + method @Deprecated public double getSwipeDeadZonePercentage(); + method @Deprecated public boolean scrollBackward() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollBackward(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollDescriptionIntoView(String) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollForward() throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollForward(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollIntoView(com.android.uiautomator.core.UiObject) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollIntoView(com.android.uiautomator.core.UiSelector) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollTextIntoView(String) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollToBeginning(int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollToBeginning(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollToEnd(int, int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public boolean scrollToEnd(int) throws com.android.uiautomator.core.UiObjectNotFoundException; + method @Deprecated public com.android.uiautomator.core.UiScrollable setAsHorizontalList(); + method @Deprecated public com.android.uiautomator.core.UiScrollable setAsVerticalList(); + method @Deprecated public com.android.uiautomator.core.UiScrollable setMaxSearchSwipes(int); + method @Deprecated public com.android.uiautomator.core.UiScrollable setSwipeDeadZonePercentage(double); } - public deprecated class UiSelector { - ctor public UiSelector(); - method public com.android.uiautomator.core.UiSelector checkable(boolean); - method public com.android.uiautomator.core.UiSelector checked(boolean); - method public com.android.uiautomator.core.UiSelector childSelector(com.android.uiautomator.core.UiSelector); - method public com.android.uiautomator.core.UiSelector className(java.lang.String); - method public <T> com.android.uiautomator.core.UiSelector className(java.lang.Class<T>); - method public com.android.uiautomator.core.UiSelector classNameMatches(java.lang.String); - method public com.android.uiautomator.core.UiSelector clickable(boolean); - method protected com.android.uiautomator.core.UiSelector cloneSelector(); - method public com.android.uiautomator.core.UiSelector description(java.lang.String); - method public com.android.uiautomator.core.UiSelector descriptionContains(java.lang.String); - method public com.android.uiautomator.core.UiSelector descriptionMatches(java.lang.String); - method public com.android.uiautomator.core.UiSelector descriptionStartsWith(java.lang.String); - method public com.android.uiautomator.core.UiSelector enabled(boolean); - method public com.android.uiautomator.core.UiSelector focusable(boolean); - method public com.android.uiautomator.core.UiSelector focused(boolean); - method public com.android.uiautomator.core.UiSelector fromParent(com.android.uiautomator.core.UiSelector); - method public com.android.uiautomator.core.UiSelector index(int); - method public com.android.uiautomator.core.UiSelector instance(int); - method public com.android.uiautomator.core.UiSelector longClickable(boolean); - method public com.android.uiautomator.core.UiSelector packageName(java.lang.String); - method public com.android.uiautomator.core.UiSelector packageNameMatches(java.lang.String); - method public com.android.uiautomator.core.UiSelector resourceId(java.lang.String); - method public com.android.uiautomator.core.UiSelector resourceIdMatches(java.lang.String); - method public com.android.uiautomator.core.UiSelector scrollable(boolean); - method public com.android.uiautomator.core.UiSelector selected(boolean); - method public com.android.uiautomator.core.UiSelector text(java.lang.String); - method public com.android.uiautomator.core.UiSelector textContains(java.lang.String); - method public com.android.uiautomator.core.UiSelector textMatches(java.lang.String); - method public com.android.uiautomator.core.UiSelector textStartsWith(java.lang.String); + @Deprecated public class UiSelector { + ctor @Deprecated public UiSelector(); + method @Deprecated public com.android.uiautomator.core.UiSelector checkable(boolean); + method @Deprecated public com.android.uiautomator.core.UiSelector checked(boolean); + method @Deprecated public com.android.uiautomator.core.UiSelector childSelector(com.android.uiautomator.core.UiSelector); + method @Deprecated public com.android.uiautomator.core.UiSelector className(String); + method @Deprecated public <T> com.android.uiautomator.core.UiSelector className(Class<T>); + method @Deprecated public com.android.uiautomator.core.UiSelector classNameMatches(String); + method @Deprecated public com.android.uiautomator.core.UiSelector clickable(boolean); + method @Deprecated protected com.android.uiautomator.core.UiSelector cloneSelector(); + method @Deprecated public com.android.uiautomator.core.UiSelector description(String); + method @Deprecated public com.android.uiautomator.core.UiSelector descriptionContains(String); + method @Deprecated public com.android.uiautomator.core.UiSelector descriptionMatches(String); + method @Deprecated public com.android.uiautomator.core.UiSelector descriptionStartsWith(String); + method @Deprecated public com.android.uiautomator.core.UiSelector enabled(boolean); + method @Deprecated public com.android.uiautomator.core.UiSelector focusable(boolean); + method @Deprecated public com.android.uiautomator.core.UiSelector focused(boolean); + method @Deprecated public com.android.uiautomator.core.UiSelector fromParent(com.android.uiautomator.core.UiSelector); + method @Deprecated public com.android.uiautomator.core.UiSelector index(int); + method @Deprecated public com.android.uiautomator.core.UiSelector instance(int); + method @Deprecated public com.android.uiautomator.core.UiSelector longClickable(boolean); + method @Deprecated public com.android.uiautomator.core.UiSelector packageName(String); + method @Deprecated public com.android.uiautomator.core.UiSelector packageNameMatches(String); + method @Deprecated public com.android.uiautomator.core.UiSelector resourceId(String); + method @Deprecated public com.android.uiautomator.core.UiSelector resourceIdMatches(String); + method @Deprecated public com.android.uiautomator.core.UiSelector scrollable(boolean); + method @Deprecated public com.android.uiautomator.core.UiSelector selected(boolean); + method @Deprecated public com.android.uiautomator.core.UiSelector text(String); + method @Deprecated public com.android.uiautomator.core.UiSelector textContains(String); + method @Deprecated public com.android.uiautomator.core.UiSelector textMatches(String); + method @Deprecated public com.android.uiautomator.core.UiSelector textStartsWith(String); } - public abstract deprecated interface UiWatcher { - method public abstract boolean checkForCondition(); + @Deprecated public interface UiWatcher { + method @Deprecated public boolean checkForCondition(); } } package com.android.uiautomator.testrunner { - public abstract deprecated interface IAutomationSupport { - method public abstract void sendStatus(int, android.os.Bundle); + @Deprecated public interface IAutomationSupport { + method @Deprecated public void sendStatus(int, android.os.Bundle); } - public deprecated class UiAutomatorTestCase extends junit.framework.TestCase { - ctor public UiAutomatorTestCase(); - method public com.android.uiautomator.testrunner.IAutomationSupport getAutomationSupport(); - method public android.os.Bundle getParams(); - method public com.android.uiautomator.core.UiDevice getUiDevice(); - method public void sleep(long); + @Deprecated public class UiAutomatorTestCase extends junit.framework.TestCase { + ctor @Deprecated public UiAutomatorTestCase(); + method @Deprecated public com.android.uiautomator.testrunner.IAutomationSupport getAutomationSupport(); + method @Deprecated public android.os.Bundle getParams(); + method @Deprecated public com.android.uiautomator.core.UiDevice getUiDevice(); + method @Deprecated public void sleep(long); } } diff --git a/cmds/uiautomator/api/removed.txt b/cmds/uiautomator/api/removed.txt index e69de29bb2d1..d802177e249b 100644 --- a/cmds/uiautomator/api/removed.txt +++ b/cmds/uiautomator/api/removed.txt @@ -0,0 +1 @@ +// Signature format: 2.0 diff --git a/cmds/uiautomator/library/Android.bp b/cmds/uiautomator/library/Android.bp index c33d31f576a3..04b00cb837b2 100644 --- a/cmds/uiautomator/library/Android.bp +++ b/cmds/uiautomator/library/Android.bp @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -droiddoc { - name: "uiautomator-stubs-docs", +droidstubs { + name: "uiautomator-stubs", srcs: [ "core-src/**/*.java", "testrunner-src/**/*.java", @@ -24,10 +24,10 @@ droiddoc { "android.test.base", "unsupportedappusage", ], - custom_template: "droiddoc-templates-sdk", installable: false, - args: "-stubpackages com.android.uiautomator.core:" + - "com.android.uiautomator.testrunner", + flags: [ + "-stubpackages com.android.uiautomator.core:com.android.uiautomator.testrunner", + ], check_api: { current: { @@ -41,10 +41,26 @@ droiddoc { }, } +droiddoc { + name: "uiautomator-stubs-docs", + srcs: [ + ":uiautomator-stubs", + ], + libs: [ + "android.test.runner", + "junit", + "android.test.base", + "unsupportedappusage", + ], + installable: false, + custom_template: "droiddoc-templates-sdk", + create_stubs: false, +} + java_library_static { name: "android_uiautomator", srcs: [ - ":uiautomator-stubs-docs", + ":uiautomator-stubs", ], libs: [ "android.test.runner", @@ -64,7 +80,7 @@ java_library_static { ], static_libs: [ "junit", - ] + ], } java_library_static { diff --git a/core/java/android/app/usage/UsageStats.java b/core/java/android/app/usage/UsageStats.java index 4d73a61c972d..f2a054d16ccb 100644 --- a/core/java/android/app/usage/UsageStats.java +++ b/core/java/android/app/usage/UsageStats.java @@ -229,7 +229,8 @@ public final class UsageStats implements Parcelable { } /** - * Get the total time this package spent in the foreground, measured in milliseconds. + * Get the total time this package spent in the foreground, measured in milliseconds. When in + * the foreground, the user is actively interacting with the app. */ public long getTotalTimeInForeground() { return mTotalTimeInForeground; @@ -237,6 +238,8 @@ public final class UsageStats implements Parcelable { /** * Get the total time this package's activity is visible in the UI, measured in milliseconds. + * Note: An app may be visible but not considered foreground. Apps in the foreground must be + * visible, so visible time includes time in the foreground. */ public long getTotalTimeVisible() { return mTotalTimeVisible; diff --git a/core/java/android/net/NetworkAgent.java b/core/java/android/net/NetworkAgent.java index 482d2d2192b8..327e42bdd2f7 100644 --- a/core/java/android/net/NetworkAgent.java +++ b/core/java/android/net/NetworkAgent.java @@ -354,8 +354,7 @@ public abstract class NetworkAgent { private static NetworkInfo getLegacyNetworkInfo(final NetworkAgentConfig config) { // The subtype can be changed with (TODO) setLegacySubtype, but it starts // with the type and an empty description. - final NetworkInfo ni = new NetworkInfo(config.legacyType, config.legacyType, - config.legacyTypeName, ""); + final NetworkInfo ni = new NetworkInfo(config.legacyType, 0, config.legacyTypeName, ""); ni.setIsAvailable(true); ni.setExtraInfo(config.getLegacyExtraInfo()); return ni; diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java index df58a6c636f5..1539b6ed4ca7 100644 --- a/core/java/android/os/GraphicsEnvironment.java +++ b/core/java/android/os/GraphicsEnvironment.java @@ -78,7 +78,7 @@ public class GraphicsEnvironment { private static final String ACTION_ANGLE_FOR_ANDROID_TOAST_MESSAGE = "android.app.action.ANGLE_FOR_ANDROID_TOAST_MESSAGE"; private static final String INTENT_KEY_A4A_TOAST_MESSAGE = "A4A Toast Message"; - private static final String GAME_DRIVER_WHITELIST_ALL = "*"; + private static final String GAME_DRIVER_ALLOWLIST_ALL = "*"; private static final String GAME_DRIVER_SPHAL_LIBRARIES_FILENAME = "sphal_libraries.txt"; private static final int VULKAN_1_0 = 0x00400000; private static final int VULKAN_1_1 = 0x00401000; @@ -142,19 +142,19 @@ public class GraphicsEnvironment { + "set to: '" + devOptIn + "'"); } - // We only want to use ANGLE if the app is whitelisted or the developer has + // We only want to use ANGLE if the app is allowlisted or the developer has // explicitly chosen something other than default driver. - // The whitelist will be generated by the ANGLE APK at both boot time and + // The allowlist will be generated by the ANGLE APK at both boot time and // ANGLE update time. It will only include apps mentioned in the rules file. - final boolean whitelisted = checkAngleWhitelist(context, coreSettings, packageName); + final boolean allowlisted = checkAngleAllowlist(context, coreSettings, packageName); final boolean requested = devOptIn.equals(sDriverMap.get(OpenGlDriverChoice.ANGLE)); - final boolean useAngle = (whitelisted || requested); + final boolean useAngle = (allowlisted || requested); if (!useAngle) { return false; } - if (whitelisted) { - Log.v(TAG, "ANGLE whitelist includes " + packageName); + if (allowlisted) { + Log.v(TAG, "ANGLE allowlist includes " + packageName); } if (requested) { Log.v(TAG, "ANGLE developer option for " + packageName + ": " + devOptIn); @@ -564,17 +564,17 @@ public class GraphicsEnvironment { } /** - * Pull ANGLE whitelist from GlobalSettings and compare against current package + * Pull ANGLE allowlist from GlobalSettings and compare against current package */ - private static boolean checkAngleWhitelist(Context context, Bundle bundle, String packageName) { + private static boolean checkAngleAllowlist(Context context, Bundle bundle, String packageName) { final ContentResolver contentResolver = context.getContentResolver(); - final List<String> angleWhitelist = + final List<String> angleAllowlist = getGlobalSettingsString(contentResolver, bundle, Settings.Global.GLOBAL_SETTINGS_ANGLE_WHITELIST); - if (DEBUG) Log.v(TAG, "ANGLE whitelist: " + angleWhitelist); + if (DEBUG) Log.v(TAG, "ANGLE allowlist: " + angleAllowlist); - return angleWhitelist.contains(packageName); + return angleAllowlist.contains(packageName); } /** @@ -584,7 +584,7 @@ public class GraphicsEnvironment { * @param bundle * @param packageName * @return true: ANGLE setup successfully - * false: ANGLE not setup (not on whitelist, ANGLE not present, etc.) + * false: ANGLE not setup (not on allowlist, ANGLE not present, etc.) */ public boolean setupAngle(Context context, Bundle bundle, PackageManager pm, String packageName) { @@ -750,8 +750,8 @@ public class GraphicsEnvironment { // 2. GAME_DRIVER_OPT_OUT_APPS // 3. GAME_DRIVER_PRERELEASE_OPT_IN_APPS // 4. GAME_DRIVER_OPT_IN_APPS - // 5. GAME_DRIVER_BLACKLIST - // 6. GAME_DRIVER_WHITELIST + // 5. GAME_DRIVER_DENYLIST + // 6. GAME_DRIVER_ALLOWLIST switch (coreSettings.getInt(Settings.Global.GAME_DRIVER_ALL_APPS, 0)) { case GAME_DRIVER_GLOBAL_OPT_IN_OFF: if (DEBUG) Log.v(TAG, "Game Driver is turned off on this device."); @@ -790,21 +790,21 @@ public class GraphicsEnvironment { final boolean isOptIn = getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_OPT_IN_APPS) .contains(appPackageName); - final List<String> whitelist = - getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_WHITELIST); - if (!isOptIn && whitelist.indexOf(GAME_DRIVER_WHITELIST_ALL) != 0 - && !whitelist.contains(appPackageName)) { - if (DEBUG) Log.v(TAG, "App is not on the whitelist for Game Driver."); + final List<String> allowlist = + getGlobalSettingsString(null, coreSettings, Settings.Global.GAME_DRIVER_ALLOWLIST); + if (!isOptIn && allowlist.indexOf(GAME_DRIVER_ALLOWLIST_ALL) != 0 + && !allowlist.contains(appPackageName)) { + if (DEBUG) Log.v(TAG, "App is not on the allowlist for Game Driver."); return null; } - // If the application is not opted-in, then check whether it's on the blacklist, - // terminate early if it's on the blacklist and fallback to system driver. + // If the application is not opted-in, then check whether it's on the denylist, + // terminate early if it's on the denylist and fallback to system driver. if (!isOptIn && getGlobalSettingsString( - null, coreSettings, Settings.Global.GAME_DRIVER_BLACKLIST) + null, coreSettings, Settings.Global.GAME_DRIVER_DENYLIST) .contains(appPackageName)) { - if (DEBUG) Log.v(TAG, "App is on the blacklist for Game Driver."); + if (DEBUG) Log.v(TAG, "App is on the denylist for Game Driver."); return null; } diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java index a7e326378228..b05ea39850f8 100644 --- a/core/java/android/os/Looper.java +++ b/core/java/android/os/Looper.java @@ -94,6 +94,11 @@ public final class Looper { */ private long mSlowDeliveryThresholdMs; + /** + * True if a message delivery takes longer than {@link #mSlowDeliveryThresholdMs}. + */ + private boolean mSlowDeliveryDetected; + /** Initialize the current thread as a looper. * This gives you a chance to create handlers that then reference * this looper, before actually starting the loop. Be sure to call @@ -148,6 +153,105 @@ public final class Looper { } /** + * Poll and deliver single message, return true if the outer loop should continue. + */ + private static boolean loopOnce(final Looper me, + final long ident, final int thresholdOverride) { + Message msg = me.mQueue.next(); // might block + if (msg == null) { + // No message indicates that the message queue is quitting. + return false; + } + + // This must be in a local variable, in case a UI event sets the logger + final Printer logging = me.mLogging; + if (logging != null) { + logging.println(">>>>> Dispatching to " + msg.target + " " + + msg.callback + ": " + msg.what); + } + // Make sure the observer won't change while processing a transaction. + final Observer observer = sObserver; + + final long traceTag = me.mTraceTag; + long slowDispatchThresholdMs = me.mSlowDispatchThresholdMs; + long slowDeliveryThresholdMs = me.mSlowDeliveryThresholdMs; + if (thresholdOverride > 0) { + slowDispatchThresholdMs = thresholdOverride; + slowDeliveryThresholdMs = thresholdOverride; + } + final boolean logSlowDelivery = (slowDeliveryThresholdMs > 0) && (msg.when > 0); + final boolean logSlowDispatch = (slowDispatchThresholdMs > 0); + + final boolean needStartTime = logSlowDelivery || logSlowDispatch; + final boolean needEndTime = logSlowDispatch; + + if (traceTag != 0 && Trace.isTagEnabled(traceTag)) { + Trace.traceBegin(traceTag, msg.target.getTraceName(msg)); + } + + final long dispatchStart = needStartTime ? SystemClock.uptimeMillis() : 0; + final long dispatchEnd; + Object token = null; + if (observer != null) { + token = observer.messageDispatchStarting(); + } + long origWorkSource = ThreadLocalWorkSource.setUid(msg.workSourceUid); + try { + msg.target.dispatchMessage(msg); + if (observer != null) { + observer.messageDispatched(token, msg); + } + dispatchEnd = needEndTime ? SystemClock.uptimeMillis() : 0; + } catch (Exception exception) { + if (observer != null) { + observer.dispatchingThrewException(token, msg, exception); + } + throw exception; + } finally { + ThreadLocalWorkSource.restore(origWorkSource); + if (traceTag != 0) { + Trace.traceEnd(traceTag); + } + } + if (logSlowDelivery) { + if (me.mSlowDeliveryDetected) { + if ((dispatchStart - msg.when) <= 10) { + Slog.w(TAG, "Drained"); + me.mSlowDeliveryDetected = false; + } + } else { + if (showSlowLog(slowDeliveryThresholdMs, msg.when, dispatchStart, "delivery", + msg)) { + // Once we write a slow delivery log, suppress until the queue drains. + me.mSlowDeliveryDetected = true; + } + } + } + if (logSlowDispatch) { + showSlowLog(slowDispatchThresholdMs, dispatchStart, dispatchEnd, "dispatch", msg); + } + + if (logging != null) { + logging.println("<<<<< Finished to " + msg.target + " " + msg.callback); + } + + // Make sure that during the course of dispatching the + // identity of the thread wasn't corrupted. + final long newIdent = Binder.clearCallingIdentity(); + if (ident != newIdent) { + Log.wtf(TAG, "Thread identity changed from 0x" + + Long.toHexString(ident) + " to 0x" + + Long.toHexString(newIdent) + " while dispatching to " + + msg.target.getClass().getName() + " " + + msg.callback + " what=" + msg.what); + } + + msg.recycleUnchecked(); + + return true; + } + + /** * Run the message queue in this thread. Be sure to call * {@link #quit()} to end the loop. */ @@ -162,7 +266,6 @@ public final class Looper { } me.mInLoop = true; - final MessageQueue queue = me.mQueue; // Make sure the identity of this thread is that of the local process, // and keep track of what that identity token actually is. @@ -177,99 +280,12 @@ public final class Looper { + Thread.currentThread().getName() + ".slow", 0); - boolean slowDeliveryDetected = false; + me.mSlowDeliveryDetected = false; for (;;) { - Message msg = queue.next(); // might block - if (msg == null) { - // No message indicates that the message queue is quitting. + if (!loopOnce(me, ident, thresholdOverride)) { return; } - - // This must be in a local variable, in case a UI event sets the logger - final Printer logging = me.mLogging; - if (logging != null) { - logging.println(">>>>> Dispatching to " + msg.target + " " + - msg.callback + ": " + msg.what); - } - // Make sure the observer won't change while processing a transaction. - final Observer observer = sObserver; - - final long traceTag = me.mTraceTag; - long slowDispatchThresholdMs = me.mSlowDispatchThresholdMs; - long slowDeliveryThresholdMs = me.mSlowDeliveryThresholdMs; - if (thresholdOverride > 0) { - slowDispatchThresholdMs = thresholdOverride; - slowDeliveryThresholdMs = thresholdOverride; - } - final boolean logSlowDelivery = (slowDeliveryThresholdMs > 0) && (msg.when > 0); - final boolean logSlowDispatch = (slowDispatchThresholdMs > 0); - - final boolean needStartTime = logSlowDelivery || logSlowDispatch; - final boolean needEndTime = logSlowDispatch; - - if (traceTag != 0 && Trace.isTagEnabled(traceTag)) { - Trace.traceBegin(traceTag, msg.target.getTraceName(msg)); - } - - final long dispatchStart = needStartTime ? SystemClock.uptimeMillis() : 0; - final long dispatchEnd; - Object token = null; - if (observer != null) { - token = observer.messageDispatchStarting(); - } - long origWorkSource = ThreadLocalWorkSource.setUid(msg.workSourceUid); - try { - msg.target.dispatchMessage(msg); - if (observer != null) { - observer.messageDispatched(token, msg); - } - dispatchEnd = needEndTime ? SystemClock.uptimeMillis() : 0; - } catch (Exception exception) { - if (observer != null) { - observer.dispatchingThrewException(token, msg, exception); - } - throw exception; - } finally { - ThreadLocalWorkSource.restore(origWorkSource); - if (traceTag != 0) { - Trace.traceEnd(traceTag); - } - } - if (logSlowDelivery) { - if (slowDeliveryDetected) { - if ((dispatchStart - msg.when) <= 10) { - Slog.w(TAG, "Drained"); - slowDeliveryDetected = false; - } - } else { - if (showSlowLog(slowDeliveryThresholdMs, msg.when, dispatchStart, "delivery", - msg)) { - // Once we write a slow delivery log, suppress until the queue drains. - slowDeliveryDetected = true; - } - } - } - if (logSlowDispatch) { - showSlowLog(slowDispatchThresholdMs, dispatchStart, dispatchEnd, "dispatch", msg); - } - - if (logging != null) { - logging.println("<<<<< Finished to " + msg.target + " " + msg.callback); - } - - // Make sure that during the course of dispatching the - // identity of the thread wasn't corrupted. - final long newIdent = Binder.clearCallingIdentity(); - if (ident != newIdent) { - Log.wtf(TAG, "Thread identity changed from 0x" - + Long.toHexString(ident) + " to 0x" - + Long.toHexString(newIdent) + " while dispatching to " - + msg.target.getClass().getName() + " " - + msg.callback + " what=" + msg.what); - } - - msg.recycleUnchecked(); } } diff --git a/core/java/android/os/Parcelable.java b/core/java/android/os/Parcelable.java index bedbba04255e..3d3759e695e0 100644 --- a/core/java/android/os/Parcelable.java +++ b/core/java/android/os/Parcelable.java @@ -17,6 +17,7 @@ package android.os; import android.annotation.IntDef; +import android.annotation.SystemApi; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -119,6 +120,7 @@ public interface Parcelable { * @see ParcelableHolder * @hide */ + @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int PARCELABLE_STABILITY_LOCAL = 0x0000; /** * Something that is meant to be used between system and vendor. @@ -126,6 +128,7 @@ public interface Parcelable { * @see ParcelableHolder * @hide */ + @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) public static final int PARCELABLE_STABILITY_VINTF = 0x0001; /** diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 346522a504c8..485828f899a2 100755 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -12377,24 +12377,24 @@ public final class Settings { public static final String GAME_DRIVER_OPT_OUT_APPS = "game_driver_opt_out_apps"; /** - * Apps on the blacklist that are forbidden to use Game Driver. + * Apps on the denylist that are forbidden to use Game Driver. * @hide */ - public static final String GAME_DRIVER_BLACKLIST = "game_driver_blacklist"; + public static final String GAME_DRIVER_DENYLIST = "game_driver_denylist"; /** - * List of blacklists, each blacklist is a blacklist for a specific version of Game Driver. + * List of denylists, each denylist is a denylist for a specific version of Game Driver. * @hide */ - public static final String GAME_DRIVER_BLACKLISTS = "game_driver_blacklists"; + public static final String GAME_DRIVER_DENYLISTS = "game_driver_denylists"; /** - * Apps on the whitelist that are allowed to use Game Driver. + * Apps on the allowlist that are allowed to use Game Driver. * The string is a list of application package names, seperated by comma. * i.e. <apk1>,<apk2>,...,<apkN> * @hide */ - public static final String GAME_DRIVER_WHITELIST = "game_driver_whitelist"; + public static final String GAME_DRIVER_ALLOWLIST = "game_driver_allowlist"; /** * List of libraries in sphal accessible by Game Driver diff --git a/core/java/android/security/net/config/NetworkSecurityConfig.java b/core/java/android/security/net/config/NetworkSecurityConfig.java index 57068fa2eb63..00872fb3b62d 100644 --- a/core/java/android/security/net/config/NetworkSecurityConfig.java +++ b/core/java/android/security/net/config/NetworkSecurityConfig.java @@ -216,7 +216,7 @@ public final class NetworkSecurityConfig { * in {@link Builder#build()}, recursively if needed. */ public Builder setParent(Builder parent) { - // Sanity check to avoid adding loops. + // Quick check to avoid adding loops. Builder current = parent; while (current != null) { if (current == this) { diff --git a/core/java/android/text/format/DateIntervalFormat.java b/core/java/android/text/format/DateIntervalFormat.java index de9ec7ab9ea9..e8236fda42b6 100644 --- a/core/java/android/text/format/DateIntervalFormat.java +++ b/core/java/android/text/format/DateIntervalFormat.java @@ -62,7 +62,7 @@ public final class DateIntervalFormat { /** * Format a date range. This is our slightly more sensible internal API. - * A truly sane replacement would take a skeleton instead of int flags. + * A truly reasonable replacement would take a skeleton instead of int flags. */ @VisibleForTesting(visibility = PACKAGE) public static String formatDateRange(ULocale icuLocale, android.icu.util.TimeZone icuTimeZone, diff --git a/core/java/android/view/accessibility/IWindowMagnificationConnectionCallback.aidl b/core/java/android/view/accessibility/IWindowMagnificationConnectionCallback.aidl index 2d05591a8131..2343bf3e8d19 100644 --- a/core/java/android/view/accessibility/IWindowMagnificationConnectionCallback.aidl +++ b/core/java/android/view/accessibility/IWindowMagnificationConnectionCallback.aidl @@ -19,7 +19,7 @@ package android.view.accessibility; import android.graphics.Rect; /** - * interface to notify the change of the window magnifier bounds and request to change + * interface to notify the changes of the window magnification and request to change * the magnification mode. * * @hide @@ -27,12 +27,13 @@ import android.graphics.Rect; oneway interface IWindowMagnificationConnectionCallback { /** - * Called when the bounds of the window magnifier is changed. + * Called when the bounds of the mirrow window is changed. * * @param displayId The logical display id. * @param bounds The window magnifier bounds in screen coordinates. */ void onWindowMagnifierBoundsChanged(int displayId, in Rect bounds); + /** * Changes the magnification mode on specified display. It is invoked by System UI when the * switch button is toggled. @@ -41,4 +42,12 @@ import android.graphics.Rect; * @param magnificationMode new magnification mode. */ void onChangeMagnificationMode(int displayId, int magnificationMode); + + /** + * Called when the magnified bounds is changed. + * + * @param displayId The logical display id. + * @param sourceBounds The magnified bounds in screen coordinates. + */ + void onSourceBoundsChanged(int displayId, in Rect sourceBounds); } diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto index 097af763038c..5b22e3126eaf 100644 --- a/core/proto/android/app/settings_enums.proto +++ b/core/proto/android/app/settings_enums.proto @@ -2693,4 +2693,9 @@ enum PageId { // CATEGORY: SETTINGS // OS: R QPR SETTINGS_SWIPE_BOTTOM_TO_NOTIFICATION = 1846; + + // OPEN: Settings > System > Gestures > Emergency SOS Gesture + // CATEGORY: SETTINGS + // OS: S + EMERGENCY_SOS_GESTURE_SETTINGS = 1847; } diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto index ac143ac1a147..fe540bb18f42 100644 --- a/core/proto/android/providers/settings/global.proto +++ b/core/proto/android/providers/settings/global.proto @@ -445,14 +445,14 @@ message GlobalSettingsProto { // i.e. <pkg1>,<pkg2>,...,<pkgN> optional SettingProto game_driver_opt_out_apps = 10; // Game Driver - List of Apps that are forbidden to use Game Driver - optional SettingProto game_driver_blacklist = 11; + optional SettingProto game_driver_denylist = 11; // Game Driver - List of Apps that are allowed to use Game Driver - optional SettingProto game_driver_whitelist = 12; + optional SettingProto game_driver_allowlist = 12; // ANGLE - List of Apps that can check ANGLE rules optional SettingProto angle_whitelist = 13; - // Game Driver - List of blacklists, each blacklist is a blacklist for + // Game Driver - List of denylists, each denylist is a denylist for // a specific Game Driver version - optional SettingProto game_driver_blacklists = 14; + optional SettingProto game_driver_denylists = 14; // ANGLE - Show a dialog box when ANGLE is selected for the currently running PKG optional SettingProto show_angle_in_use_dialog = 15; // Game Driver - List of libraries in sphal accessible by Game Driver diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index bae3bf905082..fe290f3e97e8 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -355,7 +355,6 @@ <protected-broadcast android:name="com.android.server.wifi.action.CarrierNetwork.USER_ALLOWED_CARRIER" /> <protected-broadcast android:name="com.android.server.wifi.action.CarrierNetwork.USER_DISALLOWED_CARRIER" /> <protected-broadcast android:name="com.android.server.wifi.action.CarrierNetwork.USER_DISMISSED" /> - <protected-broadcast android:name="com.android.server.wifi.action.CarrierNetwork.USER_CLICKED" /> <protected-broadcast android:name="com.android.server.wifi.ConnectToNetworkNotification.USER_DISMISSED_NOTIFICATION" /> <protected-broadcast android:name="com.android.server.wifi.ConnectToNetworkNotification.CONNECT_TO_NETWORK" /> <protected-broadcast android:name="com.android.server.wifi.ConnectToNetworkNotification.PICK_WIFI_NETWORK" /> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 03c682fd74af..f5facea7fc26 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Druk kieslys om oop te sluit of maak noodoproep."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Druk kieslys om oop te maak."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Teken patroon om te ontsluit"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Noodoproep"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Keer terug na oproep"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Reg!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Probeer weer"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index f80da896d8fa..b1183689c5ee 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"ለመክፈት ምናሌ ተጫንወይም የአደጋ ጊዜ ጥሪ አድርግ።"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"ለመክፈት ምናሌ ተጫን"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"ለመክፈት ስርዓተ ጥለት ሳል"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"የአደጋ ጊዜ ጥሪ"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"ወደ ጥሪ ተመለስ"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"ትክክል!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"እንደገና ሞክር"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 41e3e26afc2c..26dac618ee7e 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -844,8 +844,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"اضغط على \"القائمة\" لإلغاء التأمين أو إجراء اتصال بالطوارئ."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"اضغط على \"القائمة\" لإلغاء التأمين."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"رسم نقش لإلغاء التأمين"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"مكالمة طوارئ"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"العودة إلى الاتصال"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"صحيح!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"أعد المحاولة"</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index c6c8bb502ba8..d0ed635e69a8 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"আনলক কৰিবলৈ বা জৰুৰীকালীন কল কৰিবলৈ মেনু টিপক।"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"আনলক কৰিবলৈ মেনু টিপক।"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"আনলক কৰিবলৈ আর্হি আঁকক"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"জৰুৰীকালীন কল"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"কললৈ উভতি যাওক"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"শুদ্ধ!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"আকৌ চেষ্টা কৰক"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index f0ff88365173..c721bbf8c829 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Təcili zəng kilidini açmaq və ya yerləşdirmək üçün Menyu düyməsinə basın."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Kilidi açmaq üçün Menyu düyməsinə basın."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Kilidi açmaq üçün model çəkin"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Təcili zəng"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Zəngə qayıt"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Düzdür!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Bir də cəhd edin"</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 8319da7ca7ee..93ddbe521ac5 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -835,8 +835,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pritisnite „Meni“ da biste otključali telefon ili uputite hitan poziv."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pritisnite „Meni“ za otključavanje."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Unesite šablon za otključavanje"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Hitni poziv"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Nazad na poziv"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Tačno!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Probajte ponovo"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 3540516fd9f3..cff1218bd81b 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -568,7 +568,7 @@ <string name="fingerprint_error_user_canceled" msgid="7685676229281231614">"Аўтэнтыфікацыя па адбітках пальцаў скасавана карыстальнікам."</string> <string name="fingerprint_error_lockout" msgid="7853461265604738671">"Занадта шмат спроб. Паспрабуйце яшчэ раз пазней."</string> <string name="fingerprint_error_lockout_permanent" msgid="3895478283943513746">"Занадта шмат спроб. Сканер адбіткаў пальцаў выключаны."</string> - <string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Паспрабуйце яшчэ раз."</string> + <string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Паўтарыце спробу."</string> <string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Адбіткі пальцаў не зарэгістраваны."</string> <string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"На гэтай прыладзе няма сканера адбіткаў пальцаў."</string> <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Датчык часова выключаны."</string> @@ -838,11 +838,10 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Націсніце \"Меню\", каб разблакаваць, або зрабіце экстраны выклік."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Націсніце \"Меню\", каб разблакаваць."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Намалюйце камбінацыю разблакоўкі, каб разблакаваць"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Экстранны выклік"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Вярнуцца да выкліку"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Правільна!"</string> - <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Паспрабуйце яшчэ раз"</string> + <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Паўтарыце спробу"</string> <string name="lockscreen_password_wrong" msgid="8605355913868947490">"Паўтарыце спробу"</string> <string name="lockscreen_storage_locked" msgid="634993789186443380">"Разблакіраваць для ўсіх функцый і даных"</string> <string name="faceunlock_multiple_failures" msgid="681991538434031708">"Перавышана максімальная колькасць спроб разблакоўкі праз Фэйскантроль"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 6643bcfa822c..e49ae26a93ac 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Натиснете „Меню“, за да отключите или да извършите спешно обаждане."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Натиснете „Меню“, за да отключите."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Нарисувайте фигура, за да отключите"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Спешно обаждане"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Назад към обаждането"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Правилно!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Опитайте отново"</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index cbec4ac51d09..ffc9ecf02b18 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"আনলক করতে বা জরুরি কল করতে মেনু টিপুন৷"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"আনলক করতে মেনু টিপুন৷"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"আনলক করতে প্যাটার্ন আঁকুন"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"জরুরি কল"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"কলে ফিরুন"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"সঠিক!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"আবার চেষ্টা করুন"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 87b02f553037..0e176b53f236 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -835,8 +835,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pritisnite dugme Meni kako biste otključali uređaj ili obavili hitni poziv."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pritisnite dugme Meni za otključavanje uređaja."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Nacrtajte uzorak za otključavanje"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Hitni poziv"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Povratak na poziv"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Ispravno!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Pokušajte ponovo"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 5fadc92d2970..2e4169e15c3b 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -543,7 +543,7 @@ <string name="biometric_error_user_canceled" msgid="6732303949695293730">"S\'ha cancel·lat l\'autenticació"</string> <string name="biometric_not_recognized" msgid="5106687642694635888">"No s\'ha reconegut"</string> <string name="biometric_error_canceled" msgid="8266582404844179778">"S\'ha cancel·lat l\'autenticació"</string> - <string name="biometric_error_device_not_secured" msgid="3129845065043995924">"No s\'ha establert cap PIN, patró o contrasenya"</string> + <string name="biometric_error_device_not_secured" msgid="3129845065043995924">"No s\'ha definit cap PIN, patró o contrasenya"</string> <string name="biometric_error_generic" msgid="6784371929985434439">"Error en l\'autenticació"</string> <string name="fingerprint_acquired_partial" msgid="8532380671091299342">"S\'ha detectat una empremta digital parcial. Torna-ho a provar."</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"No s\'ha pogut processar l\'empremta digital. Torna-ho a provar."</string> @@ -832,7 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Premeu Menú per desbloquejar-lo o per fer una trucada d\'emergència."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Premeu Menú per desbloquejar."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Dibuixeu el patró de desbloqueig"</string> - <string name="lockscreen_emergency_call" msgid="7500692654885445299">"Emergència"</string> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Trucada d\'emergència"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Torna a la trucada"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correcte!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Torna-ho a provar"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index c69ca37d0f1c..34e6efb2bf78 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -838,8 +838,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Chcete-li odemknout telefon nebo provést tísňové volání, stiskněte Menu."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Telefon odemknete stisknutím tlačítka Menu."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Odblokujte pomocí gesta"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Tísňové volání"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Zavolat zpět"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Správně!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Zkusit znovu"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index fb100773dfa6..117fecb0ffd0 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Tryk på Menu for at låse op eller foretage et nødopkald."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Tryk på Menu for at låse op."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Tegn oplåsningsmønster"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Nødopkald"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Tilbage til opkald"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Rigtigt!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Prøv igen"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 4adcf0ae48ec..faa78df458e0 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Drücke die Menütaste, um das Telefon zu entsperren oder einen Notruf zu tätigen."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Zum Entsperren die Menütaste drücken"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Muster zum Entsperren zeichnen"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Notruf"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Zurück zum Anruf"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Korrekt!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Erneut versuchen"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 23895f4fbf57..2e1b56ad9ff9 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Πατήστε \"Menu\" για ξεκλείδωμα ή για κλήση έκτακτης ανάγκης."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Πατήστε \"Μενού\" για ξεκλείδωμα."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Σχεδιασμός μοτίβου για ξεκλείδωμα"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Κλήση έκτακτης ανάγκης"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Επιστροφή στην κλήση"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Σωστό!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Προσπαθήστε ξανά"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 0484ccd8abaa..dcfbf5a49748 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Press Menu to unlock or place emergency call."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Press Menu to unlock."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Draw pattern to unlock"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Emergency call"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Return to call"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correct!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Try again"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 9981c1212123..65f2426b6e08 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Press Menu to unlock or place emergency call."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Press Menu to unlock."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Draw pattern to unlock"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Emergency call"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Return to call"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correct!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Try again"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 02cdf69a2cd8..d38e2fe844ad 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Press Menu to unlock or place emergency call."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Press Menu to unlock."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Draw pattern to unlock"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Emergency call"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Return to call"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correct!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Try again"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 3b18aca951f7..30a9bf88619d 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Press Menu to unlock or place emergency call."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Press Menu to unlock."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Draw pattern to unlock"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Emergency call"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Return to call"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correct!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Try again"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 7e8a89aa5a94..27ff3f0d4531 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Presiona el Menú para desbloquear o realizar una llamada de emergencia."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Presionar Menú para desbloquear."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Dibujar el patrón de desbloqueo"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Llamada de emergencia"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Regresar a llamada"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correcto"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Vuelve a intentarlo."</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 02aafa75945a..67350cb04fe1 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pulsa la tecla de menú para desbloquear el teléfono o realizar una llamada de emergencia."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pulsa la tecla de menú para desbloquear la pantalla."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Dibujar patrón de desbloqueo"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Llamada de emergencia"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Volver a llamada"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correcto"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Vuelve a intentarlo"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 813629417a8e..3929ed4d50da 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Vajutage avamiseks või hädaabikõne tegemiseks menüünuppu"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Vajutage avamiseks menüüklahvi."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Avamiseks joonistage muster"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Hädaabikõne"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Kõne juurde tagasi"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Õige."</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Proovige uuesti"</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index 1b88f2708782..ecce980c613f 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -350,11 +350,11 @@ <string name="permlab_receiveMms" msgid="4000650116674380275">"jaso testu-mezuak (MMSak)"</string> <string name="permdesc_receiveMms" msgid="958102423732219710">"MMS mezuak jasotzeko eta prozesatzeko baimena ematen die aplikazioei. Horrela, aplikazioak gailura bidalitako mezuak kontrola eta ezaba ditzake zuri erakutsi gabe."</string> <string name="permlab_bindCellBroadcastService" msgid="586746677002040651">"desbideratu sare mugikor bidezko igorpen-mezuak"</string> - <string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Sare mugikor bidezko igorpen-modulura lotzeko baimena ematen dio aplikazioari, sare mugikor bidezko igorpen-mezuak jaso ahala desbideratu ahal izateko. Sare mugikor bidezko igorpen-alertak kokapen batzuetan entregatzen dira larrialdi-egoeren berri emateko. Sare mugikor bidezko larrialdi-igorpenak jasotzean, aplikazio maltzurrek gailuaren errendimenduari edota funtzionamenduari eragin diezaiokete."</string> + <string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Sare mugikor bidezko igorpen-modulura lotzeko baimena ematen dio aplikazioari, sare mugikor bidezko igorpen-mezuak jaso ahala desbideratu ahal izateko. Sare mugikor bidezko igorpen-alertak kokapen batzuetan entregatzen dira larrialdi-egoeren berri emateko. Sare mugikor bidezko larrialdi-igorpenak jasotzean, aplikazio gaiztoek gailuaren errendimenduari edota funtzionamenduari eragin diezaiokete."</string> <string name="permlab_readCellBroadcasts" msgid="5869884450872137693">"irakurri sare mugikor bidezko igorpen-mezuak"</string> <string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"Gailuak jasotako sare mugikor bidezko igorpenen mezuak irakurtzeko baimena ematen die aplikazioei. Sare mugikor bidezko igorpen-alertak kokapen batzuetan ematen dira larrialdi-egoeren berri emateko. Aplikazio gaiztoek gailuaren errendimendua edo funtzionamendua oztopa dezakete larrialdi-igorpen horietako bat jasotzen denean."</string> <string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"irakurri harpidetutako jarioak"</string> - <string name="permdesc_subscribedFeedsRead" msgid="6911349196661811865">"Unean sinkronizatutako jarioei buruzko xehetasunak lortzeko baimena ematen die aplikazioei."</string> + <string name="permdesc_subscribedFeedsRead" msgid="6911349196661811865">"Une horretan sinkronizatutako jarioei buruzko xehetasunak lortzeko baimena ematen die aplikazioei."</string> <string name="permlab_sendSms" msgid="7757368721742014252">"bidali eta ikusi SMS mezuak"</string> <string name="permdesc_sendSms" msgid="6757089798435130769">"SMS mezuak bidaltzeko baimena ematen die aplikazioei. Horrela, ustekabeko gastuak eragin daitezke. Aplikazio gaiztoek erabil dezakete zuk berretsi gabeko mezuak bidalita gastuak eragiteko."</string> <string name="permlab_readSms" msgid="5164176626258800297">"irakurri testu-mezuak (SMSak edo MMSak)"</string> @@ -364,7 +364,7 @@ <string name="permlab_receiveWapPush" msgid="4223747702856929056">"jaso testu-mezuak (WAP bidezkoak)"</string> <string name="permdesc_receiveWapPush" msgid="1638677888301778457">"WAP mezuak jasotzeko eta prozesatzeko baimena ematen die aplikazioei. Horrela, aplikazioak, besteak beste, gailura bidalitako mezuak kontrola eta ezaba ditzake zuri erakutsi gabe."</string> <string name="permlab_getTasks" msgid="7460048811831750262">"eskuratu abian diren aplikazioak"</string> - <string name="permdesc_getTasks" msgid="7388138607018233726">"Unean edo duela gutxi exekutatutako zereginei buruzko informazioa lortzeko baimena ematen die aplikazioei. Horrela, aplikazioak gailuan erabiltzen ari diren aplikazioei buruzko informazioa ezagut dezake."</string> + <string name="permdesc_getTasks" msgid="7388138607018233726">"Une honetan edo duela gutxi exekutatutako zereginei buruzko informazioa lortzeko baimena ematen die aplikazioei. Horrela, aplikazioak gailuan erabiltzen ari diren aplikazioei buruzko informazioa ezagut dezake."</string> <string name="permlab_manageProfileAndDeviceOwners" msgid="639849495253987493">"kudeatu profilen eta gailuen jabeak"</string> <string name="permdesc_manageProfileAndDeviceOwners" msgid="7304240671781989283">"Profilaren eta gailuaren jabeak zehazteko baimena ematen die aplikazioei."</string> <string name="permlab_reorderTasks" msgid="7598562301992923804">"ordenatu abian diren aplikazioak"</string> @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Desblokeatzeko edo larrialdi-deia egiteko, sakatu Menua."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Desblokeatzeko, sakatu Menua."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Desblokeatzeko, marraztu eredua"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Larrialdi-deia"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Itzuli deira"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Eredua zuzena da!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Saiatu berriro"</string> @@ -882,7 +881,7 @@ <string name="lockscreen_glogin_password_hint" msgid="3031027901286812848">"Pasahitza"</string> <string name="lockscreen_glogin_submit_button" msgid="3590556636347843733">"Hasi saioa"</string> <string name="lockscreen_glogin_invalid_input" msgid="4369219936865697679">"Erabiltzaile-izen edo pasahitz baliogabea."</string> - <string name="lockscreen_glogin_account_recovery_hint" msgid="1683405808525090649">"Erabiltzaile-izena edo pasahitza ahaztu zaizu?\nZoaz "<b>"google.com/accounts/recovery"</b>" helbidera."</string> + <string name="lockscreen_glogin_account_recovery_hint" msgid="1683405808525090649">"Erabiltzaile-izena edo pasahitza ahaztu zaizu?\nJoan "<b>"google.com/accounts/recovery"</b>" helbidera."</string> <string name="lockscreen_glogin_checking_password" msgid="2607271802803381645">"Egiaztatzen…"</string> <string name="lockscreen_unlock_label" msgid="4648257878373307582">"Desblokeatu"</string> <string name="lockscreen_sound_on_label" msgid="1660281470535492430">"Soinua aktibatuta"</string> @@ -1604,7 +1603,7 @@ <string name="kg_login_password_hint" msgid="3330530727273164402">"Pasahitza"</string> <string name="kg_login_submit_button" msgid="893611277617096870">"Hasi saioa"</string> <string name="kg_login_invalid_input" msgid="8292367491901220210">"Erabiltzaile-izen edo pasahitz baliogabea."</string> - <string name="kg_login_account_recovery_hint" msgid="4892466171043541248">"Erabiltzaile-izena edo pasahitza ahaztu zaizu?\nZoaz "<b>"google.com/accounts/recovery"</b>" helbidera."</string> + <string name="kg_login_account_recovery_hint" msgid="4892466171043541248">"Erabiltzaile-izena edo pasahitza ahaztu zaizu?\nJoan "<b>"google.com/accounts/recovery"</b>" helbidera."</string> <string name="kg_login_checking_password" msgid="4676010303243317253">"Kontua egiaztatzen…"</string> <string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="23741434207544038">"PINa oker idatzi duzu <xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz. \n\nSaiatu berriro <xliff:g id="NUMBER_1">%2$d</xliff:g> segundo barru."</string> <string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"Pasahitza oker idatzi duzu <xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz. \n\nSaiatu berriro <xliff:g id="NUMBER_1">%2$d</xliff:g> segundo barru."</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 506a7ee79dcb..1ee4be59733b 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -829,11 +829,10 @@ <string name="emergency_call_dialog_number_for_display" msgid="2978165477085612673">"شماره اضطراری"</string> <string name="lockscreen_carrier_default" msgid="6192313772955399160">"بدون سرویس"</string> <string name="lockscreen_screen_locked" msgid="7364905540516041817">"صفحه قفل شد."</string> - <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"برای بازگشایی قفل یا انجام تماس اضطراری روی منو فشار دهید."</string> + <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"برای بازکردن قفل یا انجام تماس اضطراری روی «منو» فشار دهید."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"برای بازگشایی قفل روی منو فشار دهید."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"الگو را بکشید تا قفل آن باز شود"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"تماس اضطراری"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"بازگشت به تماس"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"صحیح است!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"دوباره امتحان کنید"</string> @@ -1927,7 +1926,7 @@ <string name="time_picker_header_text" msgid="9073802285051516688">"تنظیم زمان"</string> <string name="time_picker_input_error" msgid="8386271930742451034">"زمان معتبری وارد کنید"</string> <string name="time_picker_prompt_label" msgid="303588544656363889">"زمان را تایپ کنید"</string> - <string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"برای وارد کردن زمان، به حالت وارد کردن نوشتار تغییر وضعیت دهید."</string> + <string name="time_picker_text_input_mode_description" msgid="4761160667516611576">"برای وارد کردن زمان، به حالت ورودی نوشتاری تغییر وضعیت دهید."</string> <string name="time_picker_radial_mode_description" msgid="1222342577115016953">"برای وارد کردن زمان، به حالت ساعت تغییر وضعیت دهید."</string> <string name="autofill_picker_accessibility_title" msgid="4425806874792196599">"گزینههای تکمیل خودکار"</string> <string name="autofill_save_accessibility_title" msgid="1523225776218450005">"ذخیره کردن برای تکمیل خودکار"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 01db781a6ccd..1eff983e803f 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Poista lukitus tai soita hätäpuhelu painamalla Valikko-painiketta."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Poista lukitus painamalla Valikko-painiketta."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Poista lukitus piirtämällä kuvio"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Hätäpuhelu"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Palaa puheluun"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Oikein!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Yritä uudelleen"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index f5adc779e082..c6f347b1833b 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Appuyez sur \"Menu\" pour débloquer le téléphone ou appeler un numéro d\'urgence."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Appuyez sur \"Menu\" pour déverrouiller l\'appareil."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Dessinez un schéma pour déverrouiller le téléphone"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Appel d\'urgence"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Retour à l\'appel"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"C\'est exact!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Réessayer"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 8880dc63428f..6ede806583a5 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Appuyez sur \"Menu\" pour déverrouiller le téléphone ou appeler un numéro d\'urgence"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Appuyez sur \"Menu\" pour déverrouiller le téléphone."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Dessinez un schéma pour déverrouiller le téléphone"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Appel d\'urgence"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Retour à l\'appel"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Combinaison correcte !"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Veuillez réessayer."</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index dffca1c2abcd..b3a4542614ac 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Preme Menú para desbloquear ou realizar unha chamada de emerxencia."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Preme Menú para desbloquear."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Crea o padrón de desbloqueo"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Chamada de emerxencia"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Volver á chamada"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correcto!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Téntao de novo"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 784e85f9a174..ca35a681f636 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"અનલૉક કરવા માટે અથવા કટોકટીનો કૉલ કરવા માટે મેનૂ દબાવો."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"અનલૉક કરવા માટે મેનૂ દબાવો."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"અનલૉક કરવા માટે પૅટર્ન દોરો."</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"ઇમર્જન્સી કૉલ"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"કૉલ પર પાછા ફરો"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"સાચું!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"ફરી પ્રયાસ કરો"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 82a106295acb..7b0bd238d7f7 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"लॉक खोलने के लिए मेन्यू दबाएं या आपातलकालीन कॉल करें."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"लॉक खोलने के लिए मेन्यू दबाएं."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"अनलॉक करने के लिए आकार आरेखित करें"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"आपातकालीन कॉल"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"कॉल पर वापस लौटें"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"सही!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"फिर से कोशिश करें"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index f1bcd398c65f..eb41c9f8f6f8 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -835,8 +835,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pritisnite Izbornik za otključavanje ili pozivanje hitnih službi."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pritisnite Izbornik za otključavanje."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Iscrtajte uzorak za otključavanje"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Hitni poziv"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Uzvrati poziv"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Ispravno!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Pokušajte ponovo"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 3106371a2a33..0004ff1a3f13 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"A feloldáshoz vagy segélyhívás kezdeményezéséhez nyomja meg a Menü gombot."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"A feloldáshoz nyomja meg a Menü gombot."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Rajzolja le a mintát a feloldáshoz"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Segélyhívás"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Hívás folytatása"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Helyes!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Próbálja újra"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 85afc27bb14c..b115025fd63d 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Ապակողպելու կամ շտապ կանչ անելու համար սեղմեք «Ընտրացանկ»"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Ապակողպելու համար սեղմեք Ցանկը:"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Հավաքեք սխեման` ապակողպելու համար"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Շտապ կանչ"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Վերադառնալ զանգին"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Ճիշտ է:"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Կրկին փորձեք"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 8ec1f50eaceb..688996d87dba 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Tekan Menu untuk membuka atau melakukan panggilan darurat."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Tekan Menu untuk membuka."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Buat pola untuk membuka"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Panggilan darurat"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Kembali ke panggilan"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Perbaiki!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Coba lagi"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 1b0c2fe24521..899fa52fbb9f 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Ýttu á valmyndartakkann til að taka úr lás eða hringja neyðarsímtal."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Ýttu á valmyndartakkann til að taka úr lás."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Teiknaðu mynstur til að taka úr lás"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Neyðarsímtal"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Aftur í símtal"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Rétt!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Reyndu aftur"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index d2bf62d94a40..400c44a4ef9c 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Premi Menu per sbloccare o effettuare chiamate di emergenza."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Premi Menu per sbloccare."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Traccia la sequenza di sblocco"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Chiamata di emergenza"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Torna a chiamata"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Corretta."</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Riprova"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 4d6d8155a981..2c4274532a02 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -838,7 +838,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"לחץ על \'תפריט\' כדי לבטל את הנעילה או כדי לבצע שיחת חירום."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"לחץ על \'תפריט\' כדי לבטל את הנעילה."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"שרטט קו לביטול נעילת המסך"</string> - <string name="lockscreen_emergency_call" msgid="7500692654885445299">"חירום"</string> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"שיחת חירום"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"חזרה לשיחה"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"נכון!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"כדאי לנסות שוב"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index f9674bd0db11..fdb505b696dc 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"MENUキーでロック解除(または緊急通報)"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"MENUキーでロック解除"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"パターンを入力"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"緊急通報"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"通話に戻る"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"一致しました"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"もう一度お試しください"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 3d1e9c799a4d..3d0d88b9e823 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"განბლოკვისთვის ან გადაუდებელი ზარისთვის დააჭირეთ მენიუს."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"განბლოკვისთვის დააჭირეთ მენიუს."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"განსაბლოკად დახატეთ ნიმუში"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"გადაუდებელი ზარი"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"ზარზე დაბრუნება"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"სწორია!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"კიდევ სცადეთ"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 38a50abfe6e7..6d063b647c41 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Бекітпесін ашу үшін немесе төтенше қоңырауды табу үшін Мәзір тармағын басыңыз."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Ашу үшін Мәзір пернесін басыңыз."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Бекітпесін ашу үшін кескінді сызыңыз"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Құтқару қызметіне қоңырау шалу"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Қоңырауға оралу"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Дұрыс!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Қайталап көріңіз"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 4e646c5d2a07..b9378def3491 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"ចុចម៉ឺនុយ ដើម្បីដោះសោ ឬហៅពេលអាសន្ន។"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"ចុចម៉ឺនុយ ដើម្បីដោះសោ។"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"គូរលំនាំ ដើម្បីដោះសោ"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"ហៅទៅលេខសង្គ្រោះបន្ទាន់"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"ត្រឡប់ទៅការហៅ"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"ត្រឹមត្រូវ!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"ព្យាយាមម្ដងទៀត"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 8d742156ca2c..cbb9ca2606f2 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಮೆನು ಒತ್ತಿರಿ ಇಲ್ಲವೇ ತುರ್ತು ಕರೆಯನ್ನು ಮಾಡಿ."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಮೆನು ಒತ್ತಿರಿ."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಪ್ಯಾಟರ್ನ್ ಚಿತ್ರಿಸಿ"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"ತುರ್ತು ಕರೆ"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"ಕರೆಗೆ ಹಿಂತಿರುಗು"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"ಸರಿಯಾಗಿದೆ!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 5d960dcc0aa7..78c3286eecf3 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"비상 전화를 걸거나 잠금해제하려면 메뉴를 누르세요."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"잠금해제하려면 메뉴를 누르세요."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"잠금해제를 위해 패턴 그리기"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"긴급 전화"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"통화로 돌아가기"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"맞습니다."</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"다시 시도"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index c97324f738b3..671863d68035 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -47,7 +47,7 @@ <string name="mismatchPin" msgid="2929611853228707473">"Терилген PIN\'дер дал келбейт."</string> <string name="invalidPin" msgid="7542498253319440408">"Узундугу 4төн 8ге чейинки сандан турган PIN-кодду териңиз."</string> <string name="invalidPuk" msgid="8831151490931907083">"Узундугу 8 же көбүрөөк сандан турган PUK-кодду териңиз."</string> - <string name="needPuk" msgid="7321876090152422918">"SIM картаңыз PUK менен кулпуланган. Кулпусун ачуу үчүн PUK-кодду териңиз."</string> + <string name="needPuk" msgid="7321876090152422918">"SIM картаңыз PUK менен кулпуланган. Кулпусун ачуу үчүн, PUK-кодду териңиз."</string> <string name="needPuk2" msgid="7032612093451537186">"SIM картаны бөгөттөн чыгаруу үчүн PUK2 кодун териңиз."</string> <string name="enablePin" msgid="2543771964137091212">"Оңунан чыкпады, SIM/RUIM бөгөттөөсүн жандырыңыз."</string> <plurals name="pinpuk_attempts" formatted="false" msgid="1619867269012213584"> @@ -241,7 +241,7 @@ <string name="global_action_power_off" msgid="4404936470711393203">"Өчүрүү"</string> <string name="global_action_power_options" msgid="1185286119330160073">"Кубат"</string> <string name="global_action_restart" msgid="4678451019561687074">"Өчүрүп күйгүзүү"</string> - <string name="global_action_emergency" msgid="1387617624177105088">"Тез жардам"</string> + <string name="global_action_emergency" msgid="1387617624177105088">"Шашылыш чалуу"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"Ката тууралуу билдирүү"</string> <string name="global_action_logout" msgid="6093581310002476511">"Сеансты бүтүрүү"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"Скриншот"</string> @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Кулпусун ачып же Шашылыш чалуу аткаруу үчүн менюну басыңыз."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Бөгөттөн чыгаруу үчүн Менюну басыңыз."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Кулпуну ачуу үчүн, үлгүнү тартыңыз"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Шашылыш чалуу"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Чалууга кайтуу"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Туура!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Дагы аракет кылыңыз"</string> @@ -1321,7 +1320,7 @@ <string name="console_running_notification_title" msgid="6087888939261635904">"Сериялык консоль иштетилди"</string> <string name="console_running_notification_message" msgid="7892751888125174039">"Майнаптуулугуна таасири тиет. Аны өчүрүү үчүн операциялык тутумду жүктөгүчтү текшериңиз."</string> <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"USB портунда суюктук же урандылар бар"</string> - <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"USB порт автоматтык түрдө өчүрүлдү. Кененирээк маалымат алуу үчүн таптап коюңуз."</string> + <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"USB порт автоматтык түрдө өчүрүлдү. Кененирээк маалымат алуу үчүн, таптап коюңуз."</string> <string name="usb_contaminant_not_detected_title" msgid="2651167729563264053">"USB портун колдонууга болот"</string> <string name="usb_contaminant_not_detected_message" msgid="892863190942660462">"Телефон суюктук менен урандыларды аныктаган жок."</string> <string name="taking_remote_bugreport_notification_title" msgid="1582531382166919850">"Мүчүлүштүк тууралуу кабар алынууда…"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index c1b3fe473aed..44511398c694 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"ກົດ ເມນູ ເພື່ອປົດລັອກ ຫຼື ໂທອອກຫາເບີສຸກເສີນ."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"ກົດ \"ເມນູ\" ເພື່ອປົດລັອກ."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"ແຕ້ມຮູບແບບເພື່ອປົດລັອກ"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"ການໂທສຸກເສີນ"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"ກັບໄປຫາການໂທ"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"ຖືກຕ້ອງ!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"ລອງໃໝ່ອີກຄັ້ງ"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index fc5709c0e089..fa0797846de4 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -838,8 +838,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Paspauskite „Meniu“, kad atrakintumėte ar skambintumėte pagalbos numeriu."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Paspauskite „Meniu“, jei norite atrakinti."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Nustatyti modelį, kad atrakintų"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Skambutis pagalbos numeriu"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"grįžti prie skambučio"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Teisingai!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Bandykite dar kartą"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index d780b14ae11a..e8107fb0c744 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -835,8 +835,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Nospiediet Izvēlne, lai atbloķētu, vai veiciet ārkārtas zvanu."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Lai atbloķētu, nospiediet vienumu Izvēlne."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Zīmējiet kombināciju, lai atbloķētu."</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Ārkārtas izsaukums"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Atpakaļ pie zvana"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Pareizi!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Mēģināt vēlreiz"</string> @@ -1816,8 +1815,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atjaunināja administrators"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dzēsa administrators"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Labi"</string> - <string name="battery_saver_description_with_learn_more" msgid="4424488535318105801">"Lai paildzinātu akumulatora darbības laiku, ieslēdzot akumulatora jaudas taupīšanas režīmu, tiek veiktas tālāk norādītās darbības.\n\n• Tiek ieslēgts tumšais motīvs.\n• Tiek izslēgtas vai ierobežotas fonā veiktās darbības, daži vizuālie efekti un citas funkcijas, piemēram, “Ok Google”.\n\n"<annotation id="url">"Uzzināt vairāk"</annotation></string> - <string name="battery_saver_description" msgid="6794188153647295212">"Lai paildzinātu akumulatora darbības laiku, ieslēdzot akumulatora jaudas taupīšanas režīmu, tiek veiktas tālāk norādītās darbības.\n\n• Tiek ieslēgts tumšais motīvs.\n• Tiek izslēgtas vai ierobežotas fonā veiktās darbības, daži vizuālie efekti un citas funkcijas, piemēram, “Ok Google”."</string> + <string name="battery_saver_description_with_learn_more" msgid="4424488535318105801">"Lai paildzinātu akumulatora darbības laiku, ieslēdzot akumulatora enerģijas taupīšanas režīmu, tiek veiktas tālāk norādītās darbības.\n\n• Tiek ieslēgts tumšais motīvs.\n• Tiek izslēgtas vai ierobežotas fonā veiktās darbības, daži vizuālie efekti un citas funkcijas, piemēram, “Ok Google”.\n\n"<annotation id="url">"Uzzināt vairāk"</annotation></string> + <string name="battery_saver_description" msgid="6794188153647295212">"Lai paildzinātu akumulatora darbības laiku, ieslēdzot akumulatora enerģijas taupīšanas režīmu, tiek veiktas tālāk norādītās darbības.\n\n• Tiek ieslēgts tumšais motīvs.\n• Tiek izslēgtas vai ierobežotas fonā veiktās darbības, daži vizuālie efekti un citas funkcijas, piemēram, “Ok Google”."</string> <string name="data_saver_description" msgid="4995164271550590517">"Lai samazinātu datu lietojumu, datu lietojuma samazinātājs neļauj dažām lietotnēm fonā nosūtīt vai saņemt datus. Lietotne, kuru pašlaik izmantojat, var piekļūt datiem, bet, iespējams, piekļūs tiem retāk (piemēram, attēli tiks parādīti tikai tad, kad tiem pieskarsieties)."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vai ieslēgt datu lietojuma samazinātāju?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ieslēgt"</string> @@ -2034,9 +2033,9 @@ <string name="notification_feedback_indicator" msgid="663476517711323016">"Sniegt atsauksmes"</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Informatīvs paziņojums par akumulatoru"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Akumulators var izlādēties pirms parastā uzlādes laika"</string> - <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Aktivizēts akumulatora jaudas taupīšanas režīms, lai palielinātu akumulatora darbības ilgumu"</string> - <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Akumulatora jaudas taupīšanas režīms"</string> - <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Akumulatora jaudas taupīšanas režīms ir izslēgts"</string> + <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Aktivizēts akumulatora enerģijas taupīšanas režīms, lai palielinātu akumulatora darbības ilgumu"</string> + <string name="battery_saver_notification_channel_name" msgid="3918243458067916913">"Akumulatora enerģijas taupīšanas režīms"</string> + <string name="battery_saver_off_notification_title" msgid="7637255960468032515">"Akumulatora enerģijas taupīšanas režīms ir izslēgts"</string> <string name="battery_saver_charged_notification_summary" product="default" msgid="5544457317418624367">"Tālruņa uzlādes līmenis ir pietiekams. Funkcijas vairs netiek ierobežotas."</string> <string name="battery_saver_charged_notification_summary" product="tablet" msgid="4426317048139996888">"Planšetdatora uzlādes līmenis ir pietiekams. Funkcijas vairs netiek ierobežotas."</string> <string name="battery_saver_charged_notification_summary" product="device" msgid="1031562417867646649">"Ierīces uzlādes līmenis ir pietiekams. Funkcijas vairs netiek ierobežotas."</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index b50c608190e4..8871293c1b2f 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Притисни „Мени“ да се отклучи или да направи итен повик."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Притиснете „Мени“ за да се отклучи."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Употребете ја шемата за да се отклучи"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Итен повик"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Врати се на повик"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Точно!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Обидете се повторно"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index b769fd23ab1e..af75969910d2 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"അൺലോക്ക് ചെയ്യുന്നതിനായി മെനു അമർത്തുക അല്ലെങ്കിൽ അടിയന്തര കോൾ വിളിക്കുക."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"അൺലോക്കുചെയ്യാൻ മെനു അമർത്തുക."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"അൺലോക്ക് ചെയ്യാൻ പാറ്റേൺ വരയ്ക്കുക"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"എമർജൻസി കോൾ"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"കോളിലേക്ക് മടങ്ങുക"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"ശരി!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"വീണ്ടും ശ്രമിക്കുക"</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 7b41501e6a0f..a65f80c9332f 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Яаралтай дуудлага хийх буюу эсвэл түгжээг тайлах бол цэсийг дарна уу."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Тайлах бол цэсийг дарна уу."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Тайлах хээгээ зурна уу"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Яаралтай дуудлага"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Дуудлагаруу буцах"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Зөв!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Дахин оролдох"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 577803334c33..ec240c1c36fc 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"अनलॉक करण्यासाठी मेनू दाबा किंवा आणीबाणीचा कॉल करा."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"अनलॉक करण्यासाठी मेनू दाबा."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"अनलॉक करण्यासाठी पॅटर्न काढा"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"आणीबाणी कॉल"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"कॉलवर परत या"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"अचूक!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"पुन्हा प्रयत्न करा"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index c30bcfc1800f..2e78b45cbb67 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Tekan Menu untuk menyahsekat atau membuat panggilan kecemasan."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Tekan Menu untuk membuka kunci."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Lukiskan corak untuk membuka kunci"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Panggilan kecemasan"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Kembali ke panggilan"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Betul!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Cuba lagi"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 243357eca3c2..1ebafa47f76e 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"ဖွင့်ရန်သို့မဟုတ်အရေးပေါ်ခေါ်ဆိုခြင်းပြုလုပ်ရန် မီနူးကိုနှိပ်ပါ"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"မီးနူးကို နှိပ်ခြင်းဖြင့် သော့ဖွင့်ပါ"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"ဖွင့်ရန်ပုံစံဆွဲပါ"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"အရေးပေါ် ခေါ်ဆိုမှု"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"ခေါ်ဆိုမှုထံပြန်သွားရန်"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"မှန်ပါသည်"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"ထပ် စမ်းပါ"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 0a31b49c555c..ac21aec0080e 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Trykk på menyknappen for å låse opp eller ringe et nødnummer."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Trykk på menyknappen for å låse opp."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Tegn mønster for å låse opp"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Nødanrop"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Tilbake til samtale"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Riktig!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Prøv på nytt"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index 9712b480b97b..fd7b1b2ab55a 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"अनलक वा आपतकालीन कल गर्न मेनु थिच्नुहोस्।"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"अनलक गर्न मेनु थिच्नुहोस्।"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"अनलक गर्नु ढाँचा खिच्नुहोस्"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"आपतकालीन कल"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"कलमा फर्किनुहोस्"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"सही!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"फेरि प्रयास गर्नुहोस्"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index d1a342c99590..f63e64760957 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -326,7 +326,7 @@ <string name="capability_title_canControlMagnification" msgid="7701572187333415795">"Schermvergroting bedienen"</string> <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"Het zoomniveau en de positionering van het scherm bedienen."</string> <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"Gebaren uitvoeren"</string> - <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"Kan tikken, vegen, samenknijpen en andere gebaren uitvoeren."</string> + <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"Kan tikken, swipen, knijpen en andere gebaren uitvoeren."</string> <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"Vingerafdrukgebaren"</string> <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Kan gebaren registreren die op de vingerafdruksensor van het apparaat worden getekend."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Screenshot maken"</string> @@ -451,7 +451,7 @@ <string name="permlab_accessImsCallService" msgid="442192920714863782">"toegang tot IMS-service voor bellen"</string> <string name="permdesc_accessImsCallService" msgid="6328551241649687162">"Hiermee kan de app de IMS-service gebruiken om te bellen zonder je tussenkomst."</string> <string name="permlab_readPhoneState" msgid="8138526903259297969">"telefoonstatus en -identiteit lezen"</string> - <string name="permdesc_readPhoneState" msgid="7229063553502788058">"Hiermee kan de app toegang krijgen tot de telefoonfuncties van het apparaat, Met deze toestemming kan de app het telefoonnummer en de apparaat-ID\'s bepalen, of een gesprek actief is, en het andere telefoonnummer waarmee wordt gebeld."</string> + <string name="permdesc_readPhoneState" msgid="7229063553502788058">"Hiermee kan de app toegang krijgen tot de telefoonfuncties van het apparaat, Met deze rechten kan de app het telefoonnummer en de apparaat-ID\'s bepalen, of een gesprek actief is, en het andere telefoonnummer waarmee wordt gebeld."</string> <string name="permlab_manageOwnCalls" msgid="9033349060307561370">"gesprekken doorschakelen via het systeem"</string> <string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Hiermee kan de app de bijbehorende gesprekken doorschakelen via het systeem om de belfunctionaliteit te verbeteren."</string> <string name="permlab_callCompanionApp" msgid="3654373653014126884">"gesprekken via het systeem bekijken en beheren"</string> @@ -489,7 +489,7 @@ <string name="permlab_accessNetworkState" msgid="2349126720783633918">"netwerkverbindingen weergeven"</string> <string name="permdesc_accessNetworkState" msgid="4394564702881662849">"Hiermee kan de app informatie bekijken over netwerkverbindingen, zoals welke netwerken er zijn en welke verbonden zijn."</string> <string name="permlab_createNetworkSockets" msgid="3224420491603590541">"volledige netwerktoegang"</string> - <string name="permdesc_createNetworkSockets" msgid="7722020828749535988">"Hiermee kan de app netwerksockets maken en aangepaste netwerkprotocollen gebruiken. De browser en andere apps bieden mogelijkheden om gegevens via internet te verzenden, dus deze toestemming is niet vereist om gegevens via internet te verzenden."</string> + <string name="permdesc_createNetworkSockets" msgid="7722020828749535988">"Hiermee kan de app netwerksockets maken en aangepaste netwerkprotocollen gebruiken. De browser en andere apps bieden mogelijkheden om gegevens via internet te verzenden, dus deze rechten zijn niet vereist om gegevens via internet te verzenden."</string> <string name="permlab_changeNetworkState" msgid="8945711637530425586">"netwerkverbinding wijzigen"</string> <string name="permdesc_changeNetworkState" msgid="649341947816898736">"Hiermee kan de app de status van de netwerkverbinding wijzigen."</string> <string name="permlab_changeTetherState" msgid="9079611809931863861">"getetherde verbinding wijzigen"</string> @@ -569,7 +569,7 @@ <string name="fingerprint_name_template" msgid="8941662088160289778">"Vinger <xliff:g id="FINGERID">%d</xliff:g>"</string> <string-array name="fingerprint_error_vendor"> </string-array> - <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Vingerafdruk-pictogram"</string> + <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Vingerafdruk-icoon"</string> <string name="permlab_manageFace" msgid="4569549381889283282">"hardware voor ontgrendelen via gezichtsherkenning beheren"</string> <string name="permdesc_manageFace" msgid="6204569688492710471">"Hiermee kan de app methoden aanroepen om gezichtstemplates toe te voegen en te verwijderen voor gebruik."</string> <string name="permlab_useFaceAuthentication" msgid="1011430526454859030">"hardware voor ontgrendelen via gezichtsherkenning gebruiken"</string> @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Druk op \'Menu\' om te ontgrendelen of noodoproep te plaatsen."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Druk op \'Menu\' om te ontgrendelen."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Patroon tekenen om te ontgrendelen"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Noodoproep"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Terug naar gesprek"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Juist!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Opnieuw proberen"</string> @@ -954,12 +953,12 @@ <string name="autofill_parish" msgid="6847960518334530198">"Gemeente"</string> <string name="autofill_area" msgid="8289022370678448983">"Gebied"</string> <string name="autofill_emirate" msgid="2544082046790551168">"Emiraat"</string> - <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"je webbladwijzers en -geschiedenis lezen"</string> - <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Hiermee kan de app de geschiedenis lezen van alle URL\'s die in de systeemeigen browser zijn bezocht, en alle bookmarks in de systeemeigen browser. Let op: deze toestemming kan niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden."</string> - <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"webbladwijzers en -geschiedenis schrijven"</string> - <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Hiermee kan de app de webgeschiedenis wijzigen in de systeemeigen browser en de bookmarks die zijn opgeslagen op je tablet. Deze toestemming kan niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden.."</string> + <string name="permlab_readHistoryBookmarks" msgid="9102293913842539697">"je webbookmarks en -geschiedenis lezen"</string> + <string name="permdesc_readHistoryBookmarks" msgid="2323799501008967852">"Hiermee kan de app de geschiedenis lezen van alle URL\'s die in de systeemeigen browser zijn bezocht, en alle bookmarks in de systeemeigen browser. Let op: deze rechten kunnen niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden."</string> + <string name="permlab_writeHistoryBookmarks" msgid="6090259925187986937">"webbookmarks en -geschiedenis schrijven"</string> + <string name="permdesc_writeHistoryBookmarks" product="tablet" msgid="573341025292489065">"Hiermee kan de app de webgeschiedenis wijzigen in de systeemeigen browser en de bookmarks die zijn opgeslagen op je tablet. Deze rechten kunnen niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden."</string> <string name="permdesc_writeHistoryBookmarks" product="tv" msgid="88642768580408561">"Hiermee kan de app de browsergeschiedenis of opgeslagen bookmarks bewerken op je Android TV-apparaat. Hierdoor kan de app mogelijk browsergegevens wissen of aanpassen. Opmerking: Dit recht kan niet worden afgedwongen door andere browsers of andere apps met internetmogelijkheden."</string> - <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Hiermee kan de app de webgeschiedenis wijzigen in de systeemeigen browser en de bookmarks die zijn opgeslagen op je telefoon. Deze toestemming kan niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden."</string> + <string name="permdesc_writeHistoryBookmarks" product="default" msgid="2245203087160913652">"Hiermee kan de app de webgeschiedenis wijzigen in de systeemeigen browser en de bookmarks die zijn opgeslagen op je telefoon. Deze rechten kunnen niet worden geforceerd door andere browsers of andere apps met internetmogelijkheden."</string> <string name="permlab_setAlarm" msgid="1158001610254173567">"een wekker instellen"</string> <string name="permdesc_setAlarm" msgid="2185033720060109640">"Hiermee kan de app een wekker instellen in een geïnstalleerde wekker-app. Deze functie wordt door sommige wekker-apps niet geïmplementeerd."</string> <string name="permlab_addVoicemail" msgid="4770245808840814471">"voicemail toevoegen"</string> @@ -970,7 +969,7 @@ <string name="save_password_notnow" msgid="2878327088951240061">"Niet nu"</string> <string name="save_password_remember" msgid="6490888932657708341">"Onthouden"</string> <string name="save_password_never" msgid="6776808375903410659">"Nooit"</string> - <string name="open_permission_deny" msgid="5136793905306987251">"Je hebt geen toestemming om deze pagina te openen."</string> + <string name="open_permission_deny" msgid="5136793905306987251">"Je hebt geen rechten om deze pagina te openen."</string> <string name="text_copied" msgid="2531420577879738860">"Tekst naar klembord gekopieerd."</string> <string name="copied" msgid="4675902854553014676">"Gekopieerd"</string> <string name="more_item_label" msgid="7419249600215749115">"Meer"</string> @@ -1398,7 +1397,7 @@ <string name="permlab_requestDeletePackages" msgid="2541172829260106795">"verwijdering van pakketten aanvragen"</string> <string name="permdesc_requestDeletePackages" msgid="6133633516423860381">"Hiermee kan een app verwijdering van pakketten aanvragen."</string> <string name="permlab_requestIgnoreBatteryOptimizations" msgid="7646611326036631439">"vragen om batterijoptimalisatie te negeren"</string> - <string name="permdesc_requestIgnoreBatteryOptimizations" msgid="634260656917874356">"Hiermee kan een app toestemming vragen om batterijoptimalisatie voor die app te negeren."</string> + <string name="permdesc_requestIgnoreBatteryOptimizations" msgid="634260656917874356">"Hiermee kan een app rechten vragen om batterijoptimalisatie voor die app te negeren."</string> <string name="tutorial_double_tap_to_zoom_message_short" msgid="1842872462124648678">"Tik twee keer voor zoomregeling"</string> <string name="gadget_host_error_inflating" msgid="2449961590495198720">"Kan widget niet toevoegen."</string> <string name="ime_action_go" msgid="5536744546326495436">"Ga"</string> @@ -1410,13 +1409,13 @@ <string name="ime_action_default" msgid="8265027027659800121">"Uitvoeren"</string> <string name="dial_number_using" msgid="6060769078933953531">"Nummer bellen\nmet <xliff:g id="NUMBER">%s</xliff:g>"</string> <string name="create_contact_using" msgid="6200708808003692594">"Contact maken\nmet <xliff:g id="NUMBER">%s</xliff:g>"</string> - <string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"De volgende apps verzoeken om toegang tot je account, nu en in de toekomst."</string> + <string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"De volgende apps willen toegangsrechten voor je account, nu en in de toekomst."</string> <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"Wil je dit verzoek toestaan?"</string> <string name="grant_permissions_header_text" msgid="3420736827804657201">"Verzoek om toegang"</string> <string name="allow" msgid="6195617008611933762">"Toestaan"</string> <string name="deny" msgid="6632259981847676572">"Weigeren"</string> - <string name="permission_request_notification_title" msgid="1810025922441048273">"Toestemming gevraagd"</string> - <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"Toestemming gevraagd\nvoor account <xliff:g id="ACCOUNT">%s</xliff:g>."</string> + <string name="permission_request_notification_title" msgid="1810025922441048273">"Rechten gevraagd"</string> + <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"Rechten gevraagd\nvoor account <xliff:g id="ACCOUNT">%s</xliff:g>."</string> <string name="forward_intent_to_owner" msgid="4620359037192871015">"Je gebruikt deze app buiten je werkprofiel"</string> <string name="forward_intent_to_work" msgid="3620262405636021151">"U gebruikt deze app in je werkprofiel"</string> <string name="input_method_binding_label" msgid="1166731601721983656">"Invoermethode"</string> @@ -1502,7 +1501,7 @@ <string name="shareactionprovider_share_with" msgid="2753089758467748982">"Delen met"</string> <string name="shareactionprovider_share_with_application" msgid="4902832247173666973">"Delen met <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="content_description_sliding_handle" msgid="982510275422590757">"Schuifgreep. Tikken en blijven aanraken."</string> - <string name="description_target_unlock_tablet" msgid="7431571180065859551">"Vegen om te ontgrendelen"</string> + <string name="description_target_unlock_tablet" msgid="7431571180065859551">"Swipen om te ontgrendelen"</string> <string name="action_bar_home_description" msgid="1501655419158631974">"Navigeren naar startpositie"</string> <string name="action_bar_up_description" msgid="6611579697195026932">"Omhoog navigeren"</string> <string name="action_menu_overflow_description" msgid="4579536843510088170">"Meer opties"</string> @@ -1773,7 +1772,7 @@ </plurals> <string name="restr_pin_try_later" msgid="5897719962541636727">"Probeer het later opnieuw"</string> <string name="immersive_cling_title" msgid="2307034298721541791">"Volledig scherm wordt weergegeven"</string> - <string name="immersive_cling_description" msgid="7092737175345204832">"Veeg omlaag vanaf de bovenkant van het scherm om af te sluiten."</string> + <string name="immersive_cling_description" msgid="7092737175345204832">"Swipe omlaag vanaf de bovenkant van het scherm om af te sluiten."</string> <string name="immersive_cling_positive" msgid="7047498036346489883">"Ik snap het"</string> <string name="done_label" msgid="7283767013231718521">"Gereed"</string> <string name="hour_picker_description" msgid="5153757582093524635">"Ronde schuifregelaar voor uren"</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 84815f7a6133..a1fd3f022555 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"ଅନଲକ୍ କରିବା ପାଇଁ ମେନୁକୁ ଦବାନ୍ତୁ କିମ୍ବା ଜରୁରୀକାଳୀନ କଲ୍ କରନ୍ତୁ।"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"ଅନଲକ୍ କରିବା ପାଇଁ ମେନୁକୁ ଦବାନ୍ତୁ।"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"ଅନଲକ୍ କରିବା ପାଇଁ ପାଟର୍ନ ଆଙ୍କନ୍ତୁ"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"ଜରୁରୀକାଳୀନ କଲ୍"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"କଲ୍କୁ ଫେରନ୍ତୁ"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"ଠିକ୍!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index c29308fd4c5b..903ff83a0572 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"ਅਣਲਾਕ ਕਰਨ ਲਈ ਮੀਨੂ ਦਬਾਓ ਜਾਂ ਸੰਕਟਕਾਲੀਨ ਕਾਲ ਕਰੋ।"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"ਅਣਲਾਕ ਕਰਨ ਲਈ ਮੀਨੂ ਦਬਾਓ।"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"ਅਣਲਾਕ ਕਰਨ ਲਈ ਪੈਟਰਨ ਡ੍ਰਾ ਕਰੋ"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"ਸੰਕਟਕਾਲੀਨ ਕਾਲ"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"ਕਾਲ ਤੇ ਵਾਪਸ ਜਾਓ"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"ਸਹੀ!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index df56457da65a..aeebf8845567 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -838,8 +838,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Naciśnij Menu, aby odblokować lub wykonać połączenie alarmowe."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Naciśnij Menu, aby odblokować."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Narysuj wzór, aby odblokować"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Połączenie alarmowe"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Powrót do połączenia"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Poprawnie!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Spróbuj ponownie."</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 3ecf28d34ffd..aedc0471ac6f 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pressione Menu para desbloquear ou fazer uma chamada de emergência."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pressione Menu para desbloquear."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Desenhe o padrão para desbloquear"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Chamada de emergência"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Retornar à chamada"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correto!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Tente novamente"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index dcc8e17609ac..883e4bf09251 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Prima Menu para desbloquear ou efectuar uma chamada de emergência."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Prima Menu para desbloquear."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Desenhar padrão para desbloquear"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Chamada de emergência"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Regressar à chamada"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correcto!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Tentar novamente"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 3ecf28d34ffd..aedc0471ac6f 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pressione Menu para desbloquear ou fazer uma chamada de emergência."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pressione Menu para desbloquear."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Desenhe o padrão para desbloquear"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Chamada de emergência"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Retornar à chamada"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Correto!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Tente novamente"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 64936689ee6e..ebc5827c2a7a 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -835,8 +835,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Apăsați Meniu pentru a debloca sau pentru a efectua apeluri de urgență."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Apăsați Meniu pentru deblocare."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Desenați modelul pentru a debloca"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Apel de urgență"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Reveniți la apel"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Corect!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Încercați din nou"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 07abf6dbb28d..f3d13ceec060 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -838,8 +838,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Нажмите \"Меню\", чтобы разблокировать экран или вызвать службу экстренной помощи."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Для разблокировки нажмите \"Меню\"."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Введите графический ключ"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Экстренный вызов"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Вернуться к вызову"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Правильно!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Повторите попытку"</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index d494a36520bf..cc6783a4fb3d 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"අගුළු හැරීමට මෙනුව ඔබන්න හෝ හදිසි ඇමතුම ලබාගන්න."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"අගුළු හැරීමට මෙනු ඔබන්න."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"අගුළු ඇරීමට රටාව අඳින්න"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"හදිසි ඇමතුම"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"ඇමතුම වෙත නැවත යන්න"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"නිවැරදියි!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"නැවත උත්සාහ කරන්න"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 52c53015743b..b6125657f408 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -838,8 +838,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Ak chcete odomknúť telefón alebo uskutočniť tiesňové volanie, stlačte Menu."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Telefón odomknete stlačením tlačidla Menu."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Odomknite nakreslením vzoru"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Tiesňové volanie"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Zavolať späť"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Správne!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Skúsiť znova"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index a43c900fb585..9f23a76de1d2 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -838,8 +838,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Če želite odkleniti napravo ali opraviti klic v sili, pritisnite meni."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Če želite odkleniti, pritisnite meni."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Če želite odkleniti, narišite vzorec"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Klic v sili"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Nazaj na klic"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Pravilno."</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Poskusi znova"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 625962fb9bd1..3e7ca92681c5 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Shtyp \"Meny\" për të shkyçur ose për të kryer telefonatë urgjence."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Shtyp \"Meny\" për të shkyçur."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Vizato modelin për ta shkyçur"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Telefonata e urgjencës"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Kthehu te telefonata"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Saktë!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Provo sërish"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 6101dac65f95..a3eb3e412c55 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -835,8 +835,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Притисните „Мени“ да бисте откључали телефон или упутите хитан позив."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Притисните „Мени“ за откључавање."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Унесите шаблон за откључавање"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Хитни позив"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Назад на позив"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Тачно!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Пробајте поново"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index e30bb14384f9..e1442437df77 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Tryck på Menu för att låsa upp eller ringa nödsamtal."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Tryck på Menu för att låsa upp."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Rita grafiskt lösenord för att låsa upp"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Nödsamtal"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Tillbaka till samtal"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Korrekt!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Försök igen"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 4e4c0f656c9f..22736d8bca87 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Bonyeza Menyu ili kufungua au kupiga simu ya dharura."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Bonyeza Menyu ili kufungua."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Chora ruwaza ili kufungua"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Simu ya dharura"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Rudi kwa kupiga simu"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Sahihi!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Jaribu tena"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index a617248071e0..42b2d9c2f273 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"தடைநீக்க மெனுவை அழுத்தவும் அல்லது அவசர அழைப்பை மேற்கொள்ளவும்."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"திறக்க, மெனுவை அழுத்தவும்."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"திறக்க வடிவத்தை வரையவும்"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"அவசர அழைப்பு"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"அழைப்பிற்குத் திரும்பு"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"சரி!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"மீண்டும் முயற்சிக்கவும்"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index 794fec85bcf7..854427b983a0 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"అన్లాక్ చేయడానికి లేదా అత్యవసర కాల్ చేయడానికి మెను నొక్కండి."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"అన్లాక్ చేయడానికి మెను నొక్కండి."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"అన్లాక్ చేయడానికి నమూనాను గీయండి"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"ఎమర్జెన్సీ కాల్"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"కాల్కు తిరిగి వెళ్లు"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"సరైనది!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"మళ్లీ ప్రయత్నించండి"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 3deb9b2b7b82..4b39c63a1bdf 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"กด เมนู เพื่อปลดล็อกหรือโทรฉุกเฉิน"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"กด เมนู เพื่อปลดล็อก"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"วาดรูปแบบเพื่อปลดล็อก"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"หมายเลขฉุกเฉิน"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"กลับสู่การโทร"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"ถูกต้อง!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"ลองอีกครั้ง"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index ccda1c46059e..beebbd23448c 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pindutin ang Menu upang i-unlock o magsagawa ng pang-emergency na tawag."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Pindutin ang Menu upang i-unlock."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Iguhit ang pattern upang i-unlock"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Emergency na tawag"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Bumalik sa tawag"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Tama!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Subukang muli"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 85c69860eb81..17852a6615de 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Kilidi açmak veya acil çağrı yapmak için Menü\'ye basın."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Kilidi açmak için Menü\'ye basın."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Kilit açmak için deseni çizin"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Acil durum araması"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Çağrıya dön"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Doğru!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Tekrar deneyin"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 8ae20a50f7f3..31684e0d1b29 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -838,8 +838,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Натис. меню, щоб розбл. чи зробити авар. виклик."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Натисн. меню, щоб розбл."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Намал. ключ, щоб розбл."</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Екстрений виклик"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Поверн. до дзвін."</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Правильно!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Повторіть спробу"</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 94c6cd450a6c..ed32b2453bf3 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"غیر مقفل کرنے کیلئے مینو دبائیں یا ہنگامی کال کریں۔"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"غیر مقفل کرنے کیلئے مینو دبائیں۔"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"غیر مقفل کرنے کیلئے پیٹرن کو ڈرا کریں"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"ہنگامی کال"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"کال پر واپس جائیں"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"صحیح!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"دوبارہ کوشش کریں"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 74676dfcf226..4f196440334c 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Qulfdan chiqarish yoki favqulodda qo‘ng‘iroqni amalga oshirish uchun \"Menyu\"ni bosing."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Qulfni ochish uchun \"Menyu\"ga bosing."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Qulfni ochish uchun grafik kalitni chizing"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Favqulodda chaqiruv"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Qo‘ng‘iroqni qaytarish"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"To‘g‘ri!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Qaytadan urining"</string> @@ -902,7 +901,7 @@ <string name="keyguard_accessibility_user_selector" msgid="1466067610235696600">"Foydalanuvchi tanlagichi"</string> <string name="keyguard_accessibility_status" msgid="6792745049712397237">"Holati"</string> <string name="keyguard_accessibility_camera" msgid="7862557559464986528">"Kamera"</string> - <string name="keygaurd_accessibility_media_controls" msgid="2267379779900620614">"Media boshqaruvlari"</string> + <string name="keygaurd_accessibility_media_controls" msgid="2267379779900620614">"Media boshqaruvi"</string> <string name="keyguard_accessibility_widget_reorder_start" msgid="7066213328912939191">"Vidjetlarni saralashni boshlandi."</string> <string name="keyguard_accessibility_widget_reorder_end" msgid="1083806817600593490">"Vidjetlarni saralash tugatildi."</string> <string name="keyguard_accessibility_widget_deleted" msgid="1509738950119878705">"<xliff:g id="WIDGET_INDEX">%1$s</xliff:g> vidjeti o‘chirildi."</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 48f38583220d..3cb264da95c3 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Nhấn vào Menu để mở khóa hoặc thực hiện cuộc gọi khẩn cấp."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Nhấn vào Menu để mở khóa."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Vẽ hình để mở khóa"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Cuộc gọi khẩn cấp"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Quay lại cuộc gọi"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Chính xác!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Thử lại"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index bf381ec53751..0a241dab0954 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"按 Menu 解锁或进行紧急呼救。"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"按 MENU 解锁。"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"绘制解锁图案"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"紧急呼叫"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"返回通话"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"正确!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"重试"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index a3b20d128726..6e584d6182d9 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"按選單鍵解鎖或撥打緊急電話。"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"按選單鍵解鎖。"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"畫出解鎖圖形以解除鎖定螢幕"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"緊急電話"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"返回通話"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"正確!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"再試一次"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index f6543c9285d2..ab1a42375871 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"按下 [Menu] 解鎖或撥打緊急電話。"</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"按下 Menu 鍵解鎖。"</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"畫出解鎖圖案"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"緊急電話"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"返回通話"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"正確!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"再試一次"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 85f54e9f9f5e..582d4350882c 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -832,8 +832,7 @@ <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Chofoza Menyu ukuvula noma ukwenza ikholi ephuthumayo."</string> <string name="lockscreen_instructions_when_pattern_disabled" msgid="7434061749374801753">"Chofoza Menyu ukuvula."</string> <string name="lockscreen_pattern_instructions" msgid="3169991838169244941">"Dweba iphathini ukuvula"</string> - <!-- no translation found for lockscreen_emergency_call (7549683825868928636) --> - <skip /> + <string name="lockscreen_emergency_call" msgid="7549683825868928636">"Ikholi ephuthumayo"</string> <string name="lockscreen_return_to_call" msgid="3156883574692006382">"Buyela ekholini"</string> <string name="lockscreen_pattern_correct" msgid="8050630103651508582">"Lungile!"</string> <string name="lockscreen_pattern_wrong" msgid="2940138714468358458">"Zama futhi"</string> diff --git a/graphics/proto/Android.bp b/graphics/proto/Android.bp index ddced597759f..ea79b731a365 100644 --- a/graphics/proto/Android.bp +++ b/graphics/proto/Android.bp @@ -1,10 +1,10 @@ java_library_static { - name: "game-driver-protos", + name: "updatable-driver-protos", host_supported: true, proto: { type: "lite", }, - srcs: ["game_driver.proto"], + srcs: ["updatable_driver.proto"], jarjar_rules: "jarjar-rules.txt", - sdk_version: "28", + sdk_version: "30", } diff --git a/graphics/proto/game_driver.proto b/graphics/proto/updatable_driver.proto index fd7ffccac24c..cbc9424854d1 100644 --- a/graphics/proto/game_driver.proto +++ b/graphics/proto/updatable_driver.proto @@ -16,16 +16,16 @@ syntax = "proto2"; -package android.gamedriver; +package android.updatabledriver; -option java_package = "android.gamedriver"; -option java_outer_classname = "GameDriverProto"; +option java_package = "android.updatabledriver"; +option java_outer_classname = "UpdatableDriverProto"; -message Blacklist { +message Denylist { optional int64 version_code = 1; repeated string package_names = 2; } -message Blacklists { - repeated Blacklist blacklists = 1; +message Denylists { + repeated Denylist denylists = 1; } diff --git a/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SettingsSidecarImpl.java b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SettingsSidecarImpl.java index 92e575804bbe..ca3a5112bc55 100644 --- a/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SettingsSidecarImpl.java +++ b/libs/WindowManager/Jetpack/src/androidx/window/sidecar/SettingsSidecarImpl.java @@ -192,7 +192,7 @@ class SettingsSidecarImpl extends StubSidecar { Rect featureRect = new Rect(left, top, right, bottom); rotateRectToDisplayRotation(featureRect, displayId); transformToWindowSpaceRect(featureRect, windowToken); - if (!featureRect.isEmpty()) { + if (isNotZero(featureRect)) { SidecarDisplayFeature feature = new SidecarDisplayFeature(); feature.setRect(featureRect); feature.setType(type); @@ -207,6 +207,10 @@ class SettingsSidecarImpl extends StubSidecar { return features; } + private static boolean isNotZero(Rect rect) { + return rect.height() > 0 || rect.width() > 0; + } + @Override protected void onListenersChanged() { if (mSettingsObserver == null) { diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp index 565fb61c8994..bea6121905a5 100644 --- a/libs/hwui/renderthread/RenderThread.cpp +++ b/libs/hwui/renderthread/RenderThread.cpp @@ -162,6 +162,7 @@ void RenderThread::initializeChoreographer() { } void RenderThread::initThreadLocals() { + HardwareBitmapUploader::initialize(); setupFrameInterval(); initializeChoreographer(); mEglManager = new EglManager(); @@ -390,10 +391,12 @@ void RenderThread::preload() { if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaGL) { std::thread eglInitThread([]() { eglGetDisplay(EGL_DEFAULT_DISPLAY); }); eglInitThread.detach(); - } else { - requireVkContext(); } - HardwareBitmapUploader::initialize(); + // TODO: uncomment only after http://b/135536511 is fixed. + // else { + // uint32_t apiVersion; + // vkEnumerateInstanceVersion(&apiVersion); + //} } } /* namespace renderthread */ diff --git a/non-updatable-api/current.txt b/non-updatable-api/current.txt index 66637ef93598..d25a231ca750 100644 --- a/non-updatable-api/current.txt +++ b/non-updatable-api/current.txt @@ -43605,6 +43605,7 @@ package android.system { package android.telecom { public final class Call { + method public void addConferenceParticipants(@NonNull java.util.List<android.net.Uri>); method public void answer(int); method public void conference(android.telecom.Call); method public void deflect(android.net.Uri); @@ -43713,6 +43714,7 @@ package android.telecom { method public static boolean hasProperty(int, int); method public boolean hasProperty(int); method public static String propertiesToString(int); + field public static final int CAPABILITY_ADD_PARTICIPANT = 33554432; // 0x2000000 field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 4194304; // 0x400000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_PULL_CALL = 8388608; // 0x800000 @@ -43742,6 +43744,7 @@ package android.telecom { field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2 field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 128; // 0x80 field public static final int PROPERTY_HIGH_DEF_AUDIO = 16; // 0x10 + field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 8192; // 0x2000 field public static final int PROPERTY_IS_EXTERNAL_CALL = 64; // 0x40 field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 2048; // 0x800 field public static final int PROPERTY_RTT = 1024; // 0x400 @@ -43819,6 +43822,7 @@ package android.telecom { public abstract class Conference extends android.telecom.Conferenceable { ctor public Conference(android.telecom.PhoneAccountHandle); method public final boolean addConnection(android.telecom.Connection); + method @NonNull public static android.telecom.Conference createFailedConference(@NonNull android.telecom.DisconnectCause, @NonNull android.telecom.PhoneAccountHandle); method public final void destroy(); method public final android.telecom.CallAudioState getCallAudioState(); method public final java.util.List<android.telecom.Connection> getConferenceableConnections(); @@ -43834,6 +43838,9 @@ package android.telecom { method public final android.telecom.StatusHints getStatusHints(); method public android.telecom.Connection.VideoProvider getVideoProvider(); method public int getVideoState(); + method public final boolean isRingbackRequested(); + method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>); + method public void onAnswer(int); method public void onCallAudioStateChanged(android.telecom.CallAudioState); method public void onConnectionAdded(android.telecom.Connection); method public void onDisconnect(); @@ -43842,6 +43849,7 @@ package android.telecom { method public void onMerge(android.telecom.Connection); method public void onMerge(); method public void onPlayDtmfTone(char); + method public void onReject(); method public void onSeparate(android.telecom.Connection); method public void onStopDtmfTone(); method public void onSwap(); @@ -43862,6 +43870,8 @@ package android.telecom { method public final void setDisconnected(android.telecom.DisconnectCause); method public final void setExtras(@Nullable android.os.Bundle); method public final void setOnHold(); + method public final void setRingbackRequested(boolean); + method public final void setRinging(); method public final void setStatusHints(android.telecom.StatusHints); method public final void setVideoProvider(android.telecom.Connection, android.telecom.Connection.VideoProvider); method public final void setVideoState(android.telecom.Connection, int); @@ -43898,6 +43908,7 @@ package android.telecom { method public final boolean isRingbackRequested(); method public final void notifyConferenceMergeFailed(); method public void onAbort(); + method public void onAddConferenceParticipants(@NonNull java.util.List<android.net.Uri>); method public void onAnswer(int); method public void onAnswer(); method public void onCallAudioStateChanged(android.telecom.CallAudioState); @@ -43977,6 +43988,7 @@ package android.telecom { field public static final int AUDIO_CODEC_GSM_HR = 10; // 0xa field public static final int AUDIO_CODEC_NONE = 0; // 0x0 field public static final int AUDIO_CODEC_QCELP13K = 3; // 0x3 + field public static final int CAPABILITY_ADD_PARTICIPANT = 67108864; // 0x4000000 field public static final int CAPABILITY_CANNOT_DOWNGRADE_VIDEO_TO_AUDIO = 8388608; // 0x800000 field public static final int CAPABILITY_CAN_PAUSE_VIDEO = 1048576; // 0x100000 field public static final int CAPABILITY_CAN_PULL_CALL = 16777216; // 0x1000000 @@ -44020,6 +44032,7 @@ package android.telecom { field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200 field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 32; // 0x20 field public static final int PROPERTY_HIGH_DEF_AUDIO = 4; // 0x4 + field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 4096; // 0x1000 field public static final int PROPERTY_IS_EXTERNAL_CALL = 16; // 0x10 field public static final int PROPERTY_IS_RTT = 256; // 0x100 field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 1024; // 0x400 @@ -44115,9 +44128,13 @@ package android.telecom { method public void onConference(android.telecom.Connection, android.telecom.Connection); method public void onConnectionServiceFocusGained(); method public void onConnectionServiceFocusLost(); + method @Nullable public android.telecom.Conference onCreateIncomingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest); + method public void onCreateIncomingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest); method public android.telecom.Connection onCreateIncomingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); method public void onCreateIncomingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); method public android.telecom.Connection onCreateIncomingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); + method @Nullable public android.telecom.Conference onCreateOutgoingConference(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest); + method public void onCreateOutgoingConferenceFailed(@Nullable android.telecom.PhoneAccountHandle, @Nullable android.telecom.ConnectionRequest); method public android.telecom.Connection onCreateOutgoingConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); method public void onCreateOutgoingConnectionFailed(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); method public android.telecom.Connection onCreateOutgoingHandoverConnection(android.telecom.PhoneAccountHandle, android.telecom.ConnectionRequest); @@ -44428,6 +44445,7 @@ package android.telecom { method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(int); method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle); + method public void addNewIncomingConference(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.os.Bundle); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void cancelMissedCallsNotification(); method public android.content.Intent createManageBlockedNumbersIntent(); method @Deprecated @RequiresPermission(android.Manifest.permission.ANSWER_PHONE_CALLS) public boolean endCall(); @@ -44455,6 +44473,7 @@ package android.telecom { method public void registerPhoneAccount(android.telecom.PhoneAccount); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public void showInCallScreen(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void silenceRinger(); + method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void startConference(@NonNull java.util.List<android.net.Uri>, @NonNull android.os.Bundle); method public void unregisterPhoneAccount(android.telecom.PhoneAccountHandle); field public static final String ACTION_CHANGE_DEFAULT_DIALER = "android.telecom.action.CHANGE_DEFAULT_DIALER"; field public static final String ACTION_CHANGE_PHONE_ACCOUNTS = "android.telecom.action.CHANGE_PHONE_ACCOUNTS"; @@ -44994,6 +45013,8 @@ package android.telephony { field public static final String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool"; field public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool"; field public static final String KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL = "support_3gpp_call_forwarding_while_roaming_bool"; + field public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL = "support_add_conference_participants_bool"; + field public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL = "support_adhoc_conference_calls_bool"; field public static final String KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL = "support_clir_network_default_bool"; field public static final String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool"; field public static final String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool"; diff --git a/non-updatable-api/module-lib-current.txt b/non-updatable-api/module-lib-current.txt index c1dbfb7a9be7..45ff6d3893e3 100644 --- a/non-updatable-api/module-lib-current.txt +++ b/non-updatable-api/module-lib-current.txt @@ -37,6 +37,11 @@ package android.os { method public final void markVintfStability(); } + public interface Parcelable { + field public static final int PARCELABLE_STABILITY_LOCAL = 0; // 0x0 + field public static final int PARCELABLE_STABILITY_VINTF = 1; // 0x1 + } + public class StatsServiceManager { method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsCompanionServiceRegisterer(); method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsManagerServiceRegisterer(); diff --git a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserGridRecyclerView.java b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserGridRecyclerView.java index d0a2aebdb80a..5bd8797c5349 100644 --- a/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserGridRecyclerView.java +++ b/packages/CarSystemUI/src/com/android/systemui/car/userswitcher/UserGridRecyclerView.java @@ -33,6 +33,7 @@ import android.car.user.CarUserManager; import android.car.user.UserCreationResult; import android.car.user.UserSwitchResult; import android.car.userlib.UserHelper; +import android.car.util.concurrent.AsyncFuture; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; @@ -60,7 +61,6 @@ import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import com.android.internal.infra.AndroidFuture; import com.android.internal.util.UserIcons; import com.android.systemui.R; @@ -449,7 +449,7 @@ public class UserGridRecyclerView extends RecyclerView { */ @Nullable public UserInfo createNewOrFindExistingGuest(Context context) { - AndroidFuture<UserCreationResult> future = mCarUserManager.createGuest(mGuestName); + AsyncFuture<UserCreationResult> future = mCarUserManager.createGuest(mGuestName); // CreateGuest will return null if a guest already exists. UserInfo newGuest = getUserInfo(future); if (newGuest != null) { @@ -482,7 +482,7 @@ public class UserGridRecyclerView extends RecyclerView { } @Nullable - private UserInfo getUserInfo(AndroidFuture<UserCreationResult> future) { + private UserInfo getUserInfo(AsyncFuture<UserCreationResult> future) { UserCreationResult userCreationResult; try { userCreationResult = future.get(TIMEOUT_MS, TimeUnit.MILLISECONDS); @@ -504,7 +504,7 @@ public class UserGridRecyclerView extends RecyclerView { } private boolean switchUser(@UserIdInt int userId) { - AndroidFuture<UserSwitchResult> userSwitchResultFuture = + AsyncFuture<UserSwitchResult> userSwitchResultFuture = mCarUserManager.switchUser(userId); UserSwitchResult userSwitchResult; try { @@ -531,7 +531,7 @@ public class UserGridRecyclerView extends RecyclerView { @Override protected UserInfo doInBackground(String... userNames) { - AndroidFuture<UserCreationResult> future = mCarUserManager.createUser(userNames[0], + AsyncFuture<UserCreationResult> future = mCarUserManager.createUser(userNames[0], /* flags= */ 0); try { UserInfo user = getUserInfo(future); diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index ef3bdbc95809..df0137d8179e 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -785,14 +785,14 @@ class SettingsProtoDumpUtil { Settings.Global.GAME_DRIVER_OPT_OUT_APPS, GlobalSettingsProto.Gpu.GAME_DRIVER_OPT_OUT_APPS); dumpSetting(s, p, - Settings.Global.GAME_DRIVER_BLACKLIST, - GlobalSettingsProto.Gpu.GAME_DRIVER_BLACKLIST); + Settings.Global.GAME_DRIVER_DENYLIST, + GlobalSettingsProto.Gpu.GAME_DRIVER_DENYLIST); dumpSetting(s, p, - Settings.Global.GAME_DRIVER_WHITELIST, - GlobalSettingsProto.Gpu.GAME_DRIVER_WHITELIST); + Settings.Global.GAME_DRIVER_ALLOWLIST, + GlobalSettingsProto.Gpu.GAME_DRIVER_ALLOWLIST); dumpSetting(s, p, - Settings.Global.GAME_DRIVER_BLACKLISTS, - GlobalSettingsProto.Gpu.GAME_DRIVER_BLACKLISTS); + Settings.Global.GAME_DRIVER_DENYLISTS, + GlobalSettingsProto.Gpu.GAME_DRIVER_DENYLISTS); dumpSetting(s, p, Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, GlobalSettingsProto.Gpu.GAME_DRIVER_SPHAL_LIBRARIES); diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java index 6914f0a1e33a..74ab00412967 100644 --- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java +++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java @@ -507,9 +507,9 @@ public class SettingsBackupTest { Settings.Global.GAME_DRIVER_OPT_IN_APPS, Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS, Settings.Global.GAME_DRIVER_OPT_OUT_APPS, - Settings.Global.GAME_DRIVER_BLACKLISTS, - Settings.Global.GAME_DRIVER_BLACKLIST, - Settings.Global.GAME_DRIVER_WHITELIST, + Settings.Global.GAME_DRIVER_DENYLISTS, + Settings.Global.GAME_DRIVER_DENYLIST, + Settings.Global.GAME_DRIVER_ALLOWLIST, Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, Settings.Global.GLOBAL_SETTINGS_SHOW_ANGLE_IN_USE_DIALOG_BOX, Settings.Global.GPU_DEBUG_LAYER_APP, diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java index 76adf04b21e7..1c47aa0151f0 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinView.java @@ -141,7 +141,7 @@ public class KeyguardSimPinView extends KeyguardPinBasedInputView { // Sending empty PIN here to query the number of remaining PIN attempts new CheckSimPin("", mSubId) { void onSimCheckResponse(final PinResult result) { - Log.d(LOG_TAG, "onSimCheckResponse " + " dummy One result " + Log.d(LOG_TAG, "onSimCheckResponse " + " empty One result " + result.toString()); if (result.getAttemptsRemaining() >= 0) { mRemainingAttempts = result.getAttemptsRemaining(); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java index a84664ceee3d..5148dd709026 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukView.java @@ -195,7 +195,7 @@ public class KeyguardSimPukView extends KeyguardPinBasedInputView { void onSimLockChangedResponse(final PinResult result) { if (result == null) Log.e(LOG_TAG, "onSimCheckResponse, pin result is NULL"); else { - Log.d(LOG_TAG, "onSimCheckResponse " + " dummy One result " + Log.d(LOG_TAG, "onSimCheckResponse " + " empty One result " + result.toString()); if (result.getAttemptsRemaining() >= 0) { mRemainingAttempts = result.getAttemptsRemaining(); diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java index 426e400c9fb9..78af8aa19b44 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java @@ -25,6 +25,7 @@ import android.graphics.Rect; import android.os.Handler; import android.os.RemoteException; import android.util.Log; +import android.view.SurfaceControl; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.IWindowMagnificationConnection; import android.view.accessibility.IWindowMagnificationConnectionCallback; @@ -97,7 +98,7 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall mWindowMagnificationController = new WindowMagnificationController(mContext, mHandler, new SfVsyncFrameCallbackProvider(), - null, + null, new SurfaceControl.Transaction(), this); } mWindowMagnificationController.enableWindowMagnification(scale, centerX, centerY); @@ -136,6 +137,13 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall } @Override + public void onSourceBoundsChanged(int displayId, Rect sourceBounds) { + if (mWindowMagnificationConnectionImpl != null) { + mWindowMagnificationConnectionImpl.onSourceBoundsChanged(displayId, sourceBounds); + } + } + + @Override public void requestWindowMagnificationConnection(boolean connect) { if (connect) { setWindowMagnificationConnection(); @@ -225,5 +233,15 @@ public class WindowMagnification extends SystemUI implements WindowMagnifierCall } } } + + void onSourceBoundsChanged(int displayId, Rect sourceBounds) { + if (mConnectionCallback != null) { + try { + mConnectionCallback.onSourceBoundsChanged(displayId, sourceBounds); + } catch (RemoteException e) { + Log.e(TAG, "Failed to inform source bounds changed", e); + } + } + } } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java index 8b6581ff1856..798b751c03ee 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java @@ -67,7 +67,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold @Surface.Rotation private int mRotation; private final Rect mMagnificationFrame = new Rect(); - private final SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction(); + private final SurfaceControl.Transaction mTransaction; private final WindowManager mWm; @@ -75,6 +75,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold private final Rect mTmpRect = new Rect(); private final Rect mMirrorViewBounds = new Rect(); + private final Rect mSourceBounds = new Rect(); // The root of the mirrored content private SurfaceControl mMirrorSurface; @@ -101,22 +102,14 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold private final Rect mMagnificationFrameBoundary = new Rect(); private final SfVsyncFrameCallbackProvider mSfVsyncFrameProvider; - private final Choreographer.FrameCallback mMirrorViewGeometryVsyncCallback = - l -> { - if (mMirrorView != null) { - final Rect sourceBounds = getSourceBounds(mMagnificationFrame, mScale); - mTransaction.setGeometry(mMirrorSurface, sourceBounds, mTmpRect, - Surface.ROTATION_0).apply(); - } - }; + private Choreographer.FrameCallback mMirrorViewGeometryVsyncCallback; @Nullable private MirrorWindowControl mMirrorWindowControl; - WindowMagnificationController(Context context, - @NonNull Handler handler, + WindowMagnificationController(Context context, @NonNull Handler handler, SfVsyncFrameCallbackProvider sfVsyncFrameProvider, - MirrorWindowControl mirrorWindowControl, + MirrorWindowControl mirrorWindowControl, SurfaceControl.Transaction transaction, @NonNull WindowMagnifierCallback callback) { mContext = context; mHandler = handler; @@ -137,6 +130,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold if (mMirrorWindowControl != null) { mMirrorWindowControl.setWindowDelegate(this); } + mTransaction = transaction; setInitialStartBounds(); // Initialize listeners. @@ -153,6 +147,20 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold mMirrorSurfaceViewLayoutChangeListener = (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> applyTapExcludeRegion(); + + mMirrorViewGeometryVsyncCallback = + l -> { + if (mMirrorView != null && mMirrorSurface != null) { + calculateSourceBounds(mMagnificationFrame, mScale); + // The final destination for the magnification surface should be at 0,0 + // since the ViewRootImpl's position will change + mTmpRect.set(0, 0, mMagnificationFrame.width(), + mMagnificationFrame.height()); + mTransaction.setGeometry(mMirrorSurface, mSourceBounds, mTmpRect, + Surface.ROTATION_0).apply(); + mWindowMagnifierCallback.onSourceBoundsChanged(mDisplayId, mSourceBounds); + } + }; } private void updateDimensions() { @@ -350,13 +358,9 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold * Modifies the placement of the mirrored content when the position of mMirrorView is updated. */ private void modifyWindowMagnification(SurfaceControl.Transaction t) { - // The final destination for the magnification surface should be at 0,0 since the - // ViewRootImpl's position will change - mTmpRect.set(0, 0, mMagnificationFrame.width(), mMagnificationFrame.height()); - + mSfVsyncFrameProvider.postFrameCallback(mMirrorViewGeometryVsyncCallback); updateMirrorViewLayout(); - mSfVsyncFrameProvider.postFrameCallback(mMirrorViewGeometryVsyncCallback); } /** @@ -420,14 +424,14 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold * Calculates the desired source bounds. This will be the area under from the center of the * displayFrame, factoring in scale. */ - private Rect getSourceBounds(Rect displayFrame, float scale) { + private void calculateSourceBounds(Rect displayFrame, float scale) { int halfWidth = displayFrame.width() / 2; int halfHeight = displayFrame.height() / 2; int left = displayFrame.left + (halfWidth - (int) (halfWidth / scale)); int right = displayFrame.right - (halfWidth - (int) (halfWidth / scale)); int top = displayFrame.top + (halfHeight - (int) (halfHeight / scale)); int bottom = displayFrame.bottom - (halfHeight - (int) (halfHeight / scale)); - return new Rect(left, top, right, bottom); + mSourceBounds.set(left, top, right, bottom); } private void setMagnificationFrameBoundary() { diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java index 2adb3ebb7bce..e405a89766e2 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java @@ -29,4 +29,12 @@ interface WindowMagnifierCallback { * @param bounds The bounds of window magnifier on the screen. */ void onWindowMagnifierBoundsChanged(int displayId, Rect bounds); + + /** + * Called when the magnified bounds is changed. + * + * @param displayId The logical display id. + * @param sourceBounds The magnified bounds in screen coordinates. + */ + void onSourceBoundsChanged(int displayId, Rect sourceBounds); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java index a898c3ce2773..2007fbb8fc6c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java @@ -16,13 +16,19 @@ package com.android.systemui.accessibility; +import static android.view.Choreographer.FrameCallback; + import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.app.Instrumentation; import android.os.Handler; import android.testing.AndroidTestingRunner; +import android.view.SurfaceControl; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; @@ -49,6 +55,8 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { MirrorWindowControl mMirrorWindowControl; @Mock WindowMagnifierCallback mWindowMagnifierCallback; + @Mock + SurfaceControl.Transaction mTransaction; private WindowMagnificationController mWindowMagnificationController; private Instrumentation mInstrumentation; @@ -56,9 +64,19 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { public void setUp() { MockitoAnnotations.initMocks(this); mInstrumentation = InstrumentationRegistry.getInstrumentation(); + doAnswer(invocation -> { + FrameCallback callback = invocation.getArgument(0); + callback.doFrame(0); + return null; + }).when(mSfVsyncFrameProvider).postFrameCallback( + any(FrameCallback.class)); + when(mTransaction.remove(any())).thenReturn(mTransaction); + when(mTransaction.setGeometry(any(), any(), any(), + anyInt())).thenReturn(mTransaction); + mWindowMagnificationController = new WindowMagnificationController(getContext(), mHandler, mSfVsyncFrameProvider, - mMirrorWindowControl, mWindowMagnifierCallback); + mMirrorWindowControl, mTransaction, mWindowMagnifierCallback); verify(mMirrorWindowControl).setWindowDelegate( any(MirrorWindowControl.MirrorWindowDelegate.class)); } @@ -71,7 +89,7 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { } @Test - public void createWindowMagnification_showControl() { + public void enableWindowMagnification_showControl() { mInstrumentation.runOnMainSync(() -> { mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN, Float.NaN); diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java index a08c2dd4292d..ed2b26f24478 100644 --- a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java +++ b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java @@ -384,7 +384,7 @@ public class WindowMagnificationManager implements synchronized (mLock) { WindowMagnifier magnifier = mWindowMagnifiers.get(displayId); if (magnifier == null) { - return; + magnifier = createWindowMagnifier(displayId); } if (DBG) { Slog.i(TAG, @@ -401,6 +401,15 @@ public class WindowMagnificationManager implements } @Override + public void onSourceBoundsChanged(int displayId, Rect sourceBounds) { + WindowMagnifier magnifier = mWindowMagnifiers.get(displayId); + if (magnifier == null) { + magnifier = createWindowMagnifier(displayId); + } + magnifier.onSourceBoundsChanged(sourceBounds); + } + + @Override public void binderDied() { synchronized (mLock) { Slog.w(TAG, "binderDied DeathRecipient :" + mExpiredDeathRecipient); @@ -427,6 +436,8 @@ public class WindowMagnificationManager implements private final WindowMagnificationManager mWindowMagnificationManager; //Records the bounds of window magnifier. private final Rect mBounds = new Rect(); + //The magnified bounds on the screen. + private final Rect mSourceBounds = new Rect(); WindowMagnifier(int displayId, WindowMagnificationManager windowMagnificationManager) { mDisplayId = displayId; mWindowMagnificationManager = windowMagnificationManager; @@ -502,6 +513,10 @@ public class WindowMagnificationManager implements void reset() { mEnabled = false; } + + public void onSourceBoundsChanged(Rect sourceBounds) { + mSourceBounds.set(sourceBounds); + } } private boolean enableWindowMagnification(int displayId, float scale, float centerX, diff --git a/services/core/java/com/android/server/am/CoreSettingsObserver.java b/services/core/java/com/android/server/am/CoreSettingsObserver.java index ca61788d1918..00b33c4c3e68 100644 --- a/services/core/java/com/android/server/am/CoreSettingsObserver.java +++ b/services/core/java/com/android/server/am/CoreSettingsObserver.java @@ -105,9 +105,9 @@ final class CoreSettingsObserver extends ContentObserver { sGlobalSettingToTypeMap.put( Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_OPT_OUT_APPS, String.class); - sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_BLACKLIST, String.class); - sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_WHITELIST, String.class); - sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_BLACKLISTS, String.class); + sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_DENYLIST, String.class); + sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_ALLOWLIST, String.class); + sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_DENYLISTS, String.class); sGlobalSettingToTypeMap.put(Settings.Global.GAME_DRIVER_SPHAL_LIBRARIES, String.class); // add other global settings here... diff --git a/services/core/java/com/android/server/gpu/GpuService.java b/services/core/java/com/android/server/gpu/GpuService.java index 8a3c963f4805..c0617ca95f9f 100644 --- a/services/core/java/com/android/server/gpu/GpuService.java +++ b/services/core/java/com/android/server/gpu/GpuService.java @@ -29,8 +29,6 @@ import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.database.ContentObserver; -import android.gamedriver.GameDriverProto.Blacklist; -import android.gamedriver.GameDriverProto.Blacklists; import android.net.Uri; import android.os.Build; import android.os.Handler; @@ -40,6 +38,8 @@ import android.provider.DeviceConfig; import android.provider.DeviceConfig.Properties; import android.provider.Settings; import android.text.TextUtils; +import android.updatabledriver.UpdatableDriverProto.Denylist; +import android.updatabledriver.UpdatableDriverProto.Denylists; import android.util.Base64; import android.util.Slog; @@ -65,7 +65,7 @@ public class GpuService extends SystemService { private static final String PROD_DRIVER_PROPERTY = "ro.gfx.driver.0"; private static final String DEV_DRIVER_PROPERTY = "ro.gfx.driver.1"; - private static final String GAME_DRIVER_WHITELIST_FILENAME = "whitelist.txt"; + private static final String GAME_DRIVER_ALLOWLIST_FILENAME = "allowlist.txt"; private static final int BASE64_FLAGS = Base64.NO_PADDING | Base64.NO_WRAP; private final Context mContext; @@ -81,7 +81,7 @@ public class GpuService extends SystemService { private SettingsObserver mSettingsObserver; private DeviceConfigListener mDeviceConfigListener; @GuardedBy("mLock") - private Blacklists mBlacklists; + private Denylists mDenylists; public GpuService(Context context) { super(context); @@ -118,19 +118,19 @@ public class GpuService extends SystemService { mSettingsObserver = new SettingsObserver(); mDeviceConfigListener = new DeviceConfigListener(); fetchGameDriverPackageProperties(); - processBlacklists(); - setBlacklist(); + processDenylists(); + setDenylist(); fetchDeveloperDriverPackageProperties(); } } private final class SettingsObserver extends ContentObserver { - private final Uri mGameDriverBlackUri = - Settings.Global.getUriFor(Settings.Global.GAME_DRIVER_BLACKLISTS); + private final Uri mGameDriverDenylistsUri = + Settings.Global.getUriFor(Settings.Global.GAME_DRIVER_DENYLISTS); SettingsObserver() { super(new Handler()); - mContentResolver.registerContentObserver(mGameDriverBlackUri, false, this, + mContentResolver.registerContentObserver(mGameDriverDenylistsUri, false, this, UserHandle.USER_ALL); } @@ -140,9 +140,9 @@ public class GpuService extends SystemService { return; } - if (mGameDriverBlackUri.equals(uri)) { - processBlacklists(); - setBlacklist(); + if (mGameDriverDenylistsUri.equals(uri)) { + processDenylists(); + setDenylist(); } } } @@ -157,10 +157,10 @@ public class GpuService extends SystemService { @Override public void onPropertiesChanged(Properties properties) { synchronized (mDeviceConfigLock) { - if (properties.getKeyset().contains(Settings.Global.GAME_DRIVER_BLACKLISTS)) { - parseBlacklists( - properties.getString(Settings.Global.GAME_DRIVER_BLACKLISTS, "")); - setBlacklist(); + if (properties.getKeyset().contains(Settings.Global.GAME_DRIVER_DENYLISTS)) { + parseDenylists( + properties.getString(Settings.Global.GAME_DRIVER_DENYLISTS, "")); + setDenylist(); } } } @@ -187,7 +187,7 @@ public class GpuService extends SystemService { case ACTION_PACKAGE_REMOVED: if (isProdDriver) { fetchGameDriverPackageProperties(); - setBlacklist(); + setDenylist(); } else if (isDevDriver) { fetchDeveloperDriverPackageProperties(); } @@ -239,17 +239,17 @@ public class GpuService extends SystemService { return; } - // Reset the whitelist. + // Reset the allowlist. Settings.Global.putString(mContentResolver, - Settings.Global.GAME_DRIVER_WHITELIST, ""); + Settings.Global.GAME_DRIVER_ALLOWLIST, ""); mGameDriverVersionCode = driverInfo.longVersionCode; try { final Context driverContext = mContext.createPackageContext(mProdDriverPackageName, Context.CONTEXT_RESTRICTED); - assetToSettingsGlobal(mContext, driverContext, GAME_DRIVER_WHITELIST_FILENAME, - Settings.Global.GAME_DRIVER_WHITELIST, ","); + assetToSettingsGlobal(mContext, driverContext, GAME_DRIVER_ALLOWLIST_FILENAME, + Settings.Global.GAME_DRIVER_ALLOWLIST, ","); } catch (PackageManager.NameNotFoundException e) { if (DEBUG) { Slog.w(TAG, "driver package '" + mProdDriverPackageName + "' not installed"); @@ -257,48 +257,48 @@ public class GpuService extends SystemService { } } - private void processBlacklists() { + private void processDenylists() { String base64String = DeviceConfig.getProperty(DeviceConfig.NAMESPACE_GAME_DRIVER, - Settings.Global.GAME_DRIVER_BLACKLISTS); + Settings.Global.GAME_DRIVER_DENYLISTS); if (base64String == null) { base64String = Settings.Global.getString(mContentResolver, - Settings.Global.GAME_DRIVER_BLACKLISTS); + Settings.Global.GAME_DRIVER_DENYLISTS); } - parseBlacklists(base64String != null ? base64String : ""); + parseDenylists(base64String != null ? base64String : ""); } - private void parseBlacklists(String base64String) { + private void parseDenylists(String base64String) { synchronized (mLock) { - // Reset all blacklists - mBlacklists = null; + // Reset all denylists + mDenylists = null; try { - mBlacklists = Blacklists.parseFrom(Base64.decode(base64String, BASE64_FLAGS)); + mDenylists = Denylists.parseFrom(Base64.decode(base64String, BASE64_FLAGS)); } catch (IllegalArgumentException e) { if (DEBUG) { - Slog.w(TAG, "Can't parse blacklist, skip and continue..."); + Slog.w(TAG, "Can't parse denylist, skip and continue..."); } } catch (InvalidProtocolBufferException e) { if (DEBUG) { - Slog.w(TAG, "Can't parse blacklist, skip and continue..."); + Slog.w(TAG, "Can't parse denylist, skip and continue..."); } } } } - private void setBlacklist() { + private void setDenylist() { Settings.Global.putString(mContentResolver, - Settings.Global.GAME_DRIVER_BLACKLIST, ""); + Settings.Global.GAME_DRIVER_DENYLIST, ""); synchronized (mLock) { - if (mBlacklists == null) { + if (mDenylists == null) { return; } - List<Blacklist> blacklists = mBlacklists.getBlacklistsList(); - for (Blacklist blacklist : blacklists) { - if (blacklist.getVersionCode() == mGameDriverVersionCode) { + List<Denylist> denylists = mDenylists.getDenylistsList(); + for (Denylist denylist : denylists) { + if (denylist.getVersionCode() == mGameDriverVersionCode) { Settings.Global.putString(mContentResolver, - Settings.Global.GAME_DRIVER_BLACKLIST, - String.join(",", blacklist.getPackageNamesList())); + Settings.Global.GAME_DRIVER_DENYLIST, + String.join(",", denylist.getPackageNamesList())); return; } } diff --git a/services/core/jni/com_android_server_fingerprint_FingerprintService.cpp b/services/core/jni/com_android_server_fingerprint_FingerprintService.cpp index 503f0cf993d4..3dfce3aec059 100644 --- a/services/core/jni/com_android_server_fingerprint_FingerprintService.cpp +++ b/services/core/jni/com_android_server_fingerprint_FingerprintService.cpp @@ -235,7 +235,7 @@ static jint nativeOpenHal(JNIEnv* env, jobject clazz) { return 0; } - // Sanity check - remove + // Soundness check - remove if (gContext.device->notify != hal_notify_callback) { ALOGE("NOTIFY not set properly: %p != %p", gContext.device->notify, hal_notify_callback); } diff --git a/services/usb/java/com/android/server/usb/UsbPortManager.java b/services/usb/java/com/android/server/usb/UsbPortManager.java index 1025bf5d67b0..ec7d4bd0d8c0 100644 --- a/services/usb/java/com/android/server/usb/UsbPortManager.java +++ b/services/usb/java/com/android/server/usb/UsbPortManager.java @@ -922,7 +922,7 @@ public class UsbPortManager { contaminantDetectionStatus); mPorts.put(portId, portInfo); } else { - // Sanity check that ports aren't changing definition out from under us. + // Validate that ports aren't changing definition out from under us. if (supportedModes != portInfo.mUsbPort.getSupportedModes()) { logAndPrint(Log.WARN, pw, "Ignoring inconsistent list of supported modes from " + "USB port driver (should be immutable): " diff --git a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java index 6c13cd799bc2..534fe036ba87 100644 --- a/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java +++ b/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java @@ -697,7 +697,7 @@ public class SoundTriggerService extends SystemService { synchronized (mLock) { ModuleProperties properties = mSoundTriggerHelper.getModuleProperties(); sEventLogger.log(new SoundTriggerLogger.StringEvent( - "getModuleProperties(): " + properties.toString())); + "getModuleProperties(): " + properties)); return properties; } } diff --git a/telecomm/TEST_MAPPING b/telecomm/TEST_MAPPING index d58566673eec..c9903f9fa901 100644 --- a/telecomm/TEST_MAPPING +++ b/telecomm/TEST_MAPPING @@ -23,6 +23,14 @@ "exclude-annotation": "androidx.test.filters.FlakyTest" } ] + }, + { + "name": "CtsTelecomTestCases", + "options": [ + { + "exclude-annotation": "androidx.test.filters.FlakyTest" + } + ] } ] } diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index 3365ab740cde..a1577b1e83b1 100755 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -462,8 +462,8 @@ public final class Call { /** * Call supports adding participants to the call via - * {@link #addConferenceParticipants(List)}. - * @hide + * {@link #addConferenceParticipants(List)}. Once participants are added, the call becomes + * an adhoc conference call ({@link #PROPERTY_IS_ADHOC_CONFERENCE}). */ public static final int CAPABILITY_ADD_PARTICIPANT = 0x02000000; @@ -599,8 +599,11 @@ public final class Call { /** * Indicates that the call is an adhoc conference call. This property can be set for both - * incoming and outgoing calls. - * @hide + * incoming and outgoing calls. An adhoc conference call is formed using + * {@link #addConferenceParticipants(List)}, + * {@link TelecomManager#addNewIncomingConference(PhoneAccountHandle, Bundle)}, or + * {@link TelecomManager#startConference(List, Bundle)}, rather than by merging existing + * call using {@link #conference(Call)}. */ public static final int PROPERTY_IS_ADHOC_CONFERENCE = 0x00002000; @@ -1775,7 +1778,6 @@ public final class Call { * See {@link Details#CAPABILITY_ADD_PARTICIPANT}. * * @param participants participants to be pulled to existing call. - * @hide */ public void addConferenceParticipants(@NonNull List<Uri> participants) { mInCallAdapter.addConferenceParticipants(mTelecomCallId, participants); diff --git a/telecomm/java/android/telecom/Conference.java b/telecomm/java/android/telecom/Conference.java index d9605522b3b0..39c3ff9e8839 100644 --- a/telecomm/java/android/telecom/Conference.java +++ b/telecomm/java/android/telecom/Conference.java @@ -181,8 +181,8 @@ public abstract class Conference extends Conferenceable { /** * Returns whether this conference is requesting that the system play a ringback tone - * on its behalf. - * @hide + * on its behalf. A ringback tone may be played when an outgoing conference is in the process of + * connecting to give the user an audible indication of that process. */ public final boolean isRingbackRequested() { return mRingbackRequested; @@ -329,7 +329,6 @@ public abstract class Conference extends Conferenceable { /** * Notifies the {@link Conference} of a request to add a new participants to the conference call * @param participants that will be added to this conference call - * @hide */ public void onAddConferenceParticipants(@NonNull List<Uri> participants) {} @@ -340,7 +339,6 @@ public abstract class Conference extends Conferenceable { * the default dialer's {@link InCallService}. * * @param videoState The video state in which to answer the connection. - * @hide */ public void onAnswer(int videoState) {} @@ -360,7 +358,6 @@ public abstract class Conference extends Conferenceable { * a request to reject. * For managed {@link ConnectionService}s, this will be called when the user rejects a call via * the default dialer's {@link InCallService}. - * @hide */ public void onReject() {} @@ -380,7 +377,6 @@ public abstract class Conference extends Conferenceable { /** * Sets state to be ringing. - * @hide */ public final void setRinging() { setState(Connection.STATE_RINGING); @@ -506,7 +502,6 @@ public abstract class Conference extends Conferenceable { * that do not play a ringback tone themselves in the conference's audio stream. * * @param ringback Whether the ringback tone is to be played. - * @hide */ public final void setRingbackRequested(boolean ringback) { if (mRingbackRequested != ringback) { @@ -773,7 +768,6 @@ public abstract class Conference extends Conferenceable { * * @param disconnectCause The disconnect cause, ({@see android.telecomm.DisconnectCause}). * @return A {@code Conference} which indicates failure. - * @hide */ public @NonNull static Conference createFailedConference( @NonNull DisconnectCause disconnectCause, @NonNull PhoneAccountHandle phoneAccount) { diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java index fa9909547fc4..fe813763e3c7 100755 --- a/telecomm/java/android/telecom/Connection.java +++ b/telecomm/java/android/telecom/Connection.java @@ -383,8 +383,10 @@ public abstract class Connection extends Conferenceable { /** * When set, indicates that this {@link Connection} supports initiation of a conference call - * by directly adding participants using {@link #onAddConferenceParticipants(List)}. - * @hide + * by directly adding participants using {@link #onAddConferenceParticipants(List)}. When + * participants are added to a {@link Connection}, it will be replaced by a {@link Conference} + * instance with {@link #PROPERTY_IS_ADHOC_CONFERENCE} set to indicate that it is an adhoc + * conference call. */ public static final int CAPABILITY_ADD_PARTICIPANT = 0x04000000; @@ -526,10 +528,9 @@ public abstract class Connection extends Conferenceable { public static final int PROPERTY_REMOTELY_HOSTED = 1 << 11; /** - * Set by the framework to indicate that it is an adhoc conference call. + * Set by the framework to indicate that a call is an adhoc conference call. * <p> - * This is used for Outgoing and incoming conference calls. - * @hide + * This is used for outgoing and incoming conference calls. */ public static final int PROPERTY_IS_ADHOC_CONFERENCE = 1 << 12; @@ -3034,7 +3035,6 @@ public abstract class Connection extends Conferenceable { * Supports initiation of a conference call by directly adding participants to an ongoing call. * * @param participants with which conference call will be formed. - * @hide */ public void onAddConferenceParticipants(@NonNull List<Uri> participants) {} diff --git a/telecomm/java/android/telecom/ConnectionService.java b/telecomm/java/android/telecom/ConnectionService.java index 56cba1d3f913..780a7c257aa7 100755 --- a/telecomm/java/android/telecom/ConnectionService.java +++ b/telecomm/java/android/telecom/ConnectionService.java @@ -2678,15 +2678,15 @@ public abstract class ConnectionService extends Service { return null; } /** - * Create a {@code Connection} given an incoming request. This is used to attach to existing - * incoming conference call. + * Create a {@code Conference} given an incoming request. This is used to attach to an incoming + * conference call initiated via + * {@link TelecomManager#addNewIncomingConference(PhoneAccountHandle, Bundle)}. * * @param connectionManagerPhoneAccount See description at * {@link #onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest)}. - * @param request Details about the incoming call. - * @return The {@code Connection} object to satisfy this call, or {@code null} to + * @param request Details about the incoming conference call. + * @return The {@code Conference} object to satisfy this call, or {@code null} to * not handle the call. - * @hide */ public @Nullable Conference onCreateIncomingConference( @Nullable PhoneAccountHandle connectionManagerPhoneAccount, @@ -2771,7 +2771,6 @@ public abstract class ConnectionService extends Service { * @param connectionManagerPhoneAccount See description at * {@link #onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest)}. * @param request The incoming connection request. - * @hide */ public void onCreateIncomingConferenceFailed( @Nullable PhoneAccountHandle connectionManagerPhoneAccount, @@ -2792,7 +2791,6 @@ public abstract class ConnectionService extends Service { * @param connectionManagerPhoneAccount See description at * {@link #onCreateOutgoingConnection(PhoneAccountHandle, ConnectionRequest)}. * @param request The outgoing connection request. - * @hide */ public void onCreateOutgoingConferenceFailed( @Nullable PhoneAccountHandle connectionManagerPhoneAccount, @@ -2841,7 +2839,8 @@ public abstract class ConnectionService extends Service { /** * Create a {@code Conference} given an outgoing request. This is used to initiate new - * outgoing conference call. + * outgoing conference call requested via + * {@link TelecomManager#startConference(List, Bundle)}. * * @param connectionManagerPhoneAccount The connection manager account to use for managing * this call. @@ -2861,7 +2860,6 @@ public abstract class ConnectionService extends Service { * @param request Details about the outgoing call. * @return The {@code Conference} object to satisfy this call, or the result of an invocation * of {@link Connection#createFailedConnection(DisconnectCause)} to not handle the call. - * @hide */ public @Nullable Conference onCreateOutgoingConference( @Nullable PhoneAccountHandle connectionManagerPhoneAccount, diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index 8eebbeda9e83..bcb1736f416e 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -1867,11 +1867,13 @@ public class TelecomManager { /** * Registers a new incoming conference. A {@link ConnectionService} should invoke this method - * when it has an incoming conference. For managed {@link ConnectionService}s, the specified - * {@link PhoneAccountHandle} must have been registered with {@link #registerPhoneAccount} and - * the user must have enabled the corresponding {@link PhoneAccount}. This can be checked using - * {@link #getPhoneAccount}. Self-managed {@link ConnectionService}s must have - * {@link android.Manifest.permission#MANAGE_OWN_CALLS} to add a new incoming call. + * when it has an incoming conference. An incoming {@link Conference} is an adhoc conference + * call initiated on another device which the user is being invited to join in. For managed + * {@link ConnectionService}s, the specified {@link PhoneAccountHandle} must have been + * registered with {@link #registerPhoneAccount} and the user must have enabled the + * corresponding {@link PhoneAccount}. This can be checked using + * {@link #getPhoneAccount(PhoneAccountHandle)}. Self-managed {@link ConnectionService}s must + * have {@link android.Manifest.permission#MANAGE_OWN_CALLS} to add a new incoming call. * <p> * The incoming conference you are adding is assumed to have a video state of * {@link VideoProfile#STATE_AUDIO_ONLY}, unless the extra value @@ -1879,8 +1881,9 @@ public class TelecomManager { * <p> * Once invoked, this method will cause the system to bind to the {@link ConnectionService} * associated with the {@link PhoneAccountHandle} and request additional information about the - * call (See {@link ConnectionService#onCreateIncomingConference}) before starting the incoming - * call UI. + * call (See + * {@link ConnectionService#onCreateIncomingConference(PhoneAccountHandle, ConnectionRequest)}) + * before starting the incoming call UI. * <p> * For a managed {@link ConnectionService}, a {@link SecurityException} will be thrown if either * the {@link PhoneAccountHandle} does not correspond to a registered {@link PhoneAccount} or @@ -1890,7 +1893,6 @@ public class TelecomManager { * {@link #registerPhoneAccount}. * @param extras A bundle that will be passed through to * {@link ConnectionService#onCreateIncomingConference}. - * @hide */ public void addNewIncomingConference(@NonNull PhoneAccountHandle phoneAccount, @NonNull Bundle extras) { @@ -2111,8 +2113,8 @@ public class TelecomManager { /** - * Place a new conference call with the provided participants using the system telecom service - * This method doesn't support placing of emergency calls. + * Place a new adhoc conference call with the provided participants using the system telecom + * service. This method doesn't support placing of emergency calls. * * An adhoc conference call is established by providing a list of addresses to * {@code TelecomManager#startConference(List<Uri>, int videoState)} where the @@ -2130,7 +2132,6 @@ public class TelecomManager { * * @param participants List of participants to start conference with * @param extras Bundle of extras to use with the call - * @hide */ @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void startConference(@NonNull List<Uri> participants, diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl index dee5a98e33e9..7c6f1df972f3 100644 --- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl +++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl @@ -326,6 +326,8 @@ interface ITelecomService { */ void handleCallIntent(in Intent intent, in String callingPackageProxy); + void cleanupStuckCalls(); + void setTestDefaultCallRedirectionApp(String packageName); void setTestPhoneAcctSuggestionComponent(String flattenedComponentName); diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 5ea4c7b5dac9..fa229fb47423 100755 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -772,7 +772,7 @@ public class CarrierConfigManager { * {@link #KEY_CARRIER_UT_PROVISIONING_REQUIRED_BOOL}). If false, this device will fallback to * circuit switch for supplementary services and will disable this capability for IMS entirely. * - * The default value for this key is {@code true}. + * The default value for this key is {@code false}. */ public static final String KEY_CARRIER_SUPPORTS_SS_OVER_UT_BOOL = "carrier_supports_ss_over_ut_bool"; @@ -1165,15 +1165,14 @@ public class CarrierConfigManager { /** * Determines whether adhoc conference calls are supported by a carrier. When {@code true}, * adhoc conference calling is supported, {@code false otherwise}. - * @hide */ public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL = "support_adhoc_conference_calls_bool"; /** - * Determines whether conference participants can be added to existing call. When {@code true}, + * Determines whether conference participants can be added to existing call to form an adhoc + * conference call (in contrast to merging calls to form a conference). When {@code true}, * adding conference participants to existing call is supported, {@code false otherwise}. - * @hide */ public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL = "support_add_conference_participants_bool"; diff --git a/telephony/java/android/telephony/CellLocation.java b/telephony/java/android/telephony/CellLocation.java index aa1230165e13..cdf735195d61 100644 --- a/telephony/java/android/telephony/CellLocation.java +++ b/telephony/java/android/telephony/CellLocation.java @@ -33,10 +33,12 @@ import com.android.internal.telephony.PhoneConstants; public abstract class CellLocation { /** - * This method will not do anything. + * Request an updated CellLocation for callers targeting SDK 30 or older. * - * Whenever location changes, a callback will automatically be be sent to - * all registrants of {@link PhoneStateListener#LISTEN_CELL_LOCATION}. + * Whenever Android is aware of location changes, a callback will automatically be sent to + * all registrants of {@link PhoneStateListener#LISTEN_CELL_LOCATION}. This API requests an + * additional location update for cases where power saving might cause location updates to be + * missed. * * <p>This method is a no-op for callers targeting SDK level 31 or greater. * <p>This method is a no-op for callers that target SDK level 29 or 30 and lack @@ -44,14 +46,7 @@ public abstract class CellLocation { * <p>This method is a no-op for callers that target SDK level 28 or below and lack * {@link android.Manifest.permission#ACCESS_COARSE_LOCATION}. * - * Callers wishing to request a single location update should use - * {@link TelephonyManager#requestCellInfoUpdate}. - * - * @deprecated this method has undesirable side-effects, and it calls into the OS without - * access to a {@link android.content.Context Context}, meaning that certain safety checks and - * attribution are error-prone. Given that this method has numerous downsides, and given that - * there are long-available superior alternatives, callers are strongly discouraged from using - * this method. + * @deprecated use {@link TelephonyManager#requestCellInfoUpdate}. */ @Deprecated public static void requestLocationUpdate() { diff --git a/tools/stats_log_api_gen/Android.bp b/tools/stats_log_api_gen/Android.bp index e3b6db08c503..43387fc054b5 100644 --- a/tools/stats_log_api_gen/Android.bp +++ b/tools/stats_log_api_gen/Android.bp @@ -121,10 +121,26 @@ cc_library { ], target: { android: { - shared_libs: ["libstatssocket"], + shared_libs: [ + "libstatssocket", + "libstatspull", + ], + export_shared_lib_headers: [ + "libstatssocket", + "libstatspull", + ], }, host: { - static_libs: ["libstatssocket"], + static_libs: [ + "libstatssocket", + "libstatspull", + "statsd-aidl-ndk_platform", + ], + shared_libs: ["libbinder_ndk"], + export_static_lib_headers: [ + "libstatssocket", + "libstatspull", + ], }, }, } diff --git a/tools/stats_log_api_gen/native_writer.cpp b/tools/stats_log_api_gen/native_writer.cpp index 0c6c0099e459..21e88b360dcd 100644 --- a/tools/stats_log_api_gen/native_writer.cpp +++ b/tools/stats_log_api_gen/native_writer.cpp @@ -82,21 +82,77 @@ static void write_annotations(FILE* out, int argIndex, } } -static int write_native_stats_write_methods(FILE* out, const Atoms& atoms, +static int write_native_method_body(FILE* out, vector<java_type_t>& signature, + const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet, + const AtomDecl& attributionDecl) { + int argIndex = 1; + fprintf(out, " AStatsEvent_setAtomId(event, code);\n"); + write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "AStatsEvent_", + "event, "); + for (vector<java_type_t>::const_iterator arg = signature.begin(); + arg != signature.end(); arg++) { + switch (*arg) { + case JAVA_TYPE_ATTRIBUTION_CHAIN: { + const char* uidName = attributionDecl.fields.front().name.c_str(); + const char* tagName = attributionDecl.fields.back().name.c_str(); + fprintf(out, + " AStatsEvent_writeAttributionChain(event, " + "reinterpret_cast<const uint32_t*>(%s), %s.data(), " + "static_cast<uint8_t>(%s_length));\n", + uidName, tagName, uidName); + break; + } + case JAVA_TYPE_BYTE_ARRAY: + fprintf(out, + " AStatsEvent_writeByteArray(event, " + "reinterpret_cast<const uint8_t*>(arg%d.arg), " + "arg%d.arg_length);\n", + argIndex, argIndex); + break; + case JAVA_TYPE_BOOLEAN: + fprintf(out, " AStatsEvent_writeBool(event, arg%d);\n", argIndex); + break; + case JAVA_TYPE_INT: // Fall through. + case JAVA_TYPE_ENUM: + fprintf(out, " AStatsEvent_writeInt32(event, arg%d);\n", argIndex); + break; + case JAVA_TYPE_FLOAT: + fprintf(out, " AStatsEvent_writeFloat(event, arg%d);\n", argIndex); + break; + case JAVA_TYPE_LONG: + fprintf(out, " AStatsEvent_writeInt64(event, arg%d);\n", argIndex); + break; + case JAVA_TYPE_STRING: + fprintf(out, " AStatsEvent_writeString(event, arg%d);\n", argIndex); + break; + default: + // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIRS + fprintf(stderr, "Encountered unsupported type."); + return 1; + } + write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "AStatsEvent_", + "event, "); + argIndex++; + } + return 0; +} + +static int write_native_stats_write_methods(FILE* out, const SignatureInfoMap& signatureInfoMap, const AtomDecl& attributionDecl, const bool supportQ) { fprintf(out, "\n"); - for (auto signatureInfoMapIt = atoms.signatureInfoMap.begin(); - signatureInfoMapIt != atoms.signatureInfoMap.end(); signatureInfoMapIt++) { + for (auto signatureInfoMapIt = signatureInfoMap.begin(); + signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { vector<java_type_t> signature = signatureInfoMapIt->first; const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second; // Key value pairs not supported in native. if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { continue; } - write_native_method_signature(out, "int stats_write", signature, attributionDecl, " {"); + write_native_method_signature(out, "int stats_write(", signature, attributionDecl, " {"); - int argIndex = 1; + // Write method body. if (supportQ) { + int argIndex = 1; fprintf(out, " StatsEventCompat event;\n"); fprintf(out, " event.setAtomId(code);\n"); write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "event.", ""); @@ -138,78 +194,36 @@ static int write_native_stats_write_methods(FILE* out, const Atoms& atoms, write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "event.", ""); argIndex++; } - fprintf(out, " return event.writeToSocket();\n"); + fprintf(out, " return event.writeToSocket();\n"); // end method body. } else { fprintf(out, " AStatsEvent* event = AStatsEvent_obtain();\n"); - fprintf(out, " AStatsEvent_setAtomId(event, code);\n"); - write_annotations(out, ATOM_ID_FIELD_NUMBER, fieldNumberToAtomDeclSet, "AStatsEvent_", - "event, "); - for (vector<java_type_t>::const_iterator arg = signature.begin(); - arg != signature.end(); arg++) { - switch (*arg) { - case JAVA_TYPE_ATTRIBUTION_CHAIN: { - const char* uidName = attributionDecl.fields.front().name.c_str(); - const char* tagName = attributionDecl.fields.back().name.c_str(); - fprintf(out, - " AStatsEvent_writeAttributionChain(event, " - "reinterpret_cast<const uint32_t*>(%s), %s.data(), " - "static_cast<uint8_t>(%s_length));\n", - uidName, tagName, uidName); - break; - } - case JAVA_TYPE_BYTE_ARRAY: - fprintf(out, - " AStatsEvent_writeByteArray(event, " - "reinterpret_cast<const uint8_t*>(arg%d.arg), " - "arg%d.arg_length);\n", - argIndex, argIndex); - break; - case JAVA_TYPE_BOOLEAN: - fprintf(out, " AStatsEvent_writeBool(event, arg%d);\n", argIndex); - break; - case JAVA_TYPE_INT: // Fall through. - case JAVA_TYPE_ENUM: - fprintf(out, " AStatsEvent_writeInt32(event, arg%d);\n", argIndex); - break; - case JAVA_TYPE_FLOAT: - fprintf(out, " AStatsEvent_writeFloat(event, arg%d);\n", argIndex); - break; - case JAVA_TYPE_LONG: - fprintf(out, " AStatsEvent_writeInt64(event, arg%d);\n", argIndex); - break; - case JAVA_TYPE_STRING: - fprintf(out, " AStatsEvent_writeString(event, arg%d);\n", argIndex); - break; - default: - // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIRS - fprintf(stderr, "Encountered unsupported type."); - return 1; - } - write_annotations(out, argIndex, fieldNumberToAtomDeclSet, "AStatsEvent_", - "event, "); - argIndex++; + int ret = write_native_method_body(out, signature, fieldNumberToAtomDeclSet, + attributionDecl); + if (ret != 0) { + return ret; } fprintf(out, " const int ret = AStatsEvent_write(event);\n"); fprintf(out, " AStatsEvent_release(event);\n"); - fprintf(out, " return ret;\n"); + fprintf(out, " return ret;\n"); // end method body. } - fprintf(out, "}\n\n"); + fprintf(out, "}\n\n"); // end method. } return 0; } -static void write_native_stats_write_non_chained_methods(FILE* out, const Atoms& atoms, +static void write_native_stats_write_non_chained_methods(FILE* out, + const SignatureInfoMap& signatureInfoMap, const AtomDecl& attributionDecl) { fprintf(out, "\n"); - for (auto signature_it = atoms.nonChainedSignatureInfoMap.begin(); - signature_it != atoms.nonChainedSignatureInfoMap.end(); signature_it++) { + for (auto signature_it = signatureInfoMap.begin(); + signature_it != signatureInfoMap.end(); signature_it++) { vector<java_type_t> signature = signature_it->first; // Key value pairs not supported in native. if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { continue; } - write_native_method_signature(out, "int stats_write_non_chained", signature, + write_native_method_signature(out, "int stats_write_non_chained(", signature, attributionDecl, " {"); vector<java_type_t> newSignature; @@ -235,6 +249,34 @@ static void write_native_stats_write_non_chained_methods(FILE* out, const Atoms& } } +static int write_native_build_stats_event_methods(FILE* out, + const SignatureInfoMap& signatureInfoMap, + const AtomDecl& attributionDecl) { + fprintf(out, "\n"); + for (auto signatureInfoMapIt = signatureInfoMap.begin(); + signatureInfoMapIt != signatureInfoMap.end(); signatureInfoMapIt++) { + vector<java_type_t> signature = signatureInfoMapIt->first; + const FieldNumberToAtomDeclSet& fieldNumberToAtomDeclSet = signatureInfoMapIt->second; + // Key value pairs not supported in native. + if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) { + continue; + } + write_native_method_signature(out, "void addAStatsEvent(AStatsEventList* pulled_data, ", + signature, attributionDecl, " {"); + + fprintf(out, " AStatsEvent* event = AStatsEventList_addStatsEvent(pulled_data);\n"); + int ret = write_native_method_body(out, signature, fieldNumberToAtomDeclSet, + attributionDecl); + if (ret != 0) { + return ret; + } + fprintf(out, " AStatsEvent_build(event);\n"); // end method body. + + fprintf(out, "}\n\n"); // end method. + } + return 0; +} + static void write_native_method_header(FILE* out, const string& methodName, const SignatureInfoMap& signatureInfoMap, const AtomDecl& attributionDecl) { @@ -262,13 +304,22 @@ int write_stats_log_cpp(FILE* out, const Atoms& atoms, const AtomDecl& attributi fprintf(out, "#include <StatsEventCompat.h>\n"); } else { fprintf(out, "#include <stats_event.h>\n"); + + if (!atoms.pulledAtomsSignatureInfoMap.empty()) { + fprintf(out, "#include <stats_pull_atom_callback.h>\n"); + } } + + fprintf(out, "\n"); write_namespace(out, cppNamespace); - write_native_stats_write_methods(out, atoms, attributionDecl, supportQ); - write_native_stats_write_non_chained_methods(out, atoms, attributionDecl); + write_native_stats_write_methods(out, atoms.signatureInfoMap, attributionDecl, supportQ); + write_native_stats_write_non_chained_methods(out, atoms.nonChainedSignatureInfoMap, + attributionDecl); + write_native_build_stats_event_methods(out, atoms.pulledAtomsSignatureInfoMap, + attributionDecl); // Print footer fprintf(out, "\n"); @@ -288,6 +339,9 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl& attrib fprintf(out, "#include <vector>\n"); fprintf(out, "#include <map>\n"); fprintf(out, "#include <set>\n"); + if (!atoms.pulledAtomsSignatureInfoMap.empty()) { + fprintf(out, "#include <stats_pull_atom_callback.h>\n"); + } fprintf(out, "\n"); write_namespace(out, cppNamespace); @@ -337,12 +391,22 @@ int write_stats_log_header(FILE* out, const Atoms& atoms, const AtomDecl& attrib fprintf(out, "//\n"); fprintf(out, "// Write methods\n"); fprintf(out, "//\n"); - write_native_method_header(out, "int stats_write", atoms.signatureInfoMap, attributionDecl); + write_native_method_header(out, "int stats_write(", atoms.signatureInfoMap, attributionDecl); + fprintf(out, "\n"); fprintf(out, "//\n"); fprintf(out, "// Write flattened methods\n"); fprintf(out, "//\n"); - write_native_method_header(out, "int stats_write_non_chained", atoms.nonChainedSignatureInfoMap, + write_native_method_header(out, "int stats_write_non_chained(", atoms.nonChainedSignatureInfoMap, + attributionDecl); + fprintf(out, "\n"); + + // Print pulled atoms methods. + fprintf(out, "//\n"); + fprintf(out, "// Add AStatsEvent methods\n"); + fprintf(out, "//\n"); + write_native_method_header(out, "void addAStatsEvent(AStatsEventList* pulled_data, ", + atoms.pulledAtomsSignatureInfoMap, attributionDecl); fprintf(out, "\n"); diff --git a/tools/stats_log_api_gen/utils.cpp b/tools/stats_log_api_gen/utils.cpp index abb89133e58e..4b3734053421 100644 --- a/tools/stats_log_api_gen/utils.cpp +++ b/tools/stats_log_api_gen/utils.cpp @@ -182,10 +182,10 @@ void write_native_atom_constants(FILE* out, const Atoms& atoms, const AtomDecl& fprintf(out, "\n"); } -void write_native_method_signature(FILE* out, const string& methodName, +void write_native_method_signature(FILE* out, const string& signaturePrefix, const vector<java_type_t>& signature, const AtomDecl& attributionDecl, const string& closer) { - fprintf(out, "%s(int32_t code", methodName.c_str()); + fprintf(out, "%sint32_t code", signaturePrefix.c_str()); int argIndex = 1; for (vector<java_type_t>::const_iterator arg = signature.begin(); arg != signature.end(); arg++) { diff --git a/tools/stats_log_api_gen/utils.h b/tools/stats_log_api_gen/utils.h index 73e0cb838227..42dc90eb79dc 100644 --- a/tools/stats_log_api_gen/utils.h +++ b/tools/stats_log_api_gen/utils.h @@ -59,7 +59,7 @@ void write_closing_namespace(FILE* out, const string& cppNamespaces); void write_native_atom_constants(FILE* out, const Atoms& atoms, const AtomDecl& attributionDecl); -void write_native_method_signature(FILE* out, const string& methodName, +void write_native_method_signature(FILE* out, const string& signaturePrefix, const vector<java_type_t>& signature, const AtomDecl& attributionDecl, const string& closer); diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java index 4d3a2c02c686..68eb1bbd8a79 100644 --- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java +++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java @@ -943,6 +943,9 @@ public final class WifiNetworkSuggestion implements Parcelable { */ @Nullable public WifiEnterpriseConfig getEnterpriseConfig() { + if (!wifiConfiguration.isEnterprise()) { + return null; + } return wifiConfiguration.enterpriseConfig; } diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java index 16b4ad08a830..f0839e9b3122 100644 --- a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java +++ b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java @@ -62,6 +62,7 @@ public class WifiNetworkSuggestionTest { assertEquals(-1, suggestion.wifiConfiguration.priority); assertFalse(suggestion.isUserAllowedToManuallyConnect); assertTrue(suggestion.isInitialAutoJoinEnabled); + assertNull(suggestion.getEnterpriseConfig()); } /** @@ -92,6 +93,7 @@ public class WifiNetworkSuggestionTest { assertEquals(0, suggestion.wifiConfiguration.priority); assertFalse(suggestion.isUserAllowedToManuallyConnect); assertTrue(suggestion.isInitialAutoJoinEnabled); + assertNull(suggestion.getEnterpriseConfig()); } /** @@ -122,6 +124,7 @@ public class WifiNetworkSuggestionTest { assertEquals(-1, suggestion.wifiConfiguration.priority); assertTrue(suggestion.isUserAllowedToManuallyConnect); assertFalse(suggestion.isInitialAutoJoinEnabled); + assertNull(suggestion.getEnterpriseConfig()); } /** @@ -152,6 +155,7 @@ public class WifiNetworkSuggestionTest { assertEquals(-1, suggestion.wifiConfiguration.priority); assertTrue(suggestion.isUserAllowedToManuallyConnect); assertFalse(suggestion.isInitialAutoJoinEnabled); + assertNull(suggestion.getEnterpriseConfig()); } /** @@ -174,6 +178,7 @@ public class WifiNetworkSuggestionTest { assertTrue(suggestion.wifiConfiguration.requirePmf); assertFalse(suggestion.isUserAllowedToManuallyConnect); assertTrue(suggestion.isInitialAutoJoinEnabled); + assertNull(suggestion.getEnterpriseConfig()); } /** @@ -197,6 +202,7 @@ public class WifiNetworkSuggestionTest { assertTrue(suggestion.wifiConfiguration.requirePmf); assertTrue(suggestion.isUserAllowedToManuallyConnect); assertFalse(suggestion.isInitialAutoJoinEnabled); + assertNull(suggestion.getEnterpriseConfig()); } @@ -230,6 +236,7 @@ public class WifiNetworkSuggestionTest { // here. assertTrue(suggestion.isUserAllowedToManuallyConnect); assertTrue(suggestion.isInitialAutoJoinEnabled); + assertNotNull(suggestion.getEnterpriseConfig()); } /** @@ -286,6 +293,7 @@ public class WifiNetworkSuggestionTest { .get(WifiConfiguration.GroupCipher.SMS4)); assertEquals("\"" + TEST_PRESHARED_KEY + "\"", suggestion.wifiConfiguration.preSharedKey); + assertNull(suggestion.getEnterpriseConfig()); } @@ -316,6 +324,7 @@ public class WifiNetworkSuggestionTest { suggestion.wifiConfiguration.enterpriseConfig.getEapMethod()); assertEquals(TEST_WAPI_CERT_SUITE, suggestion.wifiConfiguration.enterpriseConfig.getWapiCertSuite()); + assertNotNull(suggestion.getEnterpriseConfig()); } /** @@ -345,6 +354,7 @@ public class WifiNetworkSuggestionTest { suggestion.wifiConfiguration.enterpriseConfig.getEapMethod()); assertEquals("", suggestion.wifiConfiguration.enterpriseConfig.getWapiCertSuite()); + assertNotNull(suggestion.getEnterpriseConfig()); } /** @@ -367,6 +377,7 @@ public class WifiNetworkSuggestionTest { assertEquals(suggestion.getPasspointConfig().getMeteredOverride(), WifiConfiguration.METERED_OVERRIDE_METERED); assertTrue(suggestion.isUserAllowedToManuallyConnect); + assertNull(suggestion.getEnterpriseConfig()); } /** |